aboutsummaryrefslogtreecommitdiff
path: root/lid_driven_cavity.py
diff options
context:
space:
mode:
authorAdrian Kummerlaender2019-06-09 23:57:04 +0200
committerAdrian Kummerlaender2019-06-09 23:57:04 +0200
commit71a678256d71d3942d040bbbe42d6a0270feb3cc (patch)
tree93b64ec3ebd09b8fcbd7cef4bdc3743b714074d3 /lid_driven_cavity.py
parent05cf82b1f6b14f01c13e438b16ac8cf86acb9544 (diff)
downloadsymlbm_playground-71a678256d71d3942d040bbbe42d6a0270feb3cc.tar
symlbm_playground-71a678256d71d3942d040bbbe42d6a0270feb3cc.tar.gz
symlbm_playground-71a678256d71d3942d040bbbe42d6a0270feb3cc.tar.bz2
symlbm_playground-71a678256d71d3942d040bbbe42d6a0270feb3cc.tar.lz
symlbm_playground-71a678256d71d3942d040bbbe42d6a0270feb3cc.tar.xz
symlbm_playground-71a678256d71d3942d040bbbe42d6a0270feb3cc.tar.zst
symlbm_playground-71a678256d71d3942d040bbbe42d6a0270feb3cc.zip
First test of partially generated LBM kernel
A kernel extracted from `lbn_codegen.ipynb` yields ~665 MLUPS compared to the ~600 MLUPS produced by a manually optimized kernel. Note that this new kernel currently doesn't handle boundary conditions (but dropping in a density condition doesn't impact performance).
Diffstat (limited to 'lid_driven_cavity.py')
-rw-r--r--lid_driven_cavity.py14
1 files changed, 0 insertions, 14 deletions
diff --git a/lid_driven_cavity.py b/lid_driven_cavity.py
index cfaf0ba..216ee87 100644
--- a/lid_driven_cavity.py
+++ b/lid_driven_cavity.py
@@ -134,7 +134,6 @@ class D2Q9_BGK_Lattice:
self.setup_geometry()
self.equilibrilize()
- #self.setup_anomaly()
self.cl_pop_a = cl.Buffer(self.context, mf.READ_WRITE | mf.USE_HOST_PTR, hostbuf=self.np_pop_a)
self.cl_pop_b = cl.Buffer(self.context, mf.READ_WRITE | mf.USE_HOST_PTR, hostbuf=self.np_pop_b)
@@ -165,19 +164,6 @@ class D2Q9_BGK_Lattice:
self.np_pop_b[(1,3,5,7),:] = 1./9.
self.np_pop_b[4,:] = 4./9.
- def setup_anomaly(self):
- bubbles = [ [ self.nX//4, self.nY//4],
- [ self.nX//4,self.nY-self.nY//4],
- [self.nX-self.nX//4, self.nY//4],
- [self.nX-self.nX//4,self.nY-self.nY//4] ]
-
- for x in range(0,self.nX-1):
- for y in range(0,self.nY-1):
- for [a,b] in bubbles:
- if numpy.sqrt((x-a)*(x-a)+(y-b)*(y-b)) < self.nX//10:
- self.np_pop_a[:,self.idx(x,y)] = 1./24.
- self.np_pop_b[:,self.idx(x,y)] = 1./24.
-
def build_kernel(self):
self.program = cl.Program(self.context, Template(kernel).substitute({
'nX' : self.nX,