def circle_sector_cavity_flow(N=40, num_timesteps=30, dt=0.1, angle=0.5 * np.pi): (X, Y) = get_circle_sector_grid(N, 0.0, angle, 0.2, 1.0) grid = MultiblockGrid([(X, Y)]) sbp = MultiblockSBP(grid, accuracy=2) initu, initv, initp = get_gauss_initial_data(X, Y, 0.4, 0.4) plt.quiver(X, Y, initu[0], initv[0]) plt.show() def spatial_op(state): S,J = euler_operator(sbp, state) + \ wall_operator(sbp, state, 0, 'w') + \ wall_operator(sbp, state, 0, 'e') + \ wall_operator(sbp, state, 0, 's') + \ wall_operator(sbp, state, 0, 'n') return S, J U, V, P = solve(grid, spatial_op, initu, initv, initp, dt, num_timesteps) return grid, U, V, P, dt
def bump_const_inflow_pressure_speed_outflow(Nx=49, Ny=17, num_timesteps=10, dt=0.1): X, Y = get_bump_grid(N) grid = MultiblockGrid([(X, Y)]) sbp = MultiblockSBP(grid, accuracy=2) initu = np.array([np.ones(X.shape)]) initv = np.array([np.zeros(X.shape)]) initp = np.array([np.ones(X.shape)]) plt.quiver(X, Y, initu[0], initv[0]) plt.show() def spatial_op(state): S,J = euler_operator(sbp, state) + \ inflow_operator(sbp, state, 0, 'w', -1, 0) + \ outflow_operator(sbp, state, 0, 'e') + \ wall_operator(sbp, state, 0, 's') + \ wall_operator(sbp, state, 0, 'n') return S, J U, V, P = solve(grid, spatial_op, initu, initv, initp, dt, num_timesteps) return grid, U, V, P, dt
def square_pressure_speed_outflow_everywhere(N=30, num_timesteps=10, dt=0.1): (X, Y) = np.meshgrid(np.linspace(0, 1, N), np.linspace(0, 1, N)) X = np.transpose(X) Y = np.transpose(Y) grid = MultiblockGrid([(X, Y)]) sbp = MultiblockSBP(grid, accuracy=2) initu, initv, initp = get_gauss_initial_data(X, Y, 0.5, 0.5) plt.quiver(X, Y, initu[0], initv[0]) plt.show() def spatial_op(state): S,J = euler_operator(sbp, state) + \ outflow_operator(sbp, state, 0, 'w') + \ outflow_operator(sbp, state, 0, 'e') + \ outflow_operator(sbp, state, 0, 's') + \ outflow_operator(sbp, state, 0, 'n') return S, J U, V, P = solve(grid, spatial_op, initu, initv, initp, dt, num_timesteps) return grid, U, V, P, dt
def bump_walls_and_pressure_speed_outflow(Nx=49, Ny=17, num_timesteps=10, dt=0.1): X, Y = get_bump_grid(N) grid = MultiblockGrid([(X, Y)]) sbp = MultiblockSBP(grid, accuracy=2) initu, initv, initp = get_gauss_initial_data(X, Y, -0.5, 0.4) plt.quiver(X, Y, initu[0], initv[0]) plt.show() def spatial_op(state): S,J = euler_operator(sbp, state) + \ wall_operator(sbp, state, 0, 'w') + \ outflow_operator(sbp, state, 0, 'e') + \ wall_operator(sbp, state, 0, 's') + \ wall_operator(sbp, state, 0, 'n') return S, J U, V, P = solve(grid, spatial_op, initu, initv, initp, dt, num_timesteps) return grid, U, V, P, dt