); 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)
} """ 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" %
domain_projection_id = shaders.glGetUniformLocation(domain_program, '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()
)) lbm = LBM(D2Q9) measurements = [] for size, layout, precision, opti, align in base_2_configs + align_configs + pad_configs: lattice = Lattice( descriptor = D2Q9, geometry = Geometry(size, size), precision = precision, layout = layout, padding = layout, align = align, moments = lbm.moments(optimize = opti), collide = lbm.bgk(f_eq = lbm.equilibrium(), tau = relaxation_time, optimize = opti), boundary_src = boundary) lattice.apply_material_map( get_cavity_material_map(lattice.geometry)) lattice.sync_material() nUpdates = 500 nStat = 100 stats = [] lastStat = time.time() for i in range(1,nUpdates+1): lattice.evolve()