Skip to content
Snippets Groups Projects
Commit 328deb55 authored by Markus Holzer's avatar Markus Holzer
Browse files

Excluded tests again

parent a87a6d43
No related branches found
No related tags found
1 merge request!48Cumulant LBM
{
"metadata": {
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.1-final"
},
"orig_nbformat": 2,
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2,
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
......@@ -32,6 +10,8 @@
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Tutorial 09: The Cumulant Lattice Boltzmann Method in lbmpy\n",
"\n",
......@@ -84,11 +64,11 @@
" \\kappa^{\\ast}_{100} = \\kappa_{100} + F_x = \\frac{F_x}{2}\n",
"$$\n",
"Basically, the first central moments change sign. This is equivalent to relaxation with a relaxation rate $\\omega = 2$. For this reason, lbmpy's implementation of the cumulant LBM calculates the collision of the momentum modes in central moment space, and the default force model simply overrides their relaxation rate by setting it to 2."
],
"cell_type": "markdown",
"metadata": {}
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## B) Method Creation\n",
"\n",
......@@ -99,9 +79,7 @@
"Monomial cumulant relaxation is available through the `method=\"monomial_cumulant\"` parameter setting. This variant requires fewer transformation steps and is a little faster than polynomial relaxation, but it does not allow separation of bulk and shear viscosity. Default monomial cumulant sets are available for the D2Q9, D3Q19 and D3Q27 stencils. If you'd like to specify a custom set of monomial cumulants, refer to section C.\n",
"\n",
"When creating a monomial cumulant method, one option is to specify only a single relaxation rate which will then be assigned to all cumulants related to the shear viscosity. In this case, all other non-conserved cumulants will be relaxed to equilibrium. Alternatively, individual relaxation rates for all non-conserved cumulants can be specified."
],
"cell_type": "markdown",
"metadata": {}
]
},
{
"cell_type": "code",
......@@ -109,15 +87,71 @@
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
" <table style=\"border:none; width: 100%\">\n",
" <tr style=\"border:none\">\n",
" <th style=\"border:none\" >Central Moment / Cumulant</th>\n",
" <th style=\"border:none\" >Eq. Value </th>\n",
" <th style=\"border:none\" >Relaxation Rate</th>\n",
" </tr>\n",
" <tr style=\"border:none\">\n",
" <td style=\"border:none\">$1$ (central moment)</td>\n",
" <td style=\"border:none\">$\\rho$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x$ (central moment)</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$y$ (central moment)</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x^{2}$</td>\n",
" <td style=\"border:none\">$\\frac{\\rho}{3}$</td>\n",
" <td style=\"border:none\">$\\omega_{v}$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$y^{2}$</td>\n",
" <td style=\"border:none\">$\\frac{\\rho}{3}$</td>\n",
" <td style=\"border:none\">$\\omega_{v}$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x y$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$\\omega_{v}$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x^{2} y$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$1$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x y^{2}$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$1$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x^{2} y^{2}$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$1$</td>\n",
" </tr>\n",
"\n",
" </table>\n",
" "
],
"text/plain": [
"<lbmpy.methods.centeredcumulant.centeredcumulantmethod.CenteredCumulantBasedLbMethod at 0x7f45c4f29df0>"
],
"text/html": "\n <table style=\"border:none; width: 100%\">\n <tr style=\"border:none\">\n <th style=\"border:none\" >Central Moment / Cumulant</th>\n <th style=\"border:none\" >Eq. Value </th>\n <th style=\"border:none\" >Relaxation Rate</th>\n </tr>\n <tr style=\"border:none\">\n <td style=\"border:none\">$1$ (central moment)</td>\n <td style=\"border:none\">$\\rho$</td>\n <td style=\"border:none\">$0$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x$ (central moment)</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$0$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$y$ (central moment)</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$0$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x^{2}$</td>\n <td style=\"border:none\">$\\frac{\\rho}{3}$</td>\n <td style=\"border:none\">$\\omega_{v}$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$y^{2}$</td>\n <td style=\"border:none\">$\\frac{\\rho}{3}$</td>\n <td style=\"border:none\">$\\omega_{v}$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x y$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$\\omega_{v}$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x^{2} y$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$1$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x y^{2}$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$1$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x^{2} y^{2}$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$1$</td>\n </tr>\n\n </table>\n "
]
},
"execution_count": 3,
"metadata": {},
"execution_count": 3
"output_type": "execute_result"
}
],
"source": [
......@@ -126,13 +160,13 @@
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Relaxation of Polynomial Cumulants\n",
"\n",
"By setting `method=\"cumulant\"`, a set of default polynomial cumulants is chosen to be relaxed. Those cumulants are taken from literature and are assembled into groups selected to enforce rotational invariance (cf. :cite:`Geier2006`, :cite:`geier2015`, :cite:`Coreixas2019`). Default polynomial groups are available for the D2Q9, D3Q19 and D3Q27 stencils. It is again possible to specify only a single relaxation rate which is assigned to the moments governing the shear viscosity. All other relaxation rates are then automatically set to one."
],
"cell_type": "markdown",
"metadata": {}
]
},
{
"cell_type": "code",
......@@ -140,15 +174,71 @@
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
" <table style=\"border:none; width: 100%\">\n",
" <tr style=\"border:none\">\n",
" <th style=\"border:none\" >Central Moment / Cumulant</th>\n",
" <th style=\"border:none\" >Eq. Value </th>\n",
" <th style=\"border:none\" >Relaxation Rate</th>\n",
" </tr>\n",
" <tr style=\"border:none\">\n",
" <td style=\"border:none\">$1$ (central moment)</td>\n",
" <td style=\"border:none\">$\\rho$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x$ (central moment)</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$y$ (central moment)</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x y$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$\\omega_{v}$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x^{2} - y^{2}$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$\\omega_{v}$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x^{2} + y^{2}$</td>\n",
" <td style=\"border:none\">$\\frac{2 \\rho}{3}$</td>\n",
" <td style=\"border:none\">$1$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x^{2} y$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$1$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x y^{2}$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$1$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x^{2} y^{2}$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$1$</td>\n",
" </tr>\n",
"\n",
" </table>\n",
" "
],
"text/plain": [
"<lbmpy.methods.centeredcumulant.centeredcumulantmethod.CenteredCumulantBasedLbMethod at 0x7f454f02bb20>"
],
"text/html": "\n <table style=\"border:none; width: 100%\">\n <tr style=\"border:none\">\n <th style=\"border:none\" >Central Moment / Cumulant</th>\n <th style=\"border:none\" >Eq. Value </th>\n <th style=\"border:none\" >Relaxation Rate</th>\n </tr>\n <tr style=\"border:none\">\n <td style=\"border:none\">$1$ (central moment)</td>\n <td style=\"border:none\">$\\rho$</td>\n <td style=\"border:none\">$0$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x$ (central moment)</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$0$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$y$ (central moment)</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$0$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x y$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$\\omega_{v}$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x^{2} - y^{2}$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$\\omega_{v}$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x^{2} + y^{2}$</td>\n <td style=\"border:none\">$\\frac{2 \\rho}{3}$</td>\n <td style=\"border:none\">$1$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x^{2} y$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$1$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x y^{2}$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$1$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x^{2} y^{2}$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$1$</td>\n </tr>\n\n </table>\n "
]
},
"execution_count": 4,
"metadata": {},
"execution_count": 4
"output_type": "execute_result"
}
],
"source": [
......@@ -157,13 +247,13 @@
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Central Moments and Forcing\n",
"\n",
"In above printouts, the conserved modes are marked with the note *(central moment)*. This is to highlight the fact that these modes are relaxed in central moment space, other than cumulant space. As described in section A, this is done to enable the implicit forcing scheme. When a force is specified, the relaxation rates of the momentum modes are overridden by the force model. In the following cell, a symbolic force is specified. Further, a full list of relaxation rates is passed to allow specification of a bulk viscosity."
],
"cell_type": "markdown",
"metadata": {}
]
},
{
"cell_type": "code",
......@@ -171,15 +261,71 @@
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
" <table style=\"border:none; width: 100%\">\n",
" <tr style=\"border:none\">\n",
" <th style=\"border:none\" >Central Moment / Cumulant</th>\n",
" <th style=\"border:none\" >Eq. Value </th>\n",
" <th style=\"border:none\" >Relaxation Rate</th>\n",
" </tr>\n",
" <tr style=\"border:none\">\n",
" <td style=\"border:none\">$1$ (central moment)</td>\n",
" <td style=\"border:none\">$\\rho$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x$ (central moment)</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$2$ (overridden by force model)</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$y$ (central moment)</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$2$ (overridden by force model)</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x y$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$\\omega_{shear}$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x^{2} - y^{2}$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$\\omega_{shear}$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x^{2} + y^{2}$</td>\n",
" <td style=\"border:none\">$\\frac{2 \\rho}{3}$</td>\n",
" <td style=\"border:none\">$\\omega_{bulk}$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x^{2} y$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$1$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x y^{2}$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$1$</td>\n",
" </tr>\n",
"<tr style=\"border:none\">\n",
" <td style=\"border:none\">$x^{2} y^{2}$</td>\n",
" <td style=\"border:none\">$0$</td>\n",
" <td style=\"border:none\">$1$</td>\n",
" </tr>\n",
"\n",
" </table>\n",
" "
],
"text/plain": [
"<lbmpy.methods.centeredcumulant.centeredcumulantmethod.CenteredCumulantBasedLbMethod at 0x7f454cea04c0>"
],
"text/html": "\n <table style=\"border:none; width: 100%\">\n <tr style=\"border:none\">\n <th style=\"border:none\" >Central Moment / Cumulant</th>\n <th style=\"border:none\" >Eq. Value </th>\n <th style=\"border:none\" >Relaxation Rate</th>\n </tr>\n <tr style=\"border:none\">\n <td style=\"border:none\">$1$ (central moment)</td>\n <td style=\"border:none\">$\\rho$</td>\n <td style=\"border:none\">$0$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x$ (central moment)</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$2$ (overridden by force model)</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$y$ (central moment)</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$2$ (overridden by force model)</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x y$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$\\omega_{shear}$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x^{2} - y^{2}$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$\\omega_{shear}$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x^{2} + y^{2}$</td>\n <td style=\"border:none\">$\\frac{2 \\rho}{3}$</td>\n <td style=\"border:none\">$\\omega_{bulk}$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x^{2} y$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$1$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x y^{2}$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$1$</td>\n </tr>\n<tr style=\"border:none\">\n <td style=\"border:none\">$x^{2} y^{2}$</td>\n <td style=\"border:none\">$0$</td>\n <td style=\"border:none\">$1$</td>\n </tr>\n\n </table>\n "
]
},
"execution_count": 7,
"metadata": {},
"execution_count": 7
"output_type": "execute_result"
}
],
"source": [
......@@ -193,13 +339,34 @@
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## C) Advanced Options\n",
"\n",
"A lot is going on behind the scenes while the collision equations are derived. "
]
}
],
"cell_type": "markdown",
"metadata": {}
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.2"
}
]
},
"nbformat": 4,
"nbformat_minor": 2
}
......@@ -10,13 +10,6 @@ from lbmpy.methods.momentbased.moment_transforms import (
)
sympy_numeric_version = [int(x, 10) for x in sp.__version__.split('.')]
if len(sympy_numeric_version) < 3:
sympy_numeric_version.append(0)
sympy_numeric_version.reverse()
sympy_version = sum(x * (100 ** i) for i, x in enumerate(sympy_numeric_version))
@pytest.mark.parametrize('stencil', ['D2Q9', 'D3Q19', 'D3Q27'])
def test_forward_transform(stencil):
stencil = get_stencil(stencil)
......
......@@ -12,9 +12,18 @@ from lbmpy.methods.momentbased.moment_transforms import (
PdfsToCentralMomentsByMatrix,
PdfsToCentralMomentsByShiftMatrix)
sympy_numeric_version = [int(x, 10) for x in sp.__version__.split('.')]
if len(sympy_numeric_version) < 3:
sympy_numeric_version.append(0)
sympy_numeric_version.reverse()
sympy_version = sum(x * (100 ** i) for i, x in enumerate(sympy_numeric_version))
reference_equilibria = dict()
@pytest.mark.skipif(sympy_version < 10200,
reason="Old Sympy Versions take too long to form the inverse moment matrix")
@pytest.mark.parametrize('stencil_name', ['D2Q9', 'D3Q19', 'D3Q27'])
@pytest.mark.parametrize('cm_transform', [PdfsToCentralMomentsByMatrix,
FastCentralMomentTransform,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment