Model library: the `spin` model's global `K` is not forwarded to the bond parameter `K0`

Open Beginner friendly
#297 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

Nobody has claimed this yet.

Assessment

Difficulty
1/5
Estimated time
1-3 hours
Newbie friendliness
78/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
cpp, xml
Domain
backend

Research direction

Open src/alps/resources/models.xml and read the spin model’s parameter declarations around J0 and K#. Check how the other global couplings are linked to bond parameters, then run the reported fulldiag reproducer with K=1/3. Done when setting K produces the same ground-state energy as setting K0=1/3 for the six-site ring.

Written by the indexing model from the issue text.

Description

area:lattice bug

Summary

In src/alps/resources/models.xml the spin Hamiltonian declares a global
<PARAMETER name="K" default="0"/> and a bond parameter
<PARAMETER name="K#" default="0"/>, but no K0 with default K. The other
couplings have this link (J0 = J, Jz0 = Jz, Jxy0 = Jxy, D# = D,
h# = h). Setting K therefore does nothing, and the biquadratic term is
silently absent.

Reproducer

LATTICE="chain lattice"
MODEL="spin"
local_S=1
J=1
L=6
CONSERVED_QUANTUMNUMBERS="Sz"
{K=1/3;}
{K0=1/3;}

fulldiag parm.in.xml.

Observed and expected

At K = J/3 the valence-bond solid is the exact ground state with E0 = -2L/3
(Affleck, Kennedy, Lieb, Tasaki 1987), so the six-site ring must give -4.

input E0
K=1/3 -8.617423 (the plain spin-1 Heisenberg ring)
K0=1/3 -4.000000; every level of the 729-state spectrum agrees with an independent diagonalisation to 1e-14

Fix

Add <PARAMETER name="K0" default="K"/> next to J0, and K1, K2 like
J1, J2 if the further-neighbour couplings are meant to be settable.

Observed on master at 0e2f2915d (Release build, GCC, OpenBLAS, HDF5 1.14, single-threaded), compared with independent reference calculations.

Dominant language
C++
Stars
32
Forks
10
Avg merge
4d 3h
Merged PRs (30d)
54

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ALPSim/ALPS

All issues in ALPSim/ALPS

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.