Example #1
0
                                                    'projection')
domain_rotation_id = shaders.glGetUniformLocation(domain_program, 'rotation')

raycast_program = shaders.compileProgram(raycast_vertex_shader,
                                         raycast_fragment_shader)
raycast_projection_id = shaders.glGetUniformLocation(raycast_program,
                                                     'projection')
raycast_rotation_id = shaders.glGetUniformLocation(raycast_program, 'rotation')
raycast_camera_pos_id = shaders.glGetUniformLocation(raycast_program,
                                                     'camera_pos')

lattice = Lattice(descriptor=D3Q27,
                  geometry=Geometry(lattice_x, lattice_y, lattice_z),
                  moments=lbm.moments(optimize=True),
                  collide=lbm.bgk(f_eq=lbm.equilibrium(),
                                  tau=relaxation_time,
                                  optimize=True),
                  boundary_src=boundary,
                  opengl=True)

lattice.setup_channel_with_sdf_obstacle(channel)

moments_texture = MomentsTexture(lattice, include_materials=False)

projection = Projection(distance=2 * lattice_x)
rotation = Rotation([-0.5 * lattice_x, -0.5 * lattice_y, -0.5 * lattice_z])

cube_vertices, cube_edges = lattice.geometry.wireframe()


def on_display():
Example #2
0
    );

    color = fire(1.0-particles[3]);
}""").substitute({
    'size_x': lattice_x,
    'size_y': lattice_y
}), GL_VERTEX_SHADER)

particle_program = shaders.compileProgram(particle_shader, fragment_shader)
projection_id = shaders.glGetUniformLocation(particle_program, 'projection')

lattice = Lattice(
    descriptor   = D2Q9,
    geometry     = Geometry(lattice_x, lattice_y),
    moments      = lbm.moments(optimize = False),
    collide      = lbm.bgk(f_eq = lbm.equilibrium(), tau = relaxation_time),
    boundary_src = boundary,
    opengl       = True
)

lattice.apply_material_map(
    get_channel_material_map(lattice.geometry))
lattice.sync_material()

particles = Particles(
    lattice,
    numpy.mgrid[
        4*lattice.geometry.size_x//9:5*lattice.geometry.size_x//9:particle_count/100j,
        lattice.geometry.size_y//20:2*lattice.geometry.size_y//20:100j,
    ].reshape(2,-1).T)
Example #3
0
    }
"""

nUpdates = 10000
nStat = 1000

moments = []

print("Initializing simulation...\n")

lbm = LBM(D3Q19)

lattice = Lattice(descriptor=D3Q19,
                  geometry=Geometry(64, 64, 64),
                  moments=lbm.moments(optimize=False),
                  collide=lbm.bgk(f_eq=lbm.equilibrium(), tau=0.56),
                  boundary_src=boundary)

lattice.apply_material_map(get_cavity_material_map(lattice.geometry))
lattice.sync_material()

print("Starting simulation using %d cells...\n" % lattice.geometry.volume)

lastStat = time.time()

for i in range(1, nUpdates + 1):
    lattice.evolve()

    if i % nStat == 0:
        lattice.sync()
        print("i = %4d; %3.0f MLUPS" %