Skip to content

Commit f7e73ed

Browse files
committed
finished, but cant find the bug
1 parent dcf06cf commit f7e73ed

File tree

3 files changed

+37
-22
lines changed

3 files changed

+37
-22
lines changed

IsingMC.cpp

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -50,33 +50,49 @@ void IsingMC::RandomPoint(unsigned& m, unsigned& n) {
5050
double IsingMC::SpinEnergy(unsigned m, unsigned n) {
5151

5252
double E = 0;
53-
for (int i = m - 1 ; i < m + 1; i += 2) {
54-
for (int j = n - 1; j < n + 1; j += 2) {
55-
56-
unsigned ii = i, jj = j;
57-
if (i < 0) ii = M - 1;
58-
else if (i >= M - 1) ii = 0;
59-
60-
if (j < 0) jj = N - 1;
61-
else if (j >= N - 1) jj = 0;
53+
int i, j;
54+
55+
j = n;
56+
for (i = m - 1; i < m + 1; i += 2) {
57+
unsigned ii;
58+
if (i < 0) ii = M - 1;
59+
else if (i > M - 1) ii = 0;
60+
else ii = i;
61+
E -= Lattice[ii][j] * Lattice[m][n] * J;
62+
}
6263

63-
E -= Lattice[ii][jj] * Lattice[m][n] * J;
64-
}
64+
i = m;
65+
for (j = n - 1; j < n + 1; j += 2) {
66+
unsigned jj;
67+
if (j < 0) jj = N - 1;
68+
else if (j > N - 1) jj = 0;
69+
else jj = j;
70+
E -= Lattice[i][jj] * Lattice[m][n] * J;
6571
}
72+
6673
return E;
6774
}
6875

6976
double IsingMC::SpinUHEnergy(unsigned m, unsigned n) {
7077

7178
double E = 0;
72-
for (unsigned i = m; i <= m + 1; i++) {
73-
for (unsigned j = n; j <= n + 1; j++) {
74-
int ii = i > M - 1 ? 0 : i;
75-
int jj = j > N - 1 ? 0 : j;
7679

77-
E -= Lattice[ii][jj] * Lattice[m][n] * J;
78-
}
80+
unsigned i, j;
81+
82+
{
83+
i = m + 1;
84+
j = n;
85+
unsigned ii = i > M - 1 ? 0 : i;
86+
E -= Lattice[ii][j] * Lattice[m][n] * J;
87+
}
88+
89+
{
90+
i = m;
91+
j = n + 1;
92+
unsigned jj = j > N - 1 ? 0 : j;
93+
E -= Lattice[i][jj] * Lattice[m][n] * J;
7994
}
95+
8096
return E;
8197
}
8298

@@ -93,9 +109,8 @@ double IsingMC::Energy() {
93109

94110
double IsingMC::EnergyDiff(unsigned m, unsigned n) {
95111

96-
double de = 0;
97-
98-
return de;
112+
double de = SpinEnergy(m, n);
113+
return - 2 * de;
99114
}
100115

101116
void IsingMC::Step() {

IsingWindow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ void IsingWindow::paintEvent(QPaintEvent *e) {
1919
QPainter qp(this);
2020
unsigned PenSize = 0;
2121

22-
imc->Step();
22+
for (unsigned i = 0; i < imc->XSize() * imc->YSize(); i++) imc->Step();
2323

2424
QPen WhitePen(Qt::white, PenSize, Qt::SolidLine),
2525
BlackPen(Qt::black, PenSize, Qt::SolidLine);

main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
int main(int argc, char *argv[]) {
55

66
QApplication app(argc, argv);
7-
IsingWindow iw(150, 150, 20.4, 100.2);
7+
IsingWindow iw(200, 200, 18.24, 1.2);
88

99
iw.resize(260, 260);
1010
iw.setWindowTitle("2D Ising Monte-Carlo");

0 commit comments

Comments
 (0)