{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "nbsphinx": "hidden" }, "outputs": [], "source": [ "from lbmpy.session import *\n", "from lbmpy.stencils import get_stencil" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Demo: Stencils\n", "\n", "A stencils is a tuple of directions, where each direction is again a tuple with as many entries as there are dimensions. Technically a stencil is only a nested tuple.\n", "The *stencils* submodule already has a predefined set of commonly used stencils.\n", "A common notation for stencils in the lattice Boltzmann literature is the *DxQy* notation, where *x* is the dimension of the space, and *y* the number of directions. For example *D2Q9* is a two-dimensional stencil with 9 directions:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left( \\left( 0, \\ 0\\right), \\ \\left( 0, \\ 1\\right), \\ \\left( 0, \\ -1\\right), \\ \\left( -1, \\ 0\\right), \\ \\left( 1, \\ 0\\right), \\ \\left( -1, \\ 1\\right), \\ \\left( 1, \\ 1\\right), \\ \\left( -1, \\ -1\\right), \\ \\left( 1, \\ -1\\right)\\right)$" ], "text/plain": [ "((0, 0), (0, 1), (0, -1), (-1, 0), (1, 0), (-1, 1), (1, 1), (-1, -1), (1, -1))" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stencil = get_stencil(\"D2Q9\")\n", "stencil" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "