/*

Stochastic Series Expansion Demonstration

Read Me!

I believe this applet requires Java 1.5 or higher to run properly. Java must be enabled in your web browser. If your browser has cached an old version of this applet, you may need to:

If you can't run the applet in your browser, you can try downloading the source code and compiling it yourself using javac sse.java and then appletviewer sse.java. You would also need the files lattices.txt and chain.txt.

SU(N) Heisenberg Hamiltonian

This applet simulates the SU(N) quantum Heisenberg antiferromagnet using the Stochastic Series Expansion and the directed-loop algorithm of Syljuasen and Sandvik, generalized to SU(N). We use the Schwinger boson representation. N can be any integer. For now we work with the fundamental representation, n=1 (and m=1). ... SEE PS FILE FOR DEFINITION OF HAMILTONIAN AND OTHER DETAILS. Here, i and j label sites and a and b label "colors" of the bosons; a,b=1,2,3,...,N. K is the exchange coupling, corresponding to boson exchange. We use the convention that positive K means antiferromagnetic exchange.

Algorithm

The algorithm is a Markov chain Monte Carlo method. It samples the terms in the Stochastic Series Expansion (SSE) of the canonical partition function. In other words, it explores the space of "Feynman diagrams". (This is somewhat different from the Boltzmann weights in the canonical ensemble). Each term is a product of matrix elements of "bond operators". Each bond operator is of the form "adag a adag a", and has four indices. Its matrix elements depend on the "colors" of the incoming and outgoing Schwinger bosons on both sites, i.e., it consists of NxNxNxN quantities. The Hamiltonian can be tweaked and rewritten as a sum of "diagonal operators" and "non-diagonal" (exchange) ooperators such that the matrix elements are all either zero or beta*K. (Well, actually the off-diagonal elements are -beta*K, but the minus signs are guaranteed to cancel for bipartite lattices.)

Each MCMC step consists of two stages. The first stage is called "diagonal update". Here, diagonal bond operators are inserted or removed according to Metropolis-Hastings-like probabilities. The weight of each operator configuration is proportional to 1/!, where is the current number of (non-trivial) bond operators. The simulation works with L "slots" which operators can occupy. We choose one of these at random and propose to insert or remove a bond there. This would imply a ratio of forward and backwards transition probabilities T(lcur-1 -> lcur)/T(lcur -> lcur-1) = ((L-lcur+1)/L) / (lcur/L). In order to satisfy detailed balance, we need a Metropolis acceptance ratio of .............. We also need to reject operator insertions which lead to invalid configurations. (We don't need to worry about invalid configurations when applying the detailed balance rule, because forward transitions to invalid configurations correspond to backward transitions FROM invalid configurations, which are never even proposed.)

The second stage is the "directed loop". We place an ant at a random site, a, with a random color, s, (THIS IS OUTDATED) moving in a random direction, d=+1 (forward) or -1 (backward in imag time). From here onwards we let the ant evolve deterministically: it moves along its direction until it encounters a vertex, at which it either moves forward, or backscatters. The ant changes the colors of the spins along the path it traverses (it "paints the roads"). The directed-loop process ends when the ant returns to its starting point, and the new configuration of the bond operators is considered to be the next configuration in the Markov chain. There may be a possibility that the ant never returns to its starting point, in which case the move must be discarded (in typical MCMC fashion).

This method of simulation is defined at finite temperatures, but it is fairly accurate even in the limit of zero temperature.

Visualization

Boson worldlines are represented by colored lines in the vertical direction (discrete imaginary time). The colors correspond to the spins of the bosons. As expected, spin is a locally conserved quantity. Diagonal bond operators are represented by solid horizontal bars. Exchange operators are represented by hollow horizontal bars.

Credits and references

E. Ising

R. B. Potts

U. Wolff

A. Sandvik and R. Moessner

O. Syljuasen and A. Sandvik 2002

*/ (could have java code here with no problems)