Combinatorial ising.py

From Werner KRAUTH

(Difference between revisions)
Jump to: navigation, search
Revision as of 19:49, 19 October 2015
Werner (Talk | contribs)

← Previous diff
Revision as of 19:50, 19 October 2015
Werner (Talk | contribs)

Next diff →
Line 3: Line 3:
__FORCETOC__ __FORCETOC__
=Reference= =Reference=
-[[Krauth_2006|W. Krauth ''Statistical Mechanics: Algorithms and Computations'' Oxford University Press (2006)]]+[[SMAC|W. Krauth ''Statistical Mechanics: Algorithms and Computations'' Oxford University Press (2006)]]
=Description= =Description=
This is a Python implementation of the Kac-Ward matrix that allows to compute the partition function of the two-dimensional Ising model without periodic boundary conditions. This is a Python implementation of the Kac-Ward matrix that allows to compute the partition function of the two-dimensional Ising model without periodic boundary conditions.

Revision as of 19:50, 19 October 2015

This page presents the program combinatorial_ising.py, naively implemented for the 2x2 lattice and the 4x4 lattice


Contents

Reference

W. Krauth Statistical Mechanics: Algorithms and Computations Oxford University Press (2006)

Description

This is a Python implementation of the Kac-Ward matrix that allows to compute the partition function of the two-dimensional Ising model without periodic boundary conditions.

Program

alphabar = numpy.exp(-comp_i * math.pi / 4.0) * math.tanh(beta)
# 4x4 matrices 'right', 'up', 'left', 'down', 'one', 'zero'
r = numpy.mat([
[nu, alpha, 0.0, alphabar],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0]], dtype=complex)
u = numpy.mat([
[0.0, 0.0, 0.0, 0.0],
[alphabar, nu, alpha, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0]], dtype=complex)
l = numpy.mat([
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, alphabar, nu, alpha],
[0.0, 0.0, 0.0, 0.0]], dtype=complex)
d = numpy.mat([
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[alpha, 0.0, alphabar, nu]], dtype=complex)
o = numpy.mat([
[1.0, 0.0, 0.0, 0.0],
[0.0, 1.0, 0.0, 0.0],
[0.0, 0.0, 1.0, 0.0],
[0.0, 0.0, 0.0, 1.0]], dtype=complex)
z = numpy.mat([
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0]], dtype=complex)
U2x2 = numpy.bmat([
[o, r, u, z],
[l, o, z, u],
[d, z, o, r],
[z, d, l, o]])
L = 2
n_edge = 2 * L * (L - 1)
N = L ** 2
print 2 ** N * math.cosh(beta) ** n_edge * \
numpy.sqrt(numpy.real(numpy.linalg.det(U2x2))), ' Z_2x2 from Kac-Ward'
print 2 ** 4 * math.cosh(beta) ** 4 * (1.0 + math.tanh(beta) ** 4), \
' Z_2x2 from SMAC eq. (5.11)'
U4x4 = numpy.bmat([
#0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
[o, r, z, z, u, z, z, z, z, z, z, z, z, z, z, z],   # line 0
[l, o, r, z, z, u, z, z, z, z, z, z, z, z, z, z],   # line 1
[z, l, o, r, z, z, u, z, z, z, z, z, z, z, z, z],   # line 2
[z, z, l, o, z, z, z, u, z, z, z, z, z, z, z, z],   # line 3
[d, z, z, z, o, r, z, z, u, z, z, z, z, z, z, z],   # line 4
[z, d, z, z, l, o, r, z, z, u, z, z, z, z, z, z],   # line 5
[z, z, d, z, z, l, o, r, z, z, u, z, z, z, z, z],   # line 6
[z, z, z, d, z, z, l, o, z, z, z, u, z, z, z, z],   # line 7
[z, z, z, z, d, z, z, z, o, r, z, z, u, z, z, z],   # line 8
[z, z, z, z, z, d, z, z, l, o, r, z, z, u, z, z],   # line 9
[z, z, z, z, z, z, d, z, z, l, o, r, z, z, u, z],   # line 10
[z, z, z, z, z, z, z, d, z, z, l, o, z, z, z, u],   # line 11
[z, z, z, z, z, z, z, z, d, z, z, z, o, r, z, z],   # line 12
[z, z, z, z, z, z, z, z, z, d, z, z, l, o, r, z],   # line 13
[z, z, z, z, z, z, z, z, z, z, d, z, z, l, o, r],   # line 14
[z, z, z, z, z, z, z, z, z, z, z, d, z, z, l, o]])  # line 15
L = 4
n_edge = 2 * L * (L - 1)
N = L ** 2
print 2 ** N * math.cosh(beta) ** n_edge * \
math.sqrt(numpy.real(numpy.linalg.det(U4x4))), \
' Z_4x4 from Kac-Ward'
print 2 ** N * math.cosh(beta) ** n_edge * (
1 +
  9 * math.tanh(beta) ** 4 +
 12 * math.tanh(beta) ** 6 +
 50 * math.tanh(beta) ** 8 +
 92 * math.tanh(beta) ** 10 +
158 * math.tanh(beta) ** 12 +
116 * math.tanh(beta) ** 14 +
 69 * math.tanh(beta) ** 16 +
  4 * math.tanh(beta) ** 18 +
  1 * math.tanh(beta) ** 20), ' Z_4x4 from SMAC eq. (5.10)'


Version

See history for version information.