-
Notifications
You must be signed in to change notification settings - Fork 2
/
plot_history.py
61 lines (47 loc) · 1.71 KB
/
plot_history.py
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
import sys
import pandas
import matplotlib.pyplot as plt
def const_dt_plot(pddata):
fig, (ax1, ax2, ax3) = plt.subplots(1,3,figsize=(20,5))
ax1.semilogy(pddata["iter"], pddata["res_c"], label="Residual")
ax1.set_xlabel("Iteration")
ax1.set_ylabel("Residual")
ax1.legend()
ax2.plot(pddata["iter"], pddata["min_c"], label="Min C")
ax2.plot(pddata["iter"], pddata["max_c"], label="Max C")
ax2.set_xlabel("Iteration")
ax2.set_ylabel("c")
ax2.legend()
ax3.plot(pddata["iter"], pddata["grad_c_mag"], label="||grad(c)||")
ax3.set_xlabel("Iteration")
ax3.set_ylabel("||grad(c)||")
ax3.legend()
def variable_dt_plot(pddata):
fig, (ax1, ax2, ax3, ax4) = plt.subplots(1,4,figsize=(24,5))
ax1.semilogy(pddata["iter"], pddata["res_c"], label="Residual")
ax1.set_xlabel("Iteration")
ax1.set_ylabel("Residual")
ax1.legend()
ax2.plot(pddata["iter"], pddata["min_c"], label="Min C")
ax2.plot(pddata["iter"], pddata["max_c"], label="Max C")
ax2.set_xlabel("Iteration")
ax2.set_ylabel("c")
ax2.legend()
ax3.plot(pddata["iter"], pddata["grad_c_mag"], label="||grad(c)||")
ax3.set_xlabel("Iteration")
ax3.set_ylabel("||grad(c)||")
ax3.legend()
ax4.semilogy(pddata["time"],pddata["dt"], label="time step size")
ax4.semilogy(pddata["time"],pddata["time_err"], label="time step error")
ax4.set_xlabel("Time")
ax4.legend()
def main():
logfile = sys.argv[1]
pddata = pandas.read_csv(logfile, delim_whitespace=True, comment="#")
if "time_err" in pddata.keys():
variable_dt_plot(pddata)
else:
const_dt_plot(pddata)
plt.show()
if __name__ == "__main__":
main()