Построение графиков зависимости давления от радиуса взрыва с учетом различных условий сгорания

Urfin Jus

Новичок
Пользователь
Фев 8, 2024
2
0
1
Доброго времени суток всем! Я прошу о помощи. Как вывести графическую зависимость Rmin, Rmax от P1-Pmax со следующими математическими зависимостями:
if Кг == 3 and Кз == 3:
print('Ожидаемый режим сгорания облака - 4')
Uпл = 200 # видимая скорость фронта пламени 200 м/с
for R in np.arange(Rmin, Rmax, Ri):
Rx1 = R / ((E1/Pатм)**0.333)
Rкр1 = 0.34
if 0 < Rx1 <= Rкр1:
Px1 = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / 0.34) - (0.14 / (0.34 ** 2)))
Ix1 = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / 0.34) + (0.01 / (0.34 ** 2)) - (0.0025 / (0.34 ** 3)))
P1 = Px1 * Pатм
I1 = Ix1 * (Pатм ** 1 / 3) * ((E1 ** 1 / 3) / 340)
else:
Px1 = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / Rx1) - (0.14 / (Rx1 ** 2)))
Ix1 = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / Rx1) + (0.01 / (Rx1 ** 2)) - (0.0025 / (Rx1 ** 3)))
P1 = Px1 * Pатм
I1 = Ix1 * (Pатм ** 1 / 3) * ((E1 ** 1 / 3) / 340)
Rx2 = R / ((E2/Pатм)**0.333)
Rкр2 = 0.34
if 0 < Rx2 <= Rкр2:
Px2 = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / 0.34) - (0.14 / (0.34 ** 2)))
Ix2 = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / 0.34) + (0.01 / (0.34 ** 2)) - (0.0025 / (0.34 ** 3)))
P2 = Px2 * Pатм
I2 = Ix2 * (Pатм ** 1 / 3) * ((E2 ** 1 / 3) / 340)
else:
Px2 = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / Rx2) - (0.14 / (Rx2 ** 2)))
Ix2 = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / Rx2) + (0.01 / (Rx2 ** 2)) - (0.0025 / (Rx2 ** 3)))
P2 = Px2 * Pатм
I2 = Ix2 * (Pатм ** 1 / 3) * ((E2 ** 1 / 3) / 340)
Rx3 = R / ((E3 / Pатм) ** 0.333)
Rкр3 = 0.34
if 0 < Rx3 <= Rкр3:
Px3 = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / 0.34) - (0.14 / (0.34 ** 2)))
Ix3 = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / 0.34) + (0.01 / (0.34 ** 2)) - (0.0025 / (0.34 ** 3)))
P3 = Px3 * Pатм
I3 = Ix3 * (Pатм ** 1 / 3) * ((E3 ** 1 / 3) / 340)
else:
Px3 = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / Rx3) - (0.14 / (Rx3 ** 2)))
Ix3 = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / Rx3) + (0.01 / (Rx3 ** 2)) - (0.0025 / (Rx3 ** 3)))
P3 = Px3 * Pатм
I3 = Ix3 * (Pатм ** 1 / 3) * ((E3 ** 1 / 3) / 340)
Rx4 = R / ((E4/Pатм)**0.333)
Rкр4 = 0.34
if 0 < Rx4 <= Rкр4:
Px4 = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / 0.34) - (0.14 / (0.34 ** 2)))
Ix4 = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / 0.34) + (0.01 / (0.34 ** 2)) - (0.0025 / (0.34 ** 3)))
P4 = Px4 * Pатм
I4 = Ix4 * (Pатм ** 1 / 3) * ((E4 ** 1 / 3) / 340)
else:
Px4 = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / Rx4) - (0.14 / (Rx4 ** 2)))
Ix4 = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / Rx4) + (0.01 / (Rx4 ** 2)) - (0.0025 / (Rx4 ** 3)))
P4 = Px4 * Pатм
I4 = Ix4 * (Pатм ** 1 / 3) * ((E4 ** 1 / 3) / 340)
Rxmax = R / ((Emax / Pатм) ** 0.333)
Rкрmax = 0.34
if 0 < Rxmax <= Rкрmax:
Pxmax = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / 0.34) - (0.14 / (0.34 ** 2)))
Ixmax = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / 0.34) + (0.01 / (0.34 ** 2)) - (0.0025 / (0.34 ** 3)))
Pmax = Pxmax * Pатм
Imax = Ixmax * (Pатм ** 1 / 3) * ((Emax ** 1 / 3) / 340)
else:
Pxmax = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / Rxmax) - (0.14 / (Rxmax ** 2)))
Ixmax = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / Rxmax) + (0.01 / (Rxmax ** 2)) - (0.0025 / (Rxmax ** 3)))
Pmax = Pxmax * Pатм
Imax = Ixmax * (Pатм ** 1 / 3) * ((Emax ** 1 / 3) / 340)
print(f"при {dот1} м R = {R} м, Rx1 = {Rx1}, P1 = {P1/1000} кПа, I1 = {I1} Па * с,\
\nпри {dот2} м и R = {R} м, Rx2 = {Rx2}, P2 = {P2/1000} кПа, I2 = {I2} Па * с,\
\nпри {dот3} м и R = {R} м, Rx3 = {Rx3}, P3 = {P3/1000} кПа, I3 = {I3} Па * с,\
\nпри {dот4} м и R = {R} м, Rx4 = {Rx4}, P4 = {P4/1000} кПа, I4 = {I4} Па * с,\
\nпри {dmax} м и R = {R} м, Rxmax = {Rxmax}, Pmax = {Pmax/1000} кПа, Imax = {Imax} Па * с")
 
Последнее редактирование модератором:

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
379
109
43
 

Dr. Mundo

Модератор
Команда форума
Модератор
Фев 13, 2024
5
1
3
Чтобы визуализировать зависимости Rmin, Rmax от P1-Pmax с использованием описанных вами математических зависимостей, можно применить следующий подход:

  1. Использовать библиотеку matplotlib для построения графиков.
  2. Создать массивы значений R в заданном диапазоне от Rmin до Rmax с шагом Ri.
  3. Для каждого значения R вычислить соответствующие значения P1, P2, P3, P4, Pmax согласно вашим уравнениям.
  4. Построить графики зависимостей P1-Pmax от R.
В этом процессе вы начнете с определения начальных значений Rmin и Rmax, а также шага Ri для итерации по различным радиусам взрыва. Затем, используя заданные уравнения для расчета давления и интенсивности взрыва в зависимости от радиуса и энергии взрыва, вы вычислите значения P и I для каждого R. Наконец, используя matplotlib, вы построите графики, которые покажут, как давление изменяется в зависимости от радиуса взрыва для различных значений энергии взрыва.

Python:
import numpy as np
import matplotlib.pyplot as plt

# Исходные данные
Rmin = 0.1
Rmax = 1.0
Ri = 0.1
Pатм = 101325  # Атмосферное давление в Па
E1 = E2 = E3 = E4 = Emax = 1e6  # Примерные значения энергии взрыва

# Функция для расчета P и I
def calculate_P_I(Uпл, R, E, Pатм):
    Rx = R / ((E / Pатм) ** 0.333)
    Rкр = 0.34
    if 0 < Rx <= Rкр:
        Px = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / Rкр) - (0.14 / (Rкр ** 2)))
        Ix = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / Rкр) + (0.01 / (Rк
        р ** 2)) - (0.0025 / (Rкр ** 3)))
    else:
        Px = ((Uпл ** 2) / (340 ** 2)) * ((7 - 1) / 7) * ((0.83 / Rx) - (0.14 / (Rx ** 2)))
        Ix = ((Uпл / 340) * ((7 - 1) / 7)) * (1 - 0.4 * ((Uпл / 340) * ((7 - 1) / 7))) * ((0.06 / Rx) + (0.01 / (Rx ** 2)) - (0.0025 / (Rx ** 3)))
    P = Px * Pатм
    I = Ix * (Pатм ** (1 / 3)) * ((E ** (1 / 3)) / 340)
    return P, I

# Массивы для хранения результатов
Rs = np.arange(Rmin, Rmax + Ri, Ri)
Ps = []

# Расчеты
Uпл = 200  # Видимая скорость фронта пламени 200 м/с
for R in Rs:
    P, _ = calculate_P_I(Uпл, R, Emax, Pатм)  # Используем Emax для примера
    Ps.append(P)

# Построение графика
plt.figure(figsize=(10, 6))
plt.plot(Rs, Ps, label='P от R')
plt.xlabel('R, м')
plt.ylabel('P, Па')
plt.title('Зависимость P от R')
plt.legend()
plt.grid(True)
plt.show()

Это даст вам визуальное представление о том, как изменяется потенциальное давление взрыва в зависимости от его радиуса и энергии, что может быть полезно для анализа безопасности или проектирования защитных мер в рамках исследований взрывных процессов.
 

Urfin Jus

Новичок
Пользователь
Фев 8, 2024
2
0
1

Ув. Dr. Mundo Спасибо большое. Буду разбираться.​

 

Форум IT Специалистов