Coverage for gamdpy/misc/plot_scalars.py: 46%
94 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
1import numpy as np
2import numba
3from numba import cuda
4import math
5import matplotlib.pyplot as plt
6import os
8def plot_scalars_old(df, N, D, figsize, block=True):
9 df['e'] = df['u'] + df['k'] # Total energy
10 df['Tkin'] = 2 * df['k'] / D / (N - 1)
11 df['Tconf'] = df['fsq'] / df['lap']
12 df['press'] = 2 * df['k'] / D / (N - 1) * N / df['vol'] + df['w'] / df['vol']
13 df['du'] = df['u'] - np.mean(df['u'])
14 df['de'] = df['e'] - np.mean(df['e'])
15 df['dw'] = df['w'] - np.mean(df['w'])
17 fig, axs = plt.subplots(2, 2, figsize=figsize)
18 axs[0, 0].plot(df['t'].values, df['du'].values / N, '.-', label=f"du/N, var(u)/N={np.var(df['u']) / N:.4}")
19 axs[0, 0].plot(df['t'].values, df['de'].values / N, '-', label=f"de/N, var(e)/N={np.var(df['e']) / N:.4}")
20 axs[0, 0].set_xlabel('Time')
21 axs[0, 0].legend()
23 axs[0, 1].plot(df['t'].values, df['Tconf'].values, '.-', label=f"Tconf, mean={np.mean(df['Tconf']):.3f}")
24 axs[0, 1].plot(df['t'].values, df['Tkin'].values, '.-', label=f"Tkin, mean={np.mean(df['Tkin']):.3f}")
25 if 'Ttarget' in df.columns:
26 axs[0, 1].plot(df['t'].values, df['Ttarget'].values, 'k--', linewidth=3,
27 label=f"Ttarget, mean={np.mean(df['Ttarget']):.3f}")
28 axs[0, 1].set_xlabel('Time')
29 axs[0, 1].set_ylabel('Temperature')
30 axs[0, 1].legend()
32 axs[1, 0].plot(df['t'].values, df['press'].values, '.-', label=f"press, mean={np.mean(df['press']):.3f}")
33 if 'Ptarget' in df.columns:
34 axs[1, 0].plot(df['t'].values, df['Ptarget'].values, 'k--', linewidth=3,
35 label=f"Ptarget, mean={np.mean(df['Ptarget']):.3f}")
37 axs[1, 0].set_xlabel('Time')
38 axs[1, 0].set_ylabel('Pressure')
39 axs[1, 0].legend()
41 ramp = False
42 if 'Ttarget' in df.columns: # Is it a ramp?
43 if np.std(df['Ttarget']) > 0.01 * np.mean(df['Ttarget']):
44 ramp = True
45 axs[1, 1].plot(df['Ttarget'].values, df['u'].values / N, '.-')
46 axs[1, 1].set_xlabel('Temperature')
47 axs[1, 1].set_ylabel('Potenital energy per particle')
49 if ramp == False:
50 R = np.dot(df['dw'], df['du']) / (np.dot(df['dw'], df['dw']) * np.dot(df['du'], df['du'])) ** 0.5
51 Gamma = np.dot(df['dw'], df['du']) / (np.dot(df['du'], df['du']))
53 axs[1, 1].plot(df['u'].values / N, df['w'].values / N, '.', label=f"R = {R:.3}")
54 axs[1, 1].plot(sorted(df['u'].values / N), sorted(df['du'].values / N * Gamma + np.mean(df['w'].values / N)),
55 'r--', label=f"Gamma = {Gamma:.3}")
56 axs[1, 1].set_xlabel('U/N')
57 axs[1, 1].set_ylabel('W/N')
58 axs[1, 1].legend()
60 if __name__ == "__main__":
61 plt.show(block=block)
63 return
66def plot_scalars(df, N, D, figsize, block=True):
67 df['E'] = df['U'] + df['K'] # Total energy
68 df['Tkin'] = 2 * df['K'] / D / (N - 1)
69 df['Tconf'] = df['Fsq'] / df['lapU']
70 df['press'] = 2 * df['K'] / D / (N - 1) * N / df['Vol'] + df['W'] / df['Vol']
71 df['dU'] = df['U'] - np.mean(df['U'])
72 df['dE'] = df['E'] - np.mean(df['E'])
73 df['dW'] = df['W'] - np.mean(df['W'])
75 fig, axs = plt.subplots(2, 2, figsize=figsize)
76 axs[0, 0].plot(df['t'].values, df['dU'].values / N, '.-', label=f"dU/N, var(U)/N={np.var(df['U']) / N:.4}")
77 axs[0, 0].plot(df['t'].values, df['dE'].values / N, '-', label=f"dE/N, var(E)/N={np.var(df['E']) / N:.4}")
78 axs[0, 0].set_xlabel('Time')
79 axs[0, 0].legend()
81 axs[0, 1].plot(df['t'].values, df['Tconf'].values, '.-', label=f"Tconf, mean={np.mean(df['Tconf']):.3f}")
82 axs[0, 1].plot(df['t'].values, df['Tkin'].values, '.-', label=f"Tkin, mean={np.mean(df['Tkin']):.3f}")
83 if 'Ttarget' in df.columns:
84 axs[0, 1].plot(df['t'].values, df['Ttarget'].values, 'k--', linewidth=3,
85 label=f"Ttarget, mean={np.mean(df['Ttarget']):.3f}")
86 axs[0, 1].set_xlabel('Time')
87 axs[0, 1].set_ylabel('Temperature')
88 axs[0, 1].legend()
90 axs[1, 0].plot(df['t'].values, df['press'].values, '.-', label=f"press, mean={np.mean(df['press']):.3f}")
91 if 'Ptarget' in df.columns:
92 axs[1, 0].plot(df['t'].values, df['Ptarget'].values, 'k--', linewidth=3,
93 label=f"Ptarget, mean={np.mean(df['Ptarget']):.3f}")
95 axs[1, 0].set_xlabel('Time')
96 axs[1, 0].set_ylabel('Pressure')
97 axs[1, 0].legend()
99 ramp = False
100 if 'Ttarget' in df.columns: #
101 if np.std(df['Ttarget']) > 0.01 * np.mean(df['Ttarget']):
102 ramp = True
103 axs[1, 1].plot(df['Ttarget'].values, df['U'].values / N, '.-')
104 axs[1, 1].set_xlabel('Temperature')
105 axs[1, 1].set_ylabel('Potenital energy per particle')
107 if ramp == False:
108 R = np.dot(df['dW'], df['dU']) / (np.dot(df['dW'], df['dW']) * np.dot(df['dU'], df['dU'])) ** 0.5
109 Gamma = np.dot(df['dW'], df['dU']) / (np.dot(df['dU'], df['dU']))
111 axs[1, 1].plot(df['U'].values / N, df['W'].values / N, '.', label=f"R = {R:.3}")
112 axs[1, 1].plot(sorted(df['U'].values / N), sorted(df['dU'].values / N * Gamma + np.mean(df['W'].values / N)),
113 'r--', label=f"Gamma = {Gamma:.3}")
114 axs[1, 1].set_xlabel('U/N')
115 axs[1, 1].set_ylabel('W/N')
116 axs[1, 1].legend()
118 if __name__ == "__main__":
119 plt.show(block=block)
121 return