Skip to content

Commit 9aebaa6

Browse files
committed
ui
1 parent 714d1f5 commit 9aebaa6

File tree

5 files changed

+89
-3
lines changed

5 files changed

+89
-3
lines changed

IsingMC.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ void IsingMC::RandomPoint(unsigned& m, unsigned& n) {
4242
double IsingMC::SpinEnergy(unsigned m, unsigned n) {
4343

4444
double E = 0;
45-
for (unsigned i = m - 1 ; i < m + 1; i += 2) {
46-
for (unsigned j = n - 1; j < n + 1; j += 2) {
45+
for (int i = m - 1 ; i < m + 1; i += 2) {
46+
for (int j = n - 1; j < n + 1; j += 2) {
4747

4848
if (i < 0) ii = M - 1;
4949
else if (i >= M - 1) ii = 0;
@@ -84,3 +84,15 @@ void IsingMC::Step() {
8484

8585
if ()
8686
}
87+
88+
int IsingMC::GetSpin(unsigned i, unsigned j) {
89+
return Lattice[i][j];
90+
}
91+
92+
unsigned IsingMC::XSize() {
93+
return M;
94+
}
95+
unsigned IsingMC::YSize() {
96+
return N;
97+
}
98+

IsingMC.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ class IsingMC {
88
~IsingMC();
99
double Energy();
1010
void Step();
11+
int GetSpin(unsigned, unsigned);
12+
unsigned XSize();
13+
unsigned YSize();
1114

1215
private:
1316
unsigned N, M;
@@ -18,6 +21,6 @@ class IsingMC {
1821
void RandomPoint(unsigned&, unsigned&);
1922
double SpinEnergy(unsigned, unsigned);
2023

21-
}
24+
};
2225

2326
#endif _ISINGMC_ // #ifndef _ISINGMC_

IsingWindow.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include <QPainter>
2+
#include "IsingWindow.hpp"
3+
4+
IsingWindow::IsingWindow(unsigned M, unsigned N, double J,
5+
double beta, QWidget *parent) : QWidget(parent) {
6+
7+
imc = new IsingMC(M, N, J, beta);
8+
}
9+
10+
IsingWindow::~IsingWindow() {
11+
delete imc;
12+
}
13+
14+
void IsingWindow::paintEvent(QPaintEvent *e); {
15+
16+
Q_UNUSED(e);
17+
18+
QPainter qp(this);
19+
20+
imc->Step();
21+
22+
QPen WhitePen(Qt::white, 1, Qt::SolidLine),
23+
BlackPenpen(Qt::black, 2, Qt::SolidLine);
24+
for (unsigned i = 0; i < imc->XSize(); i++) {
25+
for (unsigned j = 0; j < imc->YSize(); j++) {
26+
27+
if (imc->GetSpin(i, j) == 1) {
28+
qp.setPen(WhitePen);
29+
} else qp.setPen(BlackPen);
30+
31+
qp.drawPoint(i, j);
32+
}
33+
}
34+
}

IsingWindow.hpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#ifndef _ISING_WINDOW_
2+
#define _ISING_WINDOW_
3+
4+
#include <Qwidget>
5+
6+
#include "IsingMC"
7+
8+
class IsingWindow : public QWidget {
9+
10+
public:
11+
IsingWindow(unsigned, unsigned, double, double, QWidget *parent = 0);
12+
~IsingWindow();
13+
14+
protected:
15+
void paintEvent(QPaintEvent *e);
16+
17+
private:
18+
IsingMC *imc;
19+
20+
};
21+
22+
23+
#endif _ISING_WINDOW_ // #ifndef _ISING_WINDOW_

main.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#include "IsingWindow.hpp"
2+
3+
int main(int argc, char *argv[]) {
4+
5+
QApplication app(argc, argv);
6+
IsingWindow iw;
7+
8+
iw.resize(280, 270);
9+
iw.setIwTitle("2D Ising Monte-Carlo");
10+
iw.show();
11+
12+
return app.exec();
13+
14+
}

0 commit comments

Comments
 (0)