Advertisement
MI5TONER

Untitled

Nov 1st, 2023
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 27.43 KB | None | 0 0
  1. import numpy as np
  2. from scipy.optimize import fsolve
  3. from scipy.optimize import root
  4. from functions import atmosphere as atm
  5. import data as d
  6. from openpyxl import Workbook
  7. import datetime
  8.  
  9.  
  10. # Функции для решения
  11. def findShockWaveAngle(betta: float) -> float:  # Функция поиска угла скачка уплотнения
  12.  
  13.     def ugol_SY(tettac, betta):  # Трансцендентное уравнение
  14.         return np.tan(tettac) / np.tan(tettac - betta) - ((k + 1) * M ** 2 * (np.sin(tettac)) ** 2) / (
  15.                     2 + (k - 1) * M ** 2 * (np.sin(tettac)) ** 2)
  16.  
  17.     # Генератор листа численных решений функции, с шагом 0.1. Решение находится 50 раз. Округление до 4 знаков после запятой
  18.     res = [round(root(ugol_SY, x0=i * 0.1, args=(betta)).x[0], 4) for i in range(50)]
  19.  
  20.     # Удалены повторяющиеся, отсортировано по возрастанию
  21.     listRoots = sorted(list(set(res)))
  22.  
  23.     #print(res) # Раскомментировать, чтобы посмотреть вывод всех корней
  24.     # Поиск наименьшего положительного корня
  25.     closestRoot = None
  26.     for listRoot in listRoots:
  27.         if listRoot > 0 and (closestRoot is None or listRoot < closestRoot):
  28.             closestRoot = listRoot
  29.     shockWaweAngle = closestRoot
  30.     return shockWaweAngle  # Угол СУ
  31. def findFictitiousAngle (M: float) -> float:  # Функция поиска фиктивного угла
  32.     FictitiousAngle = np.sqrt((k + 1) / (k - 1)) * np.arctan(np.sqrt(((k - 1) * (M ** 2 - 1)) / (k + 1))) - np.arctan(np.sqrt(M ** 2 - 1))
  33.     return FictitiousAngle  # Фиктивный угол
  34. def findMachThroughFictitiousAngle(w: float) -> float:  # Функция поиска Маха, через фиктивный угол
  35.  
  36.     def phiktivnyi_u(M, w) -> float:  # Трансцендентное уравнение
  37.         return np.sqrt((k + 1) / (k - 1)) * np.arctan(np.sqrt(((k - 1) * (M ** 2 - 1)) / (k + 1))) - np.arctan(np.sqrt(M ** 2 - 1)) - w
  38.  
  39.     # Генератор листа численных решений функции, с шагом 0.1. Решение находится 50 раз. Округление до 4 знаков после запятой
  40.     res = [round(root(phiktivnyi_u, x0=i * 1, args=(w)).x[0], 4) for i in range(50)]
  41.  
  42.     # Удалены повторяющиеся, отсортировано по возрастанию
  43.     listRoots = sorted(list(set(res)))
  44.  
  45.     #print(res) # Раскомментировать, чтобы посмотреть вывод всех корней
  46.     # Поиск наименьшего положительного корня
  47.     closestRoot = None
  48.     for listRoot in listRoots:
  49.         if listRoot > 0 and (closestRoot is None or listRoot < closestRoot):
  50.             closestRoot = listRoot
  51.     Mach = closestRoot
  52.     return Mach  # Мах
  53. def findDeflectionAngle(p): # Функция поиска углов СУ 5 и 6, и угла отклонения
  54.     tettac5,tettac6,delta = p
  55.     return (
  56.         np.tan(tettac5) / np.tan(tettac5 - betta - delta) - ((k + 1) * M3 ** 2 * (np.sin(tettac5)) ** 2) / (2 + (k - 1) * M3 ** 2 * (np.sin(tettac5)) ** 2),
  57.         np.tan(tettac6) / np.tan(tettac6 - betta + delta) - ((k + 1) * M4 ** 2 * (np.sin(tettac6)) ** 2) / (2 + (k - 1) * M4 ** 2 * (np.sin(tettac6)) ** 2),
  58.         p3 * ((2 * k * M3**2 * np.sin(tettac5)**2 - (k-1))/(k+1)) - p4 * ((2 * k * M4**2 * np.sin(tettac6)**2 - (k-1))/(k+1))
  59.         )
  60. def LongitudinalAndNormalForces(pi: float) -> float:  # Функция поиска продольной и нормальной сил
  61.     X = (pi - p) * (c / 2)
  62.     Y = (pi - p) * (b / 2)
  63.     return X, Y # Продольная и нормальная силы
  64.  
  65. # ПС
  66. def CriticalReynoldsNumber(Tr, M):
  67.     Tst_otn = Tst / Tr  # Относительная температура стенки
  68.     x = (Tst_otn - 1) / M ** 2
  69.     y = 1 - 16 * x - 412.5 * x**2 - 35000 * x**3 - 375000 * x**4
  70.     return criticalReynoldsNumber * y
  71.  
  72. def SpecificHeat_Cp(T: float) -> float:  # Функция поиска удельной теплоемкости
  73.     return Cp * (T/T0[0]) ** fi  # Удельная теплоемкость
  74. def DynamicViscosity_mu(T: float) -> float:  # Функция поиска динамической вязкости
  75.     return mu * (T/T0[0]) ** n  # Динамическая вязкость
  76. def CoeffThermalConductivity_Lambda(T: float) -> float:  # Функция поиска коэффициента теплопроводности
  77.     return Lambda * (T/T0[1]) ** z  # Коэффициент теплопроводности
  78. def  findPressureCoefficient (pi: float) -> float: # Функция поиска коэффициента давления
  79.     return (pi - p) / q # Коэффициент давления
  80.  
  81. def findDefiningTemperature (lam_or_turb: float,T: float, M: float) -> float: # Функция поика температуры восстановления и определяющей температуры
  82.     T_z = 10 ** 6
  83.     T_z_previous = 0
  84.     rl = 0.83
  85.     rt = 0.88
  86.     stepen = 0.5
  87.     r = rl
  88.     if (lam_or_turb == 1):
  89.         stepen = 1 / 3
  90.         r = rt
  91.     while abs(T_z - T_z_previous) > (T_z * 0.01):
  92.         T_z_previous = T_z
  93.         Tr = T * (1 + r * (k - 1) * 0.5 * M ** 2)
  94.         T_z = 0.5 * (Tst + T) + 0.22 * (Tr - T)
  95.         Cpi = SpecificHeat_Cp(T_z)
  96.         mui = DynamicViscosity_mu(T_z)
  97.         Lambdai = CoeffThermalConductivity_Lambda(T_z)
  98.         Prl = Cpi * mui / Lambdai
  99.         r = Prl ** stepen
  100.     return Tr, T_z
  101.  
  102.  
  103. # Параметры потока в скачках уплотнения
  104. def findFlowParameterPressure(p: float, M: float, tettac: float) -> float:  # Функция поиска давления
  105.     FlowParameterPressure = p * ((2 * k * M**2 * np.sin(tettac)**2 - (k-1))/(k+1))
  106.     return FlowParameterPressure  # Давление области
  107. def findFlowParameterDensity(ro: float, M: float,tettac: float) -> float:  # Функция поиска плотности
  108.     FlowParameterDensity = (ro * (k+1) * M**2 * np.sin(tettac)**2)/(2 + ((k-1) * M**2 * np.sin(tettac)**2))
  109.     return FlowParameterDensity  # Плотность области
  110. def findFlowParameterTemperature(T: float, p: float, ro: float, pi: float, roi: float) -> float: # Функция поиска температуры
  111.     FlowParameterTemperature = (T * pi * ro)/(p * roi)
  112.     return FlowParameterTemperature  # Температура области
  113. def findFlowParameterVelocity(V: float, betta: float, tettac: float) -> float: # Функция поиска скорости
  114.     FlowParameterVelocity = (V * np.cos(tettac))/(np.cos(tettac-betta))
  115.     return FlowParameterVelocity  # Скорость области
  116. def findFlowParameterАcceleration(T: float) -> float: # Функция поиска скорости
  117.     FlowParameterАcceleration = np.sqrt(k * R * T)
  118.     return FlowParameterАcceleration  # Скорость области
  119. def findFlowParameterMach(V: float, a: float) -> float: # Функция поиска маха
  120.     FlowParameterMach = V / a
  121.     return FlowParameterMach  # Число маха области
  122.  
  123. # Параметры торможения
  124. def findBrakingParameterPressure(p: float,M: float) -> float:  # Функция поиска давления торможения
  125.     BrakingParameterPressure = p * (((k - 1) * M ** 2) / 2 + 1) ** (k / (k - 1))
  126.     return BrakingParameterPressure  # Давление торможения
  127. def findBrakingParameterDensity(ro: float, M: float) -> float:  # Функция поиска плотности торможения
  128.      BrakingParameterDensity = ro * (((k - 1) * M ** 2) / 2 + 1) ** (1 / (k - 1))
  129.      return BrakingParameterDensity  # Плотность торможения
  130. def findBrakingParameterTemperature(T: float, M: float) -> float:  # Функция поиска температуры торможения
  131.     BrakingParameterTemperature = T * (((k - 1) * M ** 2) / 2 + 1)
  132.     return BrakingParameterTemperature  # Температура торможения
  133.  
  134. # Получение данных из data.py
  135. M = d.M
  136. alfa = (d.alfaDegrees * np.pi) / 180
  137. betta = d.betta
  138. b = d.chordLength
  139. c = d.profileThickness
  140. L = np.sqrt((c / 2) ** 2 + (b / 2) ** 2)  # длина грани в м
  141. h = d.h
  142. Tst = d.TempCooledWall
  143. criticalReynoldsNumber = d.criticalReynoldsNumber
  144. R = d.R
  145. fi = d.fi
  146. n = d.n
  147. z = d.z
  148. T0 = d.T0
  149. Cp = d.Cp
  150. mu = d.mu
  151. Lambda = d.Lambda
  152.  
  153. # Получение данных из atmosphere.py
  154. H = atm.geopotencial_v()
  155. g = atm.yskorenie_s_p()
  156. T = atm.temperatura()
  157. p = atm.davlenie()
  158. ro = atm.plotnost()
  159. a = atm.skorost_z()
  160.  
  161. V = a * M  # Скорость потока
  162.  
  163. # \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 1 и 2 области \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  164.  
  165. # Углы отклонения потока
  166. betta1 = betta - alfa
  167. betta2 = betta + alfa
  168. # Поиск углов СУ
  169. k = 1.4
  170. tettac1 = findShockWaveAngle(betta1)
  171. tettac2 = findShockWaveAngle(betta2)
  172. # Определяем параметры потока в скачках уплотнения
  173. p1 = findFlowParameterPressure(p,M,tettac1)
  174. p2 = findFlowParameterPressure(p,M,tettac2)
  175. ro1 = findFlowParameterDensity(ro,M,tettac1)
  176. ro2 = findFlowParameterDensity(ro,M,tettac2)
  177. T1 = findFlowParameterTemperature(T,p,ro,p1,ro1)
  178. T2 = findFlowParameterTemperature(T,p,ro,p2,ro2)
  179. V1 = findFlowParameterVelocity(V,betta1,tettac1)
  180. V2 = findFlowParameterVelocity(V,betta2,tettac2)
  181. a1 = findFlowParameterАcceleration(T1)
  182. a2 = findFlowParameterАcceleration(T2)
  183. M1 = findFlowParameterMach(V1, a1)
  184. my1 = np.arcsin(1/M1)
  185. M2 = findFlowParameterMach(V2, a2)
  186. my2 = np.arcsin(1/M2)
  187. # Определяем параметры торможения для участка
  188. p01 = findBrakingParameterPressure(p1,M1)
  189. p02 = findBrakingParameterPressure(p2,M2)
  190. ro01 = findBrakingParameterDensity(ro1,M1)
  191. ro02 = findBrakingParameterDensity(ro2,M2)
  192. T01 = findBrakingParameterTemperature(T1,M1)
  193. T02 = findBrakingParameterTemperature(T2,M2)
  194.  
  195. # \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 3 и 4 области \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  196.  
  197. # Прямая задача течения Прандтля – Майера
  198. betta3 = 2 * betta
  199. betta4 = 2 * betta
  200. # Фиктивные углы и Мах
  201. w1 = findFictitiousAngle(M1)
  202. w3 = w1 + betta3
  203. w2 = findFictitiousAngle(M2)
  204. w4 = w2 + betta4
  205. M3 = findMachThroughFictitiousAngle(w3)
  206. my3 = np.arcsin(1/M3)
  207. M4 = findMachThroughFictitiousAngle(w4)
  208. my4 = np.arcsin(1/M4)
  209. # Поскольку поток является невязким, давление, плотность и температура торможения в областях 1 и 3 (2 и 4) равны
  210. p03 = p01
  211. p04 = p02
  212. ro03 = ro01
  213. ro04 = ro02
  214. T03 = T01
  215. T04 = T02
  216. # Найдем параметры потока
  217. p3 = 1 / findBrakingParameterPressure(1/p03,M3) # 1/х используется, для поиска давления, но по формуле давления торможения
  218. p4 = 1 / findBrakingParameterPressure(1/p04,M4)
  219. ro3 = 1 / findBrakingParameterDensity(1/ro03,M3)
  220. ro4 = 1 / findBrakingParameterDensity(1/ro04,M4)
  221. T3 = 1 / findBrakingParameterTemperature(1/T01,M3)
  222. T4 = 1 / findBrakingParameterTemperature(1/T02,M4)
  223. a3 = findFlowParameterАcceleration(T3)
  224. a4 = findFlowParameterАcceleration(T4)
  225. V3 = findFlowParameterMach(M3, 1/a3) # используя формулу Маха, найдем скорость
  226. V4 = findFlowParameterMach(M4, 1/a4)
  227.  
  228. # \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 5 и 6 области \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  229.  
  230. t1, t2, u = 0.3, 0.3, 0.17 # Начальные приближенные значение
  231. tettac5,tettac6,delta = fsolve(findDeflectionAngle, (t1, t2, u))
  232. betta5 = betta + delta
  233. betta6 = betta - delta
  234. # Определяем параметры потока в скачках уплотнения
  235. p5 = findFlowParameterPressure(p3,M3,tettac5)
  236. p6 = findFlowParameterPressure(p4,M4,tettac6)
  237. V5 = findFlowParameterVelocity(V3,betta5,tettac5)
  238. V6 = findFlowParameterVelocity(V4,betta6,tettac6)
  239. ro5 = findFlowParameterDensity(ro3,M3,tettac5)
  240. ro6 = findFlowParameterDensity(ro4,M4,tettac6)
  241. T5 = findFlowParameterTemperature(T3,p3,ro3,p5,ro5)
  242. T6 = findFlowParameterTemperature(T4,p4,ro4,p6,ro6)
  243. a5 = findFlowParameterАcceleration(T5)
  244. a6 = findFlowParameterАcceleration(T6)
  245. M5 = findFlowParameterMach(V5, a5)
  246. M6 = findFlowParameterMach(V6, a6)
  247. # Определяем параметры торможения для участка
  248. p05 = findBrakingParameterPressure(p5,M5)
  249. p06 = findBrakingParameterPressure(p6,M6)
  250. ro05 = findBrakingParameterDensity(ro5,M5)
  251. ro06 = findBrakingParameterDensity(ro6,M6)
  252. T05 = findBrakingParameterTemperature(T5,M5)
  253. T06 = findBrakingParameterTemperature(T6,M6)
  254.  
  255. # \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ АД коэффициенты \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  256.  
  257. # Скоростной напор
  258. q = (ro * V ** 2) / 2
  259.  
  260. # Коэффициенты давления
  261. p_1 = findPressureCoefficient(p1)
  262. p_2 = findPressureCoefficient(p2)
  263. p_3 = findPressureCoefficient(p3)
  264. p_4 = findPressureCoefficient(p4)
  265.  
  266. # Продольные и нормальные силы
  267. X1, Y1 = LongitudinalAndNormalForces(p1)
  268. X2, Y2 = LongitudinalAndNormalForces(p2)
  269. X3, Y3 = LongitudinalAndNormalForces(p3)
  270. X4, Y4 = LongitudinalAndNormalForces(p4)
  271.  
  272. # АД коэффициенты
  273. Cx = (X1 + X2 - X3 - X4) / (b * q)
  274. Cy = (-Y1 + Y2 - Y3 + Y4) / (b * q)
  275. mz1 = Y1 * (b / 4) + X1 * (c / 4)
  276. mz2 = - Y2 * (b / 4) - X2 * (c / 4)
  277. mz3 = Y3 * (3 * b / 4) - X3 * (c / 4)
  278. mz4 = - Y4 * (3 * b / 4) + X4 * (c / 4)
  279. mz = (mz1 + mz2 + mz3 + mz4) / (q * b ** 2) # характерная площадь S = 1 * b
  280. Cya = Cy * np.cos(alfa) - Cx * np.sin(alfa)
  281. Cxa = Cy * np.sin(alfa) + Cx * np.cos(alfa)
  282. K = Cya / Cxa
  283. Cd = - (mz / Cy)
  284.  
  285. # \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Пограничный слой \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  286.  
  287. # Удельная теплоемкость
  288. Cp0 = SpecificHeat_Cp(T)
  289. Cp1 = SpecificHeat_Cp(T1)
  290. Cp2 = SpecificHeat_Cp(T2)
  291. Cp3 = SpecificHeat_Cp(T3)
  292. Cp4 = SpecificHeat_Cp(T4)
  293. Cp5 = SpecificHeat_Cp(T5)
  294. Cp6 = SpecificHeat_Cp(T6)
  295.  
  296. # Динамическая вязкость
  297. mu0 = DynamicViscosity_mu(T)
  298. mu1 = DynamicViscosity_mu(T1)
  299. mu2 = DynamicViscosity_mu(T2)
  300. mu3 = DynamicViscosity_mu(T3)
  301. mu4 = DynamicViscosity_mu(T4)
  302. mu5 = DynamicViscosity_mu(T5)
  303. mu6 = DynamicViscosity_mu(T6)
  304.  
  305. # Коэффициент теплопроводности
  306. Lambda0 = CoeffThermalConductivity_Lambda(T)
  307. Lambda1 = CoeffThermalConductivity_Lambda(T1)
  308. Lambda2 = CoeffThermalConductivity_Lambda(T2)
  309. Lambda3 = CoeffThermalConductivity_Lambda(T3)
  310. Lambda4 = CoeffThermalConductivity_Lambda(T4)
  311. Lambda5 = CoeffThermalConductivity_Lambda(T5)
  312. Lambda6 = CoeffThermalConductivity_Lambda(T6)
  313.  
  314. # Для граней 1-4 температура восстановления и определяющая температура
  315. l = 0
  316. t = 1
  317. Trl1, Tl1_z = findDefiningTemperature(l,T1,M1)
  318. Trl2, Tl2_z = findDefiningTemperature(l,T2,M2)
  319. Trl3, Tl3_z = findDefiningTemperature(l,T3,M3)
  320. Trl4, Tl4_z = findDefiningTemperature(l,T4,M4)
  321. Trt1, Tt1_z = findDefiningTemperature(t,T1,M1)
  322. Trt2, Tt2_z = findDefiningTemperature(t,T2,M2)
  323. Trt3, Tt3_z = findDefiningTemperature(t,T3,M3)
  324. Trt4, Tt4_z = findDefiningTemperature(t,T4,M4)
  325.  
  326. # Критические числа Рейнольдса для 1 и 2 грани
  327. Re_kr1 = CriticalReynoldsNumber(Trl1, M1)
  328. Re_kr2 = CriticalReynoldsNumber(Trl2, M2)
  329.  
  330. # Координаты точек перехода
  331. x_kr1 = Re_kr1 * mu1 / (V1 * ro1)
  332. x_kr2 = Re_kr2 * mu2 / (V2 * ro2)
  333.  
  334.  
  335. #Вывод в эксель
  336.  
  337. wb = Workbook()
  338. ws = wb.active
  339. ws.append(['','№ области','betta, град','tettac, град','M, [-]','p, 10^4 Па','p0, 10^7  Па','ro, 10^-1 кг/м^3','ro0, 10^1 кг/м^3','T, 10^2 K','T0, 10^3 K', 'V, 10^3 м/с', 'a, 10^2 м/с'])
  340. ws['A1'] = datetime.datetime.now()
  341. ws.append(['', 1,round(betta1*180/np.pi,3),round(tettac1*180/np.pi,3),round(M1,3),round(p1/10000,3),round(p01/10000000,3),round(ro1*10,3),round(ro01/10,3),round(T1/100,3),round(T01/1000,3),round(V1/1000,3),round(a1/100,3)])
  342. ws['A2'] = datetime.datetime.now()
  343. ws.append(['', 2,round(betta2*180/np.pi,3),round(tettac2*180/np.pi,3),round(M2,3),round(p2/10000,3),round(p02/10000000,3),round(ro2*10,3),round(ro02/10,3),round(T2/100,3),round(T02/1000,3),round(V2/1000,3),round(a2/100,3)])
  344. ws['A3'] = datetime.datetime.now()
  345. ws.append(['', 3,round(betta3*180/np.pi,3),"-",round(M3,3),round(p3/10000,3),round(p03/10000000,3),round(ro3*10,3),round(ro03/10,3),round(T3/100,3),round(T03/1000,3),round(V3/1000,3),round(a3/100,3)])
  346. ws['A4'] = datetime.datetime.now()
  347. ws.append(['', 4,round(betta4*180/np.pi,3),"-",round(M4,3),round(p4/10000,3),round(p04/10000000,3),round(ro4*10,3),round(ro04/10,3),round(T4/100,3),round(T04/1000,3),round(V4/1000,3),round(a4/100,3)])
  348. ws['A5'] = datetime.datetime.now()
  349. ws.append(['', 5,round(betta5*180/np.pi,3),round(tettac5*180/np.pi,3),round(M5,3),round(p5/10000,3),round(p05/10000000,3),round(ro5*10,3),round(ro05/10,3),round(T5/100,3),round(T05/1000,3),round(V5/1000,3),round(a5/100,3)])
  350. ws['A6'] = datetime.datetime.now()
  351. ws.append(['', 6,round(betta6*180/np.pi,3),round(tettac6*180/np.pi,3),round(M6,3),round(p6/10000,3),round(p06/10000000,3),round(ro6*10,3),round(ro06/10,3),round(T6/100,3),round(T06/1000,3),round(V6/1000,3),round(a6/100,3)])
  352. ws['A8'] = datetime.datetime.now()
  353. ws.append(['', '№ области','Cp, 10^2 Дж*К/кг','mu, 10^-5 Па*с','lambda, 10^-2 Вт*К/м', '','№ области','Tr(л), 10^3 К', 'T_z(л), 10^2 К', 'Tr(т), 10^3 К', 'T_z(т), 10^2 К'])
  354. ws['A9'] = datetime.datetime.now()
  355. ws.append(['',1, round(Cp1/100,3), round(mu1*100000,3), round(Lambda1*100,3),'', 1,round(Trl1/1000,3), round(Tl1_z/100,3), round(Trt1/1000,3), round(Tt1_z/100,3)])
  356. ws['A10'] = datetime.datetime.now()
  357. ws.append(['',2, round(Cp2/100,3), round(mu2*100000,3), round(Lambda2*100,3),'', 2,round(Trl2/1000,3), round(Tl2_z/100,3), round(Trt2/1000,3), round(Tt2_z/100,3)])
  358. ws['A11'] = datetime.datetime.now()
  359. ws.append(['',3, round(Cp3/100,3), round(mu3*100000,3), round(Lambda3*100,3),'', 3,round(Trl3/1000,3), round(Tl3_z/100,3), round(Trt3/1000,3), round(Tt3_z/100,3)])
  360. ws['A12'] = datetime.datetime.now()
  361. ws.append(['',4, round(Cp4/100,3), round(mu4*100000,3), round(Lambda4*100,3),'', 4,round(Trl4/1000,3), round(Tl4_z/100,3), round(Trt4/1000,3), round(Tt4_z/100,3)])
  362. ws['A14'] = datetime.datetime.now()
  363. ws.append(['', 'Cy, 10^-2', 'Cx, 10^-3', 'mz, 10^-2', 'Cya, 10^2', 'Cxa, 10^3', 'Cд', 'K'])
  364. ws['A15'] = datetime.datetime.now()
  365. ws.append(['', round(Cy*100,3), round(Cx*1000,3), round(mz*100,3), round(Cya*100,3), round(Cxa*1000,3), round(Cd,3), round(K,3)])
  366. ws['A17'] = datetime.datetime.now()
  367. ws.append(['','№ области', 'Reкрит, 10^6', 'Xкрит, 10^-1'])
  368. ws['A18'] = datetime.datetime.now()
  369. ws.append(['', 1, round(Re_kr1/1000000,3), round(x_kr1*10,3)])
  370. ws['A19'] = datetime.datetime.now()
  371. ws.append(['', 2, round(Re_kr2/1000000,3), round(x_kr2*10,3)])
  372. wb.save("sample.xlsx")
  373.  
  374.  
  375. atm.vivod()
  376. print("Угол бетта: " + str(round(betta,3))+ ' рад; '+ str(round((betta*180)/np.pi,2))+ ' град')
  377. print("Угол альфа: " + str(round(alfa,3))+ ' рад; '+ str(round((alfa*180)/np.pi,2100))+ ' град')
  378. print("Угол бетта1: " + str(round(betta1,3))+ ' рад; '+ str(round((betta1*180)/np.pi,2))+ ' град')
  379. print("Угол бетта2: " + str(round(betta2,3))+ ' рад; '+ str(round((betta2*180)/np.pi,2))+ ' град')
  380. print("Угол теттац1: " + str(round(tettac1,3))+ ' рад; '+ str(round((tettac1*180)/np.pi,2))+ ' град')
  381. print("Угол теттац2: " + str(round(tettac2,3))+ ' рад; '+ str(round((tettac2*180)/np.pi,2))+ ' град')
  382. print("Давление 1 области: " + str(round(p1/10000,3)) + ' * 10^4 Па')
  383. print("Давление 2 области: " + str(round(p2/10000,3)) + ' * 10^4'+' Па')
  384. print("Плотность 1 области: " + str(round(ro1*10,3))+' * 10^-1 кг/м^3')
  385. print("Плотность 2 области: " + str(round(ro2*10,3))+' * 10^-1 кг/м^3')
  386. print("Температура 1 области: " + str(round(T1/100,3)) + ' * 10^2 K')
  387. print("Температура 2 области: " + str(round(T2/100,3)) + ' * 10^2 K')
  388. print("Скорость 1 области: " + str(round(V1/1000,3)) + ' * 10^3 м/с')
  389. print("Скорость 2 области: " + str(round(V2/1000,3)) + ' * 10^3 м/с')
  390. print("Скорость звука 1 области: " + str(round(a1/100,3))+' * 10^2 м/с')
  391. print("Скорость звука 2 области: " + str(round(a2/100,3))+' * 10^2 м/с')
  392. print("Число Маха 1 области: " + str(round(M1,3)))
  393. print("Число Маха 2 области: " + str(round(M2,3)))
  394. print("Давление торможения 1 области: " + str(round(p01/10000000,3)) + ' * 10^7  Па')
  395. print("Давление торможения 2 области: " + str(round(p02/10000000,3)) + ' * 10^7'+' Па')
  396. print("Плотность торможения 1 области: " + str(round(ro01/10,3))+' * 10^1'+' кг/м^3')
  397. print("Плотность торможения 2 области: " + str(round(ro02/10,3))+' * 10^1'+' кг/м^3')
  398. print("Температура торможения 1 области: " + str(round(T01/1000,3)) + ' * 10^3 K')
  399. print("Температура торможения 2 области: " + str(round(T02/1000,3)) + ' * 10^3 K')
  400. print("Угол бетта3: " + str(round(betta3,3))+ ' рад; '+ str(round((betta3*180)/np.pi,2))+ ' град')
  401. print("Угол бетта4: " + str(round(betta4,3))+ ' рад; '+ str(round((betta4*180)/np.pi,2))+ ' град')
  402. print("Фиктивный угол 1: " + str(round(w1,3))+ ' рад; '+ str(round((w1*180)/np.pi,2))+ ' град')
  403. print("Фиктивный угол 2: " + str(round(w2,3))+ ' рад; '+ str(round((w2*180)/np.pi,2))+ ' град')
  404. print("Фиктивный угол 3: " + str(round(w3,3))+ ' рад; '+ str(round((w3*180)/np.pi,2))+ ' град')
  405. print("Фиктивный угол 4: " + str(round(w4,3))+ ' рад; '+ str(round((w4*180)/np.pi,2))+ ' град')
  406. print("Число Маха 3 области: " + str(round(M3,3)))
  407. print("Число Маха 4 области: " + str(round(M4,3)))
  408. print("Давление торможения 3 области: " + str(round(p03/10000000,3)) + ' * 10^7'+' Па')
  409. print("Давление торможения 4 области: " + str(round(p04/10000000,3)) + ' * 10^7'+' Па')
  410. print("Плотность торможения 3 области: " + str(round(ro03/10,3))+' * 10^1'+' кг/м^3')
  411. print("Плотность торможения 4 области: " + str(round(ro04/10,3))+' * 10^1'+' кг/м^3')
  412. print("Температура торможения 3 области: " + str(round(T03/1000,3)) + ' * 10^3 K')
  413. print("Температура торможения 4 области: " + str(round(T04/1000,3)) + ' * 10^3 K')
  414. print("Давление 3 области: " + str(round(p3/1000,3)) + ' * 10^3'+' Па')
  415. print("Давление 4 области: " + str(round(p4/1000,3)) + ' * 10^3'+' Па')
  416. print("Плотность 3 области: " + str(round(ro3*100,3))+' * 10^-2'+' кг/м^3')
  417. print("Плотность 4 области: " + str(round(ro4*10,3))+' * 10^-1'+' кг/м^3')
  418. print("Температура 3 области: " + str(round(T3/100,3)) + ' * 10^2 K')
  419. print("Температура 4 области: " + str(round(T4/100,3)) + ' * 10^2 K')
  420. print("Скорость звука 3 области: " + str(round(a3/100,3))+' * 10^2 м/с')
  421. print("Скорость звука 4 области: " + str(round(a4/100,3))+' * 10^2 м/с')
  422. print("Скорость 3 области: " + str(round(V3/1000,3)) + ' * 10^3 м/с')
  423. print("Скорость 4 области: " + str(round(V4/1000,3)) + ' * 10^3 м/с')
  424. print("Давление 5 области: " + str(round(p5 / 10000, 3)) + ' * 10^4' + ' Па')
  425. print("Давление 6 области: " + str(round(p6 / 10000, 3)) + ' * 10^4' + ' Па')
  426. print("Угол теттац5: " + str(round(tettac5,3))+ ' рад; '+ str(round((tettac5*180)/np.pi,2))+ ' град')
  427. print("Угол теттац6: " + str(round(tettac6,3))+ ' рад; '+ str(round((tettac6*180)/np.pi,2))+ ' град')
  428. print("Угол отклонения: " + str(round(delta,3))+ ' рад; '+ str(round((delta*180)/np.pi,2))+ ' град')
  429. print("Угол бетта5: " + str(round(betta5,3))+ ' рад; '+ str(round((betta5*180)/np.pi,2))+ ' град')
  430. print("Угол бетта6: " + str(round(betta6,3))+ ' рад; '+ str(round((betta6*180)/np.pi,2))+ ' град')
  431. print("Плотность 5 области: " + str(round(ro5*10,3))+' * 10^-1'+' кг/м^3')
  432. print("Плотность 6 области: " + str(round(ro6*10,3))+' * 10^-1'+' кг/м^3')
  433. print("Температура 5 области: " + str(round(T5/100,3)) + ' * 10^2 K')
  434. print("Температура 6 области: " + str(round(T6/100,3)) + ' * 10^2 K')
  435. print("Скорость 5 области: " + str(round(V5/1000,3)) + ' * 10^3 м/с')
  436. print("Скорость 6 области: " + str(round(V6/1000,3)) + ' * 10^3 м/с')
  437. print("Скорость звука 5 области: " + str(round(a5/100,3))+' * 10^2 м/с')
  438. print("Скорость звука 6 области: " + str(round(a6/100,3))+' * 10^2 м/с')
  439. print("Число Маха 5 области: " + str(round(M5,3)))
  440. print("Число Маха 6 области: " + str(round(M6,3)))
  441. print("Давление торможения 5 области: " + str(round(p05/10000000,3)) + ' * 10^7'+' Па')
  442. print("Давление торможения 6 области: " + str(round(p06/10000000,3)) + ' * 10^7'+' Па')
  443. print("Плотность торможения 5 области: " + str(round(ro05/10,3))+' * 10^1'+' кг/м^3')
  444. print("Плотность торможения 6 области: " + str(round(ro06/10,3))+' * 10^1'+' кг/м^3')
  445. print("Температура торможения 5 области: " + str(round(T05/1000,3)) + ' * 10^3 K')
  446. print("Температура торможения 6 области: " + str(round(T06/1000,3)) + ' * 10^3 K')
  447. print("Угол мю1: " + str(round(my1,3))+ ' рад; '+ str(round((my1*180)/np.pi,2))+ ' град')
  448. print("Угол мю2: " + str(round(my2,3))+ ' рад; '+ str(round((my2*180)/np.pi,2))+ ' град')
  449. print("Угол мю3: " + str(round(my3,3))+ ' рад; '+ str(round((my3*180)/np.pi,2))+ ' град')
  450. print("Угол мю4: " + str(round(my4,3))+ ' рад; '+ str(round((my4*180)/np.pi,2))+ ' град')
  451.  
  452. print([betta1*180/np.pi,tettac1*180/np.pi,M1,p1,p01,ro1,ro01,T1,T01,V1,a1])
  453. print([betta2*180/np.pi,tettac2*180/np.pi,M2,p2,p02,ro2,ro02,T2,T02,V2,a2])
  454. print([betta3*180/np.pi,"-",M3,p3,p03,ro3,ro03,T3,T03,V3,a3])
  455. print([betta4*180/np.pi,"-",M4,p4,p04,ro4,ro04,T4,T04,V4,a4])
  456. print([betta5*180/np.pi,tettac5*180/np.pi,M5,p5,p05,ro5,ro05,T5,T05,V5,a5])
  457. print([betta6*180/np.pi,tettac6*180/np.pi,M6,p6,p06,ro6,ro06,T6,T06,V6,a6])
  458.  
  459. print(Cp1,Cp2,Cp3,Cp4)
  460. print(mu1,mu2,mu3,mu4)
  461. print(Lambda1,Lambda2,Lambda3,Lambda4)
  462.  
  463. print(Cy)
  464. print(Cx)
  465. print(mz)
  466. print(Cya)
  467. print(Cxa)
  468. print(K)
  469. print(Cd)
  470.  
  471. print([Trl1, Tl1_z, Trt1, Tt1_z])
  472. print([Trl2, Tl2_z, Trt2, Tt2_z])
  473. print([Trl3, Tl3_z, Trt3, Tt3_z])
  474. print([Trl4, Tl4_z, Trt4, Tt4_z])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement