-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplot_energy.py
More file actions
105 lines (96 loc) · 3.67 KB
/
plot_energy.py
File metadata and controls
105 lines (96 loc) · 3.67 KB
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
98
99
100
101
102
103
104
105
import numpy as np
import matplotlib.pyplot as plt
def plotinator(datafile, draw_list=["energy", "temp", "vac"], size=(10, 8)):
t_list, pot_list, kin_list, tot_list, tmp_list, vac_list, msd_list = [[] for i in range(7)]
with open("data/"+datafile, "r") as infile:
for line in infile:
t, pot, kin, tot, *temp_vac_msd = (float(v) for v in line.split())
t_list.append(t)
pot_list.append(pot)
kin_list.append(kin)
tot_list.append(tot)
if len(temp_vac_msd) > 2:
msd_list.append(temp_vac_msd[2])
if len(temp_vac_msd) > 1:
vac_list.append(temp_vac_msd[1])
if len(temp_vac_msd) > 0:
tmp_list.append(temp_vac_msd[0]*119.7)
data_list = {
"energy": [[
("kinetic", "r", kin_list),
("potential", "g", pot_list),
("total", "k", tot_list),
], "Energy plot", "Time", "Energy"],
"temp": [[
("temperature", "r", tmp_list),
], "Temperature plot", "Time", "Temperature [K]"],
"vac": [[
("velocity autocorrelation", "g", vac_list),
], "Velocity autocorrelation plot", "Time", "Velocity autocorrelation"],
"msd": [[
("mean squared displacemen", "b", msd_list),
], "Mean squared displacemen plot", "Time", "Mean squared displacemen"],
}
fig, axs = plt.subplots(len(draw_list), 1, figsize=(size[0], size[1]), sharex=True, gridspec_kw={'hspace': 0.2})
if not hasattr(axs, "__getitem__"):
axs = [axs]
for i, type in enumerate(draw_list):
data, title, xlabel, ylabel = data_list[type]
for name, color, values in data:
axs[i].plot(t_list, values, color=color, label=name)
axs[i].set_title(title)
axs[i].set_ylabel(ylabel)
if i == len(draw_list)-1:
axs[i].set_xlabel(xlabel)
for ax in axs:
ax.legend()
plt.show()
def plotinator_comparinator(datafiles, draw_list=["energy", "temp", "vac"], size=(10, 8)):
fig, axs = plt.subplots(len(draw_list), 1, figsize=(size[0], size[1]), sharex=True, gridspec_kw={'hspace': 0.2})
for datafile in datafiles:
t_list, pot_list, kin_list, tot_list, tmp_list, vac_list, msd_list = [[] for i in range(7)]
with open("data/"+datafile, "r") as infile:
for line in infile:
t, pot, kin, tot, *temp_vac_msd = (float(v) for v in line.split())
t_list.append(t)
pot_list.append(pot)
kin_list.append(kin)
tot_list.append(tot)
if len(temp_vac_msd) > 2:
msd_list.append(temp_vac_msd[2])
if len(temp_vac_msd) > 1:
vac_list.append(temp_vac_msd[1])
if len(temp_vac_msd) > 0:
tmp_list.append(temp_vac_msd[0]*119.7)
data_list = {
"energy": [[
("kinetic", "r", kin_list),
("potential", "g", pot_list),
("total", "k", tot_list),
], "Energy plot", "Time", "Energy"],
"temp": [[
("temperature", "r", tmp_list),
], "Temperature plot", "Time", "Temperature [K]"],
"vac": [[
("velocity autocorrelation", "g", vac_list),
], "Velocity autocorrelation plot", "Time", "Velocity autocorrelation"],
"msd": [[
("mean squared displacemen", "b", msd_list),
], "Mean squared displacemen plot", "Time", "Mean squared displacemen"],
}
if not hasattr(axs, "__getitem__"):
axs = [axs]
for i, type in enumerate(draw_list):
data, title, xlabel, ylabel = data_list[type]
for name, color, values in data:
axs[i].plot(t_list, values, label=name + " ("+datafile+")")
axs[i].set_title(title)
axs[i].set_ylabel(ylabel)
if i == len(draw_list)-1:
axs[i].set_xlabel(xlabel)
for ax in axs:
ax.legend()
plt.show()
# plot_energy("data3eii.energy")
plotinator_comparinator(["null.energy", "data4ci.energy", "data4ci_cpp.energy"], ["energy", "temp", "vac", "msd"], (16, 32))
# plotinator("null.energy", ["energy", "temp", "vac", "msd"], (8, 12))