import numpy as np
import matplotlib.pyplot as plt
# Исходные данные для варианта 33
P0 = 42e6 # Начальное давление, Па (42 МПа)
T0 = 500 # Начальная температура, К
d = 0.03 # Диаметр трубы, м
v_max = 175 # Максимальная скорость поршня, м/с
gamma = 1.3 # Показатель адиабаты для CO₂
# Временная шкала
time = np.linspace(0, 0.012, 300) # 300 временных шагов
# Зависимость скорости поршня от времени (экспоненциальный рост)
v_p = v_max * (1 - np.exp(-time / 0.002))
# Давление на стенках трубы и на поршне
p_wall = P0 * (1 - 0.5 * time / max(time)) # Давление на стенках трубы
p_piston = P0 * (1 - 0.4 * time / max(time)) # Давление на поршне
# Построение графиков
plt.figure(figsize=(10, 8))
# График 1: Скорость поршня от времени
plt.subplot(2, 1, 1)
plt.plot(time, v_p, 'k-', linewidth=2)
plt.xlabel('t, с', fontsize=12)
plt.ylabel('v_p, м/с', fontsize=12)
plt.title('a) Зависимость скорости поршня от времени', loc='left', fontsize=12)
plt.grid(True)
plt.xlim(0, max(time))
plt.ylim(0, 180) # Диапазон скорости
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
# График 2: Давление на стенках трубы и на поршне от времени
plt.subplot(2, 1, 2)
plt.plot(time, p_wall / 1e6, 'k-', linewidth=2, label='Давление на стенках трубы')
plt.plot(time, p_piston / 1e6, 'k--', linewidth=2, label='Давление на поршне')
plt.xlabel('t, с', fontsize=12)
plt.ylabel('p * 10⁶, Па', fontsize=12)
plt.title('б) Зависимость давления от времени', loc='left', fontsize=12)
plt.legend(fontsize=10, loc='upper right')
plt.grid(True)
plt.xlim(0, max(time))
plt.ylim(0, 5) # Максимальное давление в миллионах Па
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
# Настройка отображения
plt.tight_layout()
plt.show()