Advertisement
MI5TONER

Untitled

Nov 4th, 2023
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 7.98 KB | None | 0 0
  1. %% Исходные данные
  2.  
  3. N = 4;              % Номер варианта
  4. c = 80;             % Высота профиля крыла, [мм]
  5. b = 1000;           % Длина профиля крыла, [мм]
  6. T_st = 405;         % Температура охлаждаемой стенки, [К]
  7. Re_krit = 5 * 10^6; % Критическое число Рейнольдса
  8. k = 1.4;            % Отношение удельных теплоемкостей воздуха
  9.  
  10. % Высота полета (геометрическая), [м]
  11. h = (10 + 0.5 * N) * 10^3;
  12.  
  13. % Число Маха
  14. M_inf = 4 + 0.15 * N;
  15.  
  16. % Угол атаки
  17. alpha_deg = 2 + 0.1 * N;    % [deg]
  18. alpha = deg2rad(alpha_deg); % [rad]
  19.  
  20. %% Определим параметры стандартной атмосферы по ГОСТ 4401-81
  21.  
  22. [g_inf, T_inf, p_inf, rho_inf, a_inf] = atmosphere_heopotencial(h);
  23.  
  24. %% Угол полураствора клина
  25.  
  26. beta_k = atan(c / b); % [deg]
  27. beta_k_deg = rad2deg(beta_k);     % [rad]
  28.  
  29. %% Области 1, 2
  30.  
  31. % Определим угол СУ
  32. theta_1_deg = findThetaShockWave(k, M_inf, (beta_k_deg - alpha_deg)); % [deg]
  33. theta_2_deg = findThetaShockWave(k, M_inf, (beta_k_deg + alpha_deg)); % [deg]
  34. theta_1 = deg2rad(theta_1_deg); % [rad]
  35. theta_2 = deg2rad(theta_2_deg); % [rad]
  36.  
  37. % Давление за СУ
  38. p_1 = Pressure_Behind_SW(p_inf, k, M_inf, theta_1_deg);
  39. p_2 = Pressure_Behind_SW(p_inf, k, M_inf, theta_2_deg);
  40.  
  41. % Плотность за СУ
  42. rho_1 = Density_Behind_SW(rho_inf, k, M_inf, theta_1);
  43. rho_2 = Density_Behind_SW(rho_inf, k, M_inf, theta_2);
  44.  
  45. % Температура за СУ
  46. T_1 = Temperature_Behind_SW(T_inf, p_inf, rho_inf, p_1, rho_1);
  47. T_2 = Temperature_Behind_SW(T_inf, p_inf, rho_inf, p_2, rho_2);
  48.  
  49. % Число Маха за СУ
  50. M_1 = Mach_Behind_SW(k, M_inf, theta_1);
  51. M_2 = Mach_Behind_SW(k, M_inf, theta_2);
  52.  
  53. % Угол Маха
  54. mu_1 = asin(1 / M_1);
  55. mu_2 = asin(1 / M_2);
  56. mu_1_deg = rad2deg(mu_1);
  57. mu_2_deg = rad2deg(mu_2);
  58.  
  59. % Давление полного торможения
  60. p_0_1 = Pressure_Full_Brake(p_1, k, M_1);
  61. p_0_2 = Pressure_Full_Brake(p_2, k, M_2);
  62.  
  63. % Плотность полного торможения
  64. rho_0_1 = Density_Full_Brake(rho_1, k, M_1);
  65. rho_0_2 = Density_Full_Brake(rho_2, k, M_2);
  66.  
  67. % Температура полного торможения
  68. T_0_1 = Temperature_Full_Brake(T_1, k, M_1);
  69. T_0_2 = Temperature_Full_Brake(T_2, k, M_2);
  70.  
  71. % Шапка таблицы
  72. heading = ["area", "beta, [deg]", "theta, [deg]", "p, [Pa]", "rho, [kg/m^3]",...
  73.     "T, [K]", "M, [-]", "p_0, [Pa]", "rho_0, [kg/m^3]", "T_0, [K]"];
  74.    
  75.  
  76. % Создадим 2 строки, в которые запишем, полученные результаты
  77. area_1 = [1, round((beta_k_deg - alpha_deg), 2), round(theta_1_deg, 2), ...
  78.     round(p_1, 2), round(rho_1, 4), round(T_1, 2), round(M_1, 2), ...
  79.     round(p_0_1, 2), round(rho_0_1, 4), round(T_0_1, 2)];
  80.  
  81. area_2 = [2, round((beta_k_deg + alpha_deg), 2), round(theta_2_deg, 2), ...
  82.     round(p_2, 2), round(rho_2, 4), round(T_2, 2), round(M_2, 2), ...
  83.     round(p_0_2, 2), round(rho_0_2, 4), round(T_0_2, 2)];
  84.  
  85. % Таблица
  86. table = cat(1, heading, area_1, area_2);
  87.  
  88. %% Области 3, 4. Течение Прандтля-Майера (прямая задача)
  89.  
  90. % Угол поворота потока
  91. beta_turn = 2 * beta_k;
  92.  
  93. % Фиктивные углы
  94. omega_1 = Fictious_Angle_Omega(k, M_1);
  95. omega_2 = Fictious_Angle_Omega(k, M_2);
  96. omega_3 = omega_1 + beta_turn;
  97. omega_4 = omega_2 + beta_turn;
  98.  
  99. % Числа Маха в областях 3, 4 через omega_3 и omega_4
  100. M_3 = Mach_Through_Omega(k, omega_3, M_1);
  101. M_4 = Mach_Through_Omega(k, omega_4, M_2);
  102.  
  103. % Угол Маха
  104. mu_3 = asin(1 / M_3);
  105. mu_4 = asin(1 / M_4);
  106. mu_3_deg = rad2deg(mu_3);
  107. mu_4_deg = rad2deg(mu_4);
  108.  
  109. % Параметры торможения в области 3 и 4 такие же, как в области 1 и 2
  110. p_0_3 = p_0_1;
  111. p_0_4 = p_0_2;
  112. rho_0_3 = rho_0_1;
  113. rho_0_4 = rho_0_2;
  114. T_0_3 = T_0_1;
  115. T_0_4 = T_0_2;
  116.  
  117. % Давление
  118. p_3 = Pressure_Behind_PM(p_0_3, k, M_3);
  119. p_4 = Pressure_Behind_PM(p_0_4, k, M_4);
  120.  
  121. % Плотность
  122. rho_3 = Density_Behind_PM(rho_0_3, k, M_3);
  123. rho_4 = Density_Behind_PM(rho_0_4, k, M_4);
  124.  
  125. % Температура
  126. T_3 =  Temperature_Behind_PM(T_0_3, k, M_3);
  127. T_4 =  Temperature_Behind_PM(T_0_4, k, M_4);
  128.  
  129. % Создадим 2 строки, в которые запишем, полученные результаты
  130. area_3 = [3, round(rad2deg(beta_turn), 2), "---", ...
  131.     round(p_3, 2), round(rho_3, 4), round(T_3, 2), round(M_3, 2), ...
  132.     round(p_0_3, 2), round(rho_0_3, 4), round(T_0_3, 2)];
  133.  
  134. area_4 = [4, round(rad2deg(beta_turn), 2), "---", ...
  135.     round(p_4, 2), round(rho_4, 4), round(T_4, 2), round(M_4, 2), ...
  136.     round(p_0_4, 2), round(rho_0_4, 4), round(T_0_4, 2)];
  137.  
  138. % Обновляем таблицу
  139. table = cat(1, table, area_3, area_4);
  140.  
  141. %% Области 5 и 6
  142.  
  143. [theta_5, theta_6, delta] = Find_Theta_Delta_Bottom(k, M_3, M_4, p_3, p_4, beta_k_deg);
  144.  
  145.  
  146. %% Функции
  147.  
  148. % Давление за СУ
  149. function [p] = Pressure_Behind_SW(p_inf, k, M_inf, theta)
  150.     p = p_inf * ((2 * k) / (k + 1) * M_inf^2 * sind(theta)^2 - (k - 1) / (k + 1));
  151. end
  152.  
  153. % Плотность за СУ
  154. function [rho] = Density_Behind_SW(rho_inf, k, M_inf, theta)
  155.     rho = rho_inf * (0.5 * (k + 1) * M_inf^2 * sin(theta)^2) / ...
  156.         (1 + 0.5 * (k - 1) * M_inf^2 * sin(theta)^2);
  157. end
  158.  
  159. % Температура за СУ
  160. function [T] = Temperature_Behind_SW(T_inf, p_inf, rho_inf, p, rho)
  161.     T = T_inf * (p / p_inf) * (rho_inf / rho);
  162. end
  163.  
  164. % Число Маха
  165. function [M] = Mach_Behind_SW(k, M_inf, theta)
  166.     M = sqrt((2 + (k - 1) * M_inf^2) / (2 * k * M_inf^2 * sin(theta)^2 - (k - 1)) + ...
  167.         (2 * M_inf^2 * cos(theta)^2) / (2 + (k - 1) * M_inf^2 * sin(theta)^2));
  168. end
  169.  
  170. % Давление полного торможения
  171. function [p_0] = Pressure_Full_Brake(p, k, M)
  172.     p_0 = p * (1 + (k - 1) / 2 * M^2)^(k / (k - 1));
  173. end
  174.  
  175. % Плотность полного торможения
  176. function [rho_0] = Density_Full_Brake(rho, k, M)
  177.     rho_0 = rho * (1 + (k - 1) / 2 * M^2)^(1 / (k - 1));
  178. end
  179.  
  180. % Температура полного торможения
  181. function [T_0] = Temperature_Full_Brake(T, k, M)
  182.     T_0 = T * (1 + (k - 1) / 2 * M^2);
  183. end
  184.  
  185. % Фиктивный угол омега
  186. function [omega] = Fictious_Angle_Omega(k, M)
  187.     omega = sqrt((k + 1) / (k - 1)) * atan(sqrt((k - 1) / (k + 1) * (M^2 - 1))) - ...
  188.         atan(sqrt(M^2 - 1));
  189. end
  190.  
  191. % Числа Маха в областях 3, 4 через omega_3 и omega_4
  192. function [Mach] = Mach_Through_Omega(k, omega_3_4, M_1_2)
  193.     myfun = @(M)(omega_3_4 - Fictious_Angle_Omega(k, M));
  194.     Mach = fsolve(myfun, M_1_2);
  195. end
  196.  
  197. % Давление в 3й и 4й области
  198. function [p] = Pressure_Behind_PM(p_0, k, M)
  199.     p = p_0 * (1 + (k - 1) / 2 * M^2)^(-k / (k - 1));
  200. end
  201.  
  202. % Плотность в 3й и 4й области
  203. function [rho] = Density_Behind_PM(rho_0, k, M)
  204.     rho = rho_0 * (1 + (k - 1) / 2 * M^2)^(-1 / (k - 1));
  205. end
  206.  
  207. % Температура в 3й и 4й области
  208. function [T] = Temperature_Behind_PM(T_0, k, M)
  209.     T = T_0 * (1 + (k - 1) / 2 * M^2)^(-1);
  210. end
  211.  
  212. % Функция вычисления углов СУ в 5й и 6й области
  213. function [theta_5, theta_6, delta] = Find_Theta_Delta_Bottom(k, M_3, M_4, p_3, p_4, beta_k_deg)
  214.  
  215.     % Пусть x = [x(1) -> theta_5, x(2) -> theta_6, x(3) -> delta]
  216.     System_Of_Equations = @(x) [x(1) - findThetaShockWave(k, M_3, beta_k_deg - x(3));
  217.                                 x(2) - findThetaShockWave(k, M_4, beta_k_deg + x(3));
  218.                                 Pressure_Behind_SW(p_3, k, M_3, x(1)) - Pressure_Behind_SW(p_4, k, M_4, x(2))];
  219.     % Решение системы уравнений
  220.     solution = fsolve(System_Of_Equations, [0, 0, 0]);
  221.  
  222.     theta_5 = solution(1);
  223.     theta_6 = solution(2);
  224.     delta   = solution(3);
  225. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement