{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "nbsphinx": "hidden" }, "outputs": [], "source": [ "from lbmpy.session import *\n", "from lbmpy.cumulants import *\n", "from lbmpy.moments import *\n", "from lbmpy.continuous_distribution_measures import continuous_moment\n", "from lbmpy.stencils import get_stencil" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Demo: Moments, Cumulants and Maxwellian Equilibrium\n", "\n", "## 1) Moments & Cumulants\n", "\n", "\n", "### Moments\n", "\n", "The *moments* and *cumulants* modules contain functions to calculate moments and cumulants of functions on a discrete velocity space defined by a stencil. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left( f_{0}, \\ f_{1}, \\ f_{2}, \\ f_{3}, \\ f_{4}, \\ f_{5}, \\ f_{6}, \\ f_{7}, \\ f_{8}\\right)$" ], "text/plain": [ "(f₀, f₁, f₂, f₃, f₄, f₅, f₆, f₇, f₈)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stencil = get_stencil(\"D2Q9\")\n", "pdfs = sp.symbols(\"f:9\")\n", "pdfs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Discrete moments are computed by following formula:\n", "\n", "$$\\sum_{d \\in S} d_1^{m_1} d_2^{m_2} \\; f_d$$ \n", "\n", "with $S$ being the stencil, $d_i$ the direction components, $f_d$ the function values for each direction and $m_j$ the components of the moment tuple.\n", "\n", "Lets compute the first moment in the first direction, i.e. $(m_1, m_2) = (1,0)$." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "