From 58150f959c1d7e9df88879b8b3eb72dc91a1ecd1 Mon Sep 17 00:00:00 2001 From: lkdvos Date: Sun, 16 Nov 2025 08:55:03 -0500 Subject: [PATCH 01/12] update bose_hubbard example --- docs/src/examples/bose_hubbard/index.md | 329 ++++++++++++---------- docs/src/examples/bose_hubbard/main.ipynb | 138 ++++----- examples/Cache.toml | 2 +- 3 files changed, 243 insertions(+), 226 deletions(-) diff --git a/docs/src/examples/bose_hubbard/index.md b/docs/src/examples/bose_hubbard/index.md index 1b712afe3..bce3fadc1 100644 --- a/docs/src/examples/bose_hubbard/index.md +++ b/docs/src/examples/bose_hubbard/index.md @@ -62,7 +62,7 @@ physical_spaces = physicalspace(H) ```` 1×1 Matrix{TensorKit.GradedSpace{TensorKitSectors.U1Irrep, TensorKit.SortedVectorDict{TensorKitSectors.U1Irrep, Int64}}}: - Rep[TensorKitSectors.U₁](0=>1, 1=>1, -1=>1) + (0 => 1, 1 => 1, -1 => 1) ```` Note that the physical space contains $U(1)$ charges -1, 0 and +1. Indeed, imposing a @@ -128,7 +128,7 @@ env₀, = leading_boundary(CTMRGEnv(peps₀, V_env), peps₀; boundary_alg...); ```` [ Info: CTMRG init: obj = +1.693461429863e+00 +8.390974048721e-02im err = 1.0000e+00 -[ Info: CTMRG conv 19: obj = +1.181834754305e+01 -1.514596781954e-11im err = 3.6943031807e-09 time = 8.97 sec +[ Info: CTMRG conv 19: obj = +1.181834754305e+01 -1.514938309052e-11im err = 3.6943029323e-09 time = 11.53 sec ```` @@ -142,159 +142,176 @@ peps, env, E, info = fixedpoint( ```` ```` -[ Info: LBFGS: initializing with f = 9.360531870693, ‖∇f‖ = 1.6954e+01 -[ Info: LBFGS: iter 1, time 835.55 s: f = 0.114269686001, ‖∇f‖ = 6.0686e+00, α = 1.56e+02, m = 0, nfg = 7 -[ Info: LBFGS: iter 2, time 867.07 s: f = 0.059480938115, ‖∇f‖ = 7.2206e+00, α = 5.27e-01, m = 1, nfg = 2 -[ Info: LBFGS: iter 3, time 870.15 s: f = -0.046499452141, ‖∇f‖ = 1.6329e+00, α = 1.00e+00, m = 2, nfg = 1 -[ Info: LBFGS: iter 4, time 873.04 s: f = -0.079703746750, ‖∇f‖ = 1.4901e+00, α = 1.00e+00, m = 3, nfg = 1 -[ Info: LBFGS: iter 5, time 883.62 s: f = -0.125317852222, ‖∇f‖ = 3.2630e+00, α = 5.23e-01, m = 4, nfg = 3 -[ Info: LBFGS: iter 6, time 886.73 s: f = -0.163554919176, ‖∇f‖ = 1.2781e+00, α = 1.00e+00, m = 5, nfg = 1 -[ Info: LBFGS: iter 7, time 890.21 s: f = -0.193532735237, ‖∇f‖ = 9.6932e-01, α = 1.00e+00, m = 6, nfg = 1 -[ Info: LBFGS: iter 8, time 895.90 s: f = -0.208656321338, ‖∇f‖ = 7.0028e-01, α = 1.68e-01, m = 7, nfg = 2 -[ Info: LBFGS: iter 9, time 901.97 s: f = -0.220718433148, ‖∇f‖ = 4.3381e-01, α = 3.95e-01, m = 8, nfg = 2 -[ Info: LBFGS: iter 10, time 904.78 s: f = -0.227817345456, ‖∇f‖ = 5.8993e-01, α = 1.00e+00, m = 9, nfg = 1 -[ Info: LBFGS: iter 11, time 906.29 s: f = -0.235906486649, ‖∇f‖ = 5.2265e-01, α = 1.00e+00, m = 10, nfg = 1 -[ Info: LBFGS: iter 12, time 907.72 s: f = -0.245544719160, ‖∇f‖ = 3.6462e-01, α = 1.00e+00, m = 11, nfg = 1 -[ Info: LBFGS: iter 13, time 909.56 s: f = -0.251717239130, ‖∇f‖ = 3.3074e-01, α = 1.00e+00, m = 12, nfg = 1 -[ Info: LBFGS: iter 14, time 910.74 s: f = -0.256869388562, ‖∇f‖ = 2.9129e-01, α = 1.00e+00, m = 13, nfg = 1 -[ Info: LBFGS: iter 15, time 911.84 s: f = -0.265345632631, ‖∇f‖ = 2.3580e-01, α = 1.00e+00, m = 14, nfg = 1 -[ Info: LBFGS: iter 16, time 912.79 s: f = -0.267397827108, ‖∇f‖ = 3.0098e-01, α = 1.00e+00, m = 15, nfg = 1 -[ Info: LBFGS: iter 17, time 914.23 s: f = -0.268894232390, ‖∇f‖ = 1.1725e-01, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 18, time 915.16 s: f = -0.269501536205, ‖∇f‖ = 8.8162e-02, α = 1.00e+00, m = 17, nfg = 1 -[ Info: LBFGS: iter 19, time 916.08 s: f = -0.270154405721, ‖∇f‖ = 7.1880e-02, α = 1.00e+00, m = 18, nfg = 1 -[ Info: LBFGS: iter 20, time 917.04 s: f = -0.270612692532, ‖∇f‖ = 6.5906e-02, α = 1.00e+00, m = 19, nfg = 1 -[ Info: LBFGS: iter 21, time 918.52 s: f = -0.270978612734, ‖∇f‖ = 6.8050e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 22, time 919.42 s: f = -0.271251104411, ‖∇f‖ = 4.7832e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 23, time 920.32 s: f = -0.271592065725, ‖∇f‖ = 5.2245e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 24, time 921.24 s: f = -0.271907473230, ‖∇f‖ = 4.7783e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 25, time 922.68 s: f = -0.272188790518, ‖∇f‖ = 6.1727e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 26, time 923.58 s: f = -0.272341714938, ‖∇f‖ = 2.8588e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 27, time 924.50 s: f = -0.272416985001, ‖∇f‖ = 2.4404e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 28, time 925.41 s: f = -0.272488140123, ‖∇f‖ = 2.8167e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 29, time 926.85 s: f = -0.272607173823, ‖∇f‖ = 4.0551e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 30, time 927.74 s: f = -0.272669542118, ‖∇f‖ = 2.8338e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 31, time 928.65 s: f = -0.272710735515, ‖∇f‖ = 1.3171e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 32, time 929.56 s: f = -0.272737399244, ‖∇f‖ = 1.5064e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 33, time 931.01 s: f = -0.272785529235, ‖∇f‖ = 2.2115e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 34, time 931.92 s: f = -0.272869320156, ‖∇f‖ = 2.7454e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 35, time 932.84 s: f = -0.272917746471, ‖∇f‖ = 4.3200e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 36, time 933.76 s: f = -0.272982782958, ‖∇f‖ = 1.3998e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 37, time 935.17 s: f = -0.273001975617, ‖∇f‖ = 9.8876e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 38, time 936.04 s: f = -0.273014701175, ‖∇f‖ = 1.2336e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 39, time 936.94 s: f = -0.273032513148, ‖∇f‖ = 1.6628e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 40, time 937.86 s: f = -0.273047957579, ‖∇f‖ = 1.1548e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 41, time 939.28 s: f = -0.273056319317, ‖∇f‖ = 6.3307e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 42, time 940.16 s: f = -0.273062571624, ‖∇f‖ = 6.8219e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 43, time 941.04 s: f = -0.273067065008, ‖∇f‖ = 8.8510e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 44, time 941.96 s: f = -0.273077210295, ‖∇f‖ = 9.9163e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 45, time 944.28 s: f = -0.273086893655, ‖∇f‖ = 1.8575e-02, α = 5.12e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 46, time 945.20 s: f = -0.273103078820, ‖∇f‖ = 8.5718e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 47, time 946.11 s: f = -0.273110799145, ‖∇f‖ = 5.8581e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 48, time 947.54 s: f = -0.273120104689, ‖∇f‖ = 8.0410e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 49, time 948.44 s: f = -0.273131281118, ‖∇f‖ = 1.1878e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 50, time 949.35 s: f = -0.273143808372, ‖∇f‖ = 9.4250e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 51, time 950.28 s: f = -0.273153887747, ‖∇f‖ = 7.2150e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 52, time 951.68 s: f = -0.273158885697, ‖∇f‖ = 6.7195e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 53, time 952.56 s: f = -0.273161233672, ‖∇f‖ = 4.1608e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 54, time 953.46 s: f = -0.273163225686, ‖∇f‖ = 4.0591e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 55, time 954.35 s: f = -0.273166294475, ‖∇f‖ = 4.9791e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 56, time 955.75 s: f = -0.273169366216, ‖∇f‖ = 4.4714e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 57, time 956.64 s: f = -0.273172354203, ‖∇f‖ = 6.3685e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 58, time 957.53 s: f = -0.273175363803, ‖∇f‖ = 3.9908e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 59, time 958.43 s: f = -0.273177279555, ‖∇f‖ = 3.9256e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 60, time 959.83 s: f = -0.273182789738, ‖∇f‖ = 6.6561e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 61, time 961.64 s: f = -0.273184790994, ‖∇f‖ = 5.6288e-03, α = 5.40e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 62, time 962.54 s: f = -0.273186538838, ‖∇f‖ = 2.7232e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 63, time 963.95 s: f = -0.273187761549, ‖∇f‖ = 2.8879e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 64, time 964.83 s: f = -0.273189383930, ‖∇f‖ = 3.5846e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 65, time 965.74 s: f = -0.273193896466, ‖∇f‖ = 8.4511e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 66, time 966.67 s: f = -0.273197826544, ‖∇f‖ = 6.5550e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 67, time 968.12 s: f = -0.273200889068, ‖∇f‖ = 3.7358e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 68, time 969.01 s: f = -0.273203155185, ‖∇f‖ = 3.5407e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 69, time 969.90 s: f = -0.273203929982, ‖∇f‖ = 3.6210e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 70, time 970.80 s: f = -0.273204838272, ‖∇f‖ = 3.2225e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 71, time 972.23 s: f = -0.273208065807, ‖∇f‖ = 3.2081e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 72, time 974.02 s: f = -0.273208664671, ‖∇f‖ = 2.6363e-03, α = 3.31e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 73, time 974.93 s: f = -0.273209100927, ‖∇f‖ = 2.4085e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 74, time 976.34 s: f = -0.273212054415, ‖∇f‖ = 3.6766e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 75, time 977.24 s: f = -0.273214539457, ‖∇f‖ = 4.4246e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 76, time 979.08 s: f = -0.273216162290, ‖∇f‖ = 4.5551e-03, α = 4.50e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 77, time 980.50 s: f = -0.273217804190, ‖∇f‖ = 2.2785e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 78, time 981.39 s: f = -0.273218883441, ‖∇f‖ = 2.0806e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 79, time 982.29 s: f = -0.273220350356, ‖∇f‖ = 2.6261e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 80, time 983.22 s: f = -0.273220936494, ‖∇f‖ = 6.7764e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 81, time 984.67 s: f = -0.273223126428, ‖∇f‖ = 2.3171e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 82, time 985.56 s: f = -0.273223758728, ‖∇f‖ = 1.4729e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 83, time 986.46 s: f = -0.273224312383, ‖∇f‖ = 1.6490e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 84, time 987.36 s: f = -0.273224595281, ‖∇f‖ = 5.4564e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 85, time 988.77 s: f = -0.273225489255, ‖∇f‖ = 2.6429e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 86, time 989.66 s: f = -0.273226533423, ‖∇f‖ = 1.3412e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 87, time 990.56 s: f = -0.273227338626, ‖∇f‖ = 1.9615e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 88, time 991.47 s: f = -0.273228071304, ‖∇f‖ = 2.3684e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 89, time 992.90 s: f = -0.273228783978, ‖∇f‖ = 2.1046e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 90, time 993.79 s: f = -0.273229430170, ‖∇f‖ = 1.6761e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 91, time 994.71 s: f = -0.273230395023, ‖∇f‖ = 2.3630e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 92, time 995.62 s: f = -0.273230913396, ‖∇f‖ = 4.6952e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 93, time 997.05 s: f = -0.273231822793, ‖∇f‖ = 2.4311e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 94, time 997.94 s: f = -0.273233027133, ‖∇f‖ = 2.0551e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 95, time 998.86 s: f = -0.273234061771, ‖∇f‖ = 3.0019e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 96, time 999.77 s: f = -0.273235399472, ‖∇f‖ = 3.6034e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 97, time 1001.23 s: f = -0.273236063107, ‖∇f‖ = 3.5368e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 98, time 1002.12 s: f = -0.273236795508, ‖∇f‖ = 1.2966e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 99, time 1003.01 s: f = -0.273237171417, ‖∇f‖ = 1.7109e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 100, time 1003.93 s: f = -0.273237667965, ‖∇f‖ = 2.2989e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 101, time 1006.24 s: f = -0.273237900160, ‖∇f‖ = 2.7773e-03, α = 4.53e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 102, time 1007.14 s: f = -0.273238275586, ‖∇f‖ = 1.4700e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 103, time 1008.06 s: f = -0.273238523826, ‖∇f‖ = 8.5901e-04, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 104, time 1009.47 s: f = -0.273238752012, ‖∇f‖ = 1.6628e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 105, time 1010.37 s: f = -0.273239111781, ‖∇f‖ = 2.6098e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 106, time 1011.27 s: f = -0.273239819089, ‖∇f‖ = 3.4353e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 107, time 1012.19 s: f = -0.273240369600, ‖∇f‖ = 4.2704e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 108, time 1013.60 s: f = -0.273241162430, ‖∇f‖ = 1.8052e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 109, time 1014.50 s: f = -0.273241475226, ‖∇f‖ = 1.0380e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 110, time 1015.42 s: f = -0.273241711280, ‖∇f‖ = 1.6135e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 111, time 1016.34 s: f = -0.273241988851, ‖∇f‖ = 2.1980e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 112, time 1017.75 s: f = -0.273242526227, ‖∇f‖ = 2.4062e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 113, time 1019.58 s: f = -0.273242706890, ‖∇f‖ = 2.5536e-03, α = 2.41e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 114, time 1020.49 s: f = -0.273243063849, ‖∇f‖ = 1.2275e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 115, time 1021.91 s: f = -0.273243259716, ‖∇f‖ = 8.8173e-04, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 116, time 1022.80 s: f = -0.273243390541, ‖∇f‖ = 1.2958e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 117, time 1023.71 s: f = -0.273243624187, ‖∇f‖ = 1.6522e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 118, time 1024.65 s: f = -0.273243975601, ‖∇f‖ = 2.4195e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 119, time 1026.08 s: f = -0.273244470238, ‖∇f‖ = 1.8095e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 120, time 1026.98 s: f = -0.273244906935, ‖∇f‖ = 1.1191e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 121, time 1027.88 s: f = -0.273245198892, ‖∇f‖ = 1.8385e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 122, time 1028.78 s: f = -0.273245436436, ‖∇f‖ = 1.7034e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 123, time 1030.25 s: f = -0.273245814839, ‖∇f‖ = 1.9152e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 124, time 1031.16 s: f = -0.273246901974, ‖∇f‖ = 2.4769e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 125, time 1032.06 s: f = -0.273247151000, ‖∇f‖ = 4.6605e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 126, time 1032.99 s: f = -0.273247895600, ‖∇f‖ = 1.6220e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 127, time 1034.43 s: f = -0.273248199597, ‖∇f‖ = 1.2653e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 128, time 1035.35 s: f = -0.273248721139, ‖∇f‖ = 2.0361e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 129, time 1036.28 s: f = -0.273249366483, ‖∇f‖ = 2.4923e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 130, time 1037.20 s: f = -0.273250035605, ‖∇f‖ = 3.6119e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 131, time 1038.61 s: f = -0.273250756926, ‖∇f‖ = 2.1636e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 132, time 1039.54 s: f = -0.273251085961, ‖∇f‖ = 1.1672e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 133, time 1040.45 s: f = -0.273251307038, ‖∇f‖ = 1.3676e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 134, time 1041.38 s: f = -0.273251484982, ‖∇f‖ = 1.6617e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 135, time 1042.81 s: f = -0.273251929354, ‖∇f‖ = 1.8732e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 136, time 1044.65 s: f = -0.273252100396, ‖∇f‖ = 1.8209e-03, α = 4.46e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 137, time 1045.58 s: f = -0.273252323246, ‖∇f‖ = 1.1334e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 138, time 1047.02 s: f = -0.273252503681, ‖∇f‖ = 1.3498e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 139, time 1047.93 s: f = -0.273252679906, ‖∇f‖ = 1.8133e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 140, time 1048.85 s: f = -0.273253041604, ‖∇f‖ = 1.9959e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 141, time 1049.78 s: f = -0.273253394913, ‖∇f‖ = 2.7713e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 142, time 1051.23 s: f = -0.273253983127, ‖∇f‖ = 1.4203e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 143, time 1052.13 s: f = -0.273254647402, ‖∇f‖ = 2.1096e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 144, time 1053.05 s: f = -0.273255259635, ‖∇f‖ = 2.8357e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 145, time 1053.99 s: f = -0.273256194806, ‖∇f‖ = 3.9979e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 146, time 1056.37 s: f = -0.273256707532, ‖∇f‖ = 2.3435e-03, α = 4.40e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 147, time 1057.29 s: f = -0.273257209926, ‖∇f‖ = 1.0557e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 148, time 1058.22 s: f = -0.273257438291, ‖∇f‖ = 9.7121e-04, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 149, time 1059.67 s: f = -0.273257563053, ‖∇f‖ = 1.1509e-03, α = 1.00e+00, m = 20, nfg = 1 -┌ Warning: LBFGS: not converged to requested tol after 150 iterations and time 1060.58 s: f = -0.273257823816, ‖∇f‖ = 1.5465e-03 -└ @ OptimKit ~/.julia/packages/OptimKit/G6i79/src/lbfgs.jl:197 -E = -0.2732578238158397 +[ Info: LBFGS: initializing with f = 9.360531870693e+00, ‖∇f‖ = 1.6944e+01 +[ Info: LBFGS: iter 1, Δt 1.77 m: f = 1.243260264922e-01, ‖∇f‖ = 6.2855e+00, α = 1.56e+02, m = 0, nfg = 7 +┌ Warning: `eigsolve` cotangents sensitive to gauge choice: (|Δgauge| = 1.5631940186722204e-12) +└ @ KrylovKitChainRulesCoreExt ~/.julia/packages/KrylovKit/ZcdRg/ext/KrylovKitChainRulesCoreExt/eigsolve.jl:212 +[ Info: LBFGS: iter 2, Δt 39.80 s: f = 6.539120686695e-02, ‖∇f‖ = 9.5385e+00, α = 5.34e-01, m = 1, nfg = 2 +[ Info: LBFGS: iter 3, Δt 3.13 s: f = -2.708528946074e-02, ‖∇f‖ = 1.8037e+00, α = 1.00e+00, m = 2, nfg = 1 +[ Info: LBFGS: iter 4, Δt 3.55 s: f = -6.192494042461e-02, ‖∇f‖ = 1.5587e+00, α = 1.00e+00, m = 3, nfg = 1 +[ Info: LBFGS: iter 5, Δt 7.09 s: f = -1.124692496698e-01, ‖∇f‖ = 1.4258e+00, α = 2.19e-01, m = 4, nfg = 2 +┌ Warning: Linesearch not converged after 2 iterations and 3 function evaluations: +│ α = 3.94e-02, dϕ = -4.49e-01, ϕ - ϕ₀ = -1.84e-02 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/linesearches.jl:148 +[ Info: LBFGS: iter 6, Δt 11.03 s: f = -1.309032710952e-01, ‖∇f‖ = 1.3707e+00, α = 3.94e-02, m = 5, nfg = 3 +┌ Warning: Linesearch not converged after 2 iterations and 4 function evaluations: +│ α = 2.57e-02, dϕ = -3.20e-01, ϕ - ϕ₀ = -8.38e-03 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/linesearches.jl:148 +[ Info: LBFGS: iter 7, Δt 15.96 s: f = -1.392843682240e-01, ‖∇f‖ = 1.3391e+00, α = 2.57e-02, m = 6, nfg = 4 +┌ Warning: Linesearch not converged after 2 iterations and 4 function evaluations: +│ α = 2.68e-02, dϕ = -3.37e-01, ϕ - ϕ₀ = -9.18e-03 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/linesearches.jl:148 +[ Info: LBFGS: iter 8, Δt 14.36 s: f = -1.484598935358e-01, ‖∇f‖ = 1.3021e+00, α = 2.68e-02, m = 7, nfg = 4 +┌ Warning: Linesearch not converged after 2 iterations and 3 function evaluations: +│ α = 3.65e-02, dϕ = -3.92e-01, ϕ - ϕ₀ = -1.48e-02 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/linesearches.jl:148 +[ Info: LBFGS: iter 9, Δt 10.44 s: f = -1.632810531195e-01, ‖∇f‖ = 1.2272e+00, α = 3.65e-02, m = 8, nfg = 3 +┌ Warning: Linesearch not converged after 2 iterations and 3 function evaluations: +│ α = 2.76e-02, dϕ = -2.97e-01, ϕ - ϕ₀ = -8.38e-03 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/linesearches.jl:148 +[ Info: LBFGS: iter 10, Δt 10.55 s: f = -1.716592494485e-01, ‖∇f‖ = 1.1736e+00, α = 2.76e-02, m = 9, nfg = 3 +[ Info: LBFGS: iter 11, Δt 14.00 s: f = -1.826457590505e-01, ‖∇f‖ = 2.4735e+00, α = 3.85e-01, m = 10, nfg = 4 +[ Info: LBFGS: iter 12, Δt 4.18 s: f = -2.064083431847e-01, ‖∇f‖ = 7.6299e-01, α = 1.00e+00, m = 11, nfg = 1 +[ Info: LBFGS: iter 13, Δt 2.89 s: f = -2.162126950757e-01, ‖∇f‖ = 5.5939e-01, α = 1.00e+00, m = 12, nfg = 1 +[ Info: LBFGS: iter 14, Δt 2.87 s: f = -2.254856786317e-01, ‖∇f‖ = 8.5453e-01, α = 1.00e+00, m = 13, nfg = 1 +[ Info: LBFGS: iter 15, Δt 3.13 s: f = -2.311620542835e-01, ‖∇f‖ = 5.0252e-01, α = 1.00e+00, m = 14, nfg = 1 +[ Info: LBFGS: iter 16, Δt 2.36 s: f = -2.399420522249e-01, ‖∇f‖ = 3.2750e-01, α = 1.00e+00, m = 15, nfg = 1 +[ Info: LBFGS: iter 17, Δt 2.12 s: f = -2.481363618858e-01, ‖∇f‖ = 2.2685e-01, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 18, Δt 2.64 s: f = -2.562994698651e-01, ‖∇f‖ = 3.0926e-01, α = 1.00e+00, m = 17, nfg = 1 +[ Info: LBFGS: iter 19, Δt 1.78 s: f = -2.649856856868e-01, ‖∇f‖ = 2.7617e-01, α = 1.00e+00, m = 18, nfg = 1 +[ Info: LBFGS: iter 20, Δt 1.56 s: f = -2.683582580828e-01, ‖∇f‖ = 1.3450e-01, α = 1.00e+00, m = 19, nfg = 1 +[ Info: LBFGS: iter 21, Δt 2.08 s: f = -2.691261600416e-01, ‖∇f‖ = 1.0939e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 22, Δt 1.51 s: f = -2.696623293951e-01, ‖∇f‖ = 9.1215e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 23, Δt 1.54 s: f = -2.702859675414e-01, ‖∇f‖ = 7.9156e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 24, Δt 2.12 s: f = -2.707509817413e-01, ‖∇f‖ = 7.4977e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 25, Δt 1.51 s: f = -2.711576093720e-01, ‖∇f‖ = 6.1069e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 26, Δt 1.55 s: f = -2.715380802075e-01, ‖∇f‖ = 6.7125e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 27, Δt 2.08 s: f = -2.717339606082e-01, ‖∇f‖ = 4.1048e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 28, Δt 1.51 s: f = -2.718487460362e-01, ‖∇f‖ = 3.5424e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 29, Δt 1.55 s: f = -2.722072392974e-01, ‖∇f‖ = 4.0213e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 30, Δt 2.11 s: f = -2.722439668172e-01, ‖∇f‖ = 7.1999e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 31, Δt 1.51 s: f = -2.723699154079e-01, ‖∇f‖ = 2.9087e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 32, Δt 1.50 s: f = -2.724342986384e-01, ‖∇f‖ = 1.7378e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 33, Δt 2.10 s: f = -2.725306249305e-01, ‖∇f‖ = 2.3958e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 34, Δt 1.56 s: f = -2.726223101417e-01, ‖∇f‖ = 2.4508e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 35, Δt 1.50 s: f = -2.727454537974e-01, ‖∇f‖ = 1.6125e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 36, Δt 2.12 s: f = -2.728727321968e-01, ‖∇f‖ = 2.3678e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 37, Δt 1.54 s: f = -2.729237733613e-01, ‖∇f‖ = 2.8241e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 38, Δt 1.55 s: f = -2.729791702466e-01, ‖∇f‖ = 1.7025e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 39, Δt 2.25 s: f = -2.730285586841e-01, ‖∇f‖ = 1.1314e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 40, Δt 1.63 s: f = -2.730488129466e-01, ‖∇f‖ = 9.9527e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 41, Δt 1.54 s: f = -2.730623447009e-01, ‖∇f‖ = 1.2306e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 42, Δt 2.17 s: f = -2.730716419408e-01, ‖∇f‖ = 6.6281e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 43, Δt 1.52 s: f = -2.730778245503e-01, ‖∇f‖ = 6.1449e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 44, Δt 1.51 s: f = -2.730838518419e-01, ‖∇f‖ = 5.1229e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 45, Δt 2.10 s: f = -2.730895662464e-01, ‖∇f‖ = 8.2164e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 46, Δt 1.59 s: f = -2.730958799236e-01, ‖∇f‖ = 8.6062e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 47, Δt 1.57 s: f = -2.731035516065e-01, ‖∇f‖ = 8.4505e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 48, Δt 2.19 s: f = -2.731178809183e-01, ‖∇f‖ = 1.1336e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 49, Δt 1.55 s: f = -2.731261391867e-01, ‖∇f‖ = 1.3382e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 50, Δt 1.48 s: f = -2.731343691618e-01, ‖∇f‖ = 8.2222e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 51, Δt 2.11 s: f = -2.731480054714e-01, ‖∇f‖ = 7.7324e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 52, Δt 1.56 s: f = -2.731587193225e-01, ‖∇f‖ = 8.6622e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 53, Δt 3.73 s: f = -2.731635819333e-01, ‖∇f‖ = 1.1039e-02, α = 3.44e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 54, Δt 1.59 s: f = -2.731716220961e-01, ‖∇f‖ = 4.3834e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 55, Δt 1.50 s: f = -2.731747338371e-01, ‖∇f‖ = 3.3324e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 56, Δt 2.12 s: f = -2.731771231498e-01, ‖∇f‖ = 4.7862e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 57, Δt 1.54 s: f = -2.731790392649e-01, ‖∇f‖ = 4.8080e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 58, Δt 1.52 s: f = -2.731804414997e-01, ‖∇f‖ = 2.1500e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 59, Δt 2.17 s: f = -2.731815373905e-01, ‖∇f‖ = 2.8117e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 60, Δt 1.60 s: f = -2.731826327105e-01, ‖∇f‖ = 4.4664e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 61, Δt 1.51 s: f = -2.731849541596e-01, ‖∇f‖ = 6.1122e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 62, Δt 2.11 s: f = -2.731880740800e-01, ‖∇f‖ = 6.6791e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 63, Δt 1.52 s: f = -2.731902005238e-01, ‖∇f‖ = 6.6581e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 64, Δt 1.53 s: f = -2.731927985872e-01, ‖∇f‖ = 2.4370e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 65, Δt 2.16 s: f = -2.731943262018e-01, ‖∇f‖ = 3.2011e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 66, Δt 1.55 s: f = -2.731957978659e-01, ‖∇f‖ = 4.4978e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 67, Δt 1.54 s: f = -2.731987676894e-01, ‖∇f‖ = 6.3647e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 68, Δt 2.14 s: f = -2.732009902493e-01, ‖∇f‖ = 8.7994e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 69, Δt 1.53 s: f = -2.732045313641e-01, ‖∇f‖ = 3.9474e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 70, Δt 1.52 s: f = -2.732074828919e-01, ‖∇f‖ = 3.8933e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 71, Δt 2.08 s: f = -2.732095999551e-01, ‖∇f‖ = 5.1625e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 72, Δt 1.54 s: f = -2.732137224912e-01, ‖∇f‖ = 5.2307e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 73, Δt 3.60 s: f = -2.732147607346e-01, ‖∇f‖ = 6.8682e-03, α = 2.19e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 74, Δt 1.52 s: f = -2.732175934360e-01, ‖∇f‖ = 3.0811e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 75, Δt 1.46 s: f = -2.732185990605e-01, ‖∇f‖ = 2.0362e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 76, Δt 2.08 s: f = -2.732190483159e-01, ‖∇f‖ = 2.2154e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 77, Δt 1.49 s: f = -2.732193561301e-01, ‖∇f‖ = 1.9100e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 78, Δt 1.46 s: f = -2.732201314365e-01, ‖∇f‖ = 1.7894e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 79, Δt 2.06 s: f = -2.732208329599e-01, ‖∇f‖ = 2.3035e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 80, Δt 1.49 s: f = -2.732213654101e-01, ‖∇f‖ = 3.1563e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 81, Δt 1.47 s: f = -2.732219948849e-01, ‖∇f‖ = 1.6658e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 82, Δt 2.10 s: f = -2.732225315237e-01, ‖∇f‖ = 1.8094e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 83, Δt 1.48 s: f = -2.732233367859e-01, ‖∇f‖ = 2.5051e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 84, Δt 1.46 s: f = -2.732247002697e-01, ‖∇f‖ = 3.3721e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 85, Δt 2.05 s: f = -2.732258314846e-01, ‖∇f‖ = 3.6046e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 86, Δt 1.48 s: f = -2.732269279088e-01, ‖∇f‖ = 1.9356e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 87, Δt 1.46 s: f = -2.732276502460e-01, ‖∇f‖ = 2.0305e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 88, Δt 2.05 s: f = -2.732281742297e-01, ‖∇f‖ = 2.6686e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 89, Δt 1.53 s: f = -2.732291570490e-01, ‖∇f‖ = 3.4663e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 90, Δt 1.52 s: f = -2.732301136721e-01, ‖∇f‖ = 3.8554e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 91, Δt 3.55 s: f = -2.732306714243e-01, ‖∇f‖ = 2.8588e-03, α = 5.17e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 92, Δt 1.49 s: f = -2.732312852356e-01, ‖∇f‖ = 1.4790e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 93, Δt 2.08 s: f = -2.732316922511e-01, ‖∇f‖ = 1.6855e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 94, Δt 1.56 s: f = -2.732320780387e-01, ‖∇f‖ = 2.0239e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 95, Δt 1.49 s: f = -2.732330290872e-01, ‖∇f‖ = 2.4026e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 96, Δt 3.62 s: f = -2.732333807603e-01, ‖∇f‖ = 2.8123e-03, α = 3.38e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 97, Δt 1.51 s: f = -2.732338653294e-01, ‖∇f‖ = 1.4864e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 98, Δt 2.10 s: f = -2.732342403446e-01, ‖∇f‖ = 1.2667e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 99, Δt 1.49 s: f = -2.732345680255e-01, ‖∇f‖ = 1.8206e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 100, Δt 1.53 s: f = -2.732352955624e-01, ‖∇f‖ = 2.3087e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 101, Δt 2.12 s: f = -2.732355485420e-01, ‖∇f‖ = 4.8509e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 102, Δt 1.48 s: f = -2.732362652809e-01, ‖∇f‖ = 1.7593e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 103, Δt 1.47 s: f = -2.732365365963e-01, ‖∇f‖ = 1.0574e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 104, Δt 2.07 s: f = -2.732367158285e-01, ‖∇f‖ = 1.3546e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 105, Δt 1.52 s: f = -2.732371359877e-01, ‖∇f‖ = 1.8413e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 106, Δt 1.49 s: f = -2.732380177513e-01, ‖∇f‖ = 1.9804e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 107, Δt 3.59 s: f = -2.732382612440e-01, ‖∇f‖ = 3.4353e-03, α = 1.81e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 108, Δt 1.48 s: f = -2.732390883236e-01, ‖∇f‖ = 2.1448e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 109, Δt 2.14 s: f = -2.732396898628e-01, ‖∇f‖ = 1.2799e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 110, Δt 1.51 s: f = -2.732401266812e-01, ‖∇f‖ = 1.6453e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 111, Δt 1.46 s: f = -2.732405228514e-01, ‖∇f‖ = 1.9341e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 112, Δt 2.11 s: f = -2.732411475475e-01, ‖∇f‖ = 1.7568e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 113, Δt 3.02 s: f = -2.732415107932e-01, ‖∇f‖ = 2.5606e-03, α = 4.15e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 114, Δt 2.06 s: f = -2.732420174516e-01, ‖∇f‖ = 1.0164e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 115, Δt 1.50 s: f = -2.732422573578e-01, ‖∇f‖ = 1.2282e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 116, Δt 1.48 s: f = -2.732425209380e-01, ‖∇f‖ = 1.6224e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 117, Δt 2.07 s: f = -2.732428864048e-01, ‖∇f‖ = 2.7709e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 118, Δt 1.49 s: f = -2.732433322047e-01, ‖∇f‖ = 1.4803e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 119, Δt 1.48 s: f = -2.732437270443e-01, ‖∇f‖ = 1.0819e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 120, Δt 2.05 s: f = -2.732439320538e-01, ‖∇f‖ = 1.4563e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 121, Δt 1.52 s: f = -2.732443671345e-01, ‖∇f‖ = 1.6560e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 122, Δt 1.52 s: f = -2.732451061345e-01, ‖∇f‖ = 3.2331e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 123, Δt 2.10 s: f = -2.732459561589e-01, ‖∇f‖ = 1.9674e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 124, Δt 1.53 s: f = -2.732464830731e-01, ‖∇f‖ = 1.5142e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 125, Δt 1.48 s: f = -2.732467057592e-01, ‖∇f‖ = 9.9866e-04, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 126, Δt 2.07 s: f = -2.732469018571e-01, ‖∇f‖ = 1.2486e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 127, Δt 1.53 s: f = -2.732473593602e-01, ‖∇f‖ = 1.6548e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 128, Δt 1.55 s: f = -2.732475911101e-01, ‖∇f‖ = 2.3968e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 129, Δt 2.15 s: f = -2.732478298586e-01, ‖∇f‖ = 8.8893e-04, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 130, Δt 1.56 s: f = -2.732479433206e-01, ‖∇f‖ = 7.8718e-04, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 131, Δt 1.49 s: f = -2.732480328924e-01, ‖∇f‖ = 1.0602e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 132, Δt 2.08 s: f = -2.732483542017e-01, ‖∇f‖ = 1.8891e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 133, Δt 1.56 s: f = -2.732487865904e-01, ‖∇f‖ = 2.5342e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 134, Δt 1.52 s: f = -2.732493436489e-01, ‖∇f‖ = 1.9991e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 135, Δt 2.07 s: f = -2.732498544914e-01, ‖∇f‖ = 1.3038e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 136, Δt 1.52 s: f = -2.732501499793e-01, ‖∇f‖ = 1.7802e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 137, Δt 1.49 s: f = -2.732504109741e-01, ‖∇f‖ = 1.6813e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 138, Δt 2.09 s: f = -2.732508321319e-01, ‖∇f‖ = 2.0211e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 139, Δt 1.53 s: f = -2.732516319156e-01, ‖∇f‖ = 2.3433e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 140, Δt 1.53 s: f = -2.732523608932e-01, ‖∇f‖ = 3.2668e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 141, Δt 2.11 s: f = -2.732531859672e-01, ‖∇f‖ = 1.7859e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 142, Δt 1.54 s: f = -2.732536476701e-01, ‖∇f‖ = 1.3889e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 143, Δt 1.55 s: f = -2.732538445802e-01, ‖∇f‖ = 2.7700e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 144, Δt 2.09 s: f = -2.732541822672e-01, ‖∇f‖ = 1.2978e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 145, Δt 1.50 s: f = -2.732544133083e-01, ‖∇f‖ = 9.2642e-04, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 146, Δt 1.50 s: f = -2.732547253465e-01, ‖∇f‖ = 1.5108e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 147, Δt 2.11 s: f = -2.732549899420e-01, ‖∇f‖ = 1.6387e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 148, Δt 3.12 s: f = -2.732551982409e-01, ‖∇f‖ = 1.3520e-03, α = 5.44e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 149, Δt 2.12 s: f = -2.732554318758e-01, ‖∇f‖ = 6.9278e-04, α = 1.00e+00, m = 20, nfg = 1 +┌ Warning: LBFGS: not converged to requested tol after 150 iterations and time 14.76 m: f = -2.732557334552e-01, ‖∇f‖ = 1.4594e-03 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/lbfgs.jl:199 +E = -0.273255733455233 ```` @@ -308,7 +325,7 @@ E_ref = -0.273284888 ```` ```` -(E - E_ref) / E_ref = -9.90328603911651e-5 +(E - E_ref) / E_ref = -0.00010668187685147442 ```` diff --git a/docs/src/examples/bose_hubbard/main.ipynb b/docs/src/examples/bose_hubbard/main.ipynb index fe18dd5ce..3b9188a69 100644 --- a/docs/src/examples/bose_hubbard/main.ipynb +++ b/docs/src/examples/bose_hubbard/main.ipynb @@ -1,17 +1,16 @@ { "cells": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Markdown #hide" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "# Optimizing the $U(1)$-symmetric Bose-Hubbard model\n", "\n", @@ -22,23 +21,23 @@ "environment - made possible through TensorKit.\n", "\n", "But first let's seed the RNG and import the required modules:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Random\n", "using TensorKit, PEPSKit\n", "using MPSKit: add_physical_charge\n", "Random.seed!(2928528935);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Defining the model\n", "\n", @@ -49,62 +48,62 @@ "ground state to be well approximated by a PEPS with a manifest global $U(1)$ symmetry.\n", "Furthermore, we'll impose a cutoff at 2 bosons per site, set the chemical potential to zero\n", "and use a simple $1 \\times 1$ unit cell:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "t = 1.0\n", "U = 30.0\n", "cutoff = 2\n", "mu = 0.0\n", "lattice = InfiniteSquare(1, 1);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Next, we impose an explicit global $U(1)$ symmetry as well as a fixed particle number\n", "density in our simulations. We can do this by setting the `symmetry` argument of the\n", "Hamiltonian constructor to `U1Irrep` and passing one as the particle number density\n", "keyword argument `n`:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "symmetry = U1Irrep\n", "n = 1\n", "H = bose_hubbard_model(ComplexF64, symmetry, lattice; cutoff, t, U, n);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Before we continue, it might be interesting to inspect the corresponding lattice physical\n", "spaces (which is here just a $1 \\times 1$ matrix due to the single-site unit cell):" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "physical_spaces = physicalspace(H)" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Note that the physical space contains $U(1)$ charges -1, 0 and +1. Indeed, imposing a\n", "particle number density of +1 corresponds to shifting the physical charges by -1 to\n", @@ -127,43 +126,43 @@ "with a model at unit filling our physical space only contains integer $U(1)$ irreps.\n", "Therefore, we'll build our PEPS and environment spaces using integer $U(1)$ irreps centered\n", "around the zero charge:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "V_peps = U1Space(0 => 2, 1 => 1, -1 => 1)\n", "V_env = U1Space(0 => 6, 1 => 4, -1 => 4, 2 => 2, -2 => 2);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Finding the ground state\n", "\n", "Having defined our Hamiltonian and spaces, it is just a matter of plugging this into the\n", "optimization framework in the usual way to find the ground state. So, we first specify all\n", "algorithms and their tolerances:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "boundary_alg = (; tol = 1.0e-8, alg = :simultaneous, trunc = (; alg = :fixedspace))\n", "gradient_alg = (; tol = 1.0e-6, maxiter = 10, alg = :eigsolver, iterscheme = :diffgauge)\n", "optimizer_alg = (; tol = 1.0e-4, alg = :lbfgs, maxiter = 150, ls_maxiter = 2, ls_maxfg = 2);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "!!! note\n", "\tTaking CTMRG gradients and optimizing symmetric tensors tends to be more problematic\n", @@ -180,80 +179,81 @@ "\n", "Keep in mind that the PEPS is constructed from a unit cell of spaces, so we have to make a\n", "matrix of `V_peps` spaces:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "virtual_spaces = fill(V_peps, size(lattice)...)\n", "peps₀ = InfinitePEPS(randn, ComplexF64, physical_spaces, virtual_spaces)\n", "env₀, = leading_boundary(CTMRGEnv(peps₀, V_env), peps₀; boundary_alg...);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "And at last, we optimize (which might take a bit):" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "peps, env, E, info = fixedpoint(\n", " H, peps₀, env₀; boundary_alg, gradient_alg, optimizer_alg, verbosity = 3\n", ")\n", "@show E;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "We can compare our PEPS result to the energy obtained using a cylinder-MPS calculation\n", "using a cylinder circumference of $L_y = 7$ and a bond dimension of 446, which yields\n", "$E = -0.273284888$:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "E_ref = -0.273284888\n", "@show (E - E_ref) / E_ref;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "---\n", "\n", "*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*" - ] + ], + "metadata": {} } ], + "nbformat_minor": 3, "metadata": { - "kernelspec": { - "display_name": "Julia 1.11.5", - "language": "julia", - "name": "julia-1.11" - }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.11.5" + "version": "1.11.7" + }, + "kernelspec": { + "name": "julia-1.11", + "display_name": "Julia 1.11.7", + "language": "julia" } }, - "nbformat": 4, - "nbformat_minor": 3 -} + "nbformat": 4 +} \ No newline at end of file diff --git a/examples/Cache.toml b/examples/Cache.toml index fade90854..840e82a0b 100644 --- a/examples/Cache.toml +++ b/examples/Cache.toml @@ -1,4 +1,4 @@ -bose_hubbard = "527a4eb6a5b6d02c59062ed621493d5332cf5ff4f2f7b4cd14fb15c9efdc51c4" +bose_hubbard = "f47aad758f4aa32fa44d7fae8d377ff364e0ee191f468694d4d70c6e3cdbc2b4" hubbard_su = "95a78abdd94af8ce2219cee2453a74d81f90a8316536c482faebf20563855793" 2d_ising_partition_function = "043e1b0b97197ed611559f4a4683cb8f166c01af82a97f71364f2f5421abe3d2" 3d_ising_partition_function = "baf05623f2b0c496393892be1dfe5c7f72af94ac8c1158db9af5c1aae816c264" From 3efa6a6832cdc54653b80e5994bf0422ee1eafbc Mon Sep 17 00:00:00 2001 From: lkdvos Date: Sun, 16 Nov 2025 10:07:16 -0500 Subject: [PATCH 02/12] update fermi_hubbard example --- docs/src/examples/fermi_hubbard/index.md | 174 ++++++++++----------- docs/src/examples/fermi_hubbard/main.ipynb | 126 +++++++-------- examples/Cache.toml | 2 +- 3 files changed, 151 insertions(+), 151 deletions(-) diff --git a/docs/src/examples/fermi_hubbard/index.md b/docs/src/examples/fermi_hubbard/index.md index 8d96be953..d45dee146 100644 --- a/docs/src/examples/fermi_hubbard/index.md +++ b/docs/src/examples/fermi_hubbard/index.md @@ -102,7 +102,7 @@ env₀, = leading_boundary(CTMRGEnv(peps₀, V_env), peps₀; boundary_alg...); ```` [ Info: CTMRG init: obj = +5.484842275412e+04 +4.469243203539e+04im err = 1.0000e+00 -[ Info: CTMRG conv 26: obj = +8.371681846538e+04 -3.789700713241e-07im err = 7.4963851544e-09 time = 14.25 sec +[ Info: CTMRG conv 26: obj = +8.371681846538e+04 -3.790437403950e-07im err = 7.4963849845e-09 time = 15.96 sec ```` @@ -116,95 +116,95 @@ peps, env, E, info = fixedpoint( ```` ```` -[ Info: LBFGS: initializing with f = 6.680719803101, ‖∇f‖ = 9.5849e+00 +[ Info: LBFGS: initializing with f = 6.680719803101e+00, ‖∇f‖ = 9.5851e+00 ┌ Warning: Linesearch not converged after 1 iterations and 4 function evaluations: │ α = 2.50e+01, dϕ = -1.49e-01, ϕ - ϕ₀ = -2.88e+00 -└ @ OptimKit ~/.julia/packages/OptimKit/G6i79/src/linesearches.jl:148 -[ Info: LBFGS: iter 1, time 874.29 s: f = 3.801380487744, ‖∇f‖ = 2.3456e+01, α = 2.50e+01, m = 0, nfg = 4 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/linesearches.jl:148 +[ Info: LBFGS: iter 1, Δt 1.53 m: f = 3.801336895973e+00, ‖∇f‖ = 2.3457e+01, α = 2.50e+01, m = 0, nfg = 4 ┌ Warning: Linesearch not converged after 1 iterations and 4 function evaluations: │ α = 2.50e+01, dϕ = -5.73e-03, ϕ - ϕ₀ = -3.81e+00 -└ @ OptimKit ~/.julia/packages/OptimKit/G6i79/src/linesearches.jl:148 -[ Info: LBFGS: iter 2, time 963.43 s: f = -0.009727650286, ‖∇f‖ = 3.2049e+00, α = 2.50e+01, m = 0, nfg = 4 -[ Info: LBFGS: iter 3, time 977.14 s: f = -0.115210826428, ‖∇f‖ = 2.7846e+00, α = 1.00e+00, m = 1, nfg = 1 -[ Info: LBFGS: iter 4, time 990.71 s: f = -0.616412169228, ‖∇f‖ = 2.3680e+00, α = 1.00e+00, m = 2, nfg = 1 -[ Info: LBFGS: iter 5, time 1003.13 s: f = -0.817801148604, ‖∇f‖ = 1.9111e+00, α = 1.00e+00, m = 3, nfg = 1 -[ Info: LBFGS: iter 6, time 1015.30 s: f = -0.990286615265, ‖∇f‖ = 2.3790e+00, α = 1.00e+00, m = 4, nfg = 1 -[ Info: LBFGS: iter 7, time 1026.31 s: f = -1.142787566798, ‖∇f‖ = 1.5680e+00, α = 1.00e+00, m = 5, nfg = 1 -[ Info: LBFGS: iter 8, time 1036.16 s: f = -1.238274330219, ‖∇f‖ = 3.5015e+00, α = 1.00e+00, m = 6, nfg = 1 -[ Info: LBFGS: iter 9, time 1046.93 s: f = -1.438136282421, ‖∇f‖ = 1.3366e+00, α = 1.00e+00, m = 7, nfg = 1 -[ Info: LBFGS: iter 10, time 1056.67 s: f = -1.523107107396, ‖∇f‖ = 1.3496e+00, α = 1.00e+00, m = 8, nfg = 1 -[ Info: LBFGS: iter 11, time 1077.81 s: f = -1.619305193101, ‖∇f‖ = 1.1951e+00, α = 1.72e-01, m = 9, nfg = 2 -[ Info: LBFGS: iter 12, time 1097.26 s: f = -1.681451834691, ‖∇f‖ = 9.4848e-01, α = 2.37e-01, m = 10, nfg = 2 -[ Info: LBFGS: iter 13, time 1107.99 s: f = -1.720734533825, ‖∇f‖ = 1.4216e+00, α = 1.00e+00, m = 11, nfg = 1 -[ Info: LBFGS: iter 14, time 1117.66 s: f = -1.770831967062, ‖∇f‖ = 6.2747e-01, α = 1.00e+00, m = 12, nfg = 1 -[ Info: LBFGS: iter 15, time 1127.31 s: f = -1.807572162185, ‖∇f‖ = 5.1320e-01, α = 1.00e+00, m = 13, nfg = 1 -[ Info: LBFGS: iter 16, time 1138.09 s: f = -1.859768355558, ‖∇f‖ = 7.1320e-01, α = 1.00e+00, m = 14, nfg = 1 -[ Info: LBFGS: iter 17, time 1147.68 s: f = -1.893160382125, ‖∇f‖ = 6.7323e-01, α = 1.00e+00, m = 15, nfg = 1 -[ Info: LBFGS: iter 18, time 1157.44 s: f = -1.923092489408, ‖∇f‖ = 5.5419e-01, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 19, time 1168.12 s: f = -1.948142544093, ‖∇f‖ = 4.7661e-01, α = 1.00e+00, m = 17, nfg = 1 -[ Info: LBFGS: iter 20, time 1177.91 s: f = -1.969512080077, ‖∇f‖ = 4.1608e-01, α = 1.00e+00, m = 18, nfg = 1 -[ Info: LBFGS: iter 21, time 1187.87 s: f = -1.982557838199, ‖∇f‖ = 4.5138e-01, α = 1.00e+00, m = 19, nfg = 1 -[ Info: LBFGS: iter 22, time 1198.67 s: f = -1.994007805763, ‖∇f‖ = 3.1538e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 23, time 1208.61 s: f = -2.002836016203, ‖∇f‖ = 3.0511e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 24, time 1218.59 s: f = -2.014062852739, ‖∇f‖ = 3.3491e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 25, time 1229.70 s: f = -2.022023251661, ‖∇f‖ = 4.3758e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 26, time 1239.66 s: f = -2.030112566345, ‖∇f‖ = 2.0509e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 27, time 1249.67 s: f = -2.035073683394, ‖∇f‖ = 1.6307e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 28, time 1261.85 s: f = -2.038663850455, ‖∇f‖ = 1.6880e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 29, time 1271.84 s: f = -2.041323592429, ‖∇f‖ = 2.4114e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 30, time 1281.66 s: f = -2.044997390530, ‖∇f‖ = 1.2115e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 31, time 1292.49 s: f = -2.046747469529, ‖∇f‖ = 9.5108e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 32, time 1302.32 s: f = -2.048741416292, ‖∇f‖ = 1.0509e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 33, time 1312.17 s: f = -2.049793769908, ‖∇f‖ = 1.7378e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 34, time 1323.04 s: f = -2.051022900848, ‖∇f‖ = 6.4055e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 35, time 1332.89 s: f = -2.051499900828, ‖∇f‖ = 4.9307e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 36, time 1342.73 s: f = -2.051918795787, ‖∇f‖ = 6.2013e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 37, time 1353.60 s: f = -2.052357188363, ‖∇f‖ = 9.4494e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 38, time 1363.45 s: f = -2.052855317283, ‖∇f‖ = 4.8219e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 39, time 1373.40 s: f = -2.053138284528, ‖∇f‖ = 3.5599e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 40, time 1384.12 s: f = -2.053404037719, ‖∇f‖ = 4.1844e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 41, time 1393.97 s: f = -2.053605747242, ‖∇f‖ = 5.7514e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 42, time 1403.69 s: f = -2.053822345457, ‖∇f‖ = 3.1996e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 43, time 1414.45 s: f = -2.054015631924, ‖∇f‖ = 3.1314e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 44, time 1424.21 s: f = -2.054206835742, ‖∇f‖ = 4.1588e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 45, time 1434.10 s: f = -2.054349141892, ‖∇f‖ = 6.7905e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 46, time 1444.85 s: f = -2.054531571463, ‖∇f‖ = 2.9227e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 47, time 1454.61 s: f = -2.054628027248, ‖∇f‖ = 2.5100e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 48, time 1464.37 s: f = -2.054735541814, ‖∇f‖ = 3.1538e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 49, time 1475.16 s: f = -2.054896782689, ‖∇f‖ = 3.4823e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 50, time 1494.75 s: f = -2.055018285181, ‖∇f‖ = 5.2680e-02, α = 5.17e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 51, time 1505.51 s: f = -2.055214629205, ‖∇f‖ = 3.0513e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 52, time 1515.33 s: f = -2.055401907932, ‖∇f‖ = 2.8740e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 53, time 1525.32 s: f = -2.055643036846, ‖∇f‖ = 4.1540e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 54, time 1536.28 s: f = -2.055979753449, ‖∇f‖ = 6.0310e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 55, time 1546.19 s: f = -2.056292876566, ‖∇f‖ = 6.4503e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 56, time 1556.12 s: f = -2.056764405334, ‖∇f‖ = 4.5709e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 57, time 1567.05 s: f = -2.057301128966, ‖∇f‖ = 5.8535e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 58, time 1577.08 s: f = -2.057684443651, ‖∇f‖ = 7.0407e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 59, time 1587.05 s: f = -2.058273607978, ‖∇f‖ = 6.4287e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 60, time 1598.01 s: f = -2.058991887288, ‖∇f‖ = 8.8941e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 61, time 1607.94 s: f = -2.059459011130, ‖∇f‖ = 1.1553e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 62, time 1617.89 s: f = -2.060066395726, ‖∇f‖ = 6.9440e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 63, time 1628.87 s: f = -2.060520108822, ‖∇f‖ = 8.4931e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 64, time 1648.98 s: f = -2.060815447626, ‖∇f‖ = 1.2115e-01, α = 5.26e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 65, time 1669.96 s: f = -2.060925751714, ‖∇f‖ = 8.3903e-02, α = 5.47e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 66, time 1679.97 s: f = -2.061209735729, ‖∇f‖ = 5.4010e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 67, time 1690.95 s: f = -2.061580165208, ‖∇f‖ = 5.5975e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 68, time 1701.12 s: f = -2.062036980891, ‖∇f‖ = 7.8898e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 69, time 1711.14 s: f = -2.062251708572, ‖∇f‖ = 1.1537e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 70, time 1722.19 s: f = -2.062519628412, ‖∇f‖ = 1.2953e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 71, time 1732.19 s: f = -2.063059957021, ‖∇f‖ = 7.2868e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 72, time 1742.20 s: f = -2.063313168886, ‖∇f‖ = 5.2530e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 73, time 1753.23 s: f = -2.063715484908, ‖∇f‖ = 5.0261e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 74, time 1763.31 s: f = -2.064332647622, ‖∇f‖ = 7.7210e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 75, time 1773.36 s: f = -2.064773364480, ‖∇f‖ = 1.2451e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 76, time 1784.47 s: f = -2.065371916869, ‖∇f‖ = 6.8015e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 77, time 1794.59 s: f = -2.065945928950, ‖∇f‖ = 7.6664e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 78, time 1804.62 s: f = -2.066640737009, ‖∇f‖ = 1.1191e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 79, time 1815.78 s: f = -2.067648349055, ‖∇f‖ = 2.3836e-01, α = 1.00e+00, m = 20, nfg = 1 -┌ Warning: LBFGS: not converged to requested tol after 80 iterations and time 1826.00 s: f = -2.069253135434, ‖∇f‖ = 2.0413e-01 -└ @ OptimKit ~/.julia/packages/OptimKit/G6i79/src/lbfgs.jl:197 -E = -2.069253135433506 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/linesearches.jl:148 +[ Info: LBFGS: iter 2, Δt 1.37 m: f = -9.717028383144e-03, ‖∇f‖ = 3.2049e+00, α = 2.50e+01, m = 0, nfg = 4 +[ Info: LBFGS: iter 3, Δt 17.57 s: f = -1.151937236622e-01, ‖∇f‖ = 2.7846e+00, α = 1.00e+00, m = 1, nfg = 1 +[ Info: LBFGS: iter 4, Δt 17.11 s: f = -6.164097155293e-01, ‖∇f‖ = 2.3680e+00, α = 1.00e+00, m = 2, nfg = 1 +[ Info: LBFGS: iter 5, Δt 15.95 s: f = -8.177983978529e-01, ‖∇f‖ = 1.9112e+00, α = 1.00e+00, m = 3, nfg = 1 +[ Info: LBFGS: iter 6, Δt 15.19 s: f = -9.902797572194e-01, ‖∇f‖ = 2.3790e+00, α = 1.00e+00, m = 4, nfg = 1 +[ Info: LBFGS: iter 7, Δt 14.17 s: f = -1.142781184740e+00, ‖∇f‖ = 1.5680e+00, α = 1.00e+00, m = 5, nfg = 1 +[ Info: LBFGS: iter 8, Δt 13.65 s: f = -1.238252408083e+00, ‖∇f‖ = 3.5020e+00, α = 1.00e+00, m = 6, nfg = 1 +[ Info: LBFGS: iter 9, Δt 12.48 s: f = -1.438152725373e+00, ‖∇f‖ = 1.3366e+00, α = 1.00e+00, m = 7, nfg = 1 +[ Info: LBFGS: iter 10, Δt 13.47 s: f = -1.523106558123e+00, ‖∇f‖ = 1.3495e+00, α = 1.00e+00, m = 8, nfg = 1 +[ Info: LBFGS: iter 11, Δt 26.36 s: f = -1.619309116769e+00, ‖∇f‖ = 1.1948e+00, α = 1.72e-01, m = 9, nfg = 2 +[ Info: LBFGS: iter 12, Δt 26.04 s: f = -1.681436583910e+00, ‖∇f‖ = 9.4842e-01, α = 2.37e-01, m = 10, nfg = 2 +[ Info: LBFGS: iter 13, Δt 12.48 s: f = -1.720664454158e+00, ‖∇f‖ = 1.4227e+00, α = 1.00e+00, m = 11, nfg = 1 +[ Info: LBFGS: iter 14, Δt 12.26 s: f = -1.770786360300e+00, ‖∇f‖ = 6.2727e-01, α = 1.00e+00, m = 12, nfg = 1 +[ Info: LBFGS: iter 15, Δt 13.32 s: f = -1.807472248475e+00, ‖∇f‖ = 5.1285e-01, α = 1.00e+00, m = 13, nfg = 1 +[ Info: LBFGS: iter 16, Δt 12.57 s: f = -1.859749170859e+00, ‖∇f‖ = 7.1361e-01, α = 1.00e+00, m = 14, nfg = 1 +[ Info: LBFGS: iter 17, Δt 13.31 s: f = -1.893132064727e+00, ‖∇f‖ = 6.7317e-01, α = 1.00e+00, m = 15, nfg = 1 +[ Info: LBFGS: iter 18, Δt 12.54 s: f = -1.923092873621e+00, ‖∇f‖ = 5.5354e-01, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 19, Δt 12.31 s: f = -1.948135800861e+00, ‖∇f‖ = 4.7674e-01, α = 1.00e+00, m = 17, nfg = 1 +[ Info: LBFGS: iter 20, Δt 13.62 s: f = -1.969521619354e+00, ‖∇f‖ = 4.1602e-01, α = 1.00e+00, m = 18, nfg = 1 +[ Info: LBFGS: iter 21, Δt 13.66 s: f = -1.982569428626e+00, ‖∇f‖ = 4.5188e-01, α = 1.00e+00, m = 19, nfg = 1 +[ Info: LBFGS: iter 22, Δt 12.60 s: f = -1.994023085799e+00, ‖∇f‖ = 3.1544e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 23, Δt 13.62 s: f = -2.002841834328e+00, ‖∇f‖ = 3.0502e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 24, Δt 12.82 s: f = -2.014066311349e+00, ‖∇f‖ = 3.3498e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 25, Δt 12.94 s: f = -2.022003037531e+00, ‖∇f‖ = 4.3896e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 26, Δt 13.76 s: f = -2.030108714915e+00, ‖∇f‖ = 2.0527e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 27, Δt 12.75 s: f = -2.035064144013e+00, ‖∇f‖ = 1.6295e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 28, Δt 15.33 s: f = -2.038644461742e+00, ‖∇f‖ = 1.6908e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 29, Δt 12.77 s: f = -2.041287673888e+00, ‖∇f‖ = 2.4233e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 30, Δt 13.59 s: f = -2.044963019661e+00, ‖∇f‖ = 1.2134e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 31, Δt 12.74 s: f = -2.046709219209e+00, ‖∇f‖ = 9.5293e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 32, Δt 13.57 s: f = -2.048704716271e+00, ‖∇f‖ = 1.0554e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 33, Δt 12.57 s: f = -2.049753790375e+00, ‖∇f‖ = 1.7672e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 34, Δt 13.56 s: f = -2.051012658206e+00, ‖∇f‖ = 6.4429e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 35, Δt 12.58 s: f = -2.051487366864e+00, ‖∇f‖ = 4.8991e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 36, Δt 13.58 s: f = -2.051906996297e+00, ‖∇f‖ = 6.2050e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 37, Δt 12.63 s: f = -2.052351425024e+00, ‖∇f‖ = 9.2730e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 38, Δt 13.59 s: f = -2.052848309962e+00, ‖∇f‖ = 4.8571e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 39, Δt 12.59 s: f = -2.053135862188e+00, ‖∇f‖ = 3.5616e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 40, Δt 13.38 s: f = -2.053405790304e+00, ‖∇f‖ = 4.2302e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 41, Δt 12.68 s: f = -2.053600752187e+00, ‖∇f‖ = 5.7965e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 42, Δt 13.39 s: f = -2.053812277599e+00, ‖∇f‖ = 3.2230e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 43, Δt 12.45 s: f = -2.054009905439e+00, ‖∇f‖ = 3.1640e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 44, Δt 13.44 s: f = -2.054189832249e+00, ‖∇f‖ = 4.1575e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 45, Δt 12.65 s: f = -2.054332729403e+00, ‖∇f‖ = 6.9193e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 46, Δt 13.44 s: f = -2.054519398221e+00, ‖∇f‖ = 2.9113e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 47, Δt 12.47 s: f = -2.054613030010e+00, ‖∇f‖ = 2.5330e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 48, Δt 13.46 s: f = -2.054720911227e+00, ‖∇f‖ = 3.1755e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 49, Δt 12.45 s: f = -2.054879191651e+00, ‖∇f‖ = 3.4648e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 50, Δt 13.68 s: f = -2.054968269730e+00, ‖∇f‖ = 8.4873e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 51, Δt 12.51 s: f = -2.055240587980e+00, ‖∇f‖ = 3.1534e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 52, Δt 13.35 s: f = -2.055381123762e+00, ‖∇f‖ = 2.5668e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 53, Δt 12.81 s: f = -2.055572801679e+00, ‖∇f‖ = 3.8027e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 54, Δt 12.65 s: f = -2.055872564535e+00, ‖∇f‖ = 4.6489e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 55, Δt 13.70 s: f = -2.056396561541e+00, ‖∇f‖ = 8.8064e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 56, Δt 13.92 s: f = -2.056856024867e+00, ‖∇f‖ = 8.3599e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 57, Δt 12.73 s: f = -2.057479287674e+00, ‖∇f‖ = 4.4470e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 58, Δt 13.75 s: f = -2.057912193743e+00, ‖∇f‖ = 5.9314e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 59, Δt 12.73 s: f = -2.058287076203e+00, ‖∇f‖ = 6.0139e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 60, Δt 12.71 s: f = -2.058998629347e+00, ‖∇f‖ = 6.2208e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 61, Δt 26.47 s: f = -2.059475226949e+00, ‖∇f‖ = 1.0081e-01, α = 4.82e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 62, Δt 13.76 s: f = -2.060082547535e+00, ‖∇f‖ = 6.8334e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 63, Δt 12.90 s: f = -2.060482651966e+00, ‖∇f‖ = 7.3285e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 64, Δt 13.92 s: f = -2.060740773412e+00, ‖∇f‖ = 9.5341e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 65, Δt 12.84 s: f = -2.061312903626e+00, ‖∇f‖ = 7.1673e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 66, Δt 13.74 s: f = -2.061710661630e+00, ‖∇f‖ = 5.4950e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 67, Δt 12.78 s: f = -2.062078845926e+00, ‖∇f‖ = 5.4629e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 68, Δt 13.77 s: f = -2.062377274080e+00, ‖∇f‖ = 7.1202e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 69, Δt 26.56 s: f = -2.062699328045e+00, ‖∇f‖ = 9.7057e-02, α = 5.00e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 70, Δt 12.80 s: f = -2.063167668617e+00, ‖∇f‖ = 7.1650e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 71, Δt 13.99 s: f = -2.063929597328e+00, ‖∇f‖ = 9.0355e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 72, Δt 12.76 s: f = -2.064218059719e+00, ‖∇f‖ = 8.2741e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 73, Δt 13.82 s: f = -2.064664984361e+00, ‖∇f‖ = 7.7230e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 74, Δt 12.90 s: f = -2.065239846433e+00, ‖∇f‖ = 1.0121e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 75, Δt 13.86 s: f = -2.066014135860e+00, ‖∇f‖ = 9.7697e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 76, Δt 12.98 s: f = -2.066932040862e+00, ‖∇f‖ = 1.6559e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 77, Δt 15.54 s: f = -2.067203376711e+00, ‖∇f‖ = 3.9032e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 78, Δt 13.03 s: f = -2.067518198272e+00, ‖∇f‖ = 2.6538e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 79, Δt 14.04 s: f = -2.069457237771e+00, ‖∇f‖ = 1.1802e-01, α = 1.00e+00, m = 20, nfg = 1 +┌ Warning: LBFGS: not converged to requested tol after 80 iterations and time 27.43 m: f = -2.071174488368e+00, ‖∇f‖ = 2.2576e-01 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/lbfgs.jl:199 +E = -2.0711744883679684 ```` @@ -219,7 +219,7 @@ E_ref = -2.09765625 ```` ```` -(E - E_ref) / E_ref = -0.013540404709539051 +(E - E_ref) / E_ref = -0.012624452472625886 ```` diff --git a/docs/src/examples/fermi_hubbard/main.ipynb b/docs/src/examples/fermi_hubbard/main.ipynb index 61ee725a0..818ffe37e 100644 --- a/docs/src/examples/fermi_hubbard/main.ipynb +++ b/docs/src/examples/fermi_hubbard/main.ipynb @@ -1,17 +1,16 @@ { "cells": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Markdown #hide" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "# Fermi-Hubbard model with $f\\mathbb{Z}_2 \\boxtimes U(1)$ symmetry, at large $U$ and half-filling\n", "\n", @@ -29,44 +28,44 @@ "workflow remains the same.\n", "\n", "First though, we make the example deterministic by seeding the RNG, and we make our imports:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Random\n", "using TensorKit, PEPSKit\n", "using MPSKit: add_physical_charge\n", "Random.seed!(2928528937);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Defining the fermionic Hamiltonian\n", "\n", "Let us start by fixing the parameters of the Hubbard model. We're going to use a hopping of\n", "$t=1$ and a large $U=8$ on a $2 \\times 2$ unit cell:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "t = 1.0\n", "U = 8.0\n", "lattice = InfiniteSquare(2, 2);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "In order to create fermionic tensors, one needs to define symmetry sectors using TensorKit's\n", "`FermionParity`. Not only do we want use fermion parity but we also want our\n", @@ -74,34 +73,33 @@ "using the [Deligne product](https://jutho.github.io/TensorKit.jl/stable/lib/sectors/#TensorKitSectors.deligneproduct-Tuple{Sector,%20Sector}),\n", "called through `⊠` which is obtained by typing `\\boxtimes+TAB`. We will not impose any extra\n", "spin symmetry, so we have:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "fermion = fℤ₂\n", "particle_symmetry = U1Irrep\n", "spin_symmetry = Trivial\n", "S = fermion ⊠ particle_symmetry" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "The next step is defining graded virtual PEPS and environment spaces using `S`. Here we also\n", "use the symmetry sector to impose half-filling. That is all we need to define the Hubbard\n", "Hamiltonian:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "D, χ = 1, 1\n", "V_peps = Vect[S]((0, 0) => 2 * D, (1, 1) => D, (1, -1) => D)\n", @@ -111,111 +109,113 @@ "S_aux = S((1, 1))\n", "H₀ = hubbard_model(ComplexF64, particle_symmetry, spin_symmetry, lattice; t, U)\n", "H = add_physical_charge(H₀, fill(S_aux, size(H₀.lattice)...));" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Finding the ground state\n", "\n", "Again, the procedure of ground state optimization is very similar to before. First, we\n", "define all algorithmic parameters:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "boundary_alg = (; tol = 1.0e-8, alg = :simultaneous, trunc = (; alg = :fixedspace))\n", "gradient_alg = (; tol = 1.0e-6, alg = :eigsolver, maxiter = 10, iterscheme = :diffgauge)\n", "optimizer_alg = (; tol = 1.0e-4, alg = :lbfgs, maxiter = 80, ls_maxiter = 3, ls_maxfg = 3)" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Second, we initialize a PEPS state and environment (which we converge) constructed from\n", "symmetric physical and virtual spaces:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "physical_spaces = physicalspace(H)\n", "virtual_spaces = fill(V_peps, size(lattice)...)\n", "peps₀ = InfinitePEPS(randn, ComplexF64, physical_spaces, virtual_spaces)\n", "env₀, = leading_boundary(CTMRGEnv(peps₀, V_env), peps₀; boundary_alg...);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "And third, we start the ground state search (this does take quite long):" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "peps, env, E, info = fixedpoint(\n", " H, peps₀, env₀; boundary_alg, gradient_alg, optimizer_alg, verbosity = 3\n", ")\n", "@show E;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Finally, let's compare the obtained energy against a reference energy from a QMC study by\n", "[Qin et al.](@cite qin_benchmark_2016). With the parameters specified above, they obtain an\n", "energy of $E_\\text{ref} \\approx 4 \\times -0.5244140625 = -2.09765625$ (the factor 4 comes\n", "from the $2 \\times 2$ unit cell that we use here). Thus, we find:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "E_ref = -2.09765625\n", "@show (E - E_ref) / E_ref;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "---\n", "\n", "*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*" - ] + ], + "metadata": {} } ], + "nbformat_minor": 3, "metadata": { - "kernelspec": { - "display_name": "Julia 1.11.5", - "language": "julia", - "name": "julia-1.11" - }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.11.5" + "version": "1.11.7" + }, + "kernelspec": { + "name": "julia-1.11", + "display_name": "Julia 1.11.7", + "language": "julia" } }, - "nbformat": 4, - "nbformat_minor": 3 -} + "nbformat": 4 +} \ No newline at end of file diff --git a/examples/Cache.toml b/examples/Cache.toml index 840e82a0b..f928e32e1 100644 --- a/examples/Cache.toml +++ b/examples/Cache.toml @@ -5,6 +5,6 @@ hubbard_su = "95a78abdd94af8ce2219cee2453a74d81f90a8316536c482faebf20563855793" boundary_mps = "430db112b38b4ef30215728f994692e63faa50d085f5c69aad1ee7a7b743431d" heisenberg_su = "4cedc6a2784417266c007b7ea871c32434e9b837982f846f867a50613f25b15f" xxz = "9816ec9c07997a7f184be51581075655adc0c8a1a2fffc609ce88d8075a8b7db" -fermi_hubbard = "217d3df2e606e898599dc7c461e04436800f60804add75b0ec5fb5b18d8dcdbf" +fermi_hubbard = "4997680c826e555557c661e605e1d7d363e0cee15522d0895fa0cfd53b1de001" j1j2_su = "ccde4117531a26bf679d5a97bcd002974307989fdcc718966ea69a68644d655c" heisenberg = "136757a5ba5c7a49a803c49395150d1df6bc1fb6eecb29cc20cd968b3d1bf97d" From a2fa5334780e2dcb70329cf686315c1f3e6d1121 Mon Sep 17 00:00:00 2001 From: lkdvos Date: Sun, 16 Nov 2025 10:25:46 -0500 Subject: [PATCH 03/12] update heisenberg examples --- docs/src/examples/heisenberg/index.md | 262 ++++++++------------- docs/src/examples/heisenberg/main.ipynb | 236 +++++++++---------- docs/src/examples/heisenberg_su/index.md | 61 +++-- docs/src/examples/heisenberg_su/main.ipynb | 125 +++++----- examples/Cache.toml | 4 +- examples/heisenberg/main.jl | 2 +- 6 files changed, 318 insertions(+), 372 deletions(-) diff --git a/docs/src/examples/heisenberg/index.md b/docs/src/examples/heisenberg/index.md index 0a62bfc42..298b2ffb9 100644 --- a/docs/src/examples/heisenberg/index.md +++ b/docs/src/examples/heisenberg/index.md @@ -48,39 +48,7 @@ H = heisenberg_XYZ(InfiniteSquare(); Jx = -1, Jy = 1, Jz = -1) ```` ```` -LocalOperator{Tuple{Pair{Tuple{CartesianIndex{2}, CartesianIndex{2}}, TensorKit.TensorMap{ComplexF64, TensorKit.ComplexSpace, 2, 2, Vector{ComplexF64}}}, Pair{Tuple{CartesianIndex{2}, CartesianIndex{2}}, TensorKit.TensorMap{ComplexF64, TensorKit.ComplexSpace, 2, 2, Vector{ComplexF64}}}}, TensorKit.ComplexSpace}(TensorKit.ComplexSpace[ℂ^2;;], ((CartesianIndex(1, 1), CartesianIndex(1, 2)) => TensorMap((ℂ^2 ⊗ ℂ^2) ← (ℂ^2 ⊗ ℂ^2)): -[:, :, 1, 1] = - -0.25 + 0.0im 0.0 + 0.0im - 0.0 + 0.0im -0.5 + 0.0im - -[:, :, 2, 1] = - 0.0 + 0.0im 0.0 + 0.0im - 0.25 + 0.0im 0.0 + 0.0im - -[:, :, 1, 2] = - 0.0 + 0.0im 0.25 + 0.0im - 0.0 + 0.0im 0.0 + 0.0im - -[:, :, 2, 2] = - -0.5 + 0.0im 0.0 + 0.0im - 0.0 + 0.0im -0.25 + 0.0im -, (CartesianIndex(1, 1), CartesianIndex(2, 1)) => TensorMap((ℂ^2 ⊗ ℂ^2) ← (ℂ^2 ⊗ ℂ^2)): -[:, :, 1, 1] = - -0.25 + 0.0im 0.0 + 0.0im - 0.0 + 0.0im -0.5 + 0.0im - -[:, :, 2, 1] = - 0.0 + 0.0im 0.0 + 0.0im - 0.25 + 0.0im 0.0 + 0.0im - -[:, :, 1, 2] = - 0.0 + 0.0im 0.25 + 0.0im - 0.0 + 0.0im 0.0 + 0.0im - -[:, :, 2, 2] = - -0.5 + 0.0im 0.0 + 0.0im - 0.0 + 0.0im -0.25 + 0.0im -)) +LocalOperator{Tuple{Pair{Tuple{CartesianIndex{2}, CartesianIndex{2}}, TensorKit.TensorMap{ComplexF64, TensorKit.ComplexSpace, 2, 2, Vector{ComplexF64}}}, Pair{Tuple{CartesianIndex{2}, CartesianIndex{2}}, TensorKit.TensorMap{ComplexF64, TensorKit.ComplexSpace, 2, 2, Vector{ComplexF64}}}}, TensorKit.ComplexSpace}(TensorKit.ComplexSpace[ℂ^2;;], ((CartesianIndex(1, 1), CartesianIndex(1, 2)) => TensorMap{ComplexF64, TensorKit.ComplexSpace, 2, 2, Vector{ComplexF64}}(ComplexF64[-0.25 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, -0.5 + 0.0im, 0.0 + 0.0im, 0.25 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.25 + 0.0im, 0.0 + 0.0im, -0.5 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, -0.25 + 0.0im], (ℂ^2 ⊗ ℂ^2) ← (ℂ^2 ⊗ ℂ^2)), (CartesianIndex(1, 1), CartesianIndex(2, 1)) => TensorMap{ComplexF64, TensorKit.ComplexSpace, 2, 2, Vector{ComplexF64}}(ComplexF64[-0.25 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, -0.5 + 0.0im, 0.0 + 0.0im, 0.25 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.25 + 0.0im, 0.0 + 0.0im, -0.5 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, -0.25 + 0.0im], (ℂ^2 ⊗ ℂ^2) ← (ℂ^2 ⊗ ℂ^2)))) ```` ## Setting up the algorithms and initial guesses @@ -132,43 +100,11 @@ optimization. To get a PEPS with physical dimension 2 (since we have a spin-1/2 with complex-valued random Gaussian entries, we set: ````julia -peps₀ = InfinitePEPS(randn, ComplexF64, 2, Dbond) +peps₀ = InfinitePEPS(randn, ComplexF64, ℂ^2, ℂ^Dbond) ```` ```` -InfinitePEPS{TensorKit.TensorMap{ComplexF64, TensorKit.ComplexSpace, 1, 4, Vector{ComplexF64}}}(TensorKit.TensorMap{ComplexF64, TensorKit.ComplexSpace, 1, 4, Vector{ComplexF64}}[TensorMap(ℂ^2 ← (ℂ^2 ⊗ ℂ^2 ⊗ (ℂ^2)' ⊗ (ℂ^2)')): -[:, :, 1, 1, 1] = - 0.07382174258286094 + 0.12820373667088403im 0.7897519397510839 + 0.9113654266438473im - 0.2553716885006697 - 0.4358399804354269im -1.0272416446076236 - 0.12635062198157215im - -[:, :, 2, 1, 1] = - 0.16833628450178303 - 0.10088950122180829im -0.9702030532300809 + 0.010730752411986726im - -1.6804460553576506 + 0.29081053879369084im 0.6844811667615024 + 0.09101537356941222im - -[:, :, 1, 2, 1] = - 0.5085938050744258 + 0.3786892551842583im 1.0020057959636561 - 1.4704891009758718im - -0.6153328223084331 + 0.10417896606055738im 0.6024931811537675 - 1.0348374874397468im - -[:, :, 2, 2, 1] = - -0.027201695938305456 + 0.5778042099380925im 0.09232089635078945 + 0.6143070126937361im - 1.0707115218777772 - 0.5747168579241235im -0.5819741818511422 - 0.9842624134267605im - -[:, :, 1, 1, 2] = - 1.2332543810053822 - 1.7783531996396438im 0.8887723728085348 + 0.7809798723615474im - 1.2251189302516847 - 0.6853683793073324im 1.5333834584675397 - 0.13856216581406375im - -[:, :, 2, 1, 2] = - 0.1406381347783769 + 0.6630243440357264im -0.7294596235434386 + 0.40327909254711103im - 0.7212056487788236 + 0.24320971945037498im 0.9991347929322827 + 0.0017902515981375842im - -[:, :, 1, 2, 2] = - 0.34282910982693904 - 0.4865238029567361im 0.9380949844871762 - 0.6985342237892025im - -0.7437083517319159 - 0.6895708849529253im -0.8981092940164176 + 0.9720706252141459im - -[:, :, 2, 2, 2] = - -0.8897079923413616 - 0.7145412189457411im 0.07771261045117502 - 0.6400190994609709im - -1.6099412157243007 + 0.8855200965611144im 0.7357380595021633 + 0.4626916850143416im -;;]) +InfinitePEPS{TensorKit.TensorMap{ComplexF64, TensorKit.ComplexSpace, 1, 4, Vector{ComplexF64}}}(TensorKit.TensorMap{ComplexF64, TensorKit.ComplexSpace, 1, 4, Vector{ComplexF64}}[TensorMap{ComplexF64, TensorKit.ComplexSpace, 1, 4, Vector{ComplexF64}}(ComplexF64[0.07382174258286094 + 0.12820373667088403im, 0.2553716885006697 - 0.4358399804354269im, 0.7897519397510839 + 0.9113654266438473im, -1.0272416446076236 - 0.12635062198157215im, 0.16833628450178303 - 0.10088950122180829im, -1.6804460553576506 + 0.29081053879369084im, -0.9702030532300809 + 0.010730752411986726im, 0.6844811667615024 + 0.09101537356941222im, 0.5085938050744258 + 0.3786892551842583im, -0.6153328223084331 + 0.10417896606055738im, 1.0020057959636561 - 1.4704891009758718im, 0.6024931811537675 - 1.0348374874397468im, -0.027201695938305456 + 0.5778042099380925im, 1.0707115218777772 - 0.5747168579241235im, 0.09232089635078945 + 0.6143070126937361im, -0.5819741818511422 - 0.9842624134267605im, 1.2332543810053822 - 1.7783531996396438im, 1.2251189302516847 - 0.6853683793073324im, 0.8887723728085348 + 0.7809798723615474im, 1.5333834584675397 - 0.13856216581406375im, 0.1406381347783769 + 0.6630243440357264im, 0.7212056487788236 + 0.24320971945037498im, -0.7294596235434386 + 0.40327909254711103im, 0.9991347929322827 + 0.0017902515981375842im, 0.34282910982693904 - 0.4865238029567361im, -0.7437083517319159 - 0.6895708849529253im, 0.9380949844871762 - 0.6985342237892025im, -0.8981092940164176 + 0.9720706252141459im, -0.8897079923413616 - 0.7145412189457411im, -1.6099412157243007 + 0.8855200965611144im, 0.07771261045117502 - 0.6400190994609709im, 0.7357380595021633 + 0.4626916850143416im], ℂ^2 ← (ℂ^2 ⊗ ℂ^2 ⊗ (ℂ^2)' ⊗ (ℂ^2)'));;]) ```` The last thing we need before we can start the optimization is an initial CTMRG environment. @@ -182,7 +118,7 @@ env₀, info_ctmrg = leading_boundary(env_random, peps₀; boundary_alg...); ```` [ Info: CTMRG init: obj = -2.749614463601e+00 +3.639628057806e+00im err = 1.0000e+00 -[ Info: CTMRG conv 27: obj = +9.727103564786e+00 err = 2.6201801020e-11 time = 0.22 sec +[ Info: CTMRG conv 27: obj = +9.727103564786e+00 err = 2.6201795901e-11 time = 7.98 sec ```` @@ -196,7 +132,7 @@ directions and unit cell entries: ```` ```` -info_ctmrg.truncation_error = 0.000807633282421865 +info_ctmrg.truncation_error = 0.0008076332823860801 ```` @@ -213,89 +149,88 @@ peps, env, E, info_opt = fixedpoint( ```` ```` -[ Info: LBFGS: initializing with f = 0.000601645310, ‖∇f‖ = 9.3547e-01 -[ Info: LBFGS: iter 1, time 653.26 s: f = -0.489780489234, ‖∇f‖ = 6.0028e-01, α = 5.94e+01, m = 0, nfg = 5 -[ Info: LBFGS: iter 2, time 654.02 s: f = -0.501969351328, ‖∇f‖ = 5.3739e-01, α = 2.80e-01, m = 1, nfg = 2 -[ Info: LBFGS: iter 3, time 654.40 s: f = -0.523150649702, ‖∇f‖ = 3.9920e-01, α = 1.00e+00, m = 2, nfg = 1 -[ Info: LBFGS: iter 4, time 655.20 s: f = -0.538654553217, ‖∇f‖ = 4.1550e-01, α = 2.29e-01, m = 3, nfg = 2 -[ Info: LBFGS: iter 5, time 657.28 s: f = -0.549895529711, ‖∇f‖ = 4.4023e-01, α = 6.96e-02, m = 4, nfg = 4 -[ Info: LBFGS: iter 6, time 658.20 s: f = -0.568903885964, ‖∇f‖ = 4.8252e-01, α = 2.23e-01, m = 5, nfg = 2 -[ Info: LBFGS: iter 7, time 658.58 s: f = -0.586868365051, ‖∇f‖ = 4.2836e-01, α = 1.00e+00, m = 6, nfg = 1 -[ Info: LBFGS: iter 8, time 658.96 s: f = -0.599839175727, ‖∇f‖ = 2.2069e-01, α = 1.00e+00, m = 7, nfg = 1 -[ Info: LBFGS: iter 9, time 659.33 s: f = -0.606610941341, ‖∇f‖ = 1.9251e-01, α = 1.00e+00, m = 8, nfg = 1 -[ Info: LBFGS: iter 10, time 659.69 s: f = -0.624864467621, ‖∇f‖ = 2.9516e-01, α = 1.00e+00, m = 9, nfg = 1 -[ Info: LBFGS: iter 11, time 660.04 s: f = -0.638376467572, ‖∇f‖ = 2.3674e-01, α = 1.00e+00, m = 10, nfg = 1 -[ Info: LBFGS: iter 12, time 660.39 s: f = -0.644410588164, ‖∇f‖ = 3.2330e-01, α = 1.00e+00, m = 11, nfg = 1 -[ Info: LBFGS: iter 13, time 660.71 s: f = -0.651444381192, ‖∇f‖ = 1.3176e-01, α = 1.00e+00, m = 12, nfg = 1 -[ Info: LBFGS: iter 14, time 661.05 s: f = -0.654528265227, ‖∇f‖ = 6.6190e-02, α = 1.00e+00, m = 13, nfg = 1 -[ Info: LBFGS: iter 15, time 661.39 s: f = -0.655971175652, ‖∇f‖ = 5.1869e-02, α = 1.00e+00, m = 14, nfg = 1 -[ Info: LBFGS: iter 16, time 661.72 s: f = -0.657229077727, ‖∇f‖ = 5.8976e-02, α = 1.00e+00, m = 15, nfg = 1 -[ Info: LBFGS: iter 17, time 662.06 s: f = -0.658532053807, ‖∇f‖ = 5.5534e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 18, time 662.40 s: f = -0.659295183671, ‖∇f‖ = 3.0535e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 19, time 662.73 s: f = -0.659542164961, ‖∇f‖ = 2.2302e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 20, time 663.05 s: f = -0.659738061987, ‖∇f‖ = 2.7531e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 21, time 663.38 s: f = -0.659907342873, ‖∇f‖ = 1.9373e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 22, time 663.73 s: f = -0.660097470227, ‖∇f‖ = 1.4408e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 23, time 664.05 s: f = -0.660262757053, ‖∇f‖ = 1.2375e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 24, time 664.39 s: f = -0.660393125905, ‖∇f‖ = 1.9300e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 25, time 664.72 s: f = -0.660497546366, ‖∇f‖ = 1.3215e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 26, time 665.04 s: f = -0.660574185878, ‖∇f‖ = 1.2473e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 27, time 665.39 s: f = -0.660741803152, ‖∇f‖ = 1.6340e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 28, time 665.75 s: f = -0.660903655648, ‖∇f‖ = 1.8796e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 29, time 666.10 s: f = -0.661017363978, ‖∇f‖ = 1.3066e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 30, time 666.45 s: f = -0.661073166057, ‖∇f‖ = 8.0202e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 31, time 666.80 s: f = -0.661117738290, ‖∇f‖ = 7.9517e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 32, time 667.99 s: f = -0.661172741238, ‖∇f‖ = 9.8830e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 33, time 668.32 s: f = -0.661193956739, ‖∇f‖ = 1.5397e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 34, time 668.72 s: f = -0.661227726765, ‖∇f‖ = 5.4743e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 35, time 669.07 s: f = -0.661241731905, ‖∇f‖ = 4.7251e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 36, time 669.42 s: f = -0.661255581390, ‖∇f‖ = 5.4063e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 37, time 669.74 s: f = -0.661264752007, ‖∇f‖ = 1.3807e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 38, time 670.08 s: f = -0.661283616258, ‖∇f‖ = 5.9652e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 39, time 670.40 s: f = -0.661291824999, ‖∇f‖ = 4.3576e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 40, time 670.74 s: f = -0.661304230051, ‖∇f‖ = 6.0191e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 41, time 671.08 s: f = -0.661331508375, ‖∇f‖ = 1.1163e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 42, time 671.43 s: f = -0.661376470938, ‖∇f‖ = 1.2657e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 43, time 671.79 s: f = -0.661468673389, ‖∇f‖ = 2.1031e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 44, time 672.15 s: f = -0.661514982560, ‖∇f‖ = 3.2277e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 45, time 672.52 s: f = -0.661747546318, ‖∇f‖ = 2.1689e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 46, time 672.87 s: f = -0.661905953148, ‖∇f‖ = 1.6677e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 47, time 673.23 s: f = -0.662062528550, ‖∇f‖ = 1.6193e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 48, time 673.58 s: f = -0.662213957905, ‖∇f‖ = 2.0197e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 49, time 673.95 s: f = -0.662326044624, ‖∇f‖ = 1.8366e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 50, time 674.32 s: f = -0.662393005733, ‖∇f‖ = 1.1551e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 51, time 674.68 s: f = -0.662429954725, ‖∇f‖ = 1.0083e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 52, time 675.04 s: f = -0.662449363090, ‖∇f‖ = 1.3903e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 53, time 675.40 s: f = -0.662477942405, ‖∇f‖ = 6.7608e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 54, time 675.76 s: f = -0.662486360536, ‖∇f‖ = 3.8704e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 55, time 676.11 s: f = -0.662492546495, ‖∇f‖ = 3.5233e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 56, time 676.45 s: f = -0.662497882956, ‖∇f‖ = 6.1259e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 57, time 676.81 s: f = -0.662502369825, ‖∇f‖ = 2.9147e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 58, time 677.17 s: f = -0.662504348191, ‖∇f‖ = 2.1731e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 59, time 677.52 s: f = -0.662507141108, ‖∇f‖ = 1.8340e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 60, time 677.87 s: f = -0.662508298294, ‖∇f‖ = 4.6222e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 61, time 678.24 s: f = -0.662510158234, ‖∇f‖ = 1.5689e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 62, time 678.57 s: f = -0.662510768904, ‖∇f‖ = 9.6230e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 63, time 678.93 s: f = -0.662511246489, ‖∇f‖ = 8.8002e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 64, time 679.26 s: f = -0.662511761487, ‖∇f‖ = 1.6668e-03, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 65, time 679.59 s: f = -0.662512148273, ‖∇f‖ = 7.9766e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 66, time 679.92 s: f = -0.662512357751, ‖∇f‖ = 6.8594e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 67, time 680.26 s: f = -0.662512976280, ‖∇f‖ = 7.1623e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 68, time 680.93 s: f = -0.662513222472, ‖∇f‖ = 1.0991e-03, α = 4.99e-01, m = 16, nfg = 2 -[ Info: LBFGS: iter 69, time 681.26 s: f = -0.662513507229, ‖∇f‖ = 5.7699e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 70, time 681.60 s: f = -0.662513689584, ‖∇f‖ = 4.2137e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 71, time 681.94 s: f = -0.662513825899, ‖∇f‖ = 6.8079e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 72, time 682.27 s: f = -0.662513929736, ‖∇f‖ = 4.8212e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 73, time 682.60 s: f = -0.662514019314, ‖∇f‖ = 3.6338e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 74, time 682.94 s: f = -0.662514148429, ‖∇f‖ = 3.7588e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 75, time 683.59 s: f = -0.662514184144, ‖∇f‖ = 4.0858e-04, α = 3.36e-01, m = 16, nfg = 2 -[ Info: LBFGS: iter 76, time 683.94 s: f = -0.662514214340, ‖∇f‖ = 2.6812e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 77, time 684.27 s: f = -0.662514236095, ‖∇f‖ = 1.7703e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 78, time 684.60 s: f = -0.662514249499, ‖∇f‖ = 1.8355e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 79, time 684.92 s: f = -0.662514261393, ‖∇f‖ = 1.2213e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 80, time 685.25 s: f = -0.662514269951, ‖∇f‖ = 2.1828e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 81, time 685.59 s: f = -0.662514275813, ‖∇f‖ = 1.6011e-04, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: converged after 82 iterations and time 685.90 s: f = -0.662514279390, ‖∇f‖ = 9.7855e-05 +[ Info: LBFGS: initializing with f = 6.016453104343e-04, ‖∇f‖ = 9.3548e-01 +[ Info: LBFGS: iter 1, Δt 4.52 s: f = -4.897965192207e-01, ‖∇f‖ = 6.0022e-01, α = 5.94e+01, m = 0, nfg = 5 +[ Info: LBFGS: iter 2, Δt 1.55 s: f = -5.019846341173e-01, ‖∇f‖ = 5.3738e-01, α = 2.80e-01, m = 1, nfg = 2 +[ Info: LBFGS: iter 3, Δt 328.4 ms: f = -5.231639258984e-01, ‖∇f‖ = 3.9927e-01, α = 1.00e+00, m = 2, nfg = 1 +[ Info: LBFGS: iter 4, Δt 842.4 ms: f = -5.386543628560e-01, ‖∇f‖ = 4.1552e-01, α = 2.29e-01, m = 3, nfg = 2 +[ Info: LBFGS: iter 5, Δt 2.49 s: f = -5.498211821771e-01, ‖∇f‖ = 4.4002e-01, α = 6.90e-02, m = 4, nfg = 4 +[ Info: LBFGS: iter 6, Δt 850.0 ms: f = -5.690169518488e-01, ‖∇f‖ = 4.8450e-01, α = 2.26e-01, m = 5, nfg = 2 +[ Info: LBFGS: iter 7, Δt 325.7 ms: f = -5.871277303926e-01, ‖∇f‖ = 4.1970e-01, α = 1.00e+00, m = 6, nfg = 1 +[ Info: LBFGS: iter 8, Δt 319.8 ms: f = -6.001554483426e-01, ‖∇f‖ = 2.1792e-01, α = 1.00e+00, m = 7, nfg = 1 +[ Info: LBFGS: iter 9, Δt 305.8 ms: f = -6.068835686463e-01, ‖∇f‖ = 1.9566e-01, α = 1.00e+00, m = 8, nfg = 1 +[ Info: LBFGS: iter 10, Δt 276.9 ms: f = -6.250397748968e-01, ‖∇f‖ = 3.0330e-01, α = 1.00e+00, m = 9, nfg = 1 +[ Info: LBFGS: iter 11, Δt 282.8 ms: f = -6.391659645908e-01, ‖∇f‖ = 2.3075e-01, α = 1.00e+00, m = 10, nfg = 1 +[ Info: LBFGS: iter 12, Δt 392.4 ms: f = -6.471793388973e-01, ‖∇f‖ = 2.6051e-01, α = 1.00e+00, m = 11, nfg = 1 +[ Info: LBFGS: iter 13, Δt 724.4 ms: f = -6.503370671505e-01, ‖∇f‖ = 1.6112e-01, α = 1.00e+00, m = 12, nfg = 1 +[ Info: LBFGS: iter 14, Δt 322.8 ms: f = -6.546061020085e-01, ‖∇f‖ = 7.7751e-02, α = 1.00e+00, m = 13, nfg = 1 +[ Info: LBFGS: iter 15, Δt 237.3 ms: f = -6.559626422861e-01, ‖∇f‖ = 5.1323e-02, α = 1.00e+00, m = 14, nfg = 1 +[ Info: LBFGS: iter 16, Δt 261.0 ms: f = -6.570346071528e-01, ‖∇f‖ = 5.6661e-02, α = 1.00e+00, m = 15, nfg = 1 +[ Info: LBFGS: iter 17, Δt 263.3 ms: f = -6.586101879490e-01, ‖∇f‖ = 4.5250e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 18, Δt 248.0 ms: f = -6.594209589994e-01, ‖∇f‖ = 4.8923e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 19, Δt 263.4 ms: f = -6.595831316360e-01, ‖∇f‖ = 5.7833e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 20, Δt 268.8 ms: f = -6.598106808006e-01, ‖∇f‖ = 1.7741e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 21, Δt 256.8 ms: f = -6.598737940556e-01, ‖∇f‖ = 1.4673e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 22, Δt 264.8 ms: f = -6.600721854328e-01, ‖∇f‖ = 1.9298e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 23, Δt 254.1 ms: f = -6.602319074023e-01, ‖∇f‖ = 1.7538e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 24, Δt 273.3 ms: f = -6.603792430521e-01, ‖∇f‖ = 2.3872e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 25, Δt 263.2 ms: f = -6.604617775509e-01, ‖∇f‖ = 2.3385e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 26, Δt 258.8 ms: f = -6.605536696759e-01, ‖∇f‖ = 1.2672e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 27, Δt 257.1 ms: f = -6.606169735172e-01, ‖∇f‖ = 1.0506e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 28, Δt 285.6 ms: f = -6.608141517158e-01, ‖∇f‖ = 1.8075e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 29, Δt 305.3 ms: f = -6.609609491552e-01, ‖∇f‖ = 1.7508e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 30, Δt 796.4 ms: f = -6.610389180525e-01, ‖∇f‖ = 1.1325e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 31, Δt 328.4 ms: f = -6.610873060103e-01, ‖∇f‖ = 1.0269e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 32, Δt 254.5 ms: f = -6.611212029182e-01, ‖∇f‖ = 8.8756e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 33, Δt 281.7 ms: f = -6.611799456772e-01, ‖∇f‖ = 1.1435e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 34, Δt 553.2 ms: f = -6.612071690766e-01, ‖∇f‖ = 8.8858e-03, α = 5.30e-01, m = 16, nfg = 2 +[ Info: LBFGS: iter 35, Δt 285.6 ms: f = -6.612262681103e-01, ‖∇f‖ = 6.4795e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 36, Δt 295.0 ms: f = -6.612605080039e-01, ‖∇f‖ = 5.8879e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 37, Δt 285.7 ms: f = -6.612675983705e-01, ‖∇f‖ = 1.2007e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 38, Δt 278.1 ms: f = -6.612837466720e-01, ‖∇f‖ = 4.9256e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 39, Δt 275.6 ms: f = -6.612924155095e-01, ‖∇f‖ = 4.6090e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 40, Δt 273.9 ms: f = -6.613078556647e-01, ‖∇f‖ = 6.2724e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 41, Δt 282.3 ms: f = -6.613407946569e-01, ‖∇f‖ = 8.9187e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 42, Δt 293.4 ms: f = -6.614147324894e-01, ‖∇f‖ = 1.6921e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 43, Δt 310.8 ms: f = -6.614896605795e-01, ‖∇f‖ = 2.7701e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 44, Δt 289.7 ms: f = -6.616600115097e-01, ‖∇f‖ = 2.0288e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 45, Δt 377.8 ms: f = -6.618744649549e-01, ‖∇f‖ = 2.2589e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 46, Δt 739.3 ms: f = -6.619293873126e-01, ‖∇f‖ = 2.6087e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 47, Δt 320.0 ms: f = -6.620580680546e-01, ‖∇f‖ = 1.8561e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 48, Δt 607.9 ms: f = -6.621418094892e-01, ‖∇f‖ = 2.1694e-02, α = 5.08e-01, m = 16, nfg = 2 +[ Info: LBFGS: iter 49, Δt 299.7 ms: f = -6.622424140119e-01, ‖∇f‖ = 1.4693e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 50, Δt 317.6 ms: f = -6.623561643274e-01, ‖∇f‖ = 1.5643e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 51, Δt 325.3 ms: f = -6.624189189954e-01, ‖∇f‖ = 1.2526e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 52, Δt 322.8 ms: f = -6.624484647013e-01, ‖∇f‖ = 7.7875e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 53, Δt 302.8 ms: f = -6.624620825387e-01, ‖∇f‖ = 7.2801e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 54, Δt 297.0 ms: f = -6.624761506291e-01, ‖∇f‖ = 5.6893e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 55, Δt 302.8 ms: f = -6.624920797996e-01, ‖∇f‖ = 7.4763e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 56, Δt 618.9 ms: f = -6.624974230146e-01, ‖∇f‖ = 3.9289e-03, α = 5.46e-01, m = 16, nfg = 2 +[ Info: LBFGS: iter 57, Δt 288.3 ms: f = -6.624993982624e-01, ‖∇f‖ = 3.0506e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 58, Δt 284.2 ms: f = -6.625033254432e-01, ‖∇f‖ = 2.2061e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 59, Δt 300.0 ms: f = -6.625068780651e-01, ‖∇f‖ = 2.0862e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 60, Δt 812.0 ms: f = -6.625094238841e-01, ‖∇f‖ = 3.0782e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 61, Δt 314.7 ms: f = -6.625108313560e-01, ‖∇f‖ = 1.9160e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 62, Δt 248.5 ms: f = -6.625115537204e-01, ‖∇f‖ = 8.6226e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 63, Δt 261.4 ms: f = -6.625118952372e-01, ‖∇f‖ = 7.1198e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 64, Δt 273.4 ms: f = -6.625122637335e-01, ‖∇f‖ = 6.9776e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 65, Δt 263.1 ms: f = -6.625125878909e-01, ‖∇f‖ = 1.1757e-03, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 66, Δt 278.5 ms: f = -6.625129012017e-01, ‖∇f‖ = 6.1076e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 67, Δt 275.1 ms: f = -6.625131620795e-01, ‖∇f‖ = 6.7509e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 68, Δt 287.4 ms: f = -6.625134659017e-01, ‖∇f‖ = 7.4076e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 69, Δt 585.2 ms: f = -6.625136173027e-01, ‖∇f‖ = 1.0650e-03, α = 4.63e-01, m = 16, nfg = 2 +[ Info: LBFGS: iter 70, Δt 297.3 ms: f = -6.625138093900e-01, ‖∇f‖ = 5.3214e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 71, Δt 267.8 ms: f = -6.625138941594e-01, ‖∇f‖ = 4.9455e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 72, Δt 275.5 ms: f = -6.625139584721e-01, ‖∇f‖ = 4.6079e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 73, Δt 270.4 ms: f = -6.625140156102e-01, ‖∇f‖ = 3.5058e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 74, Δt 280.5 ms: f = -6.625140884579e-01, ‖∇f‖ = 7.7069e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 75, Δt 282.6 ms: f = -6.625141400523e-01, ‖∇f‖ = 6.5839e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 76, Δt 267.8 ms: f = -6.625141806040e-01, ‖∇f‖ = 3.1793e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 77, Δt 822.8 ms: f = -6.625142155106e-01, ‖∇f‖ = 2.0830e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 78, Δt 263.1 ms: f = -6.625142398464e-01, ‖∇f‖ = 1.8962e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 79, Δt 253.8 ms: f = -6.625142606414e-01, ‖∇f‖ = 2.6019e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 80, Δt 262.8 ms: f = -6.625142658376e-01, ‖∇f‖ = 2.4559e-04, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: converged after 81 iterations and time 5.83 m: f = -6.625142736963e-01, ‖∇f‖ = 9.4632e-05 ```` @@ -309,8 +244,8 @@ the convergence rate: ```` ```` -info_opt.fg_evaluations = 95 -info_opt.gradnorms[1:10:end] = [0.9354703925772283, 0.29515809534278165, 0.02753139081589741, 0.008020152153989112, 0.0060190768119257575, 0.011551265856046971, 0.004622157491340677, 0.00042136817837828673, 0.00021828441953116996] +info_opt.fg_evaluations = 96 +info_opt.gradnorms[1:10:end] = [0.9354752030131099, 0.3033019277899899, 0.017741463681835545, 0.01132472701425422, 0.006272379430806119, 0.015643014849711687, 0.003078240790192421, 0.000532137892512568, 0.0002455878974975024] ```` @@ -323,7 +258,7 @@ $E_{\text{ref}}=−0.6694421$. From our simple optimization we find: ```` ```` -E = -0.6625142793898271 +E = -0.6625142736962993 ```` @@ -350,8 +285,8 @@ correlation lengths and transfer matrix spectra for all unit cell coordinates: ```` ```` -ξ_h = [1.0343546234867007] -ξ_v = [1.024223131377083] +ξ_h = [1.0345801030391306] +ξ_v = [1.0245361358882241] ```` @@ -366,9 +301,9 @@ need to define the observable as a `TensorMap`: ```` ```` -TensorMap(ℂ^2 ← ℂ^2): - 1.0 0.0 - 0.0 -1.0 +2←2 TensorMap{Float64, TensorKit.ComplexSpace, 1, 1, Vector{Float64}}: + codomain: ⊗(ℂ^2) + domain: ⊗(ℂ^2) ```` @@ -383,10 +318,7 @@ M = LocalOperator(fill(ℂ^2, 1, 1), (CartesianIndex(1, 1),) => σ_z) ```` ```` -LocalOperator{Tuple{Pair{Tuple{CartesianIndex{2}}, TensorKit.TensorMap{Float64, TensorKit.ComplexSpace, 1, 1, Vector{Float64}}}}, TensorKit.ComplexSpace}(TensorKit.ComplexSpace[ℂ^2;;], ((CartesianIndex(1, 1),) => TensorMap(ℂ^2 ← ℂ^2): - 1.0 0.0 - 0.0 -1.0 -,)) +LocalOperator{Tuple{Pair{Tuple{CartesianIndex{2}}, TensorKit.TensorMap{Float64, TensorKit.ComplexSpace, 1, 1, Vector{Float64}}}}, TensorKit.ComplexSpace}(TensorKit.ComplexSpace[ℂ^2;;], ((CartesianIndex(1, 1),) => TensorMap{Float64, TensorKit.ComplexSpace, 1, 1, Vector{Float64}}([1.0, 0.0, 0.0, -1.0], ℂ^2 ← ℂ^2),)) ```` Finally, to evaluate the expecation value on the `LocalOperator`, we call: @@ -396,7 +328,7 @@ Finally, to evaluate the expecation value on the `LocalOperator`, we call: ```` ```` -expectation_value(peps, M, env) = -0.755066246984657 - 1.0408340855860843e-16im +expectation_value(peps, M, env) = -0.7533445046064892 - 1.5265566588595902e-16im ```` diff --git a/docs/src/examples/heisenberg/main.ipynb b/docs/src/examples/heisenberg/main.ipynb index c6f49afe1..a1731e7f4 100644 --- a/docs/src/examples/heisenberg/main.ipynb +++ b/docs/src/examples/heisenberg/main.ipynb @@ -1,17 +1,16 @@ { "cells": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Markdown #hide" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "# Optimizing the 2D Heisenberg model\n", "\n", @@ -30,58 +29,58 @@ "same spectrum) with a ground state on a single-site unit cell.\n", "\n", "Let us get started by fixing the random seed of this example to make it deterministic:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Random\n", "Random.seed!(123456789);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "We're going to need only two packages: `TensorKit`, since we use that for all the underlying\n", "tensor operations, and `PEPSKit` itself. So let us import these:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using TensorKit, PEPSKit" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Defining the Heisenberg Hamiltonian\n", "\n", "To create the sublattice rotated Heisenberg Hamiltonian on an infinite square lattice, we use\n", "the `heisenberg_XYZ` method from [MPSKitModels](https://quantumkithub.github.io/MPSKitModels.jl/dev/)\n", "which is redefined for the `InfiniteSquare` and reexported in PEPSKit:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "H = heisenberg_XYZ(InfiniteSquare(); Jx = -1, Jy = 1, Jz = -1)" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Setting up the algorithms and initial guesses\n", "\n", @@ -94,193 +93,193 @@ "\n", "First, we set the bond dimension `Dbond` of the virtual PEPS indices and the environment\n", "dimension `χenv` of the virtual corner and transfer matrix indices." - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "Dbond = 2\n", "χenv = 16;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "To configure the CTMRG algorithm, we create a `NamedTuple` containing different keyword\n", "arguments. To see a description of all arguments, see the docstring of\n", "`leading_boundary`. Here, we want to converge the CTMRG environments up to a\n", "specific tolerance and during the CTMRG run keep all index dimensions fixed:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "boundary_alg = (; tol = 1.0e-10, trunc = (; alg = :fixedspace));" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Let us also configure the optimizer algorithm. We are going to optimize the PEPS using the\n", "L-BFGS optimizer from [OptimKit](https://github.com/Jutho/OptimKit.jl). Again, we specify\n", "the convergence tolerance (for the gradient norm) as well as the maximal number of iterations\n", "and the BFGS memory size (which is used to approximate the Hessian):" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "optimizer_alg = (; alg = :lbfgs, tol = 1.0e-4, maxiter = 100, lbfgs_memory = 16);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Additionally, during optimization, we want to reuse the previous CTMRG environment to\n", "initialize the CTMRG run of the current optimization step using the `reuse_env` argument.\n", "And to control the output information, we set the `verbosity`:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "reuse_env = true\n", "verbosity = 3;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Next, we initialize a random PEPS which will be used as an initial guess for the\n", "optimization. To get a PEPS with physical dimension 2 (since we have a spin-1/2 Hamiltonian)\n", "with complex-valued random Gaussian entries, we set:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ - "peps₀ = InfinitePEPS(randn, ComplexF64, 2, Dbond)" - ] + "peps₀ = InfinitePEPS(randn, ComplexF64, ℂ^2, ℂ^Dbond)" + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "The last thing we need before we can start the optimization is an initial CTMRG environment.\n", "Typically, a random environment which we converge on `peps₀` serves as a good starting point.\n", "To contract a PEPS starting from an environment using CTMRG, we call `leading_boundary`:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "env_random = CTMRGEnv(randn, ComplexF64, peps₀, ℂ^χenv);\n", "env₀, info_ctmrg = leading_boundary(env_random, peps₀; boundary_alg...);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Besides the converged environment, `leading_boundary` also returns a `NamedTuple` of\n", "informational quantities such as the last maximal truncation error - that is, the SVD\n", "approximation error incurred in the last CTMRG iteration, maximized over all spatial\n", "directions and unit cell entries:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "@show info_ctmrg.truncation_error;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Ground state search\n", "\n", "Finally, we can start the optimization by calling `fixedpoint` on `H` with our\n", "settings for the boundary (CTMRG) algorithm and the optimizer. This might take a while\n", "(especially the precompilation of AD code in this case):" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "peps, env, E, info_opt = fixedpoint(\n", " H, peps₀, env₀; boundary_alg, optimizer_alg, reuse_env, verbosity\n", ");" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Note that `fixedpoint` returns the final optimized PEPS, the last converged environment,\n", "the final energy estimate as well as a `NamedTuple` of diagnostics. This allows us to, e.g.,\n", "analyze the number of cost function calls or the history of gradient norms to evaluate\n", "the convergence rate:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "@show info_opt.fg_evaluations info_opt.gradnorms[1:10:end];" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Let's now compare the optimized energy against an accurate Quantum Monte Carlo estimate by\n", "[Sandvik](@cite sandvik_computational_2011), where the energy per site was found to be\n", "$E_{\\text{ref}}=−0.6694421$. From our simple optimization we find:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "@show E;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "While this energy is in the right ballpark, there is still quite some deviation from the\n", "accurate reference energy. This, however, can be attributed to the small bond dimension - an\n", @@ -298,97 +297,98 @@ "the correlation length or the second gap of the transfer matrix spectrum. For that, we would\n", "need the `correlation_length` function, which computes the horizontal and vertical\n", "correlation lengths and transfer matrix spectra for all unit cell coordinates:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "ξ_h, ξ_v, λ_h, λ_v = correlation_length(peps, env)\n", "@show ξ_h ξ_v;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Computing observables\n", "\n", "As a last thing, we want to see how we can compute expectation values of observables, given\n", "the optimized PEPS and its CTMRG environment. To compute, e.g., the magnetization, we first\n", "need to define the observable as a `TensorMap`:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "σ_z = TensorMap([1.0 0.0; 0.0 -1.0], ℂ^2, ℂ^2)" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "In order to be able to contract it with the PEPS and environment, we define need to define a\n", "`LocalOperator` and specify on which physical spaces and sites the observable acts. That way,\n", "the PEPS-environment-operator contraction gets automatically generated (also works for\n", "multi-site operators!). See the `LocalOperator` docstring for more details.\n", "The magnetization is just a single-site observable, so we have:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "M = LocalOperator(fill(ℂ^2, 1, 1), (CartesianIndex(1, 1),) => σ_z)" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Finally, to evaluate the expecation value on the `LocalOperator`, we call:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "@show expectation_value(peps, M, env);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "---\n", "\n", "*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*" - ] + ], + "metadata": {} } ], + "nbformat_minor": 3, "metadata": { - "kernelspec": { - "display_name": "Julia 1.11.5", - "language": "julia", - "name": "julia-1.11" - }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.11.5" + "version": "1.11.7" + }, + "kernelspec": { + "name": "julia-1.11", + "display_name": "Julia 1.11.7", + "language": "julia" } }, - "nbformat": 4, - "nbformat_minor": 3 -} + "nbformat": 4 +} \ No newline at end of file diff --git a/docs/src/examples/heisenberg_su/index.md b/docs/src/examples/heisenberg_su/index.md index 8078f03f9..b8756ee30 100644 --- a/docs/src/examples/heisenberg_su/index.md +++ b/docs/src/examples/heisenberg_su/index.md @@ -77,36 +77,51 @@ fix a truncation error (if that can be reached by remaining below `Dbond`): ````julia dts = [1.0e-2, 1.0e-3, 4.0e-4] tols = [1.0e-6, 1.0e-8, 1.0e-8] -maxiter = 10000 -trunc_peps = truncerror(; atol=1.0e-10) & truncrank(Dbond) - +nstep = 10000 +trunc_peps = truncerror(; atol = 1.0e-10) & truncrank(Dbond) +alg = SimpleUpdate(; trunc = trunc_peps, bipartite = true) for (dt, tol) in zip(dts, tols) - alg = SimpleUpdate(dt, tol, maxiter, trunc_peps) - global peps, wts, = simpleupdate(peps, H, alg, wts; bipartite = true) + global peps, wts, = time_evolve(peps, H, dt, nstep, alg, wts; tol, check_interval = 500) end ```` ```` [ Info: Space of x-weight at [1, 1] = ℂ^4 -[ Info: SU iter 1 : dt = 1e-02, weight diff = 1.731e+00, time = 16.560 sec +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 1.683e+00. Time = 16.029 s/it +[ Info: Space of x-weight at [1, 1] = ℂ^4 +[ Info: SU iter 500 : dt = 0.01, |Δλ| = 3.917e-06. Time = 0.003 s/it +[ Info: Space of x-weight at [1, 1] = ℂ^4 +[ Info: SU iter 597 : dt = 0.01, |Δλ| = 9.938e-07. Time = 0.003 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 18.10 s +[ Info: Space of x-weight at [1, 1] = ℂ^4 +[ Info: SU iter 1 : dt = 0.001, |Δλ| = 2.135e-03. Time = 0.003 s/it +[ Info: Space of x-weight at [1, 1] = ℂ^4 +[ Info: SU iter 500 : dt = 0.001, |Δλ| = 9.631e-07. Time = 0.003 s/it +[ Info: Space of x-weight at [1, 1] = ℂ^4 +[ Info: SU iter 1000 : dt = 0.001, |Δλ| = 2.415e-07. Time = 0.003 s/it [ Info: Space of x-weight at [1, 1] = ℂ^4 -[ Info: SU conv 323 : dt = 1e-02, weight diff = 9.986e-07, time = 21.354 sec +[ Info: SU iter 1500 : dt = 0.001, |Δλ| = 6.291e-08. Time = 0.003 s/it [ Info: Space of x-weight at [1, 1] = ℂ^4 -[ Info: SU iter 1 : dt = 1e-03, weight diff = 2.187e-03, time = 0.004 sec +[ Info: SU iter 2000 : dt = 0.001, |Δλ| = 1.683e-08. Time = 0.003 s/it [ Info: Space of x-weight at [1, 1] = ℂ^4 -[ Info: SU iter 500 : dt = 1e-03, weight diff = 2.420e-07, time = 0.004 sec +[ Info: SU iter 2205 : dt = 0.001, |Δλ| = 9.981e-09. Time = 0.003 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 7.01 s [ Info: Space of x-weight at [1, 1] = ℂ^4 -[ Info: SU iter 1000 : dt = 1e-03, weight diff = 1.665e-08, time = 0.004 sec +[ Info: SU iter 1 : dt = 0.0004, |Δλ| = 1.418e-04. Time = 0.003 s/it [ Info: Space of x-weight at [1, 1] = ℂ^4 -[ Info: SU conv 1098 : dt = 1e-03, weight diff = 9.958e-09, time = 4.536 sec +[ Info: SU iter 500 : dt = 0.0004, |Δλ| = 6.377e-08. Time = 0.003 s/it [ Info: Space of x-weight at [1, 1] = ℂ^4 -[ Info: SU iter 1 : dt = 4e-04, weight diff = 1.442e-04, time = 0.004 sec +[ Info: SU iter 1000 : dt = 0.0004, |Δλ| = 3.544e-08. Time = 0.003 s/it [ Info: Space of x-weight at [1, 1] = ℂ^4 -[ Info: SU iter 500 : dt = 4e-04, weight diff = 3.551e-08, time = 0.004 sec +[ Info: SU iter 1500 : dt = 0.0004, |Δλ| = 2.013e-08. Time = 0.003 s/it [ Info: Space of x-weight at [1, 1] = ℂ^4 -[ Info: SU iter 1000 : dt = 4e-04, weight diff = 1.159e-08, time = 0.004 sec +[ Info: SU iter 2000 : dt = 0.0004, |Δλ| = 1.157e-08. Time = 0.003 s/it [ Info: Space of x-weight at [1, 1] = ℂ^4 -[ Info: SU conv 1068 : dt = 4e-04, weight diff = 9.987e-09, time = 4.404 sec +[ Info: SU iter 2133 : dt = 0.0004, |Δλ| = 9.999e-09. Time = 0.003 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 6.74 s ```` @@ -118,7 +133,7 @@ on the evolved PEPS. Let's do so: ````julia normalize!.(peps.A, Inf) env₀ = CTMRGEnv(rand, Float64, peps, env_space) -trunc_env = truncerror(; atol=1.0e-10) & truncrank(χenv) +trunc_env = truncerror(; atol = 1.0e-10) & truncrank(χenv) env, = leading_boundary( env₀, peps; @@ -130,8 +145,8 @@ env, = leading_boundary( ```` ```` -[ Info: CTMRG init: obj = +1.188518474239e-04 err = 1.0000e+00 -[ Info: CTMRG conv 14: obj = +1.298574138984e+00 err = 8.6101675686e-11 time = 5.39 sec +[ Info: CTMRG init: obj = +1.852686271621e-15 err = 1.0000e+00 +[ Info: CTMRG conv 14: obj = +1.297823093603e+00 err = 4.2791045109e-11 time = 7.73 sec ```` @@ -165,9 +180,9 @@ M_norms = map( ```` ```` -E = -0.6674725905835921 -Ms = [0.028455537297763654 -0.026889489648298712; -0.026889489681467996 0.028455537252025265;;; 1.060553381226903e-11 -4.813673765147186e-12; -9.758601912657205e-12 3.9884293784320235e-12;;; 0.37587672522461946 -0.3759920019289313; -0.3759920019256273 0.3758767252290504] -M_norms = [0.37695229163448324 0.37695229163393; 0.3769522916330006 0.37695229163544886] +E = -0.667468537043687 +Ms = [0.02728716257542508 -0.025087419805416306; -0.025087419894948337 0.027287162545045957;;; -2.3992008033046908e-11 2.6495396154846418e-11; -4.827289089293085e-11 4.5508758220180745e-11;;; 0.37596759542523767 -0.3761207830204173; -0.37612078301296753 0.37596759542925773] +M_norms = [0.37695652541274954 0.3769565254142512; 0.3769565254127766 0.37695652541455993] ```` @@ -186,8 +201,8 @@ M_ref = 0.3767 ```` ```` -(E - E_ref) / abs(E_ref) = 4.106279611668376e-5 -(mean(M_norms) - M_ref) / M_ref = 0.0006697415296408165 +(E - E_ref) / abs(E_ref) = 4.7135515075588574e-5 +(mean(M_norms) - M_ref) / M_ref = 0.0006809806572453966 ```` diff --git a/docs/src/examples/heisenberg_su/main.ipynb b/docs/src/examples/heisenberg_su/main.ipynb index 43c925b55..81c5f8f1d 100644 --- a/docs/src/examples/heisenberg_su/main.ipynb +++ b/docs/src/examples/heisenberg_su/main.ipynb @@ -1,17 +1,16 @@ { "cells": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Markdown #hide" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "# Simple update for the Heisenberg model\n", "\n", @@ -27,24 +26,24 @@ "$2 \\times 2$ unit cell and set $J_x = J_y = J_z = 1$.\n", "\n", "Let's get started by seeding the RNG and importing all required modules:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Random\n", "import Statistics: mean\n", "using TensorKit, PEPSKit\n", "import MPSKitModels: S_x, S_y, S_z, S_exchange\n", "Random.seed!(0);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Defining the Hamiltonian\n", "\n", @@ -53,35 +52,34 @@ "use PEPS and environments with real entries. We can either initialize the Hamiltonian with\n", "no internal symmetries (`symm = Trivial`) or use the global spin $U(1)$ symmetry\n", "(`symm = U1Irrep`):" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "symm = Trivial ## ∈ {Trivial, U1Irrep}\n", "Nr, Nc = 2, 2\n", "H = real(heisenberg_XYZ(ComplexF64, symm, InfiniteSquare(Nr, Nc); Jx = 1, Jy = 1, Jz = 1));" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Simple updating\n", "\n", "We proceed by initializing a random PEPS that will be evolved.\n", "The weights used for simple update are initialized as identity matrices.\n", "First though, we need to define the appropriate (symmetric) spaces:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "Dbond = 4\n", "χenv = 16\n", @@ -99,54 +97,53 @@ "\n", "peps = InfinitePEPS(rand, Float64, physical_space, bond_space; unitcell = (Nr, Nc));\n", "wts = SUWeight(peps);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Next, we can start the `SimpleUpdate` routine, successively decreasing the time intervals\n", "and singular value convergence tolerances. Note that TensorKit allows to combine SVD\n", "truncation schemes, which we use here to set a maximal bond dimension and at the same time\n", "fix a truncation error (if that can be reached by remaining below `Dbond`):" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "dts = [1.0e-2, 1.0e-3, 4.0e-4]\n", "tols = [1.0e-6, 1.0e-8, 1.0e-8]\n", - "maxiter = 10000\n", - "trunc_peps = truncerror(; atol=1.0e-10) & truncrank(Dbond)\n", - "\n", + "nstep = 10000\n", + "trunc_peps = truncerror(; atol = 1.0e-10) & truncrank(Dbond)\n", + "alg = SimpleUpdate(; trunc = trunc_peps, bipartite = true)\n", "for (dt, tol) in zip(dts, tols)\n", - " alg = SimpleUpdate(dt, tol, maxiter, trunc_peps)\n", - " global peps, wts, = simpleupdate(peps, H, alg, wts; bipartite = true)\n", + " global peps, wts, = time_evolve(peps, H, dt, nstep, alg, wts; tol, check_interval = 500)\n", "end" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Computing the ground-state energy and magnetizations\n", "\n", "In order to compute observable expectation values, we need to converge a CTMRG environment\n", "on the evolved PEPS. Let's do so:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "normalize!.(peps.A, Inf)\n", "env₀ = CTMRGEnv(rand, Float64, peps, env_space)\n", - "trunc_env = truncerror(; atol=1.0e-10) & truncrank(χenv)\n", + "trunc_env = truncerror(; atol = 1.0e-10) & truncrank(χenv)\n", "env, = leading_boundary(\n", " env₀,\n", " peps;\n", @@ -155,22 +152,22 @@ " tol = 1.0e-10,\n", " trunc = trunc_env,\n", ");" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Finally, we'll measure the energy and different magnetizations. For the magnetizations,\n", "the plan is to compute the expectation values unit cell entry-wise in different spin\n", "directions:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "function compute_mags(peps::InfinitePEPS, env::CTMRGEnv)\n", " lattice = collect(space(t, 1) for t in peps.A)\n", @@ -194,11 +191,12 @@ " rc -> norm(Ms[rc[1], rc[2], :]), Iterators.product(axes(peps, 1), axes(peps, 2))\n", ")\n", "@show E Ms M_norms;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "To assess the results, we will benchmark against data from [Corboz](@cite corboz_variational_2016),\n", "which use manual gradients to perform a variational optimization of the Heisenberg model.\n", @@ -206,43 +204,44 @@ "$M_\\text{ref} = 0.3767$. Looking at the relative errors, we find general agreement, although\n", "the accuracy is limited by the methodological limitations of the simple update algorithm as\n", "well as finite bond dimension effects and a lacking extrapolation:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "E_ref = -0.6675\n", "M_ref = 0.3767\n", "@show (E - E_ref) / abs(E_ref)\n", "@show (mean(M_norms) - M_ref) / M_ref;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "---\n", "\n", "*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*" - ] + ], + "metadata": {} } ], + "nbformat_minor": 3, "metadata": { - "kernelspec": { - "display_name": "Julia 1.11.5", - "language": "julia", - "name": "julia-1.11" - }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.11.5" + "version": "1.11.7" + }, + "kernelspec": { + "name": "julia-1.11", + "display_name": "Julia 1.11.7", + "language": "julia" } }, - "nbformat": 4, - "nbformat_minor": 3 -} + "nbformat": 4 +} \ No newline at end of file diff --git a/examples/Cache.toml b/examples/Cache.toml index f928e32e1..577eea636 100644 --- a/examples/Cache.toml +++ b/examples/Cache.toml @@ -3,8 +3,8 @@ hubbard_su = "95a78abdd94af8ce2219cee2453a74d81f90a8316536c482faebf20563855793" 2d_ising_partition_function = "043e1b0b97197ed611559f4a4683cb8f166c01af82a97f71364f2f5421abe3d2" 3d_ising_partition_function = "baf05623f2b0c496393892be1dfe5c7f72af94ac8c1158db9af5c1aae816c264" boundary_mps = "430db112b38b4ef30215728f994692e63faa50d085f5c69aad1ee7a7b743431d" -heisenberg_su = "4cedc6a2784417266c007b7ea871c32434e9b837982f846f867a50613f25b15f" +heisenberg_su = "3eb8556d949c0e47e39c679e9e438bc04d3e2a3ffe73e0a682963b37b05f9e91" xxz = "9816ec9c07997a7f184be51581075655adc0c8a1a2fffc609ce88d8075a8b7db" fermi_hubbard = "4997680c826e555557c661e605e1d7d363e0cee15522d0895fa0cfd53b1de001" j1j2_su = "ccde4117531a26bf679d5a97bcd002974307989fdcc718966ea69a68644d655c" -heisenberg = "136757a5ba5c7a49a803c49395150d1df6bc1fb6eecb29cc20cd968b3d1bf97d" +heisenberg = "d610c92223d41e296348f9858fab52eacbfe2a578f64f4f8ac4c70d486fb4da2" diff --git a/examples/heisenberg/main.jl b/examples/heisenberg/main.jl index ee7b1cfea..d2dfbecfb 100644 --- a/examples/heisenberg/main.jl +++ b/examples/heisenberg/main.jl @@ -89,7 +89,7 @@ optimization. To get a PEPS with physical dimension 2 (since we have a spin-1/2 with complex-valued random Gaussian entries, we set: """ -peps₀ = InfinitePEPS(randn, ComplexF64, 2, Dbond) +peps₀ = InfinitePEPS(randn, ComplexF64, ℂ^2, ℂ^Dbond) md""" The last thing we need before we can start the optimization is an initial CTMRG environment. From ee47ab5d607d440f88b7a5e0f9796401ab98fb71 Mon Sep 17 00:00:00 2001 From: lkdvos Date: Sun, 16 Nov 2025 11:28:56 -0500 Subject: [PATCH 04/12] update SU examples --- docs/src/examples/hubbard_su/index.md | 89 ++++---- docs/src/examples/hubbard_su/main.ipynb | 132 ++++++------ docs/src/examples/j1j2_su/index.md | 274 +++++++++++++----------- docs/src/examples/j1j2_su/main.ipynb | 142 ++++++------ examples/Cache.toml | 4 +- 5 files changed, 337 insertions(+), 304 deletions(-) diff --git a/docs/src/examples/hubbard_su/index.md b/docs/src/examples/hubbard_su/index.md index 3f7bf5d3a..5ab28f59f 100644 --- a/docs/src/examples/hubbard_su/index.md +++ b/docs/src/examples/hubbard_su/index.md @@ -72,57 +72,65 @@ Ds = [4, 12, 8, 8, 8] maxiter = 20000 for (dt, tol, Dbond) in zip(dts, tols, Ds) - trunc = truncerror(; atol=1.0e-10) & truncrank(Dbond) - alg = SimpleUpdate(dt, tol, maxiter, trunc) - global peps, wts, = simpleupdate( - peps, H, alg, wts; bipartite = false, check_interval = 2000 - ) + trunc = truncerror(; atol = 1.0e-10) & truncrank(Dbond) + alg = SimpleUpdate(; trunc, bipartite = false) + global peps, wts, = time_evolve(peps, H, dt, maxiter, alg, wts; tol, check_interval = 2000) end ```` ```` -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>2, 1=>2) -[ Info: SU iter 1 : dt = 1e-02, weight diff = 1.316e+00, time = 27.486 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>2, 1=>2) -[ Info: SU conv 1045 : dt = 1e-02, weight diff = 9.843e-08, time = 34.956 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>6, 1=>6) -[ Info: SU iter 1 : dt = 1e-02, weight diff = 6.459e-06, time = 0.077 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>6, 1=>6) -[ Info: SU conv 584 : dt = 1e-02, weight diff = 9.946e-08, time = 42.322 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>3, 1=>5) -[ Info: SU iter 1 : dt = 1e-03, weight diff = 5.245e-03, time = 0.235 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>3, 1=>5) -[ Info: SU iter 2000 : dt = 1e-03, weight diff = 1.418e-07, time = 0.018 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>3, 1=>5) -[ Info: SU conv 3791 : dt = 1e-03, weight diff = 9.990e-09, time = 78.783 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>3, 1=>5) -[ Info: SU iter 1 : dt = 4e-04, weight diff = 3.256e-04, time = 0.018 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>3, 1=>5) -[ Info: SU iter 2000 : dt = 4e-04, weight diff = 1.888e-08, time = 0.024 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>3, 1=>5) -[ Info: SU conv 3034 : dt = 4e-04, weight diff = 9.997e-09, time = 62.113 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>3, 1=>5) -[ Info: SU iter 1 : dt = 1e-04, weight diff = 1.627e-04, time = 0.024 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>3, 1=>5) -[ Info: SU iter 2000 : dt = 1e-04, weight diff = 1.532e-08, time = 0.018 sec -[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0=>3, 1=>5) -[ Info: SU conv 2916 : dt = 1e-04, weight diff = 9.997e-09, time = 59.560 sec +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 2, 1 => 2) +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 1.316e+00. Time = 21.601 s/it +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 2, 1 => 2) +[ Info: SU iter 1045 : dt = 0.01, |Δλ| = 9.843e-08. Time = 0.012 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 35.64 s +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 6, 1 => 6) +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 6.459e-06. Time = 0.134 s/it +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 6, 1 => 6) +[ Info: SU iter 584 : dt = 0.01, |Δλ| = 9.946e-08. Time = 0.114 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 71.51 s +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 3, 1 => 5) +[ Info: SU iter 1 : dt = 0.001, |Δλ| = 5.245e-03. Time = 0.373 s/it +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 3, 1 => 5) +[ Info: SU iter 2000 : dt = 0.001, |Δλ| = 1.418e-07. Time = 0.037 s/it +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 3, 1 => 5) +[ Info: SU iter 3791 : dt = 0.001, |Δλ| = 9.990e-09. Time = 0.037 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 131.97 s +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 3, 1 => 5) +[ Info: SU iter 1 : dt = 0.0004, |Δλ| = 3.256e-04. Time = 0.037 s/it +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 3, 1 => 5) +[ Info: SU iter 2000 : dt = 0.0004, |Δλ| = 1.888e-08. Time = 0.037 s/it +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 3, 1 => 5) +[ Info: SU iter 3034 : dt = 0.0004, |Δλ| = 9.997e-09. Time = 0.037 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 105.93 s +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 3, 1 => 5) +[ Info: SU iter 1 : dt = 0.0001, |Δλ| = 1.627e-04. Time = 0.037 s/it +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 3, 1 => 5) +[ Info: SU iter 2000 : dt = 0.0001, |Δλ| = 1.532e-08. Time = 0.037 s/it +[ Info: Space of x-weight at [1, 1] = Vect[FermionParity](0 => 3, 1 => 5) +[ Info: SU iter 2916 : dt = 0.0001, |Δλ| = 9.997e-09. Time = 0.037 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 100.89 s ```` ## Computing the ground-state energy In order to compute the energy expectation value with evolved PEPS, we need to converge a -CTMRG environment on it. We first converge an environment with a small enviroment dimension -and then use that to initialize another run with bigger environment dimension. We'll use -`trunc=truncrank(χ)` for that such that the dimension is increased during the second CTMRG -run: +CTMRG environment on it. We first converge an environment with a small enviroment dimension, +which is initialized using the simple update bond weights. Next we use it to initialize +another run with bigger environment dimension. The dynamic adjustment of environment dimension +is achieved by using `trunc=truncrank(χ)` with different `χ`s in the CTMRG runs: ````julia χenv₀, χenv = 6, 16 env_space = Vect[fℤ₂](0 => χenv₀ / 2, 1 => χenv₀ / 2) normalize!.(peps.A, Inf) -env = CTMRGEnv(rand, Float64, peps, env_space) +env = CTMRGEnv(wts, peps) for χ in [χenv₀, χenv] global env, = leading_boundary( env, peps; alg = :sequential, tol = 1.0e-8, maxiter = 50, trunc = truncrank(χ) @@ -131,11 +139,10 @@ end ```` ```` -[ Info: CTMRG init: obj = +4.034556135739e-13 err = 1.0000e+00 -┌ Warning: CTMRG cancel 50: obj = +1.777694990783e+00 err = 2.1447151954e-06 time = 18.75 sec -└ @ PEPSKit ~/PEPSKit.jl/src/algorithms/ctmrg/ctmrg.jl:152 -[ Info: CTMRG init: obj = +1.777694990783e+00 err = 1.0000e+00 -[ Info: CTMRG conv 7: obj = +1.781063096355e+00 err = 3.5793745596e-10 time = 21.32 sec +[ Info: CTMRG init: obj = +3.208695223790e-01 err = 1.0000e+00 +[ Info: CTMRG conv 7: obj = +1.777694992786e+00 err = 2.2836831592e-09 time = 8.64 sec +[ Info: CTMRG init: obj = +1.777694992786e+00 err = 1.0000e+00 +[ Info: CTMRG conv 7: obj = +1.781063096355e+00 err = 3.5793721430e-10 time = 37.81 sec ```` diff --git a/docs/src/examples/hubbard_su/main.ipynb b/docs/src/examples/hubbard_su/main.ipynb index f1eaaa77b..a15f8199b 100644 --- a/docs/src/examples/hubbard_su/main.ipynb +++ b/docs/src/examples/hubbard_su/main.ipynb @@ -1,17 +1,16 @@ { "cells": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Markdown #hide" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "# Simple update for the Fermi-Hubbard model at half-filling\n", "\n", @@ -27,46 +26,46 @@ "with $\\sigma \\in \\{\\uparrow,\\downarrow\\}$ and $n_{i,\\sigma} = c_{i,\\sigma}^+ c_{i,\\sigma}^-$.\n", "\n", "Let's get started by seeding the RNG and importing the required modules:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Random\n", "using TensorKit, PEPSKit\n", "Random.seed!(12329348592498);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Defining the Hamiltonian\n", "\n", "First, we define the Hubbard model at $t=1$ hopping and $U=6$ using `Trivial` sectors for\n", "the particle and spin symmetries, and set $\\mu = U/2$ for half-filling. The model will be\n", "constructed on a $2 \\times 2$ unit cell, so we have:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "t = 1\n", "U = 6\n", "Nr, Nc = 2, 2\n", "H = hubbard_model(Float64, Trivial, Trivial, InfiniteSquare(Nr, Nc); t, U, mu = U / 2);\n", "physical_space = Vect[fℤ₂](0 => 2, 1 => 2);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Running the simple update algorithm\n", "\n", @@ -79,34 +78,33 @@ "First, we shall use a small D for the random PEPS initialization, which is chosen as 4 here.\n", "For convenience, here we work with real tensors with `Float64` entries.\n", "The bond weights are still initialized as identity matrices." - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "virtual_space = Vect[fℤ₂](0 => 2, 1 => 2)\n", "peps = InfinitePEPS(rand, Float64, physical_space, virtual_space; unitcell = (Nr, Nc));\n", "wts = SUWeight(peps);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Starting from the random state, we first use a relatively large evolution time step\n", "`dt = 1e-2`. After convergence at D = 4, to avoid stucking at some bad local minimum,\n", "we first increase D to 12, and drop it back to D = 8 after a while.\n", "Afterwards, we keep D = 8 and gradually decrease `dt` to `1e-4` to improve convergence." - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "dts = [1.0e-2, 1.0e-2, 1.0e-3, 4.0e-4, 1.0e-4]\n", "tols = [1.0e-7, 1.0e-7, 1.0e-8, 1.0e-8, 1.0e-8]\n", @@ -114,105 +112,105 @@ "maxiter = 20000\n", "\n", "for (dt, tol, Dbond) in zip(dts, tols, Ds)\n", - " trunc = truncerror(; atol=1.0e-10) & truncrank(Dbond)\n", - " alg = SimpleUpdate(dt, tol, maxiter, trunc)\n", - " global peps, wts, = simpleupdate(\n", - " peps, H, alg, wts; bipartite = false, check_interval = 2000\n", - " )\n", + " trunc = truncerror(; atol = 1.0e-10) & truncrank(Dbond)\n", + " alg = SimpleUpdate(; trunc, bipartite = false)\n", + " global peps, wts, = time_evolve(peps, H, dt, maxiter, alg, wts; tol, check_interval = 2000)\n", "end" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Computing the ground-state energy\n", "\n", "In order to compute the energy expectation value with evolved PEPS, we need to converge a\n", - "CTMRG environment on it. We first converge an environment with a small enviroment dimension\n", - "and then use that to initialize another run with bigger environment dimension. We'll use\n", - "`trunc=truncrank(χ)` for that such that the dimension is increased during the second CTMRG\n", - "run:" - ] + "CTMRG environment on it. We first converge an environment with a small enviroment dimension,\n", + "which is initialized using the simple update bond weights. Next we use it to initialize\n", + "another run with bigger environment dimension. The dynamic adjustment of environment dimension\n", + "is achieved by using `trunc=truncrank(χ)` with different `χ`s in the CTMRG runs:" + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "χenv₀, χenv = 6, 16\n", "env_space = Vect[fℤ₂](0 => χenv₀ / 2, 1 => χenv₀ / 2)\n", "normalize!.(peps.A, Inf)\n", - "env = CTMRGEnv(rand, Float64, peps, env_space)\n", + "env = CTMRGEnv(wts, peps)\n", "for χ in [χenv₀, χenv]\n", " global env, = leading_boundary(\n", " env, peps; alg = :sequential, tol = 1.0e-8, maxiter = 50, trunc = truncrank(χ)\n", " )\n", "end" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "We measure the energy by computing the `H` expectation value, where we have to make sure to\n", "normalize with respect to the unit cell to obtain the energy per site:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "E = expectation_value(peps, H, env) / (Nr * Nc)\n", "@show E;" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Finally, we can compare the obtained ground-state energy against the literature, namely the\n", "QMC estimates from [Qin et al.](@cite qin_benchmark_2016). We find that the results generally\n", "agree:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "Es_exact = Dict(0 => -1.62, 2 => -0.176, 4 => 0.8603, 6 => -0.6567, 8 => -0.5243)\n", "E_exact = Es_exact[U] - U / 2\n", "@show (E - E_exact) / abs(E_exact);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "---\n", "\n", "*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*" - ] + ], + "metadata": {} } ], + "nbformat_minor": 3, "metadata": { - "kernelspec": { - "display_name": "Julia 1.11.5", - "language": "julia", - "name": "julia-1.11" - }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.11.5" + "version": "1.11.7" + }, + "kernelspec": { + "name": "julia-1.11", + "display_name": "Julia 1.11.7", + "language": "julia" } }, - "nbformat": 4, - "nbformat_minor": 3 -} + "nbformat": 4 +} \ No newline at end of file diff --git a/docs/src/examples/j1j2_su/index.md b/docs/src/examples/j1j2_su/index.md index 0e2a14338..c9c5bbde3 100644 --- a/docs/src/examples/j1j2_su/index.md +++ b/docs/src/examples/j1j2_su/index.md @@ -55,39 +55,50 @@ Therefore, we shall gradually increase $J_2 / J_1$ from 0.1 to 0.5, each time in on the previously evolved PEPS: ````julia -dt, tol, maxiter = 1.0e-2, 1.0e-8, 30000 +dt, tol, nstep = 1.0e-2, 1.0e-8, 30000 check_interval = 4000 -trunc_peps = truncerror(; atol=1.0e-10) & truncrank(Dbond) -alg = SimpleUpdate(dt, tol, maxiter, trunc_peps) +trunc_peps = truncerror(; atol = 1.0e-10) & truncrank(Dbond) +alg = SimpleUpdate(; trunc = trunc_peps) for J2 in 0.1:0.1:0.5 - H = real( ## convert Hamiltonian `LocalOperator` to real floats + # convert Hamiltonian `LocalOperator` to real floats + H = real( j1_j2_model(ComplexF64, symm, InfiniteSquare(Nr, Nc); J1, J2, sublattice = false), ) - global peps, wts, = simpleupdate(peps, H, alg, wts; check_interval) + global peps, wts, = time_evolve(peps, H, dt, nstep, alg, wts; tol, check_interval) end ```` ```` -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1/2=>1, -1/2=>1) -[ Info: SU iter 1 : dt = 1e-02, weight diff = 1.188e+00, time = 28.698 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU conv 1832 : dt = 1e-02, weight diff = 9.942e-09, time = 104.269 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU iter 1 : dt = 1e-02, weight diff = 3.400e-04, time = 0.084 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU conv 523 : dt = 1e-02, weight diff = 9.964e-09, time = 19.444 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU iter 1 : dt = 1e-02, weight diff = 3.524e-04, time = 0.065 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU conv 611 : dt = 1e-02, weight diff = 9.848e-09, time = 22.684 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU iter 1 : dt = 1e-02, weight diff = 3.661e-04, time = 0.036 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU conv 735 : dt = 1e-02, weight diff = 9.962e-09, time = 27.379 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU iter 1 : dt = 1e-02, weight diff = 3.823e-04, time = 0.036 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU conv 901 : dt = 1e-02, weight diff = 9.994e-09, time = 33.440 sec +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1/2 => 1, -1/2 => 1) +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 1.189e+00. Time = 33.154 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 1833 : dt = 0.01, |Δλ| = 9.859e-09. Time = 0.063 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 158.43 s +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.401e-04. Time = 0.065 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 523 : dt = 0.01, |Δλ| = 9.965e-09. Time = 0.062 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 34.62 s +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.526e-04. Time = 0.062 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 611 : dt = 0.01, |Δλ| = 9.848e-09. Time = 0.062 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 40.33 s +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.664e-04. Time = 0.085 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 735 : dt = 0.01, |Δλ| = 9.963e-09. Time = 0.064 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 48.49 s +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.828e-04. Time = 0.064 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 901 : dt = 0.01, |Δλ| = 9.995e-09. Time = 0.063 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 59.48 s ```` @@ -100,20 +111,37 @@ tols = [1.0e-9, 1.0e-9] J2 = 0.5 H = real(j1_j2_model(ComplexF64, symm, InfiniteSquare(Nr, Nc); J1, J2, sublattice = false)) for (dt, tol) in zip(dts, tols) - alg′ = SimpleUpdate(dt, tol, maxiter, trunc_peps) - global peps, wts, = simpleupdate(peps, H, alg′, wts; check_interval) + global peps, wts, = time_evolve(peps, H, dt, nstep, alg, wts; tol) end ```` ```` -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU iter 1 : dt = 1e-03, weight diff = 4.447e-04, time = 0.036 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU conv 3236 : dt = 1e-03, weight diff = 9.998e-10, time = 118.922 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU iter 1 : dt = 1e-04, weight diff = 4.436e-05, time = 0.036 sec -[ Info: Space of x-weight at [1, 1] = Rep[TensorKitSectors.U₁](0=>2, 1=>1, -1=>1) -[ Info: SU conv 796 : dt = 1e-04, weight diff = 9.999e-10, time = 29.313 sec +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 1 : dt = 0.001, |Δλ| = 4.477e-04. Time = 0.121 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 500 : dt = 0.001, |Δλ| = 2.767e-08. Time = 0.063 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 1000 : dt = 0.001, |Δλ| = 9.954e-09. Time = 0.062 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 1500 : dt = 0.001, |Δλ| = 5.019e-09. Time = 0.063 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 2000 : dt = 0.001, |Δλ| = 3.015e-09. Time = 0.092 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 2500 : dt = 0.001, |Δλ| = 1.935e-09. Time = 0.062 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 3000 : dt = 0.001, |Δλ| = 1.273e-09. Time = 0.063 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 3295 : dt = 0.001, |Δλ| = 9.994e-10. Time = 0.062 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 217.43 s +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 1 : dt = 0.0001, |Δλ| = 4.467e-05. Time = 0.063 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 500 : dt = 0.0001, |Δλ| = 1.150e-09. Time = 0.063 s/it +[ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) +[ Info: SU iter 873 : dt = 0.0001, |Δλ| = 9.998e-10. Time = 0.063 s/it +[ Info: SU: bond weights have converged. +[ Info: Simple update finished. Total time elasped: 57.50 s ```` @@ -125,7 +153,7 @@ the expectation value, where we first normalize tensors in the PEPS: ````julia normalize!.(peps.A, Inf) ## normalize each PEPS tensor by largest element χenv = 32 -trunc_env = truncerror(; atol=1.0e-10) & truncrank(χenv) +trunc_env = truncerror(; atol = 1.0e-10) & truncrank(χenv) Espace = Vect[U1Irrep](0 => χenv ÷ 2, 1 // 2 => χenv ÷ 4, -1 // 2 => χenv ÷ 4) env₀ = CTMRGEnv(rand, Float64, peps, Espace) env, = leading_boundary(env₀, peps; tol = 1.0e-10, alg = :sequential, trunc = trunc_env); @@ -133,7 +161,7 @@ E = expectation_value(peps, H, env) / (Nr * Nc) ```` ```` --0.4908482949689091 +-0.4908483447932549 ```` Let us compare that estimate with benchmark data obtained from the @@ -146,7 +174,7 @@ E_ref = -0.49425 ```` ```` -(E - E_ref) / abs(E_ref) = 0.00688255949639037 +(E - E_ref) / abs(E_ref) = 0.006882458688406928 ```` @@ -173,89 +201,89 @@ peps_opt, env_opt, E_opt, = fixedpoint( ```` ┌ Warning: the provided real environment was converted to a complex environment since :fixed mode generally produces complex gauges; use :diffgauge mode instead by passing gradient_alg=(; iterscheme=:diffgauge) to the fixedpoint keyword arguments to work with purely real environments -└ @ PEPSKit ~/PEPSKit.jl/src/algorithms/optimization/peps_optimization.jl:204 -[ Info: LBFGS: initializing with f = -1.906213849448, ‖∇f‖ = 7.1073e-01 -[ Info: LBFGS: iter 1, time 652.92 s: f = -1.912844704754, ‖∇f‖ = 6.1629e-01, α = 1.00e+00, m = 0, nfg = 1 -[ Info: LBFGS: iter 2, time 664.36 s: f = -1.937956278406, ‖∇f‖ = 2.9827e-01, α = 1.00e+00, m = 1, nfg = 1 -[ Info: LBFGS: iter 3, time 674.98 s: f = -1.943097558049, ‖∇f‖ = 2.0511e-01, α = 1.00e+00, m = 2, nfg = 1 -[ Info: LBFGS: iter 4, time 686.77 s: f = -1.951025956511, ‖∇f‖ = 1.4073e-01, α = 1.00e+00, m = 3, nfg = 1 -[ Info: LBFGS: iter 5, time 697.58 s: f = -1.955168827774, ‖∇f‖ = 1.2051e-01, α = 1.00e+00, m = 4, nfg = 1 -[ Info: LBFGS: iter 6, time 708.82 s: f = -1.960117970278, ‖∇f‖ = 1.1611e-01, α = 1.00e+00, m = 5, nfg = 1 -[ Info: LBFGS: iter 7, time 720.26 s: f = -1.961216550036, ‖∇f‖ = 1.6042e-01, α = 1.00e+00, m = 6, nfg = 1 -[ Info: LBFGS: iter 8, time 731.38 s: f = -1.963394812594, ‖∇f‖ = 7.0500e-02, α = 1.00e+00, m = 7, nfg = 1 -[ Info: LBFGS: iter 9, time 742.56 s: f = -1.964678496250, ‖∇f‖ = 4.8767e-02, α = 1.00e+00, m = 8, nfg = 1 -[ Info: LBFGS: iter 10, time 755.02 s: f = -1.965924354920, ‖∇f‖ = 6.0609e-02, α = 1.00e+00, m = 9, nfg = 1 -[ Info: LBFGS: iter 11, time 767.32 s: f = -1.968120587109, ‖∇f‖ = 7.1520e-02, α = 1.00e+00, m = 10, nfg = 1 -[ Info: LBFGS: iter 12, time 780.79 s: f = -1.969562403653, ‖∇f‖ = 9.5065e-02, α = 1.00e+00, m = 11, nfg = 1 -[ Info: LBFGS: iter 13, time 793.16 s: f = -1.970582005143, ‖∇f‖ = 6.1728e-02, α = 1.00e+00, m = 12, nfg = 1 -[ Info: LBFGS: iter 14, time 805.31 s: f = -1.971121191726, ‖∇f‖ = 3.2137e-02, α = 1.00e+00, m = 13, nfg = 1 -[ Info: LBFGS: iter 15, time 818.38 s: f = -1.971554453753, ‖∇f‖ = 2.5404e-02, α = 1.00e+00, m = 14, nfg = 1 -[ Info: LBFGS: iter 16, time 831.96 s: f = -1.972190061011, ‖∇f‖ = 3.2651e-02, α = 1.00e+00, m = 15, nfg = 1 -[ Info: LBFGS: iter 17, time 844.26 s: f = -1.972856212899, ‖∇f‖ = 3.0425e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 18, time 857.72 s: f = -1.973765750218, ‖∇f‖ = 3.2201e-02, α = 1.00e+00, m = 17, nfg = 1 -[ Info: LBFGS: iter 19, time 870.23 s: f = -1.974161602591, ‖∇f‖ = 3.5568e-02, α = 1.00e+00, m = 18, nfg = 1 -[ Info: LBFGS: iter 20, time 883.37 s: f = -1.974478336877, ‖∇f‖ = 1.8682e-02, α = 1.00e+00, m = 19, nfg = 1 -[ Info: LBFGS: iter 21, time 895.17 s: f = -1.974710833057, ‖∇f‖ = 1.5936e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 22, time 908.28 s: f = -1.974975741077, ‖∇f‖ = 2.3555e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 23, time 920.27 s: f = -1.975198522454, ‖∇f‖ = 2.7962e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 24, time 932.03 s: f = -1.975394248410, ‖∇f‖ = 2.5314e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 25, time 944.70 s: f = -1.975512455006, ‖∇f‖ = 2.9518e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 26, time 956.37 s: f = -1.975616686676, ‖∇f‖ = 1.6802e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 27, time 967.76 s: f = -1.975710241181, ‖∇f‖ = 1.5024e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 28, time 978.98 s: f = -1.975795271168, ‖∇f‖ = 1.2833e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 29, time 989.49 s: f = -1.975865143335, ‖∇f‖ = 2.3418e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 30, time 1002.34 s: f = -1.975957427509, ‖∇f‖ = 1.1381e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 31, time 1013.66 s: f = -1.976015850153, ‖∇f‖ = 1.0083e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 32, time 1024.96 s: f = -1.976080164930, ‖∇f‖ = 1.3119e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 33, time 1037.67 s: f = -1.976152913537, ‖∇f‖ = 1.4611e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 34, time 1048.69 s: f = -1.976198207069, ‖∇f‖ = 9.6971e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 35, time 1061.48 s: f = -1.976250601632, ‖∇f‖ = 9.3909e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 36, time 1073.15 s: f = -1.976291935078, ‖∇f‖ = 1.4028e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 37, time 1084.60 s: f = -1.976340224013, ‖∇f‖ = 1.0472e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 38, time 1097.26 s: f = -1.976377344626, ‖∇f‖ = 6.9713e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 39, time 1109.15 s: f = -1.976411251633, ‖∇f‖ = 6.5882e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 40, time 1122.25 s: f = -1.976451966987, ‖∇f‖ = 7.7535e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 41, time 1133.98 s: f = -1.976491819091, ‖∇f‖ = 1.1597e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 42, time 1145.62 s: f = -1.976529574561, ‖∇f‖ = 8.6643e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 43, time 1158.08 s: f = -1.976564683972, ‖∇f‖ = 7.6509e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 44, time 1168.84 s: f = -1.976599313000, ‖∇f‖ = 7.3612e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 45, time 1181.74 s: f = -1.976636515361, ‖∇f‖ = 1.8259e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 46, time 1193.53 s: f = -1.976680292934, ‖∇f‖ = 9.8005e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 47, time 1205.13 s: f = -1.976709176062, ‖∇f‖ = 8.4490e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 48, time 1216.87 s: f = -1.976735409874, ‖∇f‖ = 1.5557e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 49, time 1228.56 s: f = -1.976776133103, ‖∇f‖ = 1.3263e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 50, time 1241.43 s: f = -1.976811137668, ‖∇f‖ = 1.1320e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 51, time 1265.73 s: f = -1.976843854259, ‖∇f‖ = 1.4911e-02, α = 5.24e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 52, time 1278.46 s: f = -1.976923448868, ‖∇f‖ = 9.7919e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 53, time 1289.71 s: f = -1.976965559297, ‖∇f‖ = 7.7472e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 54, time 1301.37 s: f = -1.977044614238, ‖∇f‖ = 1.3785e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 55, time 1313.26 s: f = -1.977075753938, ‖∇f‖ = 2.0809e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 56, time 1325.74 s: f = -1.977139445975, ‖∇f‖ = 9.3821e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 57, time 1336.75 s: f = -1.977165276657, ‖∇f‖ = 7.5268e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 58, time 1348.24 s: f = -1.977219450466, ‖∇f‖ = 1.1473e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 59, time 1359.70 s: f = -1.977275314249, ‖∇f‖ = 1.9030e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 60, time 1372.04 s: f = -1.977335522183, ‖∇f‖ = 1.1000e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 61, time 1383.33 s: f = -1.977385273141, ‖∇f‖ = 9.0696e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 62, time 1394.84 s: f = -1.977430128301, ‖∇f‖ = 1.1553e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 63, time 1406.33 s: f = -1.977469892558, ‖∇f‖ = 8.2877e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 64, time 1418.79 s: f = -1.977495288994, ‖∇f‖ = 7.9121e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 65, time 1430.48 s: f = -1.977553209211, ‖∇f‖ = 8.8664e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 66, time 1443.25 s: f = -1.977597458477, ‖∇f‖ = 1.9052e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 67, time 1453.49 s: f = -1.977660134707, ‖∇f‖ = 1.1063e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 68, time 1465.98 s: f = -1.977685405419, ‖∇f‖ = 2.0774e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 69, time 1476.58 s: f = -1.977717638754, ‖∇f‖ = 8.7390e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 70, time 1488.80 s: f = -1.977730883236, ‖∇f‖ = 7.0000e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 71, time 1500.40 s: f = -1.977768669053, ‖∇f‖ = 8.1853e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 72, time 1511.94 s: f = -1.977810913385, ‖∇f‖ = 1.0740e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 73, time 1523.64 s: f = -1.977817034893, ‖∇f‖ = 1.7372e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 74, time 1535.46 s: f = -1.977859790789, ‖∇f‖ = 6.3128e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 75, time 1547.05 s: f = -1.977877604524, ‖∇f‖ = 5.9647e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 76, time 1559.50 s: f = -1.977904920943, ‖∇f‖ = 8.3968e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 77, time 1571.15 s: f = -1.977943608891, ‖∇f‖ = 1.1579e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 78, time 1582.92 s: f = -1.977960278758, ‖∇f‖ = 1.3388e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 79, time 1595.75 s: f = -1.977963135797, ‖∇f‖ = 1.0697e-02, α = 1.00e+00, m = 20, nfg = 1 -┌ Warning: LBFGS: not converged to requested tol after 80 iterations and time 1606.72 s: f = -1.977988611344, ‖∇f‖ = 1.6698e-02 -└ @ OptimKit ~/.julia/packages/OptimKit/G6i79/src/lbfgs.jl:197 +└ @ PEPSKit ~/Projects/PEPSKit.jl/src/algorithms/optimization/peps_optimization.jl:204 +[ Info: LBFGS: initializing with f = -1.907301302110e+00, ‖∇f‖ = 5.5641e-01 +[ Info: LBFGS: iter 1, Δt 27.56 s: f = -1.912496200062e+00, ‖∇f‖ = 4.8528e-01, α = 1.00e+00, m = 0, nfg = 1 +[ Info: LBFGS: iter 2, Δt 22.77 s: f = -1.939590317765e+00, ‖∇f‖ = 3.1781e-01, α = 1.00e+00, m = 1, nfg = 1 +[ Info: LBFGS: iter 3, Δt 19.06 s: f = -1.948086619481e+00, ‖∇f‖ = 1.8688e-01, α = 1.00e+00, m = 2, nfg = 1 +[ Info: LBFGS: iter 4, Δt 18.14 s: f = -1.954903534354e+00, ‖∇f‖ = 1.0567e-01, α = 1.00e+00, m = 3, nfg = 1 +[ Info: LBFGS: iter 5, Δt 19.58 s: f = -1.958636003807e+00, ‖∇f‖ = 9.6554e-02, α = 1.00e+00, m = 4, nfg = 1 +[ Info: LBFGS: iter 6, Δt 18.80 s: f = -1.961414208875e+00, ‖∇f‖ = 8.8495e-02, α = 1.00e+00, m = 5, nfg = 1 +[ Info: LBFGS: iter 7, Δt 18.79 s: f = -1.963670567806e+00, ‖∇f‖ = 5.9165e-02, α = 1.00e+00, m = 6, nfg = 1 +[ Info: LBFGS: iter 8, Δt 20.23 s: f = -1.965776363520e+00, ‖∇f‖ = 5.0139e-02, α = 1.00e+00, m = 7, nfg = 1 +[ Info: LBFGS: iter 9, Δt 21.98 s: f = -1.967226453690e+00, ‖∇f‖ = 9.2909e-02, α = 1.00e+00, m = 8, nfg = 1 +[ Info: LBFGS: iter 10, Δt 19.64 s: f = -1.968251645234e+00, ‖∇f‖ = 4.4439e-02, α = 1.00e+00, m = 9, nfg = 1 +[ Info: LBFGS: iter 11, Δt 22.41 s: f = -1.969059008087e+00, ‖∇f‖ = 4.6917e-02, α = 1.00e+00, m = 10, nfg = 1 +[ Info: LBFGS: iter 12, Δt 20.79 s: f = -1.969667913862e+00, ‖∇f‖ = 4.8179e-02, α = 1.00e+00, m = 11, nfg = 1 +[ Info: LBFGS: iter 13, Δt 21.23 s: f = -1.970804652416e+00, ‖∇f‖ = 3.2505e-02, α = 1.00e+00, m = 12, nfg = 1 +[ Info: LBFGS: iter 14, Δt 22.79 s: f = -1.971787694409e+00, ‖∇f‖ = 4.3869e-02, α = 1.00e+00, m = 13, nfg = 1 +[ Info: LBFGS: iter 15, Δt 24.41 s: f = -1.972414025039e+00, ‖∇f‖ = 4.0604e-02, α = 1.00e+00, m = 14, nfg = 1 +[ Info: LBFGS: iter 16, Δt 22.68 s: f = -1.972867447250e+00, ‖∇f‖ = 2.5133e-02, α = 1.00e+00, m = 15, nfg = 1 +[ Info: LBFGS: iter 17, Δt 22.72 s: f = -1.973224221322e+00, ‖∇f‖ = 2.3593e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 18, Δt 22.61 s: f = -1.973780793633e+00, ‖∇f‖ = 2.7945e-02, α = 1.00e+00, m = 17, nfg = 1 +[ Info: LBFGS: iter 19, Δt 20.78 s: f = -1.974278639630e+00, ‖∇f‖ = 2.8914e-02, α = 1.00e+00, m = 18, nfg = 1 +[ Info: LBFGS: iter 20, Δt 19.12 s: f = -1.974533659938e+00, ‖∇f‖ = 1.8380e-02, α = 1.00e+00, m = 19, nfg = 1 +[ Info: LBFGS: iter 21, Δt 22.48 s: f = -1.974797746482e+00, ‖∇f‖ = 1.5608e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 22, Δt 21.72 s: f = -1.975002265713e+00, ‖∇f‖ = 2.0961e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 23, Δt 20.82 s: f = -1.975178140945e+00, ‖∇f‖ = 3.4077e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 24, Δt 20.78 s: f = -1.975348043297e+00, ‖∇f‖ = 1.4875e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 25, Δt 21.24 s: f = -1.975446214398e+00, ‖∇f‖ = 1.3359e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 26, Δt 20.62 s: f = -1.975598188521e+00, ‖∇f‖ = 1.5129e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 27, Δt 21.33 s: f = -1.975648975504e+00, ‖∇f‖ = 4.0666e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 28, Δt 19.24 s: f = -1.975801502894e+00, ‖∇f‖ = 1.2082e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 29, Δt 19.95 s: f = -1.975838520962e+00, ‖∇f‖ = 1.0012e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 30, Δt 20.60 s: f = -1.975920699081e+00, ‖∇f‖ = 1.1497e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 31, Δt 20.98 s: f = -1.975994476122e+00, ‖∇f‖ = 2.0164e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 32, Δt 19.27 s: f = -1.976049779798e+00, ‖∇f‖ = 1.2778e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 33, Δt 19.69 s: f = -1.976083052474e+00, ‖∇f‖ = 8.1251e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 34, Δt 19.55 s: f = -1.976120284177e+00, ‖∇f‖ = 9.1433e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 35, Δt 19.89 s: f = -1.976178863096e+00, ‖∇f‖ = 1.2556e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 36, Δt 19.56 s: f = -1.976225564245e+00, ‖∇f‖ = 1.1295e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 37, Δt 19.28 s: f = -1.976262568889e+00, ‖∇f‖ = 7.0514e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 38, Δt 18.97 s: f = -1.976300953764e+00, ‖∇f‖ = 8.6312e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 39, Δt 18.69 s: f = -1.976337659332e+00, ‖∇f‖ = 1.1092e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 40, Δt 19.72 s: f = -1.976393924161e+00, ‖∇f‖ = 1.1668e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 41, Δt 20.68 s: f = -1.976436192483e+00, ‖∇f‖ = 8.0157e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 42, Δt 18.14 s: f = -1.976469672103e+00, ‖∇f‖ = 7.3417e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 43, Δt 19.70 s: f = -1.976509489620e+00, ‖∇f‖ = 8.4507e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 44, Δt 19.19 s: f = -1.976583802578e+00, ‖∇f‖ = 1.3151e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 45, Δt 20.87 s: f = -1.976630307258e+00, ‖∇f‖ = 1.4170e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 46, Δt 20.33 s: f = -1.976680877868e+00, ‖∇f‖ = 8.3860e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 47, Δt 19.29 s: f = -1.976710020540e+00, ‖∇f‖ = 1.0325e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 48, Δt 20.24 s: f = -1.976745581904e+00, ‖∇f‖ = 1.2062e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 49, Δt 19.17 s: f = -1.976829231643e+00, ‖∇f‖ = 1.2197e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 50, Δt 20.52 s: f = -1.976899195992e+00, ‖∇f‖ = 1.9229e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 51, Δt 19.66 s: f = -1.976987140901e+00, ‖∇f‖ = 1.8244e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 52, Δt 18.09 s: f = -1.977023236629e+00, ‖∇f‖ = 8.3070e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 53, Δt 19.51 s: f = -1.977056164969e+00, ‖∇f‖ = 8.3182e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 54, Δt 21.42 s: f = -1.977123528338e+00, ‖∇f‖ = 1.1023e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 55, Δt 40.71 s: f = -1.977157909182e+00, ‖∇f‖ = 1.7552e-02, α = 3.55e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 56, Δt 19.58 s: f = -1.977212923858e+00, ‖∇f‖ = 1.1229e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 57, Δt 20.60 s: f = -1.977268389200e+00, ‖∇f‖ = 7.8373e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 58, Δt 19.16 s: f = -1.977326972617e+00, ‖∇f‖ = 1.1772e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 59, Δt 19.77 s: f = -1.977371513954e+00, ‖∇f‖ = 2.0292e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 60, Δt 19.22 s: f = -1.977420127940e+00, ‖∇f‖ = 1.0167e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 61, Δt 19.18 s: f = -1.977459871700e+00, ‖∇f‖ = 8.8652e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 62, Δt 19.88 s: f = -1.977507028354e+00, ‖∇f‖ = 8.3742e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 63, Δt 21.56 s: f = -1.977570888464e+00, ‖∇f‖ = 1.5706e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 64, Δt 38.57 s: f = -1.977620567166e+00, ‖∇f‖ = 1.0020e-02, α = 4.86e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 65, Δt 20.72 s: f = -1.977658416479e+00, ‖∇f‖ = 8.1197e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 66, Δt 20.85 s: f = -1.977708104067e+00, ‖∇f‖ = 1.1151e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 67, Δt 19.31 s: f = -1.977753273984e+00, ‖∇f‖ = 8.6127e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 68, Δt 22.56 s: f = -1.977756230819e+00, ‖∇f‖ = 1.1803e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 69, Δt 21.49 s: f = -1.977778298956e+00, ‖∇f‖ = 1.3834e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 70, Δt 19.10 s: f = -1.977826121915e+00, ‖∇f‖ = 1.0827e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 71, Δt 19.06 s: f = -1.977853878453e+00, ‖∇f‖ = 9.0049e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 72, Δt 21.55 s: f = -1.977879275990e+00, ‖∇f‖ = 8.2484e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 73, Δt 17.90 s: f = -1.977902757838e+00, ‖∇f‖ = 6.2376e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 74, Δt 20.15 s: f = -1.977930234553e+00, ‖∇f‖ = 5.6595e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 75, Δt 20.50 s: f = -1.977964320717e+00, ‖∇f‖ = 1.1578e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 76, Δt 18.53 s: f = -1.977994766836e+00, ‖∇f‖ = 7.7846e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 77, Δt 19.37 s: f = -1.978013673463e+00, ‖∇f‖ = 7.3610e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 78, Δt 18.64 s: f = -1.978027144104e+00, ‖∇f‖ = 6.3493e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 79, Δt 19.93 s: f = -1.978044594980e+00, ‖∇f‖ = 7.3623e-03, α = 1.00e+00, m = 20, nfg = 1 +┌ Warning: LBFGS: not converged to requested tol after 80 iterations and time 34.78 m: f = -1.978065459455e+00, ‖∇f‖ = 5.8505e-03 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/lbfgs.jl:199 ```` @@ -270,8 +298,8 @@ E_opt /= (Nr * Nc) ```` ```` -E_opt = -0.4944971528359841 -(E_opt - E_ref) / abs(E_ref) = -0.0005000563196440829 +E_opt = -0.49451636486378536 +(E_opt - E_ref) / abs(E_ref) = -0.0005389273925854121 ```` diff --git a/docs/src/examples/j1j2_su/main.ipynb b/docs/src/examples/j1j2_su/main.ipynb index 8f201f169..46ac258e8 100644 --- a/docs/src/examples/j1j2_su/main.ipynb +++ b/docs/src/examples/j1j2_su/main.ipynb @@ -1,17 +1,16 @@ { "cells": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Markdown #hide" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "# Three-site simple update for the $J_1$-$J_2$ model\n", "\n", @@ -29,22 +28,22 @@ "optimization.\n", "\n", "We first import all required modules and seed the RNG:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Random\n", "using TensorKit, PEPSKit\n", "Random.seed!(29385293);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Simple updating a challenging phase\n", "\n", @@ -53,13 +52,12 @@ "The `SUWeight` used by simple update will be initialized to identity matrices.\n", "We use the minimal unit cell size ($2 \\times 2$) required by the simple update algorithm\n", "for Hamiltonians with next-nearest-neighbour interactions:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "Dbond, symm = 4, U1Irrep\n", "Nr, Nc, J1 = 2, 2, 1.0\n", @@ -69,107 +67,108 @@ "Vspace = Vect[U1Irrep](0 => 2, 1 // 2 => 1, -1 // 2 => 1)\n", "peps = InfinitePEPS(rand, Float64, Pspace, Vspace; unitcell = (Nr, Nc));\n", "wts = SUWeight(peps);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "The value $J_2 / J_1 = 0.5$ corresponds to a [possible spin liquid phase](@cite liu_gapless_2022),\n", "which is challenging for SU to produce a relatively good state from random initialization.\n", "Therefore, we shall gradually increase $J_2 / J_1$ from 0.1 to 0.5, each time initializing\n", "on the previously evolved PEPS:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ - "dt, tol, maxiter = 1.0e-2, 1.0e-8, 30000\n", + "dt, tol, nstep = 1.0e-2, 1.0e-8, 30000\n", "check_interval = 4000\n", - "trunc_peps = truncerror(; atol=1.0e-10) & truncrank(Dbond)\n", - "alg = SimpleUpdate(dt, tol, maxiter, trunc_peps)\n", + "trunc_peps = truncerror(; atol = 1.0e-10) & truncrank(Dbond)\n", + "alg = SimpleUpdate(; trunc = trunc_peps)\n", "for J2 in 0.1:0.1:0.5\n", - " H = real( ## convert Hamiltonian `LocalOperator` to real floats\n", + " # convert Hamiltonian `LocalOperator` to real floats\n", + " H = real(\n", " j1_j2_model(ComplexF64, symm, InfiniteSquare(Nr, Nc); J1, J2, sublattice = false),\n", " )\n", - " global peps, wts, = simpleupdate(peps, H, alg, wts; check_interval)\n", + " global peps, wts, = time_evolve(peps, H, dt, nstep, alg, wts; tol, check_interval)\n", "end" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "After we reach $J_2 / J_1 = 0.5$, we gradually decrease the evolution time step to obtain\n", "a more accurately evolved PEPS:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "dts = [1.0e-3, 1.0e-4]\n", "tols = [1.0e-9, 1.0e-9]\n", "J2 = 0.5\n", "H = real(j1_j2_model(ComplexF64, symm, InfiniteSquare(Nr, Nc); J1, J2, sublattice = false))\n", "for (dt, tol) in zip(dts, tols)\n", - " alg′ = SimpleUpdate(dt, tol, maxiter, trunc_peps)\n", - " global peps, wts, = simpleupdate(peps, H, alg′, wts; check_interval)\n", + " global peps, wts, = time_evolve(peps, H, dt, nstep, alg, wts; tol)\n", "end" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Computing the simple update energy estimate\n", "\n", "Finally, we measure the ground-state energy by converging a CTMRG environment and computing\n", "the expectation value, where we first normalize tensors in the PEPS:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "normalize!.(peps.A, Inf) ## normalize each PEPS tensor by largest element\n", "χenv = 32\n", - "trunc_env = truncerror(; atol=1.0e-10) & truncrank(χenv)\n", + "trunc_env = truncerror(; atol = 1.0e-10) & truncrank(χenv)\n", "Espace = Vect[U1Irrep](0 => χenv ÷ 2, 1 // 2 => χenv ÷ 4, -1 // 2 => χenv ÷ 4)\n", "env₀ = CTMRGEnv(rand, Float64, peps, Espace)\n", "env, = leading_boundary(env₀, peps; tol = 1.0e-10, alg = :sequential, trunc = trunc_env);\n", "E = expectation_value(peps, H, env) / (Nr * Nc)" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Let us compare that estimate with benchmark data obtained from the\n", "[YASTN/peps-torch package](https://github.com/jurajHasik/j1j2_ipeps_states/blob/ea4140fbd7da0fc1b75fac2871f75bda125189a8/single-site_pg-C4v-A1_internal-U1/j20.5/state_1s_A1_U1B_j20.5_D4_chi_opt96.dat).\n", "which utilizes AD-based PEPS optimization to find $E_\\text{ref}=-0.49425$:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "E_ref = -0.49425\n", "@show (E - E_ref) / abs(E_ref);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Variational PEPS optimization using AD\n", "\n", @@ -181,13 +180,12 @@ "In order to break some of the $C_{4v}$ symmetry of the PEPS, we will add a bit of noise to it\n", "- this is conviently done using MPSKit's `randomize!` function. (Breaking some of the spatial\n", "symmetry can be advantageous for obtaining lower energies.)" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using MPSKit: randomize!\n", "\n", @@ -196,51 +194,53 @@ "peps_opt, env_opt, E_opt, = fixedpoint(\n", " H, peps₀, env; optimizer_alg = (; tol = 1.0e-4, maxiter = 80)\n", ");" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Finally, we compare the variationally optimized energy against the reference energy. Indeed,\n", "we find that the additional AD-based optimization improves the SU-evolved PEPS and leads to\n", "a more accurate energy estimate." - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "E_opt /= (Nr * Nc)\n", "@show E_opt\n", "@show (E_opt - E_ref) / abs(E_ref);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "---\n", "\n", "*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*" - ] + ], + "metadata": {} } ], + "nbformat_minor": 3, "metadata": { - "kernelspec": { - "display_name": "Julia 1.11.5", - "language": "julia", - "name": "julia-1.11" - }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.11.5" + "version": "1.11.7" + }, + "kernelspec": { + "name": "julia-1.11", + "display_name": "Julia 1.11.7", + "language": "julia" } }, - "nbformat": 4, - "nbformat_minor": 3 -} + "nbformat": 4 +} \ No newline at end of file diff --git a/examples/Cache.toml b/examples/Cache.toml index 577eea636..77316865b 100644 --- a/examples/Cache.toml +++ b/examples/Cache.toml @@ -1,10 +1,10 @@ bose_hubbard = "f47aad758f4aa32fa44d7fae8d377ff364e0ee191f468694d4d70c6e3cdbc2b4" -hubbard_su = "95a78abdd94af8ce2219cee2453a74d81f90a8316536c482faebf20563855793" +hubbard_su = "99f1e8c5aa0aa2b409d4ac1aee754209329b88c96f36cd749381a6a0afc9d9e4" 2d_ising_partition_function = "043e1b0b97197ed611559f4a4683cb8f166c01af82a97f71364f2f5421abe3d2" 3d_ising_partition_function = "baf05623f2b0c496393892be1dfe5c7f72af94ac8c1158db9af5c1aae816c264" boundary_mps = "430db112b38b4ef30215728f994692e63faa50d085f5c69aad1ee7a7b743431d" heisenberg_su = "3eb8556d949c0e47e39c679e9e438bc04d3e2a3ffe73e0a682963b37b05f9e91" xxz = "9816ec9c07997a7f184be51581075655adc0c8a1a2fffc609ce88d8075a8b7db" fermi_hubbard = "4997680c826e555557c661e605e1d7d363e0cee15522d0895fa0cfd53b1de001" -j1j2_su = "ccde4117531a26bf679d5a97bcd002974307989fdcc718966ea69a68644d655c" +j1j2_su = "5d36add8355c77cec73eb278dc64cd1006ca965d1d1eac05a4dfddf37804e954" heisenberg = "d610c92223d41e296348f9858fab52eacbfe2a578f64f4f8ac4c70d486fb4da2" From f79fbaf088a83cf454ca4e8599388a96c61863f1 Mon Sep 17 00:00:00 2001 From: lkdvos Date: Sun, 16 Nov 2025 11:43:55 -0500 Subject: [PATCH 05/12] update xxz example --- docs/src/examples/xxz/index.md | 190 +++++++++++++++---------------- docs/src/examples/xxz/main.ipynb | 104 ++++++++--------- examples/Cache.toml | 2 +- 3 files changed, 148 insertions(+), 148 deletions(-) diff --git a/docs/src/examples/xxz/index.md b/docs/src/examples/xxz/index.md index 078e1c665..f53252330 100644 --- a/docs/src/examples/xxz/index.md +++ b/docs/src/examples/xxz/index.md @@ -74,8 +74,8 @@ physical_spaces = physicalspace(H) ```` 2×2 Matrix{TensorKit.GradedSpace{TensorKitSectors.U1Irrep, TensorKit.SortedVectorDict{TensorKitSectors.U1Irrep, Int64}}}: - Rep[TensorKitSectors.U₁](0=>1, 1=>1) Rep[TensorKitSectors.U₁](0=>1, -1=>1) - Rep[TensorKitSectors.U₁](0=>1, -1=>1) Rep[TensorKitSectors.U₁](0=>1, 1=>1) + Rep[U₁](…) of dim 2 Rep[U₁](…) of dim 2 + Rep[U₁](…) of dim 2 Rep[U₁](…) of dim 2 ```` ## Ground state search @@ -94,7 +94,7 @@ env₀, = leading_boundary(CTMRGEnv(peps₀, V_env), peps₀; boundary_alg...); ```` [ Info: CTMRG init: obj = -2.356413456811e+03 +3.307968169629e+02im err = 1.0000e+00 -[ Info: CTMRG conv 30: obj = +6.245129734283e+03 -4.008688847534e-08im err = 5.3638617378e-09 time = 13.26 sec +[ Info: CTMRG conv 30: obj = +6.245129734283e+03 -4.009325493826e-08im err = 5.3638614449e-09 time = 7.21 sec ```` @@ -112,100 +112,100 @@ peps, env, E, info = fixedpoint( ```` ```` -[ Info: LBFGS: initializing with f = -0.138513609508, ‖∇f‖ = 1.2196e+00 +[ Info: LBFGS: initializing with f = -1.385136095079e-01, ‖∇f‖ = 1.2184e+00 ┌ Warning: Linesearch not converged after 1 iterations and 4 function evaluations: -│ α = 2.50e+01, dϕ = -2.40e-02, ϕ - ϕ₀ = -4.51e-01 -└ @ OptimKit ~/.julia/packages/OptimKit/G6i79/src/linesearches.jl:148 -[ Info: LBFGS: iter 1, time 398.63 s: f = -0.589257888877, ‖∇f‖ = 3.6887e+00, α = 2.50e+01, m = 0, nfg = 4 +│ α = 2.50e+01, dϕ = -2.44e-02, ϕ - ϕ₀ = -4.56e-01 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/linesearches.jl:148 +[ Info: LBFGS: iter 1, Δt 1.47 m: f = -5.947088555354e-01, ‖∇f‖ = 3.7329e+00, α = 2.50e+01, m = 0, nfg = 4 ┌ Warning: Linesearch not converged after 1 iterations and 4 function evaluations: -│ α = 2.50e+01, dϕ = -7.97e-03, ϕ - ϕ₀ = -1.52e+00 -└ @ OptimKit ~/.julia/packages/OptimKit/G6i79/src/linesearches.jl:148 -[ Info: LBFGS: iter 2, time 471.79 s: f = -2.110619430506, ‖∇f‖ = 3.0001e+00, α = 2.50e+01, m = 0, nfg = 4 -[ Info: LBFGS: iter 3, time 489.29 s: f = -2.211007715638, ‖∇f‖ = 1.4524e+00, α = 1.00e+00, m = 1, nfg = 1 -[ Info: LBFGS: iter 4, time 540.15 s: f = -2.468824623210, ‖∇f‖ = 1.2356e+00, α = 3.20e+00, m = 2, nfg = 3 -[ Info: LBFGS: iter 5, time 557.26 s: f = -2.531277644141, ‖∇f‖ = 1.6029e+00, α = 1.00e+00, m = 3, nfg = 1 -[ Info: LBFGS: iter 6, time 573.35 s: f = -2.612553859919, ‖∇f‖ = 4.2867e-01, α = 1.00e+00, m = 4, nfg = 1 -[ Info: LBFGS: iter 7, time 589.11 s: f = -2.622279660579, ‖∇f‖ = 1.9145e-01, α = 1.00e+00, m = 5, nfg = 1 -[ Info: LBFGS: iter 8, time 603.99 s: f = -2.626484058783, ‖∇f‖ = 1.7329e-01, α = 1.00e+00, m = 6, nfg = 1 -[ Info: LBFGS: iter 9, time 614.25 s: f = -2.631986947540, ‖∇f‖ = 1.8511e-01, α = 1.00e+00, m = 7, nfg = 1 -[ Info: LBFGS: iter 10, time 623.59 s: f = -2.639349412387, ‖∇f‖ = 1.9572e-01, α = 1.00e+00, m = 8, nfg = 1 -[ Info: LBFGS: iter 11, time 632.73 s: f = -2.644232912048, ‖∇f‖ = 1.6746e-01, α = 1.00e+00, m = 9, nfg = 1 -[ Info: LBFGS: iter 12, time 641.13 s: f = -2.646535544453, ‖∇f‖ = 6.8267e-02, α = 1.00e+00, m = 10, nfg = 1 -[ Info: LBFGS: iter 13, time 649.63 s: f = -2.647359319818, ‖∇f‖ = 5.8837e-02, α = 1.00e+00, m = 11, nfg = 1 -[ Info: LBFGS: iter 14, time 658.45 s: f = -2.648538593263, ‖∇f‖ = 6.8261e-02, α = 1.00e+00, m = 12, nfg = 1 -[ Info: LBFGS: iter 15, time 667.16 s: f = -2.650130908354, ‖∇f‖ = 7.0878e-02, α = 1.00e+00, m = 13, nfg = 1 -[ Info: LBFGS: iter 16, time 675.47 s: f = -2.651987522211, ‖∇f‖ = 8.2170e-02, α = 1.00e+00, m = 14, nfg = 1 -[ Info: LBFGS: iter 17, time 682.87 s: f = -2.653758642111, ‖∇f‖ = 1.0420e-01, α = 1.00e+00, m = 15, nfg = 1 -[ Info: LBFGS: iter 18, time 691.17 s: f = -2.655421985606, ‖∇f‖ = 1.3031e-01, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 19, time 699.68 s: f = -2.657803102660, ‖∇f‖ = 9.4755e-02, α = 1.00e+00, m = 17, nfg = 1 -[ Info: LBFGS: iter 20, time 708.34 s: f = -2.659668183898, ‖∇f‖ = 7.3133e-02, α = 1.00e+00, m = 18, nfg = 1 -[ Info: LBFGS: iter 21, time 716.68 s: f = -2.660316016122, ‖∇f‖ = 4.9501e-02, α = 1.00e+00, m = 19, nfg = 1 -[ Info: LBFGS: iter 22, time 724.73 s: f = -2.661149682031, ‖∇f‖ = 6.8936e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 23, time 732.96 s: f = -2.662868297230, ‖∇f‖ = 1.1740e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 24, time 741.23 s: f = -2.664663245986, ‖∇f‖ = 1.3179e-01, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 25, time 757.59 s: f = -2.665627671142, ‖∇f‖ = 1.0486e-01, α = 4.29e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 26, time 765.97 s: f = -2.666450510119, ‖∇f‖ = 4.5156e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 27, time 774.07 s: f = -2.666835911121, ‖∇f‖ = 4.8567e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 28, time 782.21 s: f = -2.667478452332, ‖∇f‖ = 7.2290e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 29, time 790.47 s: f = -2.668521250487, ‖∇f‖ = 8.5697e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 30, time 807.83 s: f = -2.669003677417, ‖∇f‖ = 9.9343e-02, α = 4.16e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 31, time 816.07 s: f = -2.669690963961, ‖∇f‖ = 4.0493e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 32, time 824.28 s: f = -2.669998638777, ‖∇f‖ = 3.1202e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 33, time 831.93 s: f = -2.670307400955, ‖∇f‖ = 4.9386e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 34, time 840.36 s: f = -2.670842812036, ‖∇f‖ = 6.0221e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 35, time 857.54 s: f = -2.671142652515, ‖∇f‖ = 7.1490e-02, α = 5.55e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 36, time 866.09 s: f = -2.671543536411, ‖∇f‖ = 3.6309e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 37, time 875.07 s: f = -2.671766796068, ‖∇f‖ = 2.8048e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 38, time 883.35 s: f = -2.671899292949, ‖∇f‖ = 3.5366e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 39, time 891.73 s: f = -2.672194986508, ‖∇f‖ = 4.5375e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 40, time 900.39 s: f = -2.672493817829, ‖∇f‖ = 5.5658e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 41, time 908.89 s: f = -2.672753505736, ‖∇f‖ = 2.0687e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 42, time 922.83 s: f = -2.672850238780, ‖∇f‖ = 2.0479e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 43, time 931.21 s: f = -2.672980643257, ‖∇f‖ = 2.3947e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 44, time 939.63 s: f = -2.673286900540, ‖∇f‖ = 3.0422e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 45, time 956.20 s: f = -2.673398343775, ‖∇f‖ = 3.5067e-02, α = 3.21e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 46, time 964.48 s: f = -2.673579922383, ‖∇f‖ = 2.0123e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 47, time 972.18 s: f = -2.673698834773, ‖∇f‖ = 1.8405e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 48, time 979.81 s: f = -2.673818459445, ‖∇f‖ = 2.4347e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 49, time 987.48 s: f = -2.673933525165, ‖∇f‖ = 1.8911e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 50, time 995.50 s: f = -2.674089997515, ‖∇f‖ = 2.3738e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 51, time 1010.77 s: f = -2.674158043027, ‖∇f‖ = 2.8417e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 52, time 1018.66 s: f = -2.674219511522, ‖∇f‖ = 1.3645e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 53, time 1032.56 s: f = -2.674261951986, ‖∇f‖ = 1.2275e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 54, time 1040.39 s: f = -2.674326093056, ‖∇f‖ = 1.7139e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 55, time 1048.26 s: f = -2.674419581548, ‖∇f‖ = 2.5006e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 56, time 1056.18 s: f = -2.674486565423, ‖∇f‖ = 2.2734e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 57, time 1064.48 s: f = -2.674541533348, ‖∇f‖ = 1.1543e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 58, time 1072.30 s: f = -2.674588014769, ‖∇f‖ = 1.2125e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 59, time 1086.30 s: f = -2.674627004117, ‖∇f‖ = 1.5452e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 60, time 1094.42 s: f = -2.674692190363, ‖∇f‖ = 2.3761e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 61, time 1108.21 s: f = -2.674747139489, ‖∇f‖ = 1.3175e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 62, time 1116.11 s: f = -2.674775151717, ‖∇f‖ = 1.0912e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 63, time 1130.04 s: f = -2.674811464235, ‖∇f‖ = 1.2577e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 64, time 1138.01 s: f = -2.674856898301, ‖∇f‖ = 1.9201e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 65, time 1146.50 s: f = -2.674909465713, ‖∇f‖ = 1.8198e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 66, time 1154.50 s: f = -2.674952274100, ‖∇f‖ = 1.0659e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 67, time 1162.87 s: f = -2.674984765700, ‖∇f‖ = 9.6416e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 68, time 1170.77 s: f = -2.675005125019, ‖∇f‖ = 1.2764e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 69, time 1179.63 s: f = -2.675038973771, ‖∇f‖ = 1.6162e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 70, time 1194.16 s: f = -2.675081913358, ‖∇f‖ = 1.6581e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 71, time 1223.54 s: f = -2.675119056919, ‖∇f‖ = 1.9355e-02, α = 5.42e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 72, time 1237.63 s: f = -2.675164711729, ‖∇f‖ = 8.9296e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 73, time 1252.02 s: f = -2.675185025614, ‖∇f‖ = 9.8394e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 74, time 1266.62 s: f = -2.675208703900, ‖∇f‖ = 8.9414e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 75, time 1281.08 s: f = -2.675245782533, ‖∇f‖ = 1.2526e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 76, time 1295.89 s: f = -2.675262164632, ‖∇f‖ = 1.7156e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 77, time 1310.31 s: f = -2.675283818451, ‖∇f‖ = 7.9273e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 78, time 1324.56 s: f = -2.675298865471, ‖∇f‖ = 6.1320e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 79, time 1339.42 s: f = -2.675312616160, ‖∇f‖ = 6.9124e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 80, time 1354.70 s: f = -2.675331281367, ‖∇f‖ = 1.0125e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 81, time 1369.67 s: f = -2.675340850961, ‖∇f‖ = 1.7155e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 82, time 1384.07 s: f = -2.675364134565, ‖∇f‖ = 6.2780e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 83, time 1398.77 s: f = -2.675373081794, ‖∇f‖ = 5.3437e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 84, time 1412.79 s: f = -2.675385605957, ‖∇f‖ = 7.6234e-03, α = 1.00e+00, m = 20, nfg = 1 -┌ Warning: LBFGS: not converged to requested tol after 85 iterations and time 1427.99 s: f = -2.675398713824, ‖∇f‖ = 1.1289e-02 -└ @ OptimKit ~/.julia/packages/OptimKit/G6i79/src/lbfgs.jl:197 -E / prod(size(lattice)) = -0.66884967845596 +│ α = 2.50e+01, dϕ = -7.72e-03, ϕ - ϕ₀ = -1.52e+00 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/linesearches.jl:148 +[ Info: LBFGS: iter 2, Δt 1.37 m: f = -2.114273975713e+00, ‖∇f‖ = 2.9121e+00, α = 2.50e+01, m = 0, nfg = 4 +[ Info: LBFGS: iter 3, Δt 16.27 s: f = -2.218657557832e+00, ‖∇f‖ = 1.4788e+00, α = 1.00e+00, m = 1, nfg = 1 +[ Info: LBFGS: iter 4, Δt 50.77 s: f = -2.473597362695e+00, ‖∇f‖ = 1.2506e+00, α = 3.17e+00, m = 2, nfg = 3 +[ Info: LBFGS: iter 5, Δt 15.40 s: f = -2.546159338872e+00, ‖∇f‖ = 1.4463e+00, α = 1.00e+00, m = 3, nfg = 1 +[ Info: LBFGS: iter 6, Δt 16.81 s: f = -2.614645567157e+00, ‖∇f‖ = 4.0554e-01, α = 1.00e+00, m = 4, nfg = 1 +[ Info: LBFGS: iter 7, Δt 15.00 s: f = -2.622673933783e+00, ‖∇f‖ = 1.8054e-01, α = 1.00e+00, m = 5, nfg = 1 +[ Info: LBFGS: iter 8, Δt 15.49 s: f = -2.626310260551e+00, ‖∇f‖ = 1.7749e-01, α = 1.00e+00, m = 6, nfg = 1 +[ Info: LBFGS: iter 9, Δt 13.94 s: f = -2.632769138215e+00, ‖∇f‖ = 1.8586e-01, α = 1.00e+00, m = 7, nfg = 1 +[ Info: LBFGS: iter 10, Δt 14.24 s: f = -2.639694625673e+00, ‖∇f‖ = 2.2500e-01, α = 1.00e+00, m = 8, nfg = 1 +[ Info: LBFGS: iter 11, Δt 12.62 s: f = -2.644827933644e+00, ‖∇f‖ = 1.2801e-01, α = 1.00e+00, m = 9, nfg = 1 +[ Info: LBFGS: iter 12, Δt 13.99 s: f = -2.646459706216e+00, ‖∇f‖ = 6.7575e-02, α = 1.00e+00, m = 10, nfg = 1 +[ Info: LBFGS: iter 13, Δt 12.48 s: f = -2.647499601247e+00, ‖∇f‖ = 6.0731e-02, α = 1.00e+00, m = 11, nfg = 1 +[ Info: LBFGS: iter 14, Δt 13.90 s: f = -2.648703044472e+00, ‖∇f‖ = 7.1312e-02, α = 1.00e+00, m = 12, nfg = 1 +[ Info: LBFGS: iter 15, Δt 12.38 s: f = -2.650602130567e+00, ‖∇f‖ = 9.3675e-02, α = 1.00e+00, m = 13, nfg = 1 +[ Info: LBFGS: iter 16, Δt 12.72 s: f = -2.652309127838e+00, ‖∇f‖ = 8.3679e-02, α = 1.00e+00, m = 14, nfg = 1 +[ Info: LBFGS: iter 17, Δt 12.14 s: f = -2.654182955360e+00, ‖∇f‖ = 9.5661e-02, α = 1.00e+00, m = 15, nfg = 1 +[ Info: LBFGS: iter 18, Δt 12.51 s: f = -2.655830722048e+00, ‖∇f‖ = 1.4282e-01, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 19, Δt 13.91 s: f = -2.658506524808e+00, ‖∇f‖ = 8.6259e-02, α = 1.00e+00, m = 17, nfg = 1 +[ Info: LBFGS: iter 20, Δt 12.28 s: f = -2.660101934378e+00, ‖∇f‖ = 5.5568e-02, α = 1.00e+00, m = 18, nfg = 1 +[ Info: LBFGS: iter 21, Δt 13.67 s: f = -2.660655823922e+00, ‖∇f‖ = 5.0087e-02, α = 1.00e+00, m = 19, nfg = 1 +[ Info: LBFGS: iter 22, Δt 12.20 s: f = -2.661713913904e+00, ‖∇f‖ = 6.6024e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 23, Δt 13.88 s: f = -2.663783161449e+00, ‖∇f‖ = 1.4168e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 24, Δt 12.33 s: f = -2.664843824225e+00, ‖∇f‖ = 1.3560e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 25, Δt 13.71 s: f = -2.666211864482e+00, ‖∇f‖ = 6.7535e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 26, Δt 12.34 s: f = -2.666722906773e+00, ‖∇f‖ = 5.1877e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 27, Δt 12.35 s: f = -2.667030535551e+00, ‖∇f‖ = 4.7362e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 28, Δt 13.93 s: f = -2.668169807778e+00, ‖∇f‖ = 5.6321e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 29, Δt 12.64 s: f = -2.668423674818e+00, ‖∇f‖ = 1.1940e-01, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 30, Δt 13.82 s: f = -2.669339425071e+00, ‖∇f‖ = 4.0856e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 31, Δt 12.36 s: f = -2.669606925028e+00, ‖∇f‖ = 3.0584e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 32, Δt 13.86 s: f = -2.669888443527e+00, ‖∇f‖ = 3.6473e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 33, Δt 12.59 s: f = -2.670409100956e+00, ‖∇f‖ = 5.7239e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 34, Δt 14.06 s: f = -2.670955476785e+00, ‖∇f‖ = 6.0862e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 35, Δt 12.54 s: f = -2.671400581183e+00, ‖∇f‖ = 4.4907e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 36, Δt 13.84 s: f = -2.671654670301e+00, ‖∇f‖ = 2.3660e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 37, Δt 12.53 s: f = -2.671805543674e+00, ‖∇f‖ = 2.3806e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 38, Δt 12.62 s: f = -2.672069196257e+00, ‖∇f‖ = 3.7666e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 39, Δt 13.93 s: f = -2.672392041467e+00, ‖∇f‖ = 4.6014e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 40, Δt 12.58 s: f = -2.672631814576e+00, ‖∇f‖ = 2.8983e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 41, Δt 13.94 s: f = -2.672757830427e+00, ‖∇f‖ = 2.0269e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 42, Δt 11.54 s: f = -2.672875298674e+00, ‖∇f‖ = 2.3893e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 43, Δt 12.91 s: f = -2.673086282043e+00, ‖∇f‖ = 3.1487e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 44, Δt 11.56 s: f = -2.673264734617e+00, ‖∇f‖ = 5.1144e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 45, Δt 11.70 s: f = -2.673441586270e+00, ‖∇f‖ = 2.2014e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 46, Δt 13.22 s: f = -2.673518413423e+00, ‖∇f‖ = 1.6755e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 47, Δt 11.73 s: f = -2.673610437186e+00, ‖∇f‖ = 2.1374e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 48, Δt 12.99 s: f = -2.673749787831e+00, ‖∇f‖ = 3.0825e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 49, Δt 11.81 s: f = -2.673963455728e+00, ‖∇f‖ = 2.8112e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 50, Δt 13.16 s: f = -2.674085248803e+00, ‖∇f‖ = 3.6768e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 51, Δt 11.39 s: f = -2.674188984088e+00, ‖∇f‖ = 1.7117e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 52, Δt 11.56 s: f = -2.674242447315e+00, ‖∇f‖ = 1.4444e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 53, Δt 12.95 s: f = -2.674306699476e+00, ‖∇f‖ = 1.8187e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 54, Δt 11.87 s: f = -2.674433434449e+00, ‖∇f‖ = 2.0657e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 55, Δt 24.94 s: f = -2.674481180296e+00, ‖∇f‖ = 2.0935e-02, α = 3.31e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 56, Δt 13.27 s: f = -2.674543091778e+00, ‖∇f‖ = 1.1697e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 57, Δt 11.73 s: f = -2.674593597475e+00, ‖∇f‖ = 1.2064e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 58, Δt 13.98 s: f = -2.674645033379e+00, ‖∇f‖ = 1.7233e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 59, Δt 13.19 s: f = -2.674707076560e+00, ‖∇f‖ = 1.4282e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 60, Δt 12.30 s: f = -2.674765993748e+00, ‖∇f‖ = 1.5331e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 61, Δt 13.45 s: f = -2.674818411605e+00, ‖∇f‖ = 1.7528e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 62, Δt 11.79 s: f = -2.674860141812e+00, ‖∇f‖ = 1.5281e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 63, Δt 13.29 s: f = -2.674937524252e+00, ‖∇f‖ = 1.3781e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 64, Δt 11.59 s: f = -2.674948199372e+00, ‖∇f‖ = 2.8631e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 65, Δt 22.94 s: f = -2.674990650090e+00, ‖∇f‖ = 9.4163e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 66, Δt 11.50 s: f = -2.675004596824e+00, ‖∇f‖ = 7.9770e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 67, Δt 12.75 s: f = -2.675026772162e+00, ‖∇f‖ = 1.1890e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 68, Δt 11.54 s: f = -2.675068849496e+00, ‖∇f‖ = 1.5839e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 69, Δt 12.83 s: f = -2.675131833485e+00, ‖∇f‖ = 1.9865e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 70, Δt 23.26 s: f = -2.675161486689e+00, ‖∇f‖ = 1.6149e-02, α = 3.77e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 71, Δt 12.81 s: f = -2.675191940653e+00, ‖∇f‖ = 7.4164e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 72, Δt 11.69 s: f = -2.675210048264e+00, ‖∇f‖ = 8.1107e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 73, Δt 12.81 s: f = -2.675226236810e+00, ‖∇f‖ = 1.0563e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 74, Δt 11.71 s: f = -2.675255865322e+00, ‖∇f‖ = 1.5000e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 75, Δt 12.83 s: f = -2.675284908686e+00, ‖∇f‖ = 9.5271e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 76, Δt 11.47 s: f = -2.675303880609e+00, ‖∇f‖ = 6.1567e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 77, Δt 13.03 s: f = -2.675316351383e+00, ‖∇f‖ = 8.2404e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 78, Δt 11.71 s: f = -2.675331006484e+00, ‖∇f‖ = 8.6196e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 79, Δt 11.73 s: f = -2.675352594041e+00, ‖∇f‖ = 1.1186e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 80, Δt 13.08 s: f = -2.675368505391e+00, ‖∇f‖ = 1.0487e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 81, Δt 11.58 s: f = -2.675379342123e+00, ‖∇f‖ = 5.6587e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 82, Δt 12.54 s: f = -2.675386556147e+00, ‖∇f‖ = 5.4612e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 83, Δt 11.64 s: f = -2.675400703567e+00, ‖∇f‖ = 7.6013e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 84, Δt 13.11 s: f = -2.675419793189e+00, ‖∇f‖ = 1.4146e-02, α = 1.00e+00, m = 20, nfg = 1 +┌ Warning: LBFGS: not converged to requested tol after 85 iterations and time 26.03 m: f = -2.675438660313e+00, ‖∇f‖ = 7.9074e-03 +└ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/lbfgs.jl:199 +E / prod(size(lattice)) = -0.6688596650783208 ```` diff --git a/docs/src/examples/xxz/main.ipynb b/docs/src/examples/xxz/main.ipynb index 61765d562..685cbdc4c 100644 --- a/docs/src/examples/xxz/main.ipynb +++ b/docs/src/examples/xxz/main.ipynb @@ -1,17 +1,16 @@ { "cells": [ { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Markdown #hide" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "# Néel order in the $U(1)$-symmetric XXZ model\n", "\n", @@ -28,35 +27,34 @@ "PEPS and CTMRG environments. For simplicity, we will consider spin-$1/2$ operators.\n", "\n", "But first, let's make this example deterministic and import the required packages:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "using Random\n", "using TensorKit, PEPSKit\n", "using MPSKit: add_physical_charge\n", "Random.seed!(2928528935);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Constructing the model\n", "\n", "Let us define the $U(1)$-symmetric XXZ Hamiltonian on a $2 \\times 2$ unit cell with the\n", "parameters:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "J = 1.0\n", "Delta = 1.0\n", @@ -64,33 +62,34 @@ "symmetry = U1Irrep\n", "lattice = InfiniteSquare(2, 2)\n", "H₀ = heisenberg_XXZ(ComplexF64, symmetry, lattice; J, Delta, spin);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "This ensures that our PEPS ansatz can support the bipartite Néel order. As discussed above,\n", "we encode the Néel order directly in the ansatz by adding staggered auxiliary physical\n", "charges:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "S_aux = [\n", " U1Irrep(-1 // 2) U1Irrep(1 // 2)\n", " U1Irrep(1 // 2) U1Irrep(-1 // 2)\n", "]\n", "H = add_physical_charge(H₀, S_aux);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Specifying the symmetric virtual spaces\n", "\n", @@ -100,35 +99,34 @@ "symmetry sector. From the virtual spaces, we will need to construct a unit cell (a matrix)\n", "of spaces which will be supplied to the PEPS constructor. The same is true for the physical\n", "spaces, which can be extracted directly from the Hamiltonian `LocalOperator`:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "V_peps = U1Space(0 => 2, 1 => 1, -1 => 1)\n", "V_env = U1Space(0 => 6, 1 => 4, -1 => 4, 2 => 2, -2 => 2)\n", "virtual_spaces = fill(V_peps, size(lattice)...)\n", "physical_spaces = physicalspace(H)" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Ground state search\n", "\n", "From this point onwards it's business as usual: Create an initial PEPS and environment\n", "(using the symmetric spaces), specify the algorithmic parameters and optimize:" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "boundary_alg = (; tol = 1.0e-8, alg = :simultaneous, trunc = (; alg = :fixedspace))\n", "gradient_alg = (; tol = 1.0e-6, alg = :eigsolver, maxiter = 10, iterscheme = :diffgauge)\n", @@ -136,34 +134,35 @@ "\n", "peps₀ = InfinitePEPS(randn, ComplexF64, physical_spaces, virtual_spaces)\n", "env₀, = leading_boundary(CTMRGEnv(peps₀, V_env), peps₀; boundary_alg...);" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Finally, we can optimize the PEPS with respect to the XXZ Hamiltonian and check the\n", "resulting ground state energy per site using our $(2 \\times 2)$ unit cell. Note that the\n", "optimization might take a while since precompilation of symmetric AD code takes longer and\n", "because symmetric tensors do create a bit of overhead (which does pay off at larger bond and\n", "environment dimensions):" - ] + ], + "metadata": {} }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, "outputs": [], + "cell_type": "code", "source": [ "peps, env, E, info = fixedpoint(\n", " H, peps₀, env₀; boundary_alg, gradient_alg, optimizer_alg, verbosity = 3\n", ")\n", "@show E / prod(size(lattice));" - ] + ], + "metadata": {}, + "execution_count": null }, { "cell_type": "markdown", - "metadata": {}, "source": [ "Note that for the specified parameters $J = \\Delta = 1$, we simulated the same Hamiltonian\n", "as in the Heisenberg example. In that example, with a\n", @@ -171,31 +170,32 @@ "$E_\\text{D=2} = -0.6625\\dots$. Again comparing against [Sandvik's](@cite\n", "sandvik_computational_2011) accurate QMC estimate $E_{\\text{ref}}=−0.6694421$, we see that\n", "we already got closer to the reference energy." - ] + ], + "metadata": {} }, { "cell_type": "markdown", - "metadata": {}, "source": [ "---\n", "\n", "*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*" - ] + ], + "metadata": {} } ], + "nbformat_minor": 3, "metadata": { - "kernelspec": { - "display_name": "Julia 1.11.7", - "language": "julia", - "name": "julia-1.11" - }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.11.7" + }, + "kernelspec": { + "name": "julia-1.11", + "display_name": "Julia 1.11.7", + "language": "julia" } }, - "nbformat": 4, - "nbformat_minor": 3 -} + "nbformat": 4 +} \ No newline at end of file diff --git a/examples/Cache.toml b/examples/Cache.toml index 77316865b..d799ee706 100644 --- a/examples/Cache.toml +++ b/examples/Cache.toml @@ -4,7 +4,7 @@ hubbard_su = "99f1e8c5aa0aa2b409d4ac1aee754209329b88c96f36cd749381a6a0afc9d9e4" 3d_ising_partition_function = "baf05623f2b0c496393892be1dfe5c7f72af94ac8c1158db9af5c1aae816c264" boundary_mps = "430db112b38b4ef30215728f994692e63faa50d085f5c69aad1ee7a7b743431d" heisenberg_su = "3eb8556d949c0e47e39c679e9e438bc04d3e2a3ffe73e0a682963b37b05f9e91" -xxz = "9816ec9c07997a7f184be51581075655adc0c8a1a2fffc609ce88d8075a8b7db" +xxz = "0231f0c1af2013e8edd9e5c192b108e1ab19a7dca22251c3bde525e3eee2a6aa" fermi_hubbard = "4997680c826e555557c661e605e1d7d363e0cee15522d0895fa0cfd53b1de001" j1j2_su = "5d36add8355c77cec73eb278dc64cd1006ca965d1d1eac05a4dfddf37804e954" heisenberg = "d610c92223d41e296348f9858fab52eacbfe2a578f64f4f8ac4c70d486fb4da2" From f7467d45f8b0b48fd505ff115e28fc318a3f09b6 Mon Sep 17 00:00:00 2001 From: lkdvos Date: Sun, 16 Nov 2025 11:44:13 -0500 Subject: [PATCH 06/12] Bump v 0.7 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 8f1d56158..ab7b06780 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "PEPSKit" uuid = "52969e89-939e-4361-9b68-9bc7cde4bdeb" authors = ["Paul Brehmer", "Lander Burgelman", "Lukas Devos "] -version = "0.6.1" +version = "0.7.0" [deps] Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" From c9d23522081e34b34f8911e1274290815c7d7698 Mon Sep 17 00:00:00 2001 From: lkdvos Date: Mon, 17 Nov 2025 09:44:30 -0500 Subject: [PATCH 07/12] populate changelog --- CHANGELOG.md | 53 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f42144167..fa33b7537 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,16 +11,57 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- Add unit normalization of the half and full infinite environments before the projector - computation, fixing an issue with the gradient accuracy. -- Fix sporadic test timeouts when running variational optimization after simple - update for the Heisenberg model by switching to a `GMRES`-based gradient solver. - ### Changed ### Deprecated ### Removed +## [0.7.0] - 2025-11-17 + +### Added + +- Real time and finite-temperature evolution functionality for simple update +- Correlator for mixed state `InfinitePEPO` +- `SUWeight` to `CTMRGEnv` conversion (as `InfinitePEPS` environment) +- Simple update for PEPO (including 3-site version) +- Single-layer and double-layer PEPO reduced density matrix +- `spacetype` method for `InfinitePartitionFunction` +- Support for `SU2Irrep` symmetry in `j1_j2_model` + +### Fixed + +- Add unit normalization of the half and full infinite environments before the projector computation, fixing an issue with the gradient accuracy +- Fix sporadic test timeouts when running variational optimization after simple update for the Heisenberg model by switching to a `GMRES`-based gradient solver +- Rotation of iPEPO is now done correctly +- Fix `rotl90`, `rotr90` and `rot180` for `LocalOperator` +- Fix XXZ model convention +- Fix `add_physical_charge` for fermionic operators +- Fix `maxiter` behavior for fallback gradient linear solver +- Fix gauge fixing in `:fixed` mode for non-uniform unit cells from full SVD + +### Changed + +- A unified interface for Trotter-based time evolution algorithms. The old `su_iter`, `simpleupdate` functions should be replaced by `timestep`, `time_evolve` respectively +- Default fixed-point gradient algorithm changed to `:eigsolver` +- BoundaryMPS methods now have their own custom transfer functions, avoiding a double conjugation and twist issues for fermions +- `physicalspace` and related functions now correctly handle periodic indexing for infinite networks +- Updated compatibility with TensorKit v0.15 +- Restrict Julia to ` Date: Mon, 17 Nov 2025 09:48:36 -0500 Subject: [PATCH 08/12] update CITATION --- CITATION.cff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CITATION.cff b/CITATION.cff index dfcb2209f..8e6e15673 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -14,7 +14,7 @@ authors: given-names: "Lukas" orcid: "https://orcid.org/0000-0002-0256-4200" title: "PEPSKit" -version: 0.6.1 +version: 0.7.0 identifiers: - type: doi value: 10.5281/zenodo.13938737 From 2ed3213329433c81fdccec9cd53383957316d543 Mon Sep 17 00:00:00 2001 From: lkdvos Date: Mon, 17 Nov 2025 09:50:13 -0500 Subject: [PATCH 09/12] migrate changelog to docs --- docs/make.jl | 1 + CHANGELOG.md => docs/src/changelog.md | 52 +++++++++++++++++---------- 2 files changed, 35 insertions(+), 18 deletions(-) rename CHANGELOG.md => docs/src/changelog.md (78%) diff --git a/docs/make.jl b/docs/make.jl index 4691f118f..481cc6a27 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -70,6 +70,7 @@ makedocs(; "Boundary MPS" => joinpath.(Ref("examples"), examples_boundary_mps), ], "Library" => "lib/lib.md", + "Changelog" => "changelog.md", "References" => "references.md", ], checkdocs = :none, diff --git a/CHANGELOG.md b/docs/src/changelog.md similarity index 78% rename from CHANGELOG.md rename to docs/src/changelog.md index fa33b7537..e398171a8 100644 --- a/CHANGELOG.md +++ b/docs/src/changelog.md @@ -2,21 +2,40 @@ All notable changes to this project will be documented in this file. -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Guidelines for updating this changelog + +When making changes to this project, please update the "Unreleased" section with your changes under the appropriate category: + +- **Added** for new features. +- **Changed** for changes in existing functionality. +- **Deprecated** for soon-to-be removed features. +- **Removed** for now removed features. +- **Fixed** for any bug fixes. +- **Security** in case of vulnerabilities. +- **Performance** for performance improvements. + +When releasing a new version, move the "Unreleased" changes to a new version section with the release date. + +[Unreleased]: https://github.com/quantumkithub/pepskit.jl/compare/v0.7.0...HEAD +[0.7.0]: https://github.com/quantumkithub/pepskit.jl/compare/v0.6.1...v0.7.0 + ## [Unreleased] ### Added -### Fixed - ### Changed ### Deprecated ### Removed +### Fixed + +### Performance + ## [0.7.0] - 2025-11-17 ### Added @@ -29,17 +48,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `spacetype` method for `InfinitePartitionFunction` - Support for `SU2Irrep` symmetry in `j1_j2_model` -### Fixed - -- Add unit normalization of the half and full infinite environments before the projector computation, fixing an issue with the gradient accuracy -- Fix sporadic test timeouts when running variational optimization after simple update for the Heisenberg model by switching to a `GMRES`-based gradient solver -- Rotation of iPEPO is now done correctly -- Fix `rotl90`, `rotr90` and `rot180` for `LocalOperator` -- Fix XXZ model convention -- Fix `add_physical_charge` for fermionic operators -- Fix `maxiter` behavior for fallback gradient linear solver -- Fix gauge fixing in `:fixed` mode for non-uniform unit cells from full SVD - ### Changed - A unified interface for Trotter-based time evolution algorithms. The old `su_iter`, `simpleupdate` functions should be replaced by `timestep`, `time_evolve` respectively @@ -57,11 +65,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Removed redefinition of `tensorexpr` - Support for dual physical spaces for non-bosonic symmetries +### Fixed + +- Add unit normalization of the half and full infinite environments before the projector computation, fixing an issue with the gradient accuracy +- Fix sporadic test timeouts when running variational optimization after simple update for the Heisenberg model by switching to a `GMRES`-based gradient solver +- Rotation of iPEPO is now done correctly +- Fix `rotl90`, `rotr90` and `rot180` for `LocalOperator` +- Fix XXZ model convention +- Fix `add_physical_charge` for fermionic operators +- Fix `maxiter` behavior for fallback gradient linear solver +- Fix gauge fixing in `:fixed` mode for non-uniform unit cells from full SVD + + ### Performance - Avoid `@autoopt` for partition function calculations - Multithreaded scheduler now correctly taken into account for the reverse rules. - - -[unreleased]: https://github.com/quantumkithub/pepskit.jl/compare/v0.7.0...HEAD -[0.7.0]: https://github.com/quantumkithub/pepskit.jl/compare/v0.6.1...v0.7.0 From 2ac146820a1a18b6d5544e18aac507e3c6423bce Mon Sep 17 00:00:00 2001 From: lkdvos Date: Mon, 17 Nov 2025 10:48:48 -0500 Subject: [PATCH 10/12] update formatting in example --- docs/src/examples/j1j2_su/index.md | 222 +++++++++++++-------------- docs/src/examples/j1j2_su/main.ipynb | 6 +- examples/Cache.toml | 2 +- examples/j1j2_su/main.jl | 6 +- 4 files changed, 118 insertions(+), 118 deletions(-) diff --git a/docs/src/examples/j1j2_su/index.md b/docs/src/examples/j1j2_su/index.md index c9c5bbde3..99e82799a 100644 --- a/docs/src/examples/j1j2_su/index.md +++ b/docs/src/examples/j1j2_su/index.md @@ -70,35 +70,35 @@ end ```` [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1/2 => 1, -1/2 => 1) -[ Info: SU iter 1 : dt = 0.01, |Δλ| = 1.189e+00. Time = 33.154 s/it +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 1.189e+00. Time = 38.623 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 1833 : dt = 0.01, |Δλ| = 9.859e-09. Time = 0.063 s/it +[ Info: SU iter 1833 : dt = 0.01, |Δλ| = 9.859e-09. Time = 0.060 s/it [ Info: SU: bond weights have converged. -[ Info: Simple update finished. Total time elasped: 158.43 s +[ Info: Simple update finished. Total time elasped: 159.85 s [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.401e-04. Time = 0.065 s/it +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.401e-04. Time = 0.063 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 523 : dt = 0.01, |Δλ| = 9.965e-09. Time = 0.062 s/it +[ Info: SU iter 523 : dt = 0.01, |Δλ| = 9.965e-09. Time = 0.076 s/it [ Info: SU: bond weights have converged. -[ Info: Simple update finished. Total time elasped: 34.62 s +[ Info: Simple update finished. Total time elasped: 33.42 s [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.526e-04. Time = 0.062 s/it +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.526e-04. Time = 0.061 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 611 : dt = 0.01, |Δλ| = 9.848e-09. Time = 0.062 s/it +[ Info: SU iter 611 : dt = 0.01, |Δλ| = 9.848e-09. Time = 0.076 s/it [ Info: SU: bond weights have converged. -[ Info: Simple update finished. Total time elasped: 40.33 s +[ Info: Simple update finished. Total time elasped: 38.95 s [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.664e-04. Time = 0.085 s/it +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.664e-04. Time = 0.061 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 735 : dt = 0.01, |Δλ| = 9.963e-09. Time = 0.064 s/it +[ Info: SU iter 735 : dt = 0.01, |Δλ| = 9.963e-09. Time = 0.060 s/it [ Info: SU: bond weights have converged. -[ Info: Simple update finished. Total time elasped: 48.49 s +[ Info: Simple update finished. Total time elasped: 46.82 s [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.828e-04. Time = 0.064 s/it +[ Info: SU iter 1 : dt = 0.01, |Δλ| = 3.828e-04. Time = 0.061 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 901 : dt = 0.01, |Δλ| = 9.995e-09. Time = 0.063 s/it +[ Info: SU iter 901 : dt = 0.01, |Δλ| = 9.995e-09. Time = 0.077 s/it [ Info: SU: bond weights have converged. -[ Info: Simple update finished. Total time elasped: 59.48 s +[ Info: Simple update finished. Total time elasped: 57.45 s ```` @@ -117,31 +117,31 @@ end ```` [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 1 : dt = 0.001, |Δλ| = 4.477e-04. Time = 0.121 s/it +[ Info: SU iter 1 : dt = 0.001, |Δλ| = 4.477e-04. Time = 0.063 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 500 : dt = 0.001, |Δλ| = 2.767e-08. Time = 0.063 s/it +[ Info: SU iter 500 : dt = 0.001, |Δλ| = 2.767e-08. Time = 0.061 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 1000 : dt = 0.001, |Δλ| = 9.954e-09. Time = 0.062 s/it +[ Info: SU iter 1000 : dt = 0.001, |Δλ| = 9.954e-09. Time = 0.061 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 1500 : dt = 0.001, |Δλ| = 5.019e-09. Time = 0.063 s/it +[ Info: SU iter 1500 : dt = 0.001, |Δλ| = 5.019e-09. Time = 0.061 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 2000 : dt = 0.001, |Δλ| = 3.015e-09. Time = 0.092 s/it +[ Info: SU iter 2000 : dt = 0.001, |Δλ| = 3.015e-09. Time = 0.076 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 2500 : dt = 0.001, |Δλ| = 1.935e-09. Time = 0.062 s/it +[ Info: SU iter 2500 : dt = 0.001, |Δλ| = 1.935e-09. Time = 0.076 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 3000 : dt = 0.001, |Δλ| = 1.273e-09. Time = 0.063 s/it +[ Info: SU iter 3000 : dt = 0.001, |Δλ| = 1.273e-09. Time = 0.076 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 3295 : dt = 0.001, |Δλ| = 9.994e-10. Time = 0.062 s/it +[ Info: SU iter 3295 : dt = 0.001, |Δλ| = 9.994e-10. Time = 0.060 s/it [ Info: SU: bond weights have converged. -[ Info: Simple update finished. Total time elasped: 217.43 s +[ Info: Simple update finished. Total time elasped: 209.81 s [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 1 : dt = 0.0001, |Δλ| = 4.467e-05. Time = 0.063 s/it +[ Info: SU iter 1 : dt = 0.0001, |Δλ| = 4.467e-05. Time = 0.061 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 500 : dt = 0.0001, |Δλ| = 1.150e-09. Time = 0.063 s/it +[ Info: SU iter 500 : dt = 0.0001, |Δλ| = 1.150e-09. Time = 0.075 s/it [ Info: Space of x-weight at [1, 1] = Rep[U₁](0 => 2, 1 => 1, -1 => 1) -[ Info: SU iter 873 : dt = 0.0001, |Δλ| = 9.998e-10. Time = 0.063 s/it +[ Info: SU iter 873 : dt = 0.0001, |Δλ| = 9.998e-10. Time = 0.060 s/it [ Info: SU: bond weights have converged. -[ Info: Simple update finished. Total time elasped: 57.50 s +[ Info: Simple update finished. Total time elasped: 55.60 s ```` @@ -185,9 +185,9 @@ PEPS optimization. Note that we could have also used a sublattice-rotated versio fit the Hamiltonian onto a single-site unit cell which would require us to optimize fewer parameters and hence lead to a faster optimization. But here we instead take advantage of the already evolved `peps`, thus giving us a physical initial guess for the optimization. -In order to break some of the $C_{4v}$ symmetry of the PEPS, we will add a bit of noise to it -- this is conviently done using MPSKit's `randomize!` function. (Breaking some of the spatial -symmetry can be advantageous for obtaining lower energies.) +In order to break some of the $C_{4v}$ symmetry of the PEPS, we will add a bit of noise to it. +This is conviently done using MPSKit's `randomize!` function. +(Breaking some of the spatial symmetry can be advantageous for obtaining lower energies.) ````julia using MPSKit: randomize! @@ -203,86 +203,86 @@ peps_opt, env_opt, E_opt, = fixedpoint( ┌ Warning: the provided real environment was converted to a complex environment since :fixed mode generally produces complex gauges; use :diffgauge mode instead by passing gradient_alg=(; iterscheme=:diffgauge) to the fixedpoint keyword arguments to work with purely real environments └ @ PEPSKit ~/Projects/PEPSKit.jl/src/algorithms/optimization/peps_optimization.jl:204 [ Info: LBFGS: initializing with f = -1.907301302110e+00, ‖∇f‖ = 5.5641e-01 -[ Info: LBFGS: iter 1, Δt 27.56 s: f = -1.912496200062e+00, ‖∇f‖ = 4.8528e-01, α = 1.00e+00, m = 0, nfg = 1 -[ Info: LBFGS: iter 2, Δt 22.77 s: f = -1.939590317765e+00, ‖∇f‖ = 3.1781e-01, α = 1.00e+00, m = 1, nfg = 1 -[ Info: LBFGS: iter 3, Δt 19.06 s: f = -1.948086619481e+00, ‖∇f‖ = 1.8688e-01, α = 1.00e+00, m = 2, nfg = 1 -[ Info: LBFGS: iter 4, Δt 18.14 s: f = -1.954903534354e+00, ‖∇f‖ = 1.0567e-01, α = 1.00e+00, m = 3, nfg = 1 -[ Info: LBFGS: iter 5, Δt 19.58 s: f = -1.958636003807e+00, ‖∇f‖ = 9.6554e-02, α = 1.00e+00, m = 4, nfg = 1 -[ Info: LBFGS: iter 6, Δt 18.80 s: f = -1.961414208875e+00, ‖∇f‖ = 8.8495e-02, α = 1.00e+00, m = 5, nfg = 1 -[ Info: LBFGS: iter 7, Δt 18.79 s: f = -1.963670567806e+00, ‖∇f‖ = 5.9165e-02, α = 1.00e+00, m = 6, nfg = 1 -[ Info: LBFGS: iter 8, Δt 20.23 s: f = -1.965776363520e+00, ‖∇f‖ = 5.0139e-02, α = 1.00e+00, m = 7, nfg = 1 -[ Info: LBFGS: iter 9, Δt 21.98 s: f = -1.967226453690e+00, ‖∇f‖ = 9.2909e-02, α = 1.00e+00, m = 8, nfg = 1 -[ Info: LBFGS: iter 10, Δt 19.64 s: f = -1.968251645234e+00, ‖∇f‖ = 4.4439e-02, α = 1.00e+00, m = 9, nfg = 1 -[ Info: LBFGS: iter 11, Δt 22.41 s: f = -1.969059008087e+00, ‖∇f‖ = 4.6917e-02, α = 1.00e+00, m = 10, nfg = 1 -[ Info: LBFGS: iter 12, Δt 20.79 s: f = -1.969667913862e+00, ‖∇f‖ = 4.8179e-02, α = 1.00e+00, m = 11, nfg = 1 -[ Info: LBFGS: iter 13, Δt 21.23 s: f = -1.970804652416e+00, ‖∇f‖ = 3.2505e-02, α = 1.00e+00, m = 12, nfg = 1 -[ Info: LBFGS: iter 14, Δt 22.79 s: f = -1.971787694409e+00, ‖∇f‖ = 4.3869e-02, α = 1.00e+00, m = 13, nfg = 1 -[ Info: LBFGS: iter 15, Δt 24.41 s: f = -1.972414025039e+00, ‖∇f‖ = 4.0604e-02, α = 1.00e+00, m = 14, nfg = 1 -[ Info: LBFGS: iter 16, Δt 22.68 s: f = -1.972867447250e+00, ‖∇f‖ = 2.5133e-02, α = 1.00e+00, m = 15, nfg = 1 -[ Info: LBFGS: iter 17, Δt 22.72 s: f = -1.973224221322e+00, ‖∇f‖ = 2.3593e-02, α = 1.00e+00, m = 16, nfg = 1 -[ Info: LBFGS: iter 18, Δt 22.61 s: f = -1.973780793633e+00, ‖∇f‖ = 2.7945e-02, α = 1.00e+00, m = 17, nfg = 1 -[ Info: LBFGS: iter 19, Δt 20.78 s: f = -1.974278639630e+00, ‖∇f‖ = 2.8914e-02, α = 1.00e+00, m = 18, nfg = 1 -[ Info: LBFGS: iter 20, Δt 19.12 s: f = -1.974533659938e+00, ‖∇f‖ = 1.8380e-02, α = 1.00e+00, m = 19, nfg = 1 -[ Info: LBFGS: iter 21, Δt 22.48 s: f = -1.974797746482e+00, ‖∇f‖ = 1.5608e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 22, Δt 21.72 s: f = -1.975002265713e+00, ‖∇f‖ = 2.0961e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 23, Δt 20.82 s: f = -1.975178140945e+00, ‖∇f‖ = 3.4077e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 24, Δt 20.78 s: f = -1.975348043297e+00, ‖∇f‖ = 1.4875e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 25, Δt 21.24 s: f = -1.975446214398e+00, ‖∇f‖ = 1.3359e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 26, Δt 20.62 s: f = -1.975598188521e+00, ‖∇f‖ = 1.5129e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 27, Δt 21.33 s: f = -1.975648975504e+00, ‖∇f‖ = 4.0666e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 28, Δt 19.24 s: f = -1.975801502894e+00, ‖∇f‖ = 1.2082e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 29, Δt 19.95 s: f = -1.975838520962e+00, ‖∇f‖ = 1.0012e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 30, Δt 20.60 s: f = -1.975920699081e+00, ‖∇f‖ = 1.1497e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 31, Δt 20.98 s: f = -1.975994476122e+00, ‖∇f‖ = 2.0164e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 32, Δt 19.27 s: f = -1.976049779798e+00, ‖∇f‖ = 1.2778e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 33, Δt 19.69 s: f = -1.976083052474e+00, ‖∇f‖ = 8.1251e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 34, Δt 19.55 s: f = -1.976120284177e+00, ‖∇f‖ = 9.1433e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 35, Δt 19.89 s: f = -1.976178863096e+00, ‖∇f‖ = 1.2556e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 36, Δt 19.56 s: f = -1.976225564245e+00, ‖∇f‖ = 1.1295e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 37, Δt 19.28 s: f = -1.976262568889e+00, ‖∇f‖ = 7.0514e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 38, Δt 18.97 s: f = -1.976300953764e+00, ‖∇f‖ = 8.6312e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 39, Δt 18.69 s: f = -1.976337659332e+00, ‖∇f‖ = 1.1092e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 40, Δt 19.72 s: f = -1.976393924161e+00, ‖∇f‖ = 1.1668e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 41, Δt 20.68 s: f = -1.976436192483e+00, ‖∇f‖ = 8.0157e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 42, Δt 18.14 s: f = -1.976469672103e+00, ‖∇f‖ = 7.3417e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 43, Δt 19.70 s: f = -1.976509489620e+00, ‖∇f‖ = 8.4507e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 44, Δt 19.19 s: f = -1.976583802578e+00, ‖∇f‖ = 1.3151e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 45, Δt 20.87 s: f = -1.976630307258e+00, ‖∇f‖ = 1.4170e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 46, Δt 20.33 s: f = -1.976680877868e+00, ‖∇f‖ = 8.3860e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 47, Δt 19.29 s: f = -1.976710020540e+00, ‖∇f‖ = 1.0325e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 48, Δt 20.24 s: f = -1.976745581904e+00, ‖∇f‖ = 1.2062e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 49, Δt 19.17 s: f = -1.976829231643e+00, ‖∇f‖ = 1.2197e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 50, Δt 20.52 s: f = -1.976899195992e+00, ‖∇f‖ = 1.9229e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 51, Δt 19.66 s: f = -1.976987140901e+00, ‖∇f‖ = 1.8244e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 52, Δt 18.09 s: f = -1.977023236629e+00, ‖∇f‖ = 8.3070e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 53, Δt 19.51 s: f = -1.977056164969e+00, ‖∇f‖ = 8.3182e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 54, Δt 21.42 s: f = -1.977123528338e+00, ‖∇f‖ = 1.1023e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 55, Δt 40.71 s: f = -1.977157909182e+00, ‖∇f‖ = 1.7552e-02, α = 3.55e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 56, Δt 19.58 s: f = -1.977212923858e+00, ‖∇f‖ = 1.1229e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 57, Δt 20.60 s: f = -1.977268389200e+00, ‖∇f‖ = 7.8373e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 58, Δt 19.16 s: f = -1.977326972617e+00, ‖∇f‖ = 1.1772e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 59, Δt 19.77 s: f = -1.977371513954e+00, ‖∇f‖ = 2.0292e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 60, Δt 19.22 s: f = -1.977420127940e+00, ‖∇f‖ = 1.0167e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 61, Δt 19.18 s: f = -1.977459871700e+00, ‖∇f‖ = 8.8652e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 62, Δt 19.88 s: f = -1.977507028354e+00, ‖∇f‖ = 8.3742e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 63, Δt 21.56 s: f = -1.977570888464e+00, ‖∇f‖ = 1.5706e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 64, Δt 38.57 s: f = -1.977620567166e+00, ‖∇f‖ = 1.0020e-02, α = 4.86e-01, m = 20, nfg = 2 -[ Info: LBFGS: iter 65, Δt 20.72 s: f = -1.977658416479e+00, ‖∇f‖ = 8.1197e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 66, Δt 20.85 s: f = -1.977708104067e+00, ‖∇f‖ = 1.1151e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 67, Δt 19.31 s: f = -1.977753273984e+00, ‖∇f‖ = 8.6127e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 68, Δt 22.56 s: f = -1.977756230819e+00, ‖∇f‖ = 1.1803e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 69, Δt 21.49 s: f = -1.977778298956e+00, ‖∇f‖ = 1.3834e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 70, Δt 19.10 s: f = -1.977826121915e+00, ‖∇f‖ = 1.0827e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 71, Δt 19.06 s: f = -1.977853878453e+00, ‖∇f‖ = 9.0049e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 72, Δt 21.55 s: f = -1.977879275990e+00, ‖∇f‖ = 8.2484e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 73, Δt 17.90 s: f = -1.977902757838e+00, ‖∇f‖ = 6.2376e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 74, Δt 20.15 s: f = -1.977930234553e+00, ‖∇f‖ = 5.6595e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 75, Δt 20.50 s: f = -1.977964320717e+00, ‖∇f‖ = 1.1578e-02, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 76, Δt 18.53 s: f = -1.977994766836e+00, ‖∇f‖ = 7.7846e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 77, Δt 19.37 s: f = -1.978013673463e+00, ‖∇f‖ = 7.3610e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 78, Δt 18.64 s: f = -1.978027144104e+00, ‖∇f‖ = 6.3493e-03, α = 1.00e+00, m = 20, nfg = 1 -[ Info: LBFGS: iter 79, Δt 19.93 s: f = -1.978044594980e+00, ‖∇f‖ = 7.3623e-03, α = 1.00e+00, m = 20, nfg = 1 -┌ Warning: LBFGS: not converged to requested tol after 80 iterations and time 34.78 m: f = -1.978065459455e+00, ‖∇f‖ = 5.8505e-03 +[ Info: LBFGS: iter 1, Δt 27.08 s: f = -1.912496200062e+00, ‖∇f‖ = 4.8528e-01, α = 1.00e+00, m = 0, nfg = 1 +[ Info: LBFGS: iter 2, Δt 21.55 s: f = -1.939590317765e+00, ‖∇f‖ = 3.1781e-01, α = 1.00e+00, m = 1, nfg = 1 +[ Info: LBFGS: iter 3, Δt 18.59 s: f = -1.948086619481e+00, ‖∇f‖ = 1.8688e-01, α = 1.00e+00, m = 2, nfg = 1 +[ Info: LBFGS: iter 4, Δt 17.68 s: f = -1.954903534354e+00, ‖∇f‖ = 1.0567e-01, α = 1.00e+00, m = 3, nfg = 1 +[ Info: LBFGS: iter 5, Δt 18.51 s: f = -1.958636003807e+00, ‖∇f‖ = 9.6554e-02, α = 1.00e+00, m = 4, nfg = 1 +[ Info: LBFGS: iter 6, Δt 17.87 s: f = -1.961414208875e+00, ‖∇f‖ = 8.8495e-02, α = 1.00e+00, m = 5, nfg = 1 +[ Info: LBFGS: iter 7, Δt 17.70 s: f = -1.963670567806e+00, ‖∇f‖ = 5.9165e-02, α = 1.00e+00, m = 6, nfg = 1 +[ Info: LBFGS: iter 8, Δt 18.26 s: f = -1.965776363520e+00, ‖∇f‖ = 5.0139e-02, α = 1.00e+00, m = 7, nfg = 1 +[ Info: LBFGS: iter 9, Δt 19.99 s: f = -1.967226453690e+00, ‖∇f‖ = 9.2909e-02, α = 1.00e+00, m = 8, nfg = 1 +[ Info: LBFGS: iter 10, Δt 19.12 s: f = -1.968251645234e+00, ‖∇f‖ = 4.4439e-02, α = 1.00e+00, m = 9, nfg = 1 +[ Info: LBFGS: iter 11, Δt 19.63 s: f = -1.969059008087e+00, ‖∇f‖ = 4.6917e-02, α = 1.00e+00, m = 10, nfg = 1 +[ Info: LBFGS: iter 12, Δt 20.27 s: f = -1.969667913862e+00, ‖∇f‖ = 4.8179e-02, α = 1.00e+00, m = 11, nfg = 1 +[ Info: LBFGS: iter 13, Δt 20.12 s: f = -1.970804652416e+00, ‖∇f‖ = 3.2505e-02, α = 1.00e+00, m = 12, nfg = 1 +[ Info: LBFGS: iter 14, Δt 22.14 s: f = -1.971787694409e+00, ‖∇f‖ = 4.3869e-02, α = 1.00e+00, m = 13, nfg = 1 +[ Info: LBFGS: iter 15, Δt 22.25 s: f = -1.972414025039e+00, ‖∇f‖ = 4.0604e-02, α = 1.00e+00, m = 14, nfg = 1 +[ Info: LBFGS: iter 16, Δt 21.37 s: f = -1.972867447250e+00, ‖∇f‖ = 2.5133e-02, α = 1.00e+00, m = 15, nfg = 1 +[ Info: LBFGS: iter 17, Δt 20.19 s: f = -1.973224221322e+00, ‖∇f‖ = 2.3593e-02, α = 1.00e+00, m = 16, nfg = 1 +[ Info: LBFGS: iter 18, Δt 20.15 s: f = -1.973780793633e+00, ‖∇f‖ = 2.7945e-02, α = 1.00e+00, m = 17, nfg = 1 +[ Info: LBFGS: iter 19, Δt 19.79 s: f = -1.974278639630e+00, ‖∇f‖ = 2.8914e-02, α = 1.00e+00, m = 18, nfg = 1 +[ Info: LBFGS: iter 20, Δt 18.27 s: f = -1.974533659938e+00, ‖∇f‖ = 1.8380e-02, α = 1.00e+00, m = 19, nfg = 1 +[ Info: LBFGS: iter 21, Δt 20.24 s: f = -1.974797746482e+00, ‖∇f‖ = 1.5608e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 22, Δt 19.84 s: f = -1.975002265713e+00, ‖∇f‖ = 2.0961e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 23, Δt 19.23 s: f = -1.975178140945e+00, ‖∇f‖ = 3.4077e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 24, Δt 18.51 s: f = -1.975348043297e+00, ‖∇f‖ = 1.4875e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 25, Δt 19.49 s: f = -1.975446214398e+00, ‖∇f‖ = 1.3359e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 26, Δt 19.63 s: f = -1.975598188521e+00, ‖∇f‖ = 1.5129e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 27, Δt 18.69 s: f = -1.975648975504e+00, ‖∇f‖ = 4.0666e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 28, Δt 18.30 s: f = -1.975801502894e+00, ‖∇f‖ = 1.2082e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 29, Δt 18.04 s: f = -1.975838520962e+00, ‖∇f‖ = 1.0012e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 30, Δt 19.48 s: f = -1.975920699081e+00, ‖∇f‖ = 1.1497e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 31, Δt 20.05 s: f = -1.975994476122e+00, ‖∇f‖ = 2.0164e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 32, Δt 17.66 s: f = -1.976049779798e+00, ‖∇f‖ = 1.2778e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 33, Δt 18.90 s: f = -1.976083052474e+00, ‖∇f‖ = 8.1251e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 34, Δt 17.64 s: f = -1.976120284177e+00, ‖∇f‖ = 9.1433e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 35, Δt 18.21 s: f = -1.976178863096e+00, ‖∇f‖ = 1.2556e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 36, Δt 18.10 s: f = -1.976225564245e+00, ‖∇f‖ = 1.1295e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 37, Δt 17.97 s: f = -1.976262568889e+00, ‖∇f‖ = 7.0514e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 38, Δt 17.80 s: f = -1.976300953764e+00, ‖∇f‖ = 8.6312e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 39, Δt 18.50 s: f = -1.976337659332e+00, ‖∇f‖ = 1.1092e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 40, Δt 18.26 s: f = -1.976393924161e+00, ‖∇f‖ = 1.1668e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 41, Δt 18.35 s: f = -1.976436192483e+00, ‖∇f‖ = 8.0157e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 42, Δt 17.61 s: f = -1.976469672103e+00, ‖∇f‖ = 7.3417e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 43, Δt 18.45 s: f = -1.976509489620e+00, ‖∇f‖ = 8.4507e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 44, Δt 18.35 s: f = -1.976583802578e+00, ‖∇f‖ = 1.3151e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 45, Δt 19.56 s: f = -1.976630307258e+00, ‖∇f‖ = 1.4170e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 46, Δt 18.29 s: f = -1.976680877868e+00, ‖∇f‖ = 8.3860e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 47, Δt 19.00 s: f = -1.976710020540e+00, ‖∇f‖ = 1.0325e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 48, Δt 17.61 s: f = -1.976745581904e+00, ‖∇f‖ = 1.2062e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 49, Δt 18.88 s: f = -1.976829231643e+00, ‖∇f‖ = 1.2197e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 50, Δt 18.91 s: f = -1.976899195992e+00, ‖∇f‖ = 1.9229e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 51, Δt 18.74 s: f = -1.976987140901e+00, ‖∇f‖ = 1.8244e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 52, Δt 16.81 s: f = -1.977023236629e+00, ‖∇f‖ = 8.3070e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 53, Δt 18.17 s: f = -1.977056164969e+00, ‖∇f‖ = 8.3182e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 54, Δt 17.75 s: f = -1.977123528338e+00, ‖∇f‖ = 1.1023e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 55, Δt 37.08 s: f = -1.977157909182e+00, ‖∇f‖ = 1.7552e-02, α = 3.55e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 56, Δt 18.66 s: f = -1.977212923858e+00, ‖∇f‖ = 1.1229e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 57, Δt 18.01 s: f = -1.977268389200e+00, ‖∇f‖ = 7.8373e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 58, Δt 18.83 s: f = -1.977326972617e+00, ‖∇f‖ = 1.1772e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 59, Δt 18.11 s: f = -1.977371513954e+00, ‖∇f‖ = 2.0292e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 60, Δt 18.21 s: f = -1.977420127940e+00, ‖∇f‖ = 1.0167e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 61, Δt 17.38 s: f = -1.977459871700e+00, ‖∇f‖ = 8.8652e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 62, Δt 18.74 s: f = -1.977507028354e+00, ‖∇f‖ = 8.3742e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 63, Δt 19.13 s: f = -1.977570888464e+00, ‖∇f‖ = 1.5706e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 64, Δt 37.04 s: f = -1.977620567166e+00, ‖∇f‖ = 1.0020e-02, α = 4.86e-01, m = 20, nfg = 2 +[ Info: LBFGS: iter 65, Δt 19.38 s: f = -1.977658416479e+00, ‖∇f‖ = 8.1197e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 66, Δt 18.51 s: f = -1.977708104067e+00, ‖∇f‖ = 1.1151e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 67, Δt 19.21 s: f = -1.977753273984e+00, ‖∇f‖ = 8.6127e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 68, Δt 21.38 s: f = -1.977756230819e+00, ‖∇f‖ = 1.1803e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 69, Δt 20.18 s: f = -1.977778298956e+00, ‖∇f‖ = 1.3834e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 70, Δt 17.39 s: f = -1.977826121915e+00, ‖∇f‖ = 1.0827e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 71, Δt 19.25 s: f = -1.977853878453e+00, ‖∇f‖ = 9.0049e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 72, Δt 18.86 s: f = -1.977879275990e+00, ‖∇f‖ = 8.2484e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 73, Δt 18.96 s: f = -1.977902757838e+00, ‖∇f‖ = 6.2376e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 74, Δt 18.26 s: f = -1.977930234553e+00, ‖∇f‖ = 5.6595e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 75, Δt 19.82 s: f = -1.977964320717e+00, ‖∇f‖ = 1.1578e-02, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 76, Δt 18.28 s: f = -1.977994766836e+00, ‖∇f‖ = 7.7846e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 77, Δt 18.79 s: f = -1.978013673463e+00, ‖∇f‖ = 7.3610e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 78, Δt 17.63 s: f = -1.978027144104e+00, ‖∇f‖ = 6.3493e-03, α = 1.00e+00, m = 20, nfg = 1 +[ Info: LBFGS: iter 79, Δt 18.44 s: f = -1.978044594980e+00, ‖∇f‖ = 7.3623e-03, α = 1.00e+00, m = 20, nfg = 1 +┌ Warning: LBFGS: not converged to requested tol after 80 iterations and time 33.51 m: f = -1.978065459455e+00, ‖∇f‖ = 5.8505e-03 └ @ OptimKit ~/.julia/packages/OptimKit/dRsBo/src/lbfgs.jl:199 ```` diff --git a/docs/src/examples/j1j2_su/main.ipynb b/docs/src/examples/j1j2_su/main.ipynb index 46ac258e8..d450ed64c 100644 --- a/docs/src/examples/j1j2_su/main.ipynb +++ b/docs/src/examples/j1j2_su/main.ipynb @@ -177,9 +177,9 @@ "fit the Hamiltonian onto a single-site unit cell which would require us to optimize fewer\n", "parameters and hence lead to a faster optimization. But here we instead take advantage of\n", "the already evolved `peps`, thus giving us a physical initial guess for the optimization.\n", - "In order to break some of the $C_{4v}$ symmetry of the PEPS, we will add a bit of noise to it\n", - "- this is conviently done using MPSKit's `randomize!` function. (Breaking some of the spatial\n", - "symmetry can be advantageous for obtaining lower energies.)" + "In order to break some of the $C_{4v}$ symmetry of the PEPS, we will add a bit of noise to it.\n", + "This is conviently done using MPSKit's `randomize!` function.\n", + "(Breaking some of the spatial symmetry can be advantageous for obtaining lower energies.)" ], "metadata": {} }, diff --git a/examples/Cache.toml b/examples/Cache.toml index d799ee706..349f735ce 100644 --- a/examples/Cache.toml +++ b/examples/Cache.toml @@ -6,5 +6,5 @@ boundary_mps = "430db112b38b4ef30215728f994692e63faa50d085f5c69aad1ee7a7b743431d heisenberg_su = "3eb8556d949c0e47e39c679e9e438bc04d3e2a3ffe73e0a682963b37b05f9e91" xxz = "0231f0c1af2013e8edd9e5c192b108e1ab19a7dca22251c3bde525e3eee2a6aa" fermi_hubbard = "4997680c826e555557c661e605e1d7d363e0cee15522d0895fa0cfd53b1de001" -j1j2_su = "5d36add8355c77cec73eb278dc64cd1006ca965d1d1eac05a4dfddf37804e954" +j1j2_su = "c00fd13c0be323ab5825af59f3e7b31c3e51d3f65211d3836657b64274504c1c" heisenberg = "d610c92223d41e296348f9858fab52eacbfe2a578f64f4f8ac4c70d486fb4da2" diff --git a/examples/j1j2_su/main.jl b/examples/j1j2_su/main.jl index e027f5bcc..2fe4b6d55 100644 --- a/examples/j1j2_su/main.jl +++ b/examples/j1j2_su/main.jl @@ -105,9 +105,9 @@ PEPS optimization. Note that we could have also used a sublattice-rotated versio fit the Hamiltonian onto a single-site unit cell which would require us to optimize fewer parameters and hence lead to a faster optimization. But here we instead take advantage of the already evolved `peps`, thus giving us a physical initial guess for the optimization. -In order to break some of the $C_{4v}$ symmetry of the PEPS, we will add a bit of noise to it -- this is conviently done using MPSKit's `randomize!` function. (Breaking some of the spatial -symmetry can be advantageous for obtaining lower energies.) +In order to break some of the $C_{4v}$ symmetry of the PEPS, we will add a bit of noise to it. +This is conviently done using MPSKit's `randomize!` function. +(Breaking some of the spatial symmetry can be advantageous for obtaining lower energies.) """ using MPSKit: randomize! From fc28ab0d477d28f1bed4426019bc77c2af4d5559 Mon Sep 17 00:00:00 2001 From: lkdvos Date: Mon, 17 Nov 2025 13:42:17 -0500 Subject: [PATCH 11/12] fix changelog --- docs/src/changelog.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/src/changelog.md b/docs/src/changelog.md index e398171a8..c0bb83f41 100644 --- a/docs/src/changelog.md +++ b/docs/src/changelog.md @@ -14,15 +14,11 @@ When making changes to this project, please update the "Unreleased" section with - **Deprecated** for soon-to-be removed features. - **Removed** for now removed features. - **Fixed** for any bug fixes. -- **Security** in case of vulnerabilities. - **Performance** for performance improvements. When releasing a new version, move the "Unreleased" changes to a new version section with the release date. -[Unreleased]: https://github.com/quantumkithub/pepskit.jl/compare/v0.7.0...HEAD -[0.7.0]: https://github.com/quantumkithub/pepskit.jl/compare/v0.6.1...v0.7.0 - -## [Unreleased] +## [Unreleased](https://github.com/quantumkithub/pepskit.jl/compare/v0.7.0...HEAD) ### Added @@ -36,7 +32,7 @@ When releasing a new version, move the "Unreleased" changes to a new version sec ### Performance -## [0.7.0] - 2025-11-17 +## [0.7.0](https://github.com/quantumkithub/pepskit.jl/compare/v0.6.0...v0.7.0) - 2025-11-17 ### Added From 06b068ddaa6e1d91348e377eab95bb23e86a5493 Mon Sep 17 00:00:00 2001 From: lkdvos Date: Mon, 17 Nov 2025 13:42:24 -0500 Subject: [PATCH 12/12] update tensorkit link --- docs/make.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index 481cc6a27..3858b9f94 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -20,7 +20,7 @@ bib = CitationBibliography(bibpath; style = :authoryear) # interlinks # Zygote didn't update to documenter v1 yet... links = InterLinks( - "TensorKit" => "https://jutho.github.io/TensorKit.jl/stable/", + "TensorKit" => "https://quantumkithub.github.io/TensorKit.jl/stable/", "KrylovKit" => "https://jutho.github.io/KrylovKit.jl/stable/", "MPSKit" => "https://quantumkithub.github.io/MPSKit.jl/stable/", "MPSKitModels" => "https://quantumkithub.github.io/MPSKitModels.jl/dev/",