Beispiel #1
0
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])))
Beispiel #2
0
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])
Beispiel #3
0
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
Beispiel #4
0
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]))
Beispiel #5
0
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)
Beispiel #6
0
    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
Beispiel #8
0
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
Beispiel #9
0
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)))
Beispiel #11
0
def rho_e(i):
    return c1*integral_1_2((V(i)+Chem_potential_e())/theta(T))
Beispiel #12
0
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))
Beispiel #13
0
def n_e_pribl():
    return (((2*theta(T))**1.5)/(2*(math.pi)**2))*integral_1_2((Chem_potential_e())/theta(T))
Beispiel #14
0
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]))
Beispiel #15
0
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)