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

1import numpy as np 

2import numba 

3from numba import cuda 

4import math 

5import matplotlib.pyplot as plt 

6import os 

7 

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']) 

16 

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() 

22 

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() 

31 

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}") 

36 

37 axs[1, 0].set_xlabel('Time') 

38 axs[1, 0].set_ylabel('Pressure') 

39 axs[1, 0].legend() 

40 

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') 

48 

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'])) 

52 

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() 

59 

60 if __name__ == "__main__": 

61 plt.show(block=block) 

62 

63 return 

64 

65 

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']) 

74 

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() 

80 

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() 

89 

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}") 

94 

95 axs[1, 0].set_xlabel('Time') 

96 axs[1, 0].set_ylabel('Pressure') 

97 axs[1, 0].legend() 

98 

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') 

106 

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'])) 

110 

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() 

117 

118 if __name__ == "__main__": 

119 plt.show(block=block) 

120 

121 return 

122 

123