def FindSpectralPeak(data: np.ndarray, threshold: float = 90): # peaks, _ = find_peaks(data.__abs__(), height=threshold) # max_peak = np.where(data == max(data[peaks])) max_peak_index = np.where(data.__abs__() == max(data.__abs__())) if max_peak_index is not None: return max_peak_index, data[max_peak_index] else: return -1, 0
def _get_matrix_coefficients(self, x_arr: np.ndarray, T_cool_fluid_arr: np.ndarray): dx = max(x_arr.__abs__()) / (self.node_num - 1) A_arr, B_arr, C_arr, D_arr = [], [], [], [] for x, T_cool_fluid in zip(x_arr, T_cool_fluid_arr): A = 1 / dx**2 C = 1 / dx**2 k_out = 1 / (1 / self.alpha_out(x) + self.cover_thickness / self.lam_cover) B = -2 / dx**2 - (k_out + self.alpha_cool(x, T_cool_fluid)) / ( self.lam_blade(self.T_wall_av) * self.wall_thickness) D = -(k_out * self.T_out_stag(x) + self.alpha_cool(x, T_cool_fluid) * T_cool_fluid) / ( self.lam_blade(self.T_wall_av) * self.wall_thickness) A_arr.append(A) B_arr.append(B) C_arr.append(C) D_arr.append(D) M = np.zeros([self.node_num, self.node_num]) N = np.zeros([self.node_num]) for i1 in range(self.node_num): for i2 in range(self.node_num): if i1 == 0: N[i1] = 0 M[i1, 0] = 1 M[i1, 1] = -1 elif i1 == self.node_num - 1: N[i1] = 0 M[i1, i1] = 1 M[i1, i1 - 1] = -1 else: N[i1] = D_arr[i1] M[i1, i1 - 1] = A_arr[i1] M[i1, i1] = B_arr[i1] M[i1, i1 + 1] = C_arr[i1] return M, N