Commit 9b2ace20 authored by Markus Holzer's avatar Markus Holzer
Browse files

Update documentation

parent 58e206b4
0.2.12.dev4+729b9d0110
\ No newline at end of file
...@@ -361,7 +361,7 @@ ...@@ -361,7 +361,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.6.8" "version": "3.7.4"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
from lbmpy.session import * from lbmpy.session import *
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# Tutorial 03: Defining LB methods in *lbmpy* # Tutorial 03: Defining LB methods in *lbmpy*
## A) General Form ## A) General Form
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
The lattice Boltzmann equation in its most general form is: The lattice Boltzmann equation in its most general form is:
$$f_q(\mathbf{x} + \mathbf{c}_q \delta t, t+\delta t) = K\left( f_q(\mathbf{x}, t) \right)$$ $$f_q(\mathbf{x} + \mathbf{c}_q \delta t, t+\delta t) = K\left( f_q(\mathbf{x}, t) \right)$$
with a discrete velocity set $\mathbf{c}_q$ (stencil) and a generic collision operator $K$. with a discrete velocity set $\mathbf{c}_q$ (stencil) and a generic collision operator $K$.
So a lattice Boltzmann method can be fully defined by picking a stencil and a collision operator. So a lattice Boltzmann method can be fully defined by picking a stencil and a collision operator.
The collision operator $K$ has the following structure: The collision operator $K$ has the following structure:
- Transformation of particle distribution function $f$ into collision space. This transformation has to be invertible and may be nonlinear. - Transformation of particle distribution function $f$ into collision space. This transformation has to be invertible and may be nonlinear.
- The collision operation is an convex combination of the pdf representation in collision space $c$ and some equilibrium vector $c^{(eq)}$. This equilibrium can also be defined in physical space, then $c^{(eq)} = C( f^{(eq)} ) $. The convex combination is done elementwise using a diagonal matrix $S$ where the diagonal entries are the relaxation rates. - The collision operation is an convex combination of the pdf representation in collision space $c$ and some equilibrium vector $c^{(eq)}$. This equilibrium can also be defined in physical space, then $c^{(eq)} = C( f^{(eq)} ) $. The convex combination is done elementwise using a diagonal matrix $S$ where the diagonal entries are the relaxation rates.
- After collision, the collided state $c'$ is transformed back into physical space - After collision, the collided state $c'$ is transformed back into physical space
![](../img/collision.svg) ![](../img/collision.svg)
The full collision operator is: The full collision operator is:
$$K(f) = C^{-1}\left( (I-S)C(f) + SC(f^{(eq}) \right)$$ $$K(f) = C^{-1}\left( (I-S)C(f) + SC(f^{(eq}) \right)$$
or or
$$K(f) = C^{-1}\left( C(f) - S (C(f) - C(f^{(eq})) \right)$$ $$K(f) = C^{-1}\left( C(f) - S (C(f) - C(f^{(eq})) \right)$$
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## B) Moment-based relaxation ## B) Moment-based relaxation
The most commonly used LBM collision operator is the multi relaxation time (MRT) collision. The most commonly used LBM collision operator is the multi relaxation time (MRT) collision.
In MRT methods the collision space is spanned by moments of the distribution function. This is a very natural approach, since the pdf moments are the quantities that go into the Chapman Enskog analysis that is used to show that LB methods can solve the Navier Stokes equations. Also the lower order moments correspond to the macroscopic quantities of interest (density/pressure, velocity, shear rates, heat flux). Furthermore the transformation to collision space is linear in this case, simplifying the collision equations: In MRT methods the collision space is spanned by moments of the distribution function. This is a very natural approach, since the pdf moments are the quantities that go into the Chapman Enskog analysis that is used to show that LB methods can solve the Navier Stokes equations. Also the lower order moments correspond to the macroscopic quantities of interest (density/pressure, velocity, shear rates, heat flux). Furthermore the transformation to collision space is linear in this case, simplifying the collision equations:
$$K(f) = C^{-1}\left( C(f) - S (C(f) - C(f^{(eq})) \right)$$ $$K(f) = C^{-1}\left( C(f) - S (C(f) - C(f^{(eq})) \right)$$
$$K(f) = f - \underbrace{ C^{-1}SC}_{A}(f - f^{(eq)})$$ $$K(f) = f - \underbrace{ C^{-1}SC}_{A}(f - f^{(eq)})$$
in *lbmpy* the following formulation is used, since it is more natural to define the equilibrium in moment-space instead of physical space: in *lbmpy* the following formulation is used, since it is more natural to define the equilibrium in moment-space instead of physical space:
$$K(f) = f - C^{-1}S(Cf - c^{(eq)})$$ $$K(f) = f - C^{-1}S(Cf - c^{(eq)})$$
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Use a pre-defined method ### Use a pre-defined method
Lets create a moment-based method in *lbmpy* and see how the moment transformation $C$ and the relaxation rates that comprise the diagonal matrix $S$ can be defined. We start with a function that creates a basic MRT model. Lets create a moment-based method in *lbmpy* and see how the moment transformation $C$ and the relaxation rates that comprise the diagonal matrix $S$ can be defined. We start with a function that creates a basic MRT model.
Don't use this for real simulations, there orthogonalized MRT methods should be used, as discussed in the next section. Don't use this for real simulations, there orthogonalized MRT methods should be used, as discussed in the next section.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
from lbmpy.creationfunctions import create_lb_method from lbmpy.creationfunctions import create_lb_method
method = create_lb_method(stencil='D2Q9', method='mrt_raw') method = create_lb_method(stencil='D2Q9', method='mrt_raw')
# check also method='srt', 'trt', 'mrt' or 'mrt3' # check also method='srt', 'trt', 'mrt'
method method
``` ```
%%%% Output: execute_result %%%% Output: execute_result
<lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fad71541198> <lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fad71541198>
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
The first column labeled "Moment" defines the collision space and thus the transformation matrix $C$. The first column labeled "Moment" defines the collision space and thus the transformation matrix $C$.
The remaining columns specify the equilibrium vector in moment space $c^{(eq)}$ and the corresponding relaxation rate. The remaining columns specify the equilibrium vector in moment space $c^{(eq)}$ and the corresponding relaxation rate.
Each row of the "Moment" column defines one row of $C$. In the next cells this matrix and the discrete velocity set (stencil) of our method are shown. Check for example the second last row of the table $x^2 y$: In the corresponding second last row of the moment matrix $C$ where each column stands for a lattice velocity (for ordering visualized stencil below) and each entry is the expression $x^2 y$ where $x$ and $y$ are the components of the lattice velocity. Each row of the "Moment" column defines one row of $C$. In the next cells this matrix and the discrete velocity set (stencil) of our method are shown. Check for example the second last row of the table $x^2 y$: In the corresponding second last row of the moment matrix $C$ where each column stands for a lattice velocity (for ordering visualized stencil below) and each entry is the expression $x^2 y$ where $x$ and $y$ are the components of the lattice velocity.
In general the transformation matrix $C_{iq}$ is defined as; In general the transformation matrix $C_{iq}$ is defined as;
$$c_i = C_{iq} f_q = \sum_q m_i(c_q)$$ $$c_i = C_{iq} f_q = \sum_q m_i(c_q)$$
where $m_i(c_q)$ is the $i$'th moment polynomial where $x$ and $y$ are substituted with the components of the $q$'th lattice velocity where $m_i(c_q)$ is the $i$'th moment polynomial where $x$ and $y$ are substituted with the components of the $q$'th lattice velocity
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
# Transformation matrix C # Transformation matrix C
method.moment_matrix method.moment_matrix
``` ```
%%%% Output: execute_result %%%% Output: execute_result
![](data:image/png;base64,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) ![](data:image/png;base64,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)
$\displaystyle \left[\begin{matrix}1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1\\0 & 0 & 0 & -1 & 1 & -1 & 1 & -1 & 1\\0 & 1 & -1 & 0 & 0 & 1 & 1 & -1 & -1\\0 & 0 & 0 & 1 & 1 & 1 & 1 & 1 & 1\\0 & 1 & 1 & 0 & 0 & 1 & 1 & 1 & 1\\0 & 0 & 0 & 0 & 0 & -1 & 1 & 1 & -1\\0 & 0 & 0 & 0 & 0 & 1 & 1 & -1 & -1\\0 & 0 & 0 & 0 & 0 & -1 & 1 & -1 & 1\\0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1\end{matrix}\right]$ $\displaystyle \left[\begin{matrix}1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1\\0 & 0 & 0 & -1 & 1 & -1 & 1 & -1 & 1\\0 & 1 & -1 & 0 & 0 & 1 & 1 & -1 & -1\\0 & 0 & 0 & 1 & 1 & 1 & 1 & 1 & 1\\0 & 1 & 1 & 0 & 0 & 1 & 1 & 1 & 1\\0 & 0 & 0 & 0 & 0 & -1 & 1 & 1 & -1\\0 & 0 & 0 & 0 & 0 & 1 & 1 & -1 & -1\\0 & 0 & 0 & 0 & 0 & -1 & 1 & -1 & 1\\0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1\end{matrix}\right]$
⎡1 1 1 1 1 1 1 1 1 ⎤ ⎡1 1 1 1 1 1 1 1 1 ⎤
⎢ ⎥ ⎢ ⎥
⎢0 0 0 -1 1 -1 1 -1 1 ⎥ ⎢0 0 0 -1 1 -1 1 -1 1 ⎥
⎢ ⎥ ⎢ ⎥
⎢0 1 -1 0 0 1 1 -1 -1⎥ ⎢0 1 -1 0 0 1 1 -1 -1⎥
⎢ ⎥ ⎢ ⎥
⎢0 0 0 1 1 1 1 1 1 ⎥ ⎢0 0 0 1 1 1 1 1 1 ⎥
⎢ ⎥ ⎢ ⎥
⎢0 1 1 0 0 1 1 1 1 ⎥ ⎢0 1 1 0 0 1 1 1 1 ⎥
⎢ ⎥ ⎢ ⎥
⎢0 0 0 0 0 -1 1 1 -1⎥ ⎢0 0 0 0 0 -1 1 1 -1⎥
⎢ ⎥ ⎢ ⎥
⎢0 0 0 0 0 1 1 -1 -1⎥ ⎢0 0 0 0 0 1 1 -1 -1⎥
⎢ ⎥ ⎢ ⎥
⎢0 0 0 0 0 -1 1 -1 1 ⎥ ⎢0 0 0 0 0 -1 1 -1 1 ⎥
⎢ ⎥ ⎢ ⎥
⎣0 0 0 0 0 1 1 1 1 ⎦ ⎣0 0 0 0 0 1 1 1 1 ⎦
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
ps.stencil.plot(method.stencil) ps.stencil.plot(method.stencil)
method.stencil method.stencil
``` ```
%%%% Output: execute_result %%%% Output: execute_result
![](data:image/png;base64,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) ![](data:image/png;base64,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)
$\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)$ $\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)$
((0, 0), (0, 1), (0, -1), (-1, 0), (1, 0), (-1, 1), (1, 1), (-1, -1), (1, -1)) ((0, 0), (0, 1), (0, -1), (-1, 0), (1, 0), (-1, 1), (1, 1), (-1, -1), (1, -1))
%%%% Output: display_data %%%% Output: display_data
![](data:image/png;base64,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) ![](data:image/png;base64,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)
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Orthogonal MRTs ### Orthogonal MRTs
For a real MRT method, the moments should be orthogonalized. For a real MRT method, the moments should be orthogonalized.
One can either orthogonalize using the standard scalar product or a scalar product that is weighted with the lattice weights. If unsure, use the weighted version. One can either orthogonalize using the standard scalar product or a scalar product that is weighted with the lattice weights. If unsure, use the weighted version.
The next cell shows how to get both orthogonalized MRT versions in lbmpy. The next cell shows how to get both orthogonalized MRT versions in lbmpy.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
weighted_ortho_mrt = create_lb_method(stencil="D2Q9", method="mrt", weighted=True) weighted_ortho_mrt = create_lb_method(stencil="D2Q9", method="mrt", weighted=True)
weighted_ortho_mrt weighted_ortho_mrt
``` ```
%%%% Output: execute_result %%%% Output: execute_result
<lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fad98775ba8> <lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fad98775ba8>
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
ortho_mrt = create_lb_method(stencil="D2Q9", method="mrt", weighted=False) ortho_mrt = create_lb_method(stencil="D2Q9", method="mrt", weighted=False)
ortho_mrt ortho_mrt
``` ```
%%%% Output: execute_result %%%% Output: execute_result
<lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fad713c2e10> <lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fad713c2e10>
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
One can check if a method is orthogonalized: One can check if a method is orthogonalized:
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
ortho_mrt.is_orthogonal, weighted_ortho_mrt.is_weighted_orthogonal ortho_mrt.is_orthogonal, weighted_ortho_mrt.is_weighted_orthogonal
``` ```
%%%% Output: execute_result %%%% Output: execute_result
(True, True) (True, True)
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Define custom MRT method ### Define custom MRT method
To choose custom values for the left moment column one can pass a nested list of moments. To choose custom values for the left moment column one can pass a nested list of moments.
Moments that should be relaxed with the same paramter are grouped together. Moments that should be relaxed with the same paramter are grouped together.
*lbmpy* also comes with a few templates for this list taken from literature: *lbmpy* also comes with a few templates for this list taken from literature:
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
from lbmpy.methods import mrt_orthogonal_modes_literature from lbmpy.methods import mrt_orthogonal_modes_literature
from lbmpy.stencils import get_stencil from lbmpy.stencils import get_stencil
from lbmpy.moments import MOMENT_SYMBOLS from lbmpy.moments import MOMENT_SYMBOLS
x, y, z = MOMENT_SYMBOLS x, y, z = MOMENT_SYMBOLS
moments = mrt_orthogonal_modes_literature(get_stencil("D2Q9"), is_weighted=True, is_cumulant=False) moments = mrt_orthogonal_modes_literature(get_stencil("D2Q9"), is_weighted=True, is_cumulant=False)
moments moments
``` ```
%%%% Output: execute_result %%%% Output: execute_result
![](data:image/png;base64,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) ![](data:image/png;base64,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)
$\displaystyle \left[ \left[ 1\right], \ \left[ x, \ y\right], \ \left[ 3 x^{2} + 3 y^{2} - 2, \ x^{2} - y^{2}, \ x y\right], \ \left[ x \left(3 x^{2} + 3 y^{2} - 4\right), \ y \left(3 x^{2} + 3 y^{2} - 4\right)\right], \ \left[ - 15 x^{2} - 15 y^{2} + 9 \left(x^{2} + y^{2}\right)^{2} + 2\right]\right]$ $\displaystyle \left[ \left[ 1\right], \ \left[ x, \ y\right], \ \left[ 3 x^{2} + 3 y^{2} - 2, \ x^{2} - y^{2}, \ x y\right], \ \left[ x \left(3 x^{2} + 3 y^{2} - 4\right), \ y \left(3 x^{2} + 3 y^{2} - 4\right)\right], \ \left[ - 15 x^{2} - 15 y^{2} + 9 \left(x^{2} + y^{2}\right)^{2} + 2\right]\right]$
⎢ ⎡ 2 2 2 2 ⎤ ⎡ ⎛ 2 2 ⎞ ⎛ 2 ⎢ ⎡ 2 2 2 2 ⎤ ⎡ ⎛ 2 2 ⎞ ⎛ 2
⎣[1], [x, y], ⎣3⋅x + 3⋅y - 2, x - y , x⋅y⎦, ⎣x⋅⎝3⋅x + 3⋅y - 4⎠, y⋅⎝3⋅x + ⎣[1], [x, y], ⎣3⋅x + 3⋅y - 2, x - y , x⋅y⎦, ⎣x⋅⎝3⋅x + 3⋅y - 4⎠, y⋅⎝3⋅x +
⎡ 2 ⎤⎤ ⎡ 2 ⎤⎤
2 ⎞⎤ ⎢ 2 2 ⎛ 2 2⎞ ⎥⎥ 2 ⎞⎤ ⎢ 2 2 ⎛ 2 2⎞ ⎥⎥
3⋅y - 4⎠⎦, ⎣- 15⋅x - 15⋅y + 9⋅⎝x + y ⎠ + 2⎦⎦ 3⋅y - 4⎠⎦, ⎣- 15⋅x - 15⋅y + 9⋅⎝x + y ⎠ + 2⎦⎦
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
This nested moment list can be passed to `create_lb_method`: This nested moment list can be passed to `create_lb_method`:
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
create_lb_method(stencil="D2Q9", method="mrt", nested_moments=moments) create_lb_method(stencil="D2Q9", method="mrt", nested_moments=moments)
``` ```
%%%% Output: execute_result %%%% Output: execute_result
<lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fada8392588> <lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fada8392588>
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
If one needs to also specify custom equilibrium moments the following approach can be used If one needs to also specify custom equilibrium moments the following approach can be used
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
rho = sp.symbols("rho") rho = sp.symbols("rho")
u = sp.symbols("u_:3") u = sp.symbols("u_:3")
omega = sp.symbols("omega_:4") omega = sp.symbols("omega_:4")
method_table = [ method_table = [
# Conserved moments # Conserved moments
(1, rho, 0 ), (1, rho, 0 ),
(x, u[0], 0 ), (x, u[0], 0 ),
(y, u[1], 0 ), (y, u[1], 0 ),
# Shear moments # Shear moments
(x*y, u[0]*u[1], omega[0]), (x*y, u[0]*u[1], omega[0]),
(x**2-y**2, u[0]**2 - u[1]**2, omega[0]), (x**2-y**2, u[0]**2 - u[1]**2, omega[0]),
(x**2+y**2, 2*rho/3 + u[0]**2 + u[1]**2, omega[1]), (x**2+y**2, 2*rho/3 + u[0]**2 + u[1]**2, omega[1]),
# Higher order # Higher order
(x * y**2, u[0]/3, omega[2]), (x * y**2, u[0]/3, omega[2]),
(x**2 * y, u[1]/3, omega[2]), (x**2 * y, u[1]/3, omega[2]),
(x**2 * y**2, rho/9 + u[0]**2/3 + u[1]**2/3, omega[3]), (x**2 * y**2, rho/9 + u[0]**2/3 + u[1]**2/3, omega[3]),
] ]
method = create_generic_mrt(get_stencil("D2Q9"), method_table) method = create_generic_mrt(get_stencil("D2Q9"), method_table)
method method
``` ```
%%%% Output: execute_result %%%% Output: execute_result
<lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fad70ef8978> <lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fad70ef8978>
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Instead of manually defining all entries in the method table, *lbmpy* has functions to fill the table according to a specific pattern. For example: Instead of manually defining all entries in the method table, *lbmpy* has functions to fill the table according to a specific pattern. For example:
- for a full stencil (D2Q9, D3Q27) there exist exactly 9 or 27 linearly independent moments. These can either be taken as they are, or orthogonalized using Gram-Schmidt, weighted Gram-Schmidt or a Hermite approach - for a full stencil (D2Q9, D3Q27) there exist exactly 9 or 27 linearly independent moments. These can either be taken as they are, or orthogonalized using Gram-Schmidt, weighted Gram-Schmidt or a Hermite approach
- equilibrium values can be computed from the standard discrete equilibrium of order 1,2 or 3. Alternatively they can also be computed as continuous moments of a Maxwellian distribution - equilibrium values can be computed from the standard discrete equilibrium of order 1,2 or 3. Alternatively they can also be computed as continuous moments of a Maxwellian distribution
One option is to start with one of *lbmpy*'s built-in methods and modify it with `create_lb_method_from_existing`. One option is to start with one of *lbmpy*'s built-in methods and modify it with `create_lb_method_from_existing`.
In the next cell we fix the fourth order relaxation rate to a constant, by writing a function that defines how to alter each row of the collision table. This is for demonstration only, of course we could have done it right away when passing in the collision table. In the next cell we fix the fourth order relaxation rate to a constant, by writing a function that defines how to alter each row of the collision table. This is for demonstration only, of course we could have done it right away when passing in the collision table.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
def modification_func(moment, eq, rate): def modification_func(moment, eq, rate):
if rate == omega[3]: if rate == omega[3]:
return moment, eq, 1.0 return moment, eq, 1.0
return moment, eq, rate return moment, eq, rate
method = create_lb_method_from_existing(method, modification_func) method = create_lb_method_from_existing(method, modification_func)
method method
``` ```
%%%% Output: execute_result %%%% Output: execute_result
<lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fad70f2db00> <lbmpy.methods.momentbased.MomentBasedLbMethod at 0x7fad70f2db00>
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Our customized method can be directly passed into one of the scenarios. We can for example set up a channel flow with it. Since we used symbols as relaxation rates, we have to pass them in as `kernel_params`. Our customized method can be directly passed into one of the scenarios. We can for example set up a channel flow with it. Since we used symbols as relaxation rates, we have to pass them in as `kernel_params`.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
ch = create_channel(domain_size=(100, 30), lb_method=method, u_max=0.05, ch = create_channel(domain_size=(100, 30), lb_method=method, u_max=0.05,
kernel_params={'omega_0': 1.8, 'omega_1': 1.4, 'omega_2': 1.5}) kernel_params={'omega_0': 1.8, 'omega_1': 1.4, 'omega_2': 1.5})
ch.run(500) ch.run(500)
plt.vector_field(ch.velocity[:, :]); plt.vector_field(ch.velocity[:, :]);
``` ```
%%%% Output: display_data %%%% Output: display_data
![](data:image/png;base64,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