Пример #1
0
domain_program = shaders.compileProgram(vertex_shader, fragment_shader)
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()
Пример #2
0
        1.
    );

    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)
Пример #3
0
    itertools.product(*[base_10_sizes, base_2_layouts, precisions, {True, False}, {True}])
))

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()