Skip to content

Python codes to solve bilinear-biquadratic spin models

Notifications You must be signed in to change notification settings

GCatarina/ED_BLBQ

Repository files navigation

ED_BLBQ

Python codes to solve bilinear biquadratic (BLBQ) spin models by exact diagonalization (ED).

System requirements

These codes use the open-source QuSpin Python package (https://weinbe58.github.io/QuSpin/), whose installation guide can be found at https://weinbe58.github.io/QuSpin/Installation.html. The recommended installation uses Anaconda/Miniconda to install Python3 and manage all package dependencies.

Hamiltonian

The spin Hamiltonian under consideration reads as

where J is the exchange coupling, is a parameter that determines the relative strength between the bilinear and biquadratic terms, and denote spin-s operators at site i. The sum over i runs from 1 to N-1 (N mod N) for open (periodic) boundary conditions, where N is the length of the spin chain.

Code usage

Types of code

There are 3 types of code available, which compute different quantities.

  1. The code 'excE_S2.py' computes excitation energies with respect to the ground state, and the expectation value of the operator with for the corresponding eigenstates.

  2. The code 'Szi.py' computes the expectation value of the operator for eigenstates.

  3. The codes 'ssw_S0GS.py' and 'ssw_S1GS.py' compute the spin spectral weights of excitations from a ground state with total spin S=0 and S=1, respectively. The spin spectral weight at site i for the eigenstate M' is formally defined as

where denotes the equilibrium occupation of the state M. This calculation is done at zero temperature, so that is the inverse of the ground state degeneracy for the ground states, and zero for all other eigenstates. It must also be noted that a selection rule imposes that the spin spectral weights can only be non-zero if the total spins of the ground state and the eigenstate M' differ from 0,+-1.

Code inputs

Physical parameters

All codes take as inputs the following "physical parameters": s, N, J, and a variable BC that can be set to 0 (1) for open (periodic) boundary conditions.

Other parameters

In addition, the codes also have as inputs some of the following parameters: Sz denotes the symmetry sector in which the calculations are done, DeltaE sets the energy range for the excitations, nLanczos is the number of Lanczos vectors used in the diagonalization routine, and neigen is the number of eigenstates considered.

Example of usage

  1. Excitation spectrum, within the range of 50 meV, of an N=5 spin-1 open chain, with J = 18.4 meV and (note: for spin-1 chains, we know that we can obtain all energy levels in the symmetry sector with ).
python excE_S2.py 1 5 18.4 0.085 0 0 50 10
  1. Same as in 1 for a cyclic chain.
python excE_S2.py 1 5 18.4 0.085 1 0 50 10
  1. Average magnetization of the first 3 eigenstates with for the same model as in 1.
python Szi.py 1 5 18.4 0.085 0 1 3
  1. Spin spectral weights of all allowed excitations within the range of 50 meV, for the same model as in 1 (note: from the output of 1, we already know that this model gives a ground state with S=1).
python ssw_S1GS.py 1 5 18.4 0.085 0 50 30
  1. Spin spectral weigths of all allowed excitations within the range of 50 meV, for the same model as in 2 (note: from the output of 2, we already know that this model gives a ground state with S=0).
python ssw_S0GS.py 1 5 18.4 0.085 1 50 30

About

Python codes to solve bilinear-biquadratic spin models

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages