Recent Changes - Search:

HomePage

PmWiki

pmwiki.org

MpExcitationAnsatz

Calculate excited states using the MPS excitation ansatz [1].

Synopsis

mp-excitation-ansatz [options] <psi> [psi-right]

Options

--help

Show help message.

-H, --Hamiltonian

The operator the use for the Hamiltonian (if unspecified, use wavefunction attribute Hamiltonian of psi).

-k, --momentum

The excitation momentum, in units of {$\pi$} (default 0). This can be a single number, or a range in the form start:end:step or start:end,num, which will produce num = floor(1 + (end-start)/step) samples from start to end inclusive.

--latticeucsize

Override the lattice unit cell size (otherwise, use the size of the unit cell of the lattice).

--ky

(2D cylinders) The target value of the y-momentum, in units of {$\pi$} (only a single value at a time is currently allowed). Specifying this option will enable targeting eigenstates of y-momentum.

--kyfix

(2D cylinders) Shift ky by subtracting this value, in units of {$\pi$} (useful when the output value of ky is shifted by some arbitrary phase).

--alpha

(2D cylinders) The energy parameter to penalise states with the wrong y-momentum (default 5).

-n, --numeigen

The number of lowest eigenvalues to calculate (default 1).

-q, --quantumnumber

The quantum number sector for the excitation (default identity).

-r, --rotate

Rotate the right boundary unit cell by this many sites to the left.

--string

(2D cylinders) The string MPO representation of the cylinder translation operator {$T_y$} for calculating the momentum in the y axis.

-o, --output

The prefix to use for output files, which will be of the form [prefix].k[k]; if a y-momentum is being targeted, this will become [prefix].kx[kx].ky[ky]; if more than one eigenvalue per momentum is being calculated, then .n[n] is appended to the end, where [n] is the index of the eigenvalue (starting from zero).
If this option is not specified, no files are saved.

--digits

Force the output filenames to use this many decimal places in the momentum.

--tol

The error tolerance for the ARPACK eigensolver for finding the excited states (default 1e-10).

--gmrestol

The error tolerance for the GMRES algorithm for solving the left and right block Hamiltonians (default 1e-13).

--unityepsilon

The error tolerance for transfer matrix eigenvalues near unity (default 1e-12).

--seed

The random number generator seed for generating the initial state.

--random

Use a random initial guess for each momentum. Otherwise, the lowest eigenvector for the previous momentum is used as an initial guess for the next one.

--streaming

Store the left and right boundary wavefunctions by references to the input files.

--no-streaming

Store the left and right boundary wavefunctions by writing them to the output files (default).

--quiet

Hide column headings; use twice to hide output of momentum.

-v, --verbose

Increase verbosity.

Description

This tool calculates the excited states for a given ground state using the MPS excitation ansatz {$$|\Phi_k(B)\rangle = \sum_n \mathrm{e}^{\mathrm{i}kn} \cdots A_L^{s_{n-2}} A_L^{s_{n-1}} B^{s_n} A_R^{s_{n+1}} A_R^{s_{n+2}} \cdots$$} where {$A_L$} and {$A_R$} are the left- and right-orthogonal forms respectively of the ground state. The lowest-energy states of this form are found for a specified momentum {$k$} by using a numerical eigensolver on the effective Hamiltonian for this state as the matrix {$B$} is varied.

We may also calculate topologically non-trivial excitations where the {$A_L$} and {$A_R$} matrices are taken from two different ground states, which can be done by specifying the optional command line option psi-right.

For 2D systems on a finite-width cylinder, we can calculate the {$y$}-momentum along the circumference of the cylinder by specifying the cylinder translation operator using the --string option. We can then target excited states which are simultaneously eigenstates of the {$y$}-momentum operator by penalising states with the wrong {$y$}-momentum [2]: this can be enabled by further specifying the --ky option.

Examples

As an example, we can calculate the Haldane gap, as was done in the original MPS excitation ansatz paper [1].

First, we find the ground state of the spin-1 antiferromagnetic Heisenberg model:

$ spinchain-u1 -S 1 -o lattice
$ mp-idmrg-s3e -H lattice:H_J1 -w psi -m "10..100x100,100x100" -q 0 --create

We can then calculate the energy gap at {$k = \pi$} by

$ mp-excitation-ansatz psi -k 1
#mp-excitation-ansatz psi -k 1
#Date: Tue, 17 Oct 2023 15:40:44 +1000
#Wavefunction unit cell size is 1 site
#Using a lattice unit cell size of 1 site
#FBZ ranges from 0 to 2pi
#k/pi                 #E
1                     0.41047915829201

We can calculate the dispersion relation for a range of {$k$} with the following command, using a larger error tolerance to speed up the calculation (in this example, the finite bond dimension of the ground state will have the most significant impact on the error anyway)

$ mp-excitation-ansatz psi -k 0:1:0.1 --tol 1e-5
#mp-excitation-ansatz psi -k 0:1:0.1 --tol 1e-5
#Date: Tue, 17 Oct 2023 15:42:10 +1000
#Wavefunction unit cell size is 1 site
#Using a lattice unit cell size of 1 site
#FBZ ranges from 0 to 2pi
#k/pi                 #E
0                     0.90251679306323
0.1                   1.1825165295609
0.2                   1.7522702327676
0.3                   2.312985081061
0.4                   2.6486031454093
0.5                   2.7162814426233
0.6                   2.5226507892681
0.7                   2.1070146846372
0.8                   1.5291130870744
0.9                   0.8684292477286
1                     0.41047915829369

Notes

  • There is some ambiguity to the meaning of the momentum when using a wavefunction or a lattice with a multi-site unit cell. The first Brillouin zone (FBZ) is taken to range from 0 to 2*pi*LatticeUnitCellSize/WavefunctionUnitCellSize. Here, LatticeUnitCellSize defaults to the number of sites in the lattice file’s unit cell, however, it can be manually overridden with --latticeucsize. The wavefunction and lattice unit cell sizes, as well as the FBZ range, are printed in the preamble of the output.
  • When calculating the {$y$}-momentum with a different psi-right specified, the resulting values of ky will possibly be shifted by a constant, since the eigenvectors of the left/right transfer matrices with {$T_y$} have an arbitrary phase factor which needs to be fixed (see the notes on mp-ibc-overlap). If this happens, the workaround is to use the --kyfix option to shift the values of ky by subtracting the specified value.
  • When calculating the {$y$}-momentum, if there are two or more excitations with the same energy, then the eigenvectors returned by ARPACK may not be eigenvectors of {$T_y$} and so their expectation values will be some linear combination of the {$y$}-momentum eigenvalues. This can be avoided by targeting a specific {$y$}-momentum by using the --ky option.

References

[1] J. Haegeman et al., Variational matrix product ansatz for dispersion relations, Phys. Rev. B 85, 100408(R) (2012), doi:10.1103/PhysRevB.85.100408, arXiv:1103.2286.
[2] M. Van Damme et al., Efficient matrix product state methods for extracting spectral information on rings and cylinders, Phys. Rev. B 104, 115142 (2021), doi:10.1103/PhysRevB.104.115142, arXiv:2102.10982.
Edit - History - Print - Recent Changes - Search
Page last modified on November 01, 2023, at 08:56 AM