Example #1
0
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)
Example #2
0
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