aboutsummaryrefslogtreecommitdiff
path: root/lid_driven_cavity/opencl_gl_interop
diff options
context:
space:
mode:
Diffstat (limited to 'lid_driven_cavity/opencl_gl_interop')
-rw-r--r--lid_driven_cavity/opencl_gl_interop/SSS.py18
l---------lid_driven_cavity/opencl_gl_interop/lattice/SSS.py1
-rw-r--r--lid_driven_cavity/opencl_gl_interop/ldc_2d.py13
3 files changed, 29 insertions, 3 deletions
diff --git a/lid_driven_cavity/opencl_gl_interop/SSS.py b/lid_driven_cavity/opencl_gl_interop/SSS.py
new file mode 100644
index 0000000..a8f5a37
--- /dev/null
+++ b/lid_driven_cavity/opencl_gl_interop/SSS.py
@@ -0,0 +1,18 @@
+import pyopencl as cl
+
+from common import MomentsTextureBase
+
+from lattice.SSS import Lattice
+
+class MomentsTexture(MomentsTextureBase):
+ pass
+
+ def collect(self):
+ cl.enqueue_acquire_gl_objects(self.lattice.queue, [self.cl_gl_moments])
+
+ self.lattice.program.collect_moments_to_texture(
+ self.lattice.queue,
+ self.lattice.geometry.size(),
+ self.lattice.layout,
+ self.lattice.memory.cl_control,
+ self.cl_gl_moments)
diff --git a/lid_driven_cavity/opencl_gl_interop/lattice/SSS.py b/lid_driven_cavity/opencl_gl_interop/lattice/SSS.py
new file mode 120000
index 0000000..b01ba59
--- /dev/null
+++ b/lid_driven_cavity/opencl_gl_interop/lattice/SSS.py
@@ -0,0 +1 @@
+../../opencl/SSS.py \ No newline at end of file
diff --git a/lid_driven_cavity/opencl_gl_interop/ldc_2d.py b/lid_driven_cavity/opencl_gl_interop/ldc_2d.py
index ac8119b..6373a51 100644
--- a/lid_driven_cavity/opencl_gl_interop/ldc_2d.py
+++ b/lid_driven_cavity/opencl_gl_interop/ldc_2d.py
@@ -18,14 +18,18 @@ from pyrr import matrix44
geometry = Geometry(512, 512)
+precision = 'single'
+streaming = 'AA'
+
functions = ['collide_and_stream', 'equilibrilize', 'collect_moments', 'momenta_boundary']
extras = ['cell_list_dispatch', 'opencl_gl_interop']
-precision = 'single'
-streaming = 'AA'
+if streaming == 'SSS':
+ functions = functions + ['update_sss_control_structure']
import AA
import AB
+import SSS
def glut_window(fullscreen = False):
glutInit(sys.argv)
@@ -73,7 +77,10 @@ wall_cells = CellList(lattice.context, lattice.queue, lattice.float_type,
lid_cells = CellList(lattice.context, lattice.queue, lattice.float_type,
[ gid(x,y) for x, y in geometry.inner_cells() if y == geometry.size_y-2 ])
-if streaming == 'AB':
+if streaming == 'SSS':
+ lattice.schedule('equilibrilize', ghost_cells)
+
+if streaming in ['AB', 'SSS']:
lattice.schedule('collide_and_stream', bulk_cells)
lattice.schedule('velocity_momenta_boundary', wall_cells, numpy.array([0.0, 0.0], dtype=lattice.float_type[0]))
lattice.schedule('velocity_momenta_boundary', lid_cells, numpy.array([0.1, 0.0], dtype=lattice.float_type[0]))