Пример #1
0
    return numpy.matmul(translation, projection), point_size

def glut_window(fullscreen = False):
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)

    if fullscreen:
        window = glutEnterGameMode()
    else:
        glutInitWindowSize(800, 600)
        glutInitWindowPosition(0, 0)
        window = glutCreateWindow("LBM")

    return window

lbm = LBM(D2Q9)

window = glut_window(fullscreen = False)

fragment_shader = shaders.compileShader("""
#version 430

in vec3 color;

void main(){
    gl_FragColor = vec4(color.xyz, 0.0);
}""", GL_FRAGMENT_SHADER)

particle_shader = shaders.compileShader(Template("""
#version 430
Пример #2
0
    }
    if ( m == 3 ) {
        u_0 = 0.1;
        u_1 = 0.0;
        u_2 = 0.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):
Пример #3
0
from geometry.box import Box

from utility.projection import Projection, Rotation
from utility.opengl import MomentsTexture
from utility.mouse import MouseDragMonitor, MouseScrollMonitor

lattice_x = 200
lattice_y = 64
lattice_z = 64

updates_per_frame = 6

inflow = 0.01
relaxation_time = 0.51

lbm = LBM(D3Q27)

boundary = Template("""
    if ( m == 2 ) {
        u_0 = 0.0;
        u_1 = 0.0;
        u_2 = 0.0;
    }
    if ( m == 3 ) {
        u_0 = min(time/5000.0 * ${inflow}, ${inflow});
        u_1 = 0.0;
        u_2 = 0.0;
    }
    if ( m == 4 ) {
        rho = 1.0;
    }
Пример #4
0
            base_10_sizes, base_10_layouts, descriptors, precisions,
            {True, False}, {True, False}
        ])))

pad_configs = list(
    filter(
        lambda config: config[0] - config[1][0] >= -28,
        itertools.product(*[
            base_10_sizes, base_2_layouts, descriptors, precisions,
            {True, False}, {True}
        ])))

measurements = []

for size, layout, descriptor, precision, opti, align in base_2_configs + align_configs + pad_configs:
    lbm = LBM(descriptor)
    lattice = Lattice(descriptor=descriptor,
                      geometry=Geometry(size, 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