Markov chain Monte Carlo solver for finite temperature problem of lattie spin system implemented by Julia language.
Pkg> add SpinMonteCarloThe following program calculates temperature v.s. specific heat of the ferromagnetic Ising model on a 
using SpinMonteCarlo
using Printf
const model = Ising
const lat = "square lattice"
const L = 16
const update = SW_update!
const Tc = 2.0/log1p(sqrt(2))
const Ts = Tc*range(0.85, stop=1.15, length=31)
const MCS = 8192
const Therm = MCS >> 3
for T in Ts
    params = Dict{String,Any}("Model"=>model, "Lattice"=>lat,
                              "L"=>L, "T"=>T, "J"=>1.0,
                              "Update Method"=>update,
                              "MCS"=>MCS, "Thermalization"=>Therm,
                             )
    result = runMC(params)
    @printf("%f %.15f %.15f\n",
            T, mean(result["Specific Heat"]), stderror(result["Specific Heat"]))
end- Classical spin model
- 
Isingmodel
- 
QstatePottsmodel- order parameter defined as $M = n_1(Q-1)/Q - (1-n_1)/Q$ , where$n_1$ is the number density of$q=1$ spins.
 
- order parameter defined as 
- 
XYmodel
- 
QstateClockmodel
- 
AshkinTellermodel
 
- 
- Quantum spin model
- spin-SQuantumXXZmodel- $\mathcal{H} = \sum_{ij} [ Jz_{ij} S_i^z S_j^z + \frac{Jxy_{ij}}{2} (S_i^+ S_j^- + S_i^-S_j^+) ] - \sum_i \Gamma_i S_i^x$ 
 
 
- spin-
- chain lattice- L
 
- bond-alternating chain lattice- L
 
- square lattice- L * W
 
- J1J2 square lattice- L * W
 
- triangular lattice- L * W
 
- cubic lattice- L * W * H
 
- fully connected graph- N
 
- Classical spin
- local_update!
- SW_update!
- Wolff_update!
 
- Quantum spin
- loop_update!
 
- 
Ising,Potts- 
Magnetization- $\braket{m} := \braket{ M_\text{total}/N_\text{site} }$ 
 
- 
|Magnetization|- $\braket{|m|} := \braket{|M_\text{total}/N_\text{site}|}$ 
 
- 
Magnetization^2- $\braket{m^2} := \braket{(M_\text{total}/N_\text{site})^2}$ 
 
- 
Magnetization^4- $\braket{m^4} := \braket{(M_\text{total}/N_\text{site})^4 }$ 
 
- 
Binder Ratio- $U_{4,2} := \braket{m^4}/\braket{m^2}^2$ 
 
- 
Susceptibility- $\chi := \partial_h \braket{m} = (N/T)(\braket{m^2} - \braket{m}^2)$ 
 
- 
Connected Susceptibility- $\chi := (N/T)(\braket{m^2} - \braket{|m|}^2)$ 
 
- 
Energy- $E := \braket{\mathcal{H}} = \braket{E_\text{total}}/N_\text{site}$ 
 
- 
Energy^2- $E^2 := \braket{\mathcal{H}^2}$ 
 
- 
Specific Heat- $C := \partial_\beta \braket{\mathcal{H}} = (N/T^2)(\braket{\mathcal{H}^2} - \braket{\mathcal{H}}^2)$ 
 
 
- 
- 
XY,Clock- |Magnetization|
- |Magnetization|^2
- |Magnetization|^4
- Binder Ratio
- Susceptibility
- Connected Susceptibility
- Magnetization x
- |Magnetization x|
- Magnetization x^2
- Magnetization x^4
- Binder Ratio x
- Susceptibility x
- Connected Susceptibility x
- Magnetization y
- |Magnetization y|
- Magnetization y^2
- Magnetization y^4
- Binder Ratio y
- Susceptibility y
- Connected Susceptibility y
- Helicity Modulus x
- Helicity Modulus y
- Energy
- Energy^2
- Specific Heat
 
- 
QuantumXXZ- 
Magnetization- $\braket{m} := \braket{\sum_i S_i^z } / N_\text{site}$ 
 
- 
Magnetization^2- $\braket{m^2}:= \braket{(\sum_i S_i^z)^2 } / N_\text{site}^2$ 
 
- 
Magnetization^4- $\braket{m^4}:= \braket{(\sum_i S_i^z)^4 } / N_\text{site}^4$ 
 
- 
Binder Ratio- $U_{4,2} := \braket{m^4}/\braket{m^2}^2$ 
 
- 
Susceptibility- $\chi := \partial_h \braket{m} = (N/T)(\braket{m^2} - \braket{m}^2)$ 
 
- 
Energy- $E := \braket{\mathcal{H}}$ 
 
- 
Energy^2- $E^2 := \braket{\mathcal{H}^2}$ 
 
- 
Specific Heat- $C := \partial_\beta \braket{\mathcal{H}} = (N/T^2)(\braket{\mathcal{H}^2} - \braket{\mathcal{H}}^2)$ 
 
 
- 
- Model- Classical model
- Heisenberg model
- antiferro interaction
- magnetic field
 
- Quantum model
- SU(N) model
 
 
- Classical model
- Update Method- worm algorithm
 
- Others
- random number parallelization
- NOTE: parameter parallelization can be realized simply by using @parallel fororpmap.
 
- NOTE: parameter parallelization can be realized simply by using 
- write algorithmic note
- especially, Foutuin-Kasteleyn representaion and improved estimators
 
 
- random number parallelization
Yuichi Motoyama, the University of Tokyo, 2016-
This package is distributed under the MIT license.