aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Kummerlaender2019-06-11 16:06:29 +0200
committerAdrian Kummerlaender2019-06-11 16:06:29 +0200
commit2705560c540d66b1f15887256a8b8a90f5b9d912 (patch)
tree4aec418c378d834ad1c06ce0cbc92a297567a86b
parentbad157f2dfbf1d79cf007fb8d4bbfad64b3e7096 (diff)
downloadsymlbm_playground-2705560c540d66b1f15887256a8b8a90f5b9d912.tar
symlbm_playground-2705560c540d66b1f15887256a8b8a90f5b9d912.tar.gz
symlbm_playground-2705560c540d66b1f15887256a8b8a90f5b9d912.tar.bz2
symlbm_playground-2705560c540d66b1f15887256a8b8a90f5b9d912.tar.lz
symlbm_playground-2705560c540d66b1f15887256a8b8a90f5b9d912.tar.xz
symlbm_playground-2705560c540d66b1f15887256a8b8a90f5b9d912.tar.zst
symlbm_playground-2705560c540d66b1f15887256a8b8a90f5b9d912.zip
Test generation of D3Q19 kernel code in notebook
-rw-r--r--lbm_codegen_d3q19.ipynb1160
1 files changed, 1160 insertions, 0 deletions
diff --git a/lbm_codegen_d3q19.ipynb b/lbm_codegen_d3q19.ipynb
new file mode 100644
index 0000000..face58f
--- /dev/null
+++ b/lbm_codegen_d3q19.ipynb
@@ -0,0 +1,1160 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sympy import *\n",
+ "init_printing()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Characteristic constants"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "q = 19\n",
+ "d = 3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "c = [ Matrix(x) for x in [\n",
+ " ( 0, 1, 1), (-1, 0, 1), ( 0, 0, 1), ( 1, 0, 1), ( 0, -1, 1),\n",
+ " (-1, 1, 0), ( 0, 1, 0), ( 1, 1, 0), (-1, 0, 0), ( 0, 0, 0), ( 1, 0, 0), (-1,-1, 0), ( 0, -1, 0), ( 1, -1, 0),\n",
+ " ( 0, 1,-1), (-1, 0,-1), ( 0, 0,-1), ( 1, 0,-1), ( 0, -1,-1)\n",
+ "]]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/latex": [
+ "$$\\left [ \\left[\\begin{matrix}0\\\\1\\\\1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}-1\\\\0\\\\1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}0\\\\0\\\\1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}1\\\\0\\\\1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}0\\\\-1\\\\1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}-1\\\\1\\\\0\\end{matrix}\\right], \\quad \\left[\\begin{matrix}0\\\\1\\\\0\\end{matrix}\\right], \\quad \\left[\\begin{matrix}1\\\\1\\\\0\\end{matrix}\\right], \\quad \\left[\\begin{matrix}-1\\\\0\\\\0\\end{matrix}\\right], \\quad \\left[\\begin{matrix}0\\\\0\\\\0\\end{matrix}\\right], \\quad \\left[\\begin{matrix}1\\\\0\\\\0\\end{matrix}\\right], \\quad \\left[\\begin{matrix}-1\\\\-1\\\\0\\end{matrix}\\right], \\quad \\left[\\begin{matrix}0\\\\-1\\\\0\\end{matrix}\\right], \\quad \\left[\\begin{matrix}1\\\\-1\\\\0\\end{matrix}\\right], \\quad \\left[\\begin{matrix}0\\\\1\\\\-1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}-1\\\\0\\\\-1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}0\\\\0\\\\-1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}1\\\\0\\\\-1\\end{matrix}\\right], \\quad \\left[\\begin{matrix}0\\\\-1\\\\-1\\end{matrix}\\right]\\right ]$$"
+ ],
+ "text/plain": [
+ "⎡⎡0⎤ ⎡-1⎤ ⎡0⎤ ⎡1⎤ ⎡0 ⎤ ⎡-1⎤ ⎡0⎤ ⎡1⎤ ⎡-1⎤ ⎡0⎤ ⎡1⎤ ⎡-1⎤ ⎡0 ⎤ ⎡1 ⎤ \n",
+ "⎢⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ \n",
+ "⎢⎢1⎥, ⎢0 ⎥, ⎢0⎥, ⎢0⎥, ⎢-1⎥, ⎢1 ⎥, ⎢1⎥, ⎢1⎥, ⎢0 ⎥, ⎢0⎥, ⎢0⎥, ⎢-1⎥, ⎢-1⎥, ⎢-1⎥, \n",
+ "⎢⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ \n",
+ "⎣⎣1⎦ ⎣1 ⎦ ⎣1⎦ ⎣1⎦ ⎣1 ⎦ ⎣0 ⎦ ⎣0⎦ ⎣0⎦ ⎣0 ⎦ ⎣0⎦ ⎣0⎦ ⎣0 ⎦ ⎣0 ⎦ ⎣0 ⎦ \n",
+ "\n",
+ "⎡0 ⎤ ⎡-1⎤ ⎡0 ⎤ ⎡1 ⎤ ⎡0 ⎤⎤\n",
+ "⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎥\n",
+ "⎢1 ⎥, ⎢0 ⎥, ⎢0 ⎥, ⎢0 ⎥, ⎢-1⎥⎥\n",
+ "⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎥\n",
+ "⎣-1⎦ ⎣-1⎦ ⎣-1⎦ ⎣-1⎦ ⎣-1⎦⎦"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "c"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "w = [Rational(*x) for x in [\n",
+ " (1,36), (1,36), (1,18), (1,36), (1,36),\n",
+ " (1,36), (1,18), (1,36), (1,18), (1,3), (1,18), (1,36), (1,18), (1,36),\n",
+ " (1,36), (1,36), (1,18), (1,36), (1,36)\n",
+ "]]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/latex": [
+ "$$\\left [ \\frac{1}{36}, \\quad \\frac{1}{36}, \\quad \\frac{1}{18}, \\quad \\frac{1}{36}, \\quad \\frac{1}{36}, \\quad \\frac{1}{36}, \\quad \\frac{1}{18}, \\quad \\frac{1}{36}, \\quad \\frac{1}{18}, \\quad \\frac{1}{3}, \\quad \\frac{1}{18}, \\quad \\frac{1}{36}, \\quad \\frac{1}{18}, \\quad \\frac{1}{36}, \\quad \\frac{1}{36}, \\quad \\frac{1}{36}, \\quad \\frac{1}{18}, \\quad \\frac{1}{36}, \\quad \\frac{1}{36}\\right ]$$"
+ ],
+ "text/plain": [
+ "[1/36, 1/36, 1/18, 1/36, 1/36, 1/36, 1/18, 1/36, 1/18, 1/3, 1/18, 1/36, 1/18, \n",
+ "1/36, 1/36, 1/36, 1/18, 1/36, 1/36]"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "w"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAA0AAAASCAYAAACAa1QyAAAABHNCSVQICAgIfAhkiAAAAHZJREFUKJFjYKACCGFgYJjMwMBwmIGB4RMDA8N/BgaGJYQ0XYAq/MzAwHCdWE2ODAwMqgwMDIwMDAwOuDSxoPH3EzKVgYGBgYkYRaOaBlwTeuQGQDEDAwODBJS2ZGBgWABlv2FgYChBN6SBAZJ0cOEH5LiMzgAA6XoX52TB9a4AAAAASUVORK5CYII=\n",
+ "text/latex": [
+ "$$1$$"
+ ],
+ "text/plain": [
+ "1"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sum(w)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAADEAAAAdCAYAAAAD8oRRAAAABHNCSVQICAgIfAhkiAAAAi9JREFUWIXt1t2LTVEYx/GPGTTFNJkhk5SoKeRCopAkaoSkhD/BtXArLrwkF8pbjQvuKcqUuZIkbpTxFlFKTSF5yUthzMTF2jNzzmnvffY5Z585Ls63dmu113p+63n2evazFk3+D6ZUOL8d3xq4fi7swuZGLJwn5zC90U6U0lLB3NboGa6TL1VTSRBrcb9ejkwWJ9DVaCfiqGQnuvCpXo7UQtYgevAyYewkbmEIP/EZgzgs+87NxSjOVKObtU4fQD9exYwN4yGe4wNmYDVW4m3UHyqjvxd92IjbOeoW0Zcy1pbw/hj+4kIG/QF8FKpfxbqF6dSCo9hSYtQp/V/4lfD+StT2pNhCh7AD/UJKVaxbGEQv1mB3idFW3CzjSBzbo/ZJmXnbhAP0Wl66y4X8KwzuvGwF4CCO4DTuClv+GHPK2F3FD8npU5XuG6yL+tMUV4w03kcLjD0DQtVJow3fhUCq1o37wjewI+pvwJ0yjozRLVS7buzEIqEkrkix6cVMXM9Z1yYTpfRUtEg1LMBvPEuZczma05Gzrqn4giWylcc0BoUUmB0z1iqU1YFadePSaUSoRofwtIoFCpkXtaMxY+uFkzctlarRHWePEOn8MmKLhVwtpcXEoXQvwfZs5ETcz1+L7jjtsl279+GPcMe5KNx0L+F1tNA7LE2wHRJKZt66RczKMGeZcI48EvJ7BF/xQKjtnQl2qyJn9uesO6kcF4JY2GhHauGF8JWbNGlSB/4BwBaSc+fGZlwAAAAASUVORK5CYII=\n",
+ "text/latex": [
+ "$$\\frac{\\sqrt{3}}{3}$$"
+ ],
+ "text/plain": [
+ "√3\n",
+ "──\n",
+ "3 "
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "c_s = sqrt(Rational(1,3))\n",
+ "c_s"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Moments"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "rho, tau = symbols('rho tau')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([f_next_0, f_next_1, f_next_2, f_next_3, f_next_4, f_next_5,\n",
+ " f_next_6, f_next_7, f_next_8, f_next_9, f_next_10, f_next_11,\n",
+ " f_next_12, f_next_13, f_next_14, f_next_15, f_next_16, f_next_17,\n",
+ " f_next_18], dtype=object)"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "f_next = symarray('f_next', q)\n",
+ "f_next"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([f_curr_0, f_curr_1, f_curr_2, f_curr_3, f_curr_4, f_curr_5,\n",
+ " f_curr_6, f_curr_7, f_curr_8, f_curr_9, f_curr_10, f_curr_11,\n",
+ " f_curr_12, f_curr_13, f_curr_14, f_curr_15, f_curr_16, f_curr_17,\n",
+ " f_curr_18], dtype=object)"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "f_curr = symarray('f_curr', q)\n",
+ "f_curr"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/latex": [
+ "$$\\left[\\begin{matrix}u_{0}\\\\u_{1}\\\\u_{2}\\end{matrix}\\right]$$"
+ ],
+ "text/plain": [
+ "⎡u₀⎤\n",
+ "⎢ ⎥\n",
+ "⎢u₁⎥\n",
+ "⎢ ⎥\n",
+ "⎣u₂⎦"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "u = Matrix(symarray('u', d))\n",
+ "u"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sympy.codegen.ast import Assignment"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/latex": [
+ "$$\\left [ Assignment(rho, f_curr_0 + f_curr_1 + f_curr_10 + f_curr_11 + f_curr_12 + f_curr_13 + f_curr_14 + f_curr_15 + f_curr_16 + f_curr_17 + f_curr_18 + f_curr_2 + f_curr_3 + f_curr_4 + f_curr_5 + f_curr_6 + f_curr_7 + f_curr_8 + f_curr_9)\\right ]$$"
+ ],
+ "text/plain": [
+ "[ρ := f_curr_0 + f_curr_1 + f_curr_10 + f_curr_11 + f_curr_12 + f_curr_13 + f_\n",
+ "curr_14 + f_curr_15 + f_curr_16 + f_curr_17 + f_curr_18 + f_curr_2 + f_curr_3 \n",
+ "+ f_curr_4 + f_curr_5 + f_curr_6 + f_curr_7 + f_curr_8 + f_curr_9]"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "moments = [ Assignment(rho, sum(f_curr)) ]\n",
+ "moments"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/latex": [
+ "$$\\left [ Assignment(rho, f_curr_0 + f_curr_1 + f_curr_10 + f_curr_11 + f_curr_12 + f_curr_13 + f_curr_14 + f_curr_15 + f_curr_16 + f_curr_17 + f_curr_18 + f_curr_2 + f_curr_3 + f_curr_4 + f_curr_5 + f_curr_6 + f_curr_7 + f_curr_8 + f_curr_9), \\quad Assignment(u_0, (-f_curr_1 + f_curr_10 - f_curr_11 + f_curr_13 - f_curr_15 + f_curr_17 + f_curr_3 - f_curr_5 + f_curr_7 - f_curr_8)/(f_curr_0 + f_curr_1 + f_curr_10 + f_curr_11 + f_curr_12 + f_curr_13 + f_curr_14 + f_curr_15 + f_curr_16 + f_curr_17 + f_curr_18 + f_curr_2 + f_curr_3 + f_curr_4 + f_curr_5 + f_curr_6 + f_curr_7 + f_curr_8 + f_curr_9)), \\quad Assignment(u_1, (f_curr_0 - f_curr_11 - f_curr_12 - f_curr_13 + f_curr_14 - f_curr_18 - f_curr_4 + f_curr_5 + f_curr_6 + f_curr_7)/(f_curr_0 + f_curr_1 + f_curr_10 + f_curr_11 + f_curr_12 + f_curr_13 + f_curr_14 + f_curr_15 + f_curr_16 + f_curr_17 + f_curr_18 + f_curr_2 + f_curr_3 + f_curr_4 + f_curr_5 + f_curr_6 + f_curr_7 + f_curr_8 + f_curr_9)), \\quad Assignment(u_2, (f_curr_0 + f_curr_1 - f_curr_14 - f_curr_15 - f_curr_16 - f_curr_17 - f_curr_18 + f_curr_2 + f_curr_3 + f_curr_4)/(f_curr_0 + f_curr_1 + f_curr_10 + f_curr_11 + f_curr_12 + f_curr_13 + f_curr_14 + f_curr_15 + f_curr_16 + f_curr_17 + f_curr_18 + f_curr_2 + f_curr_3 + f_curr_4 + f_curr_5 + f_curr_6 + f_curr_7 + f_curr_8 + f_curr_9))\\right ]$$"
+ ],
+ "text/plain": [
+ "⎡ \n",
+ "⎢ρ := f_curr_0 + f_curr_1 + f_curr_10 + f_curr_11 + f_curr_12 + f_curr_13 + f_\n",
+ "⎣ \n",
+ "\n",
+ " \n",
+ "curr_14 + f_curr_15 + f_curr_16 + f_curr_17 + f_curr_18 + f_curr_2 + f_curr_3 \n",
+ " \n",
+ "\n",
+ " \n",
+ "+ f_curr_4 + f_curr_5 + f_curr_6 + f_curr_7 + f_curr_8 + f_curr_9, u₀ := ─────\n",
+ " f_cur\n",
+ "\n",
+ " -f_curr_1 + f_curr_10 - f_curr_1\n",
+ "──────────────────────────────────────────────────────────────────────────────\n",
+ "r_0 + f_curr_1 + f_curr_10 + f_curr_11 + f_curr_12 + f_curr_13 + f_curr_14 + f\n",
+ "\n",
+ "1 + f_curr_13 - f_curr_15 + f_curr_17 + f_curr_3 - f_curr_5 + f_curr_7 - f_cur\n",
+ "──────────────────────────────────────────────────────────────────────────────\n",
+ "_curr_15 + f_curr_16 + f_curr_17 + f_curr_18 + f_curr_2 + f_curr_3 + f_curr_4 \n",
+ "\n",
+ "r_8 \n",
+ "──────────────────────────────────────────────────────, u₁ := ────────────────\n",
+ "+ f_curr_5 + f_curr_6 + f_curr_7 + f_curr_8 + f_curr_9 f_curr_0 + f_cur\n",
+ "\n",
+ " f_curr_0 - f_curr_11 - f_curr_12 - f_curr_\n",
+ "──────────────────────────────────────────────────────────────────────────────\n",
+ "r_1 + f_curr_10 + f_curr_11 + f_curr_12 + f_curr_13 + f_curr_14 + f_curr_15 + \n",
+ "\n",
+ "13 + f_curr_14 - f_curr_18 - f_curr_4 + f_curr_5 + f_curr_6 + f_curr_7 \n",
+ "────────────────