def main(): draw_low_part = True window = sf.RenderWindow(sf.VideoMode(X_SIZE, Y_SIZE), "Water under gravity") particles = water_behind_the_wall(500) # set_rest_rho(particles) SPH.set_rest_rho(1.) while window.is_open: for event in window.events: if type(event) is sf.CloseEvent: window.close() if type(event) is sf.MouseButtonEvent: draw_low_part = False window.clear() for p in particles: p.radius = 4 p.outline_thickness = 0 p.position = X_SIZE - p.x, Y_SIZE - p.y window.draw(p) if DRAW_VELOCITIES: draw_velocities(window, p) if DRAW_PRESSURE: draw_pressure(window, p) draw_borders(window) SPH.wall(window, draw_low_part) window.display() particles = SPH.compute_next_state(particles)
def set_rest_rho(particles): SPH.set_rest_rho(1.) particles = SPH.compute_next_state(particles) sum = 0. for p in particles: sum += p.rho SPH.set_rest_rho(sum / len(particles)) return particles