EditURL = "../../../../examples/bose_hubbard/main.jl"
This example demonstrates the simulation of the two-dimensional Bose-Hubbard model. In particular, the point will be to showcase the use of internal symmetries and finite particle densities in PEPS ground state searches. As we will see, incorporating symmetries into the simulation consists of initializing a symmetric Hamiltonian, PEPS state and CTM environment - made possible through TensorKit.
But first let's seed the RNG and import the required modules:
using Random
using TensorKit, PEPSKit
using MPSKit: add_physical_charge
Random.seed!(2928528935);We will construct the Bose-Hubbard model Hamiltonian through the
bose_hubbard_model,
function from MPSKitModels as reexported by PEPSKit. We'll simulate the model in its
Mott-insulating phase where the ratio
t = 1.0
U = 30.0
cutoff = 2
mu = 0.0
lattice = InfiniteSquare(1, 1);Next, we impose an explicit global symmetry argument of the
Hamiltonian constructor to U1Irrep and passing one as the particle number density
keyword argument n:
symmetry = U1Irrep
n = 1
H = bose_hubbard_model(ComplexF64, symmetry, lattice; cutoff, t, U, n);Before we continue, it might be interesting to inspect the corresponding lattice physical
spaces (which is here just a
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)
Note that the physical space contains
When running PEPS simulations with explicit internal symmetries, specifying the structure of
the virtual spaces of the PEPS and its environment becomes a bit more involved. For the
environment, one could in principle allow the virtual space to be chosen dynamically during
the boundary contraction using CTMRG by using a truncation scheme that allows for this
(e.g. using alg=:truncdim or alg=:truncbelow to truncate to a fixed total bond dimension
or singular value cutoff respectively). For the PEPS virtual space however, the structure
has to be specified before the optimization.
While there are a host of techniques to do this in an informed way (e.g. starting from a
simple update result), here we just specify the virtual space manually. Since we're dealing
with a model at unit filling our physical space only contains integer
V_peps = U1Space(0 => 2, 1 => 1, -1 => 1)
V_env = U1Space(0 => 6, 1 => 4, -1 => 4, 2 => 2, -2 => 2);Having defined our Hamiltonian and spaces, it is just a matter of plugging this into the optimization framework in the usual way to find the ground state. So, we first specify all algorithms and their tolerances:
boundary_alg = (; tol=1e-8, alg=:simultaneous, trscheme=(; alg=:fixedspace))
gradient_alg = (; tol=1e-6, maxiter=10, alg=:eigsolver, iterscheme=:diffgauge)
optimizer_alg = (; tol=1e-4, alg=:lbfgs, maxiter=150, ls_maxiter=2, ls_maxfg=2);!!! note
Taking CTMRG gradients and optimizing symmetric tensors tends to be more problematic
than with dense tensors. In particular, this means that one frequently needs to tweak
the boundary_alg, gradient_alg and optimizer_alg settings. There rarely is a
general-purpose set of settings which will always work, so instead one has to adjust
the simulation settings for each specific application. For example, it might help to
switch between the CTMRG flavors alg=:simultaneous and alg=:sequential to
improve convergence. The evaluation of the CTMRG gradient can be instable, so there it
is advised to try the different iterscheme=:diffgauge and iterscheme=:fixed schemes
as well as different alg keywords. Of course the tolerances of the algorithms and
their subalgorithms also have to be compatible. For more details on the available
options, see the fixedpoint docstring.
Keep in mind that the PEPS is constructed from a unit cell of spaces, so we have to make a
matrix of V_peps spaces:
virtual_spaces = fill(V_peps, size(lattice)...)
peps₀ = InfinitePEPS(randn, ComplexF64, physical_spaces, virtual_spaces)
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.514065517581e-11im err = 3.6943032303e-09 time = 10.11 sec
And at last, we optimize (which might take a bit):
peps, env, E, info = fixedpoint(
H, peps₀, env₀; boundary_alg, gradient_alg, optimizer_alg, verbosity=3
)
@show E;[ Info: LBFGS: initializing with f = 9.360531870693, ‖∇f‖ = 1.6954e+01
[ Info: LBFGS: iter 1, time 701.65 s: f = 0.114269686001, ‖∇f‖ = 6.0686e+00, α = 1.56e+02, m = 0, nfg = 7
[ Info: LBFGS: iter 2, time 728.49 s: f = 0.059480938109, ‖∇f‖ = 7.2206e+00, α = 5.27e-01, m = 1, nfg = 2
[ Info: LBFGS: iter 3, time 731.02 s: f = -0.046499452154, ‖∇f‖ = 1.6329e+00, α = 1.00e+00, m = 2, nfg = 1
[ Info: LBFGS: iter 4, time 733.33 s: f = -0.079703746761, ‖∇f‖ = 1.4901e+00, α = 1.00e+00, m = 3, nfg = 1
[ Info: LBFGS: iter 5, time 741.06 s: f = -0.125317852116, ‖∇f‖ = 3.2630e+00, α = 5.23e-01, m = 4, nfg = 3
[ Info: LBFGS: iter 6, time 743.44 s: f = -0.163554919136, ‖∇f‖ = 1.2781e+00, α = 1.00e+00, m = 5, nfg = 1
[ Info: LBFGS: iter 7, time 745.87 s: f = -0.193532735205, ‖∇f‖ = 9.6932e-01, α = 1.00e+00, m = 6, nfg = 1
[ Info: LBFGS: iter 8, time 750.42 s: f = -0.208656321305, ‖∇f‖ = 7.0028e-01, α = 1.68e-01, m = 7, nfg = 2
[ Info: LBFGS: iter 9, time 754.81 s: f = -0.220718433131, ‖∇f‖ = 4.3381e-01, α = 3.95e-01, m = 8, nfg = 2
[ Info: LBFGS: iter 10, time 756.97 s: f = -0.227817345451, ‖∇f‖ = 5.8993e-01, α = 1.00e+00, m = 9, nfg = 1
[ Info: LBFGS: iter 11, time 758.22 s: f = -0.235906486614, ‖∇f‖ = 5.2265e-01, α = 1.00e+00, m = 10, nfg = 1
[ Info: LBFGS: iter 12, time 759.22 s: f = -0.245544719146, ‖∇f‖ = 3.6462e-01, α = 1.00e+00, m = 11, nfg = 1
[ Info: LBFGS: iter 13, time 760.15 s: f = -0.251717239104, ‖∇f‖ = 3.3074e-01, α = 1.00e+00, m = 12, nfg = 1
[ Info: LBFGS: iter 14, time 761.46 s: f = -0.256869388517, ‖∇f‖ = 2.9129e-01, α = 1.00e+00, m = 13, nfg = 1
[ Info: LBFGS: iter 15, time 762.25 s: f = -0.265345632618, ‖∇f‖ = 2.3580e-01, α = 1.00e+00, m = 14, nfg = 1
[ Info: LBFGS: iter 16, time 762.92 s: f = -0.267397827065, ‖∇f‖ = 3.0098e-01, α = 1.00e+00, m = 15, nfg = 1
[ Info: LBFGS: iter 17, time 763.80 s: f = -0.268894232393, ‖∇f‖ = 1.1725e-01, α = 1.00e+00, m = 16, nfg = 1
[ Info: LBFGS: iter 18, time 764.47 s: f = -0.269501536204, ‖∇f‖ = 8.8162e-02, α = 1.00e+00, m = 17, nfg = 1
[ Info: LBFGS: iter 19, time 765.20 s: f = -0.270154405723, ‖∇f‖ = 7.1880e-02, α = 1.00e+00, m = 18, nfg = 1
[ Info: LBFGS: iter 20, time 766.33 s: f = -0.270612692535, ‖∇f‖ = 6.5906e-02, α = 1.00e+00, m = 19, nfg = 1
[ Info: LBFGS: iter 21, time 767.10 s: f = -0.270978612739, ‖∇f‖ = 6.8050e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 22, time 767.78 s: f = -0.271251104415, ‖∇f‖ = 4.7832e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 23, time 768.66 s: f = -0.271592065726, ‖∇f‖ = 5.2245e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 24, time 769.33 s: f = -0.271907473229, ‖∇f‖ = 4.7783e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 25, time 769.98 s: f = -0.272188790523, ‖∇f‖ = 6.1727e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 26, time 770.91 s: f = -0.272341714943, ‖∇f‖ = 2.8588e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 27, time 771.62 s: f = -0.272416985007, ‖∇f‖ = 2.4404e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 28, time 772.51 s: f = -0.272488140129, ‖∇f‖ = 2.8167e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 29, time 773.65 s: f = -0.272607173824, ‖∇f‖ = 4.0551e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 30, time 774.38 s: f = -0.272669542134, ‖∇f‖ = 2.8338e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 31, time 775.06 s: f = -0.272710735517, ‖∇f‖ = 1.3171e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 32, time 776.00 s: f = -0.272737399252, ‖∇f‖ = 1.5064e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 33, time 776.65 s: f = -0.272785529240, ‖∇f‖ = 2.2115e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 34, time 777.35 s: f = -0.272869320169, ‖∇f‖ = 2.7454e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 35, time 778.48 s: f = -0.272917746483, ‖∇f‖ = 4.3200e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 36, time 779.25 s: f = -0.272982782962, ‖∇f‖ = 1.3998e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 37, time 779.88 s: f = -0.273001975620, ‖∇f‖ = 9.8876e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 38, time 780.76 s: f = -0.273014701177, ‖∇f‖ = 1.2336e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 39, time 781.44 s: f = -0.273032513150, ‖∇f‖ = 1.6628e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 40, time 782.05 s: f = -0.273047957581, ‖∇f‖ = 1.1548e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 41, time 782.92 s: f = -0.273056319318, ‖∇f‖ = 6.3307e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 42, time 783.58 s: f = -0.273062571625, ‖∇f‖ = 6.8219e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 43, time 784.32 s: f = -0.273067065009, ‖∇f‖ = 8.8510e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 44, time 785.40 s: f = -0.273077210298, ‖∇f‖ = 9.9163e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 45, time 786.71 s: f = -0.273086893657, ‖∇f‖ = 1.8575e-02, α = 5.12e-01, m = 20, nfg = 2
[ Info: LBFGS: iter 46, time 787.59 s: f = -0.273103078820, ‖∇f‖ = 8.5718e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 47, time 788.24 s: f = -0.273110799146, ‖∇f‖ = 5.8581e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 48, time 788.86 s: f = -0.273120104690, ‖∇f‖ = 8.0410e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 49, time 789.90 s: f = -0.273131281119, ‖∇f‖ = 1.1878e-02, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 50, time 790.67 s: f = -0.273143808372, ‖∇f‖ = 9.4250e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 51, time 791.37 s: f = -0.273153887746, ‖∇f‖ = 7.2150e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 52, time 792.24 s: f = -0.273158885697, ‖∇f‖ = 6.7195e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 53, time 792.89 s: f = -0.273161233672, ‖∇f‖ = 4.1608e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 54, time 793.51 s: f = -0.273163225685, ‖∇f‖ = 4.0591e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 55, time 794.38 s: f = -0.273166294476, ‖∇f‖ = 4.9791e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 56, time 795.00 s: f = -0.273169366216, ‖∇f‖ = 4.4714e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 57, time 795.65 s: f = -0.273172354203, ‖∇f‖ = 6.3685e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 58, time 796.67 s: f = -0.273175363804, ‖∇f‖ = 3.9908e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 59, time 797.42 s: f = -0.273177279555, ‖∇f‖ = 3.9256e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 60, time 798.14 s: f = -0.273182789739, ‖∇f‖ = 6.6561e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 61, time 799.68 s: f = -0.273184790994, ‖∇f‖ = 5.6288e-03, α = 5.40e-01, m = 20, nfg = 2
[ Info: LBFGS: iter 62, time 800.38 s: f = -0.273186538837, ‖∇f‖ = 2.7232e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 63, time 801.29 s: f = -0.273187761546, ‖∇f‖ = 2.8879e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 64, time 802.02 s: f = -0.273189383925, ‖∇f‖ = 3.5846e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 65, time 802.81 s: f = -0.273193896451, ‖∇f‖ = 8.4511e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 66, time 803.91 s: f = -0.273197826539, ‖∇f‖ = 6.5550e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 67, time 804.62 s: f = -0.273200889061, ‖∇f‖ = 3.7358e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 68, time 805.29 s: f = -0.273203155178, ‖∇f‖ = 3.5407e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 69, time 806.21 s: f = -0.273203929980, ‖∇f‖ = 3.6210e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 70, time 806.87 s: f = -0.273204838261, ‖∇f‖ = 3.2225e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 71, time 807.58 s: f = -0.273208065775, ‖∇f‖ = 3.2082e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 72, time 809.27 s: f = -0.273208664645, ‖∇f‖ = 2.6363e-03, α = 3.31e-01, m = 20, nfg = 2
[ Info: LBFGS: iter 73, time 809.86 s: f = -0.273209100891, ‖∇f‖ = 2.4085e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 74, time 810.72 s: f = -0.273212054238, ‖∇f‖ = 3.6766e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 75, time 811.36 s: f = -0.273214539258, ‖∇f‖ = 4.4246e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 76, time 812.95 s: f = -0.273216162063, ‖∇f‖ = 4.5554e-03, α = 4.50e-01, m = 20, nfg = 2
[ Info: LBFGS: iter 77, time 813.63 s: f = -0.273217804060, ‖∇f‖ = 2.2786e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 78, time 814.23 s: f = -0.273218883332, ‖∇f‖ = 2.0806e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 79, time 815.09 s: f = -0.273220350202, ‖∇f‖ = 2.6261e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 80, time 815.76 s: f = -0.273220936627, ‖∇f‖ = 6.7759e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 81, time 816.37 s: f = -0.273223126358, ‖∇f‖ = 2.3172e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 82, time 817.34 s: f = -0.273223758693, ‖∇f‖ = 1.4729e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 83, time 818.06 s: f = -0.273224312355, ‖∇f‖ = 1.6490e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 84, time 818.66 s: f = -0.273224595270, ‖∇f‖ = 5.4563e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 85, time 819.52 s: f = -0.273225489234, ‖∇f‖ = 2.6430e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 86, time 820.21 s: f = -0.273226533430, ‖∇f‖ = 1.3412e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 87, time 820.82 s: f = -0.273227338612, ‖∇f‖ = 1.9615e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 88, time 821.71 s: f = -0.273228071289, ‖∇f‖ = 2.3685e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 89, time 822.46 s: f = -0.273228784006, ‖∇f‖ = 2.1043e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 90, time 823.10 s: f = -0.273229430175, ‖∇f‖ = 1.6761e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 91, time 823.97 s: f = -0.273230395114, ‖∇f‖ = 2.3630e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 92, time 824.61 s: f = -0.273230913013, ‖∇f‖ = 4.6973e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 93, time 825.22 s: f = -0.273231822369, ‖∇f‖ = 2.4314e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 94, time 826.15 s: f = -0.273233026044, ‖∇f‖ = 2.0545e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 95, time 826.88 s: f = -0.273234060512, ‖∇f‖ = 3.0017e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 96, time 827.53 s: f = -0.273235400747, ‖∇f‖ = 3.5897e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 97, time 828.40 s: f = -0.273236050489, ‖∇f‖ = 3.5955e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 98, time 829.05 s: f = -0.273236795492, ‖∇f‖ = 1.2968e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 99, time 829.66 s: f = -0.273237167136, ‖∇f‖ = 1.6986e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 100, time 830.53 s: f = -0.273237666635, ‖∇f‖ = 2.2956e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 101, time 832.10 s: f = -0.273237902441, ‖∇f‖ = 2.7825e-03, α = 4.67e-01, m = 20, nfg = 2
[ Info: LBFGS: iter 102, time 832.99 s: f = -0.273238278596, ‖∇f‖ = 1.4666e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 103, time 833.63 s: f = -0.273238526414, ‖∇f‖ = 8.6123e-04, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 104, time 834.30 s: f = -0.273238754345, ‖∇f‖ = 1.6678e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 105, time 835.20 s: f = -0.273239114660, ‖∇f‖ = 2.6137e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 106, time 835.98 s: f = -0.273239823032, ‖∇f‖ = 3.4309e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 107, time 836.70 s: f = -0.273240368425, ‖∇f‖ = 4.2900e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 108, time 837.60 s: f = -0.273241164149, ‖∇f‖ = 1.7960e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 109, time 838.27 s: f = -0.273241477217, ‖∇f‖ = 1.0362e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 110, time 838.99 s: f = -0.273241714533, ‖∇f‖ = 1.6183e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 111, time 839.90 s: f = -0.273241995140, ‖∇f‖ = 2.2016e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 112, time 840.64 s: f = -0.273242534073, ‖∇f‖ = 2.3919e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 113, time 842.25 s: f = -0.273242711278, ‖∇f‖ = 2.5310e-03, α = 2.34e-01, m = 20, nfg = 2
[ Info: LBFGS: iter 114, time 842.90 s: f = -0.273243067693, ‖∇f‖ = 1.2098e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 115, time 843.58 s: f = -0.273243262667, ‖∇f‖ = 8.8410e-04, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 116, time 844.49 s: f = -0.273243396694, ‖∇f‖ = 1.3054e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 117, time 845.17 s: f = -0.273243632472, ‖∇f‖ = 1.6606e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 118, time 845.92 s: f = -0.273243978972, ‖∇f‖ = 2.4494e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 119, time 846.80 s: f = -0.273244469815, ‖∇f‖ = 1.7476e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 120, time 847.44 s: f = -0.273244908487, ‖∇f‖ = 1.1114e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 121, time 848.15 s: f = -0.273245191811, ‖∇f‖ = 1.8355e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 122, time 849.04 s: f = -0.273245438183, ‖∇f‖ = 1.7466e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 123, time 849.78 s: f = -0.273245813350, ‖∇f‖ = 1.8849e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 124, time 850.49 s: f = -0.273246990667, ‖∇f‖ = 2.4067e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 125, time 852.08 s: f = -0.273247342251, ‖∇f‖ = 2.8162e-03, α = 4.42e-01, m = 20, nfg = 2
[ Info: LBFGS: iter 126, time 852.72 s: f = -0.273247837859, ‖∇f‖ = 1.6699e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 127, time 853.62 s: f = -0.273248269606, ‖∇f‖ = 1.5051e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 128, time 854.38 s: f = -0.273248928543, ‖∇f‖ = 2.4379e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 129, time 855.08 s: f = -0.273249639369, ‖∇f‖ = 2.6766e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 130, time 855.99 s: f = -0.273250417480, ‖∇f‖ = 3.1154e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 131, time 856.68 s: f = -0.273250924677, ‖∇f‖ = 1.7813e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 132, time 857.35 s: f = -0.273251180562, ‖∇f‖ = 1.2277e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 133, time 858.27 s: f = -0.273251373009, ‖∇f‖ = 1.2344e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 134, time 859.00 s: f = -0.273251572043, ‖∇f‖ = 1.5999e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 135, time 859.67 s: f = -0.273251882821, ‖∇f‖ = 2.1224e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 136, time 860.53 s: f = -0.273252172658, ‖∇f‖ = 1.7119e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 137, time 861.16 s: f = -0.273252409193, ‖∇f‖ = 1.1616e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 138, time 861.80 s: f = -0.273252645647, ‖∇f‖ = 1.3121e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 139, time 862.69 s: f = -0.273252871996, ‖∇f‖ = 1.3829e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 140, time 863.40 s: f = -0.273253359134, ‖∇f‖ = 1.8830e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 141, time 864.06 s: f = -0.273253963261, ‖∇f‖ = 2.5909e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 142, time 864.94 s: f = -0.273254681754, ‖∇f‖ = 1.9402e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 143, time 865.57 s: f = -0.273255691367, ‖∇f‖ = 3.1128e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 144, time 866.18 s: f = -0.273256163902, ‖∇f‖ = 2.2255e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 145, time 867.02 s: f = -0.273256631020, ‖∇f‖ = 1.3304e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 146, time 867.73 s: f = -0.273257004955, ‖∇f‖ = 1.5051e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 147, time 868.41 s: f = -0.273257432452, ‖∇f‖ = 1.4023e-03, α = 1.00e+00, m = 20, nfg = 1
[ Info: LBFGS: iter 148, time 869.94 s: f = -0.273257620772, ‖∇f‖ = 2.4790e-03, α = 1.96e-01, m = 20, nfg = 2
[ Info: LBFGS: iter 149, time 870.56 s: f = -0.273257961671, ‖∇f‖ = 1.0700e-03, α = 1.00e+00, m = 20, nfg = 1
┌ Warning: LBFGS: not converged to requested tol after 150 iterations and time 871.43 s: f = -0.273258098818, ‖∇f‖ = 7.5289e-04
└ @ OptimKit ~/.julia/packages/OptimKit/G6i79/src/lbfgs.jl:197
E = -0.27325809881788027
We can compare our PEPS result to the energy obtained using a cylinder-MPS calculation
using a cylinder circumference of
E_ref = -0.273284888
@show (E - E_ref) / E_ref;(E - E_ref) / E_ref = -9.802657701195407e-5
This page was generated using Literate.jl.