def d(s=s_current): x() for i in range(1, N): D[i] = const * (X[i + 1] - X[i - 1]) * ( ((X[i] / 2) * integral_1_2(PHI_S[s_current][i] / X[i]) - PHI_S[s_current][i] / 4 * integral_minus_1_2(PHI_S[s_current][i] / X[i])))
def beta(s=s_current): x() for i in range(N - 1, -1, -1): if i == N - 1: BETA[i] = -h(N)**2 / 2 * const * ( integral_1_2(PHI_S[s_current][N]) - PHI_S[s_current][i] / 2 * integral_minus_1_2(PHI_S[s_current][N])) * ALPHA[N - 1] else: BETA[i] = (D[i + 1] - C[i + 1] * BETA[i + 1]) / ( B[i + 1] + C[i + 1] * ALPHA[i + 1])
def progonka(s): s_current = 0 while s_current < s: for i in range(1, N): B[i] = -A[i] - C[i] - const / 4 * (X[i + 1] - X[i - 1]) * integral_minus_1_2( PHI_S[s_current][i] / X[i]) D[i] = const * (X[i + 1] - X[i - 1]) * ( (X[i] / 2 * integral_1_2(PHI_S[s_current][i] / X[i])) - PHI_S[s_current][i] / 4 * integral_minus_1_2(PHI_S[s_current][i] / X[i])) for i in range(N - 1, -1, -1): if i == N - 1: ALPHA[i] = 1 / (1 - h(N) + h(N)**2 / 4 * const * integral_minus_1_2(PHI_S[s_current][N])) BETA[i] = -h(N)**2 / 2 * const * ( integral_1_2(PHI_S[s_current][N]) - PHI_S[s_current][i] / 2 * integral_minus_1_2(PHI_S[s_current][N])) * ALPHA[N - 1] else: ALPHA[i] = -A[i + 1] / (B[i + 1] + C[i + 1] * ALPHA[i + 1]) BETA[i] = (D[i + 1] - C[i + 1] * BETA[i + 1]) / ( B[i + 1] + C[i + 1] * ALPHA[i + 1]) # ИСКОМОЕ УРАВНЕНИЕ for i in range(N + 1): if i == 0: Y[i] = z / (theta(T) * r_0(rho)) else: Y[i] = ALPHA[i - 1] * Y[i - 1] + BETA[i - 1] for i in range(N + 1): RESULT[s_current][i] = PHI_S[s_current][i] * theta(T) for i in range(N + 1): PHI_S[s_current + 1][i] = Y[i] s_current += 1
def delta_P(T, rho): HI = hi(T, rho) PHI = progonka(T, rho, 1, 1) #print("Hi_n = ", HI[N], "len = ", len(HI)) return 8 / (3 * pi**4) * (2 / pi)**(1 / 3) * ( 2**(7 / 6) * 3**(2 / 3) * pi**(-5 / 3) * theta(T)**(1 / 2) * volume(rho, 1)**(2 / 3) * PHI[0]**2)**(-4 / 3) * (HI[N] * integral_1_2(PHI[N]) + igrek(PHI[N]))
def S_integrals(T, rho): HI = hi_function(T, rho) PHI = progonka(T, rho) max_i = 0 for i in range(1, N + 1): if PHI[i] / X[i] >= 10**6: max_i = i subfunc1 = [0] * (max_i + 1) subfunc2 = [] subx = [0] * (max_i + 1) for i in range(max_i + 1): subx[i] = X[i] nadx = [] for i in range(max_i + 1, N + 1): nadx.append(X[i]) for i in range(max_i + 1): subfunc1[i] = 4 / 3 * (22 * PHI[i]**2 * Z[i] + PHI[i]**(3 / 2) * HI[i]) for i in range(max_i + 1, N + 1): subfunc2.append(X[i] * HI[i] * integral_1_2(PHI[i] / X[i]) + 4 * Z[i]**2 * igrek(PHI[i] / X[i])) return scipy.integrate.trapz(subfunc1, subx) + scipy.integrate.trapz( subfunc2, nadx)
def S_sub_int(T, rho): max_i = 2 while (PHI[max_i] / X[max_i] >= 10**6) and (max_i < N): max_i += 1 if max_i % 2 != 0: max_i -= 1 integr_int_1 = [Z[i] for i in range(max_i + 1)] integr_int_2 = [Z[i] for i in range(max_i, N + 1)] integr_func_1 = 0 integr_func_2 = [ 5 / 3 * integral_3_2(PHI[i] / X[i]) * X[i]**2 - PHI[i] / X[i] * integral_1_2(PHI[i] / X[i]) * X[i]**2 for i in range(max_i, N + 1) ] #integr_res_1 = integrate.simps(integr_func_1, integr_int_1) integr_res_2 = integrate.simps(integr_func_2, integr_int_2) return integr_res_2
def progonka_2N(T, rho): # константа а в уравнении const_a = 4 * (2 * theta(T))**0.5 / pi * (r_0(rho))**2 PHI_S = [[0 for i in range(N + 1)] for j in range(s + 1)] RESULT = [[0 for i in range(N + 1)] for j in range(s)] for i in range(N + 1): if i == 0: PHI_S[0][0] = z / (theta(T) * r_0(rho)) else: PHI_S[0][i] = z / (theta(T) * r_0(rho)) * (1 - 3 / 2 * U[i] + 1 / 2 * (U[i])**3) - eta_0(T, rho) * U[i] s_current = 0 while s_current < s: B = [0] + [ -4 * U[i] * (1 + const_a * h_N**2 * U[i]**2 * integral_minus_1_2(PHI_S[s_current][i] / U[i]**2)) for i in range(1, N) ] D = [0] + [ 4 * const_a * h_N**2 * U[i]**3 * (2 * U[i]**2 * integral_1_2(PHI_S[s_current][i] / U[i]**2) - PHI_S[s_current][i] * integral_minus_1_2(PHI_S[s_current][i] / U[i]**2)) for i in range(1, N) ] ALPHA = [0] * (N + 1) BETA = [0] * (N + 1) for i in range(N - 1, -1, -1): if i == N - 1: ALPHA[i] = 1 / ( 1 - 2 * h_N + h_N**2 * (1 + const_a * integral_minus_1_2(PHI_S[s_current][N]))) BETA[i] = -h_N**2 * const_a * ( 2 * integral_1_2(PHI_S[s_current][N]) - PHI_S[s_current][i] * integral_minus_1_2(PHI_S[s_current][N])) * ALPHA[N - 1] else: ALPHA[i] = -A[i + 1] / (B[i + 1] + C[i + 1] * ALPHA[i + 1]) BETA[i] = (D[i + 1] - C[i + 1] * BETA[i + 1]) / ( B[i + 1] + C[i + 1] * ALPHA[i + 1]) # ИСКОМОЕ УРАВНЕНИЕ Y = [0] * (N + 1) for i in range(N + 1): if i == 0: Y[i] = z / (theta(T) * r_0(rho)) else: Y[i] = ALPHA[i - 1] * Y[i - 1] + BETA[i - 1] for i in range(N + 1): RESULT[s_current][i] = PHI_S[s_current][i] * theta(T) for i in range(N + 1): PHI_S[s_current + 1][i] = Y[i] s_current += 1 PHI = [RESULT[8][i] / theta(T) for i in range(N + 1)] return PHI
def z_0(T, rho, Atom_weight): return 317.5 * Atom_weight * T**1.5 * 2 * integral_1_2( -eta(T, rho)) / pi**0.5 / rho
def n_e_0(): return (const/(betta**1.5))*integral_1_2(betta*(Chem_potential_e()))
def n_e_full(i): return (const / (betta ** 1.5))*integral_1_2(betta*(Chem_potential_e() - V(i)))
def rho_e(i): return c1*integral_1_2((V(i)+Chem_potential_e())/theta(T))
def n_e_full1(i): return (((2*theta(T))**1.5)/(2*(math.pi)**2))*integral_1_2((V(i)+Chem_potential_e())/theta(T))
def n_e_pribl(): return (((2*theta(T))**1.5)/(2*(math.pi)**2))*integral_1_2((Chem_potential_e())/theta(T))
def delta_P(T, rho): HI = hi_function(T, rho) PHI = progonka(T, rho) return theta(T)**2 / (3 * math.pi**3) * (HI[N] * integral_1_2(PHI[N]) + igrek(PHI[N]))
def n_e_full(r): return (const/(betta**1.5))*integral_1_2(betta*(Chem_potential_e()-V_Ne_eff(r)))
def progonka(T, rho, Atom_weight, z): # константа а в уравнении const_a = 4 * (2 * theta(T))**0.5 / pi * (r_0(rho, Atom_weight))**2 PHI_S = [[0 for i in range(N + 1)] for j in range(s + 1)] RESULT = [[0 for i in range(N + 1)] for j in range(s)] for i in range(N + 1): if i == 0: PHI_S[0][0] = z / (theta(T) * r_0(rho, Atom_weight)) else: PHI_S[0][i] = z / (theta(T) * r_0(rho, Atom_weight)) * ( 1 - 3 / 2 * X[i] + 1 / 2 * (X[i])**3) - eta_0(T, rho) * X[i] s_current = 0 while s_current < s: B = [0] + [ -A[i] - C[i] - const_a / 4 * (X[i + 1] - X[i - 1]) * integral_minus_1_2(PHI_S[s_current][i] / X[i]) for i in range(1, N) ] D = [0] + [ const_a * (X[i + 1] - X[i - 1]) * ((X[i] / 2 * integral_1_2(PHI_S[s_current][i] / X[i])) - PHI_S[s_current][i] / 4 * integral_minus_1_2(PHI_S[s_current][i] / X[i])) for i in range(1, N) ] ALPHA = [0] * (N + 1) BETA = [0] * (N + 1) for i in range(N - 1, -1, -1): if i == N - 1: ALPHA[i] = 1 / (1 - h_N + h_N**2 / 4 * const_a * integral_minus_1_2(PHI_S[s_current][N])) BETA[i] = -h_N**2 / 2 * const_a * ( integral_1_2(PHI_S[s_current][N]) - PHI_S[s_current][i] / 2 * integral_minus_1_2(PHI_S[s_current][N])) * ALPHA[N - 1] else: ALPHA[i] = -A[i + 1] / (B[i + 1] + C[i + 1] * ALPHA[i + 1]) BETA[i] = (D[i + 1] - C[i + 1] * BETA[i + 1]) / ( B[i + 1] + C[i + 1] * ALPHA[i + 1]) # ИСКОМОЕ УРАВНЕНИЕ Y = [0] * (N + 1) for i in range(N + 1): if i == 0: Y[i] = z / (theta(T) * r_0(rho, Atom_weight)) else: Y[i] = ALPHA[i - 1] * Y[i - 1] + BETA[i - 1] for i in range(N + 1): RESULT[s_current][i] = PHI_S[s_current][i] * theta(T) for i in range(N + 1): PHI_S[s_current + 1][i] = Y[i] s_current += 1 PHI = [RESULT[8][i] / theta(T) for i in range(N + 1)] ##СТРОИМ ГРАФИК #fig = plt.figure() #for i in range(s): # graph1 = plt.plot(X, PHI) #plt.title("T = 0 keV") #plt.grid(True) # #plt.xlabel('x') #plt.ylabel('y(s)') #plt.savefig('progonka1') #plt.show() return PHI
def int1_2(x): if x>10**7: return (x**1.5)*(2/3) else: return integral_1_2(x)