diff --git a/FluidSim/LatticeBoltzmann.py b/FluidSim/LatticeBoltzmann.py index 07d5acb..3ed13d4 100644 --- a/FluidSim/LatticeBoltzmann.py +++ b/FluidSim/LatticeBoltzmann.py @@ -21,6 +21,9 @@ def main(): tau = 0.6 # collision timescale Nt = 80000 # number of timesteps plotRealTime = True # switch on for plotting as the simulation goes along + render_frequency = 10 + close_up_frequency = 10 + friction = 0.0001 params = FluidSimParameter(Ny) # params = WaterParameter(Ny) @@ -180,6 +183,8 @@ def main(): # uy += g / 2.0 # u_length = np.maximum(np.abs(ux), np.abs(uy)) + + # safe guard against supersonic streams WIP u_length1 = np.sqrt(np.square(ux) + np.square(uy1)) u_length2 = np.sqrt(np.square(ux) + np.square(uy2)) @@ -195,6 +200,11 @@ def main(): uy1 = (uy1 / u_max_length) * np.sqrt(2) uy2 = (uy2 / u_max_length) * np.sqrt(2) + # apply friction + ux *= (1 - friction) + uy1 *= (1 - friction) + uy2 *= (1 - friction) + print('max vector part: %f' % u_max_length) # ux /= u_max_length # uy /= u_max_length @@ -286,8 +296,10 @@ def main(): print('min Temp: %f' % np.min(np.sum(temperature, 2)[no_cylinder_mask])) print('max Temp: %f' % np.max(np.sum(temperature, 2))) + if it > render_frequency: + render_frequency = close_up_frequency # plot in real time - color 1/2 particles blue, other half red - if (plotRealTime and (it % 10) == 0) or (it == Nt - 1): + if (plotRealTime and (it % render_frequency) == 0) or (it == Nt - 1): fig.clear() plt.cla() ux[cylinder] = 0