From diagham
Jump to navigation Jump to search

PeriodicSpinChainAKLT diagonalize the AKLT Hamiltonian using periodic boundary conditions. The AKLT Hamiltonian is defined by

<math>H=\sum_{i=0}^{N-1} \left( \vec{S}_{i}\cdot\vec{S}_{i+1} + \frac{1}{3} \left(\vec{S}_{i}\cdot\vec{S}_{i+1}\right)^2 \right)</math>

Basic usage

A typical usage is

$PATHTODIAGHAM/build/Spin/src/Programs/PeriodicSpinChainAKLT -p 6 --full-diag 10000 --use-lapack

PeriodicSpinChainAKLT computes all momentum sectors and all <math>S_z</math> sectors. To focus on a single momentum sector, we just have to include the option --momentum x where x is the momentum sector (in <math>2\pi/N</math> units and should be between 0 and <math>N-1</math>). Similarly, we can restrict to one or several <math>S_z</math> sectors with the options --initial-sz (twice the initial <math>S_z</math> sector that should be computed) and --nbr-sz (the actual number of <math>S_z</math> sectors that should be computed).

By default the code uses both the parity and inversion symmetry when possible. To disable these symmetries, we can use the options --disable-szsymmetry and --disable-inversionsymmetry. Note that for the momentum sector <math>k=0</math> and <math>k=\pi</math>, PeriodicSpinChainAKLT uses a real hamiltonian to improve the performance. If you want to produce complex eigenstates, you can disable this feature by adding the --disable-realhamiltonian option. For example,

$PATHTODIAGHAM/build/Spin/src/Programs/PeriodicSpinChainAKLT -p 6 --all-eigenstates --full-diag 10000 --use-lapack --momentum 0 --initial-sz 8 --nbr-sz 1 --disable-szsymmetry --disable-inversionsymmetry

will diagonalize the AKLT Hamiltonian in the momentum sector <math>k=0</math> without using the <math>S_z</math> parity or the inversion symmetry. This example also computes all the eigenstates. To extract an individual eigenstates out this binary matrix, you can use MatrixExtractColumns.

Advanced options

PeriodicSpinChainAKLT allows to set the coefficients freely in front of the bilinear / biquadratic terms. Thus we can manage the following Hamiltonian

<math>H=\sum_{i=0}^{N-1} \left( \lambda_1 \vec{S}_{i}\cdot\vec{S}_{i+1} + \lambda_2 \left(\vec{S}_{i}\cdot\vec{S}_{i+1}\right)^2 \right)</math>

<math>\lambda_1</math> is set by the --linear-factor option while <math>\lambda_2</math> is set by the --quadratic-factor option. For example, running

$PATHTODIAGHAM/build/Spin/src/Programs/PeriodicSpinChainAKLT -p 8 --use-lapack --linear-factor 3.0 --quadratic-factor 1.0

will generate a spectrum file spin_1_periodicaklt_linear_3.000000_quadratic_1.000000_n_8.dat. Note that this mode is only activated when <math>\lambda_1</math> is different from 1. If you want to only tune <math>\lambda_2</math>, you should rely on the other option --additional-quadratic. In that case, the hamiltonian is

<math>H=\sum_{i=0}^{N-1} \left(\vec{S}_{i}\cdot\vec{S}_{i+1} + \left(\lambda + \frac{1}{3}\right) \left(\vec{S}_{i}\cdot\vec{S}_{i+1}\right)^2 \right)</math>

where <math>\lambda</math> is set by the --additional-quadratic option and the spectrum output file name should look like spin_1_periodicaklt_quadratic_-0.300000_n_8.dat if we run a command such as

$PATHTODIAGHAM/build/Spin/src/Programs/PeriodicSpinChainAKLT -p 8 --use-lapack --additional-quadratic -0.3