-
Notifications
You must be signed in to change notification settings - Fork 1
/
molec.cpp
97 lines (76 loc) · 2.77 KB
/
molec.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include "molec.hpp"
#include <iostream>
#define TEST_GAUSS 0
Point make_point(double x, double y) {
Point ans;
ans.x = x;
ans.y = y;
return ans;
}
int main() {
Point centers[10] = {make_point(1, 2), make_point(1.4, 2.7),
make_point(4, 4), make_point(5, 5),
make_point(8, 8), make_point(9, 9),
make_point(10, 10), make_point(1, 5),
make_point(15, 10), make_point(10, 15)};
LennardJonesSystem box(10, centers, 1.0, 1.0, 1.0, 100, 0.2, 0.001, 30);
//cout << box.get_nparticles() << endl;
box.step();
twodouble a;
a.x = 1.;
a.y = 1.;
twodouble b;
b.x = 3.;
b.y = 3.;
twodouble accel = box.acceleration(a, b);
cout << "x: " << accel.x << ", y: " << accel.y << endl;
twodouble c, d;
c.x = 1.;
c.y = 10.;
d.x = 29.;
d.y = 10.;
accel = box.acceleration(c, d);
cout << "x: " << accel.x << ", y: " << accel.y << endl;
accel = box.acceleration(d, c);
cout << "x: " << accel.x << ", y: " << accel.y << endl;
c.x = 5.;
c.y = 29.;
d.x = 5.;
d.y = 1.;
accel = box.acceleration(c, d);
cout << "x: " << accel.x << ", y: " << accel.y << endl;
accel = box.acceleration(d, c);
cout << "x: " << accel.x << ", y: " << accel.y << endl;
cout << "Two point system test" << endl;
Point centers2[2] = {make_point(10., 10.), make_point(10., 11.)};
LennardJonesSystem box2(2, centers2, 1.0, 2.0, 0.1, 0., 0.2, 0.001, 30);
cout << "(" << box2.get_centers()[0].x << "," << box2.get_centers()[0].y << ")";
cout << "(" << box2.get_centers()[1].x << "," << box2.get_centers()[1].y << ")" << endl;
for (int i = 0; i < 200; i++) {
box2.step();
}
cout << "(" << box2.get_centers()[0].x << "," << box2.get_centers()[0].y << ")";
cout << "(" << box2.get_centers()[1].x << "," << box2.get_centers()[1].y << ")" << endl;
cout << "Two point system sanity test" << endl;
double centers3[4] = {10., 10., 10., 11.};
LennardJonesSystem box3(2, centers2, 1.0, 2.0, 0.1, 0., 0.2, 0.001, 30);
cout << "(" << box3.get_centers()[0].x << "," << box2.get_centers()[0].y << ")";
cout << "(" << box3.get_centers()[1].x << "," << box2.get_centers()[1].y << ")" << endl;
for (int i = 0; i < 200; i++) {
box3.step();
}
cout << "(" << box3.get_centers()[0].x << "," << box3.get_centers()[0].y << ")";
cout << "(" << box3.get_centers()[1].x << "," << box3.get_centers()[1].y << ")" << endl;
cout << "Testing three point system" << endl;
#if TEST_GAUSS
cout << "Testing Gaussian random noise" << endl;
cout << "[";
for (int i = 0; i < 1000; i++) {
twodouble gaussian_rand = normal_gaussian_rand();
cout << gaussian_rand.x << ", " << gaussian_rand.y << ", ";
}
twodouble gaussian_rand = normal_gaussian_rand();
cout << gaussian_rand.x << ", " << gaussian_rand.y << "]" << endl;
#endif
return 0;
}