Advertisement
Guest User

Untitled

a guest
Nov 24th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.44 KB | None | 0 0
  1. import math
  2.  
  3. # from matplotlib import pyplot as plt
  4.  
  5. class Cell(object):
  6.  
  7.     def __init__(self, *args):    # 0 - p; 1 - ro
  8.         self.p = args[0]
  9.         self.ro = args[1]
  10.         self.e = self.p / ((k - 1) * self.ro)
  11.         self.u_left = args[2]
  12.         self.u_right = args[2]
  13.         self.u = (self.u_left + self.u_right)/2
  14.         self.x_left = args[3]
  15.         self.x_right = args[3] + h
  16.         self.x = (self.x_left + self.x_right)/2
  17.         self.u = (self.u_right + self.u_left)/2
  18.         self.c = math.sqrt(k * (self.p / self.ro))
  19.  
  20.  
  21.     def next_cells(self, i, array):
  22.         if i == 0:
  23.             self.u_right = array[i].u_right - tau * S * (array[i + 1].p - array[i].p) / delta_m
  24.             self.u_left = 0.0
  25.         elif i == n-1:
  26.             self.u_left = array[i-1].u_right
  27.             self.u_right = array[i].u_right - tau * S * (p_atm - array[i].p )/((2 * mass_piston + delta_m)/2)
  28.         else:
  29.             self.u_left = array[i-1].u_right
  30.             self.u_right = array[i].u_right - tau * S * (array[i + 1].p - array[i].p) / delta_m
  31.         self.x_right = array[i].x_right + tau_half * array[i].u_right
  32.         self.x_left = array[i].x_left + tau_half * self.u_left
  33.         self.ro = delta_m / ((self.x_right - self.x_left) * S)
  34.         self.e = array[i].e - (tau_half * self.p * S * (self.u_right - self.u_left) / delta_m)
  35.         self.p = (k - 1) * self.e * self.ro
  36.         self.u = (self.u_right + self.u_left)/2
  37.         self.c = math.sqrt(k * (self.p / self.ro))
  38.         # self.tau =
  39.  
  40.  
  41. def ishod():
  42.     cl = [0] * n
  43.     for i in range(0, n):
  44.         xx = i * h
  45.         cl[i] = Cell(p0, ro0, u, xx)
  46.     return cl
  47.  
  48. def tau_halff(array):
  49.     mass = [0] * n
  50.     for i in range(0, n):
  51.         mass[i] = (array[i].x_right - array[i].x_left) / (math.fabs(array[i].u) + array[i].c)
  52.     return min(mass) * Ku
  53.  
  54. def main():
  55.     global tau_half, tau
  56.     A = ishod()
  57.     tau_half = tau_halff(A)
  58.     tau = h / A[0].c
  59.     while A[n-1].x_right <= L:
  60.         for i in range(0, n):
  61.             A[i].next_cells(i, A)
  62.         tau_buf = tau_half
  63.         tau_half = tau_halff(A)
  64.         tau = (tau_half + tau_buf)/2
  65.  
  66.  
  67.  
  68. R = 287.0
  69. p0 = 121.266e+05
  70. T = 344.0
  71. d = 0.176867
  72. ro0 = p0 / (R * T)
  73. u = 0.0
  74. k = 1.4
  75. L0 = 0.43486
  76. n = 100
  77. S = 23.0
  78. h = L0 / n
  79. L = 3.41972
  80. mass_piston = 0.533696
  81. Ku = 0.6
  82. p_atm = 101.325e+05
  83. time = 0
  84.  
  85. w = 0.0
  86. delta_m = ro0 * h / S
  87.  
  88. print(delta_m)
  89.  
  90. print(ishod())
  91.  
  92. B = main
  93. print(B)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement