Commit 9b77d485 authored by Frederik Hennig's avatar Frederik Hennig Committed by Markus Holzer
Browse files

A few minor fixes:

- Now applying pre-simplification on CQE, too
- Added zero and alias insertion
- Bugfix
parent d6bde7f7
......@@ -4,6 +4,7 @@ __pycache__
*.pyc
*.vti
/build
/html_doc
/dist
/*.egg-info
.cache
......@@ -13,5 +14,4 @@ _local_tmp
**/.vscode
/lbmpy_tests/db
doc/bibtex.json
/html_doc
RELEASE-VERSION
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
%% Cell type:code id: tags:
``` python
from lbmpy.session import *
from pystencils.timeloop import TimeLoop
```
%% Cell type:markdown id: tags:
# Tutorial 06: Coupling two LBM simulations for thermal simulations
In this notebook we demonstrate how to run a thermal lattice Boltzmann simulation.
We use a separate set of distribution functions to solve the advection-diffusion equation for the temperature.
The zeroth moment of these additional pdfs corresponds to temperature.
The thermal LB step is coupled to the normal hydrodynamic LB scheme using the Boussinesq approximation. The force on the liquid is proportional to the relative temperature. The hydrodynamic LB method computes the fluid velocity which in turn enters the thermal scheme, completing the two-way coupling.
To set this up in *lbmpy* we create first a `data handling` object and create an array to store the temperature.
%% Cell type:code id: tags:
``` python
domain_size = (100, 50)
gpu = False
dh = ps.create_data_handling(domain_size)
temperature_field = dh.add_array("T", gpu=gpu)
dh.fill('T', val=1.0)
```
%% Cell type:markdown id: tags:
Next, we define how to compute the local force from the temperature field:
%% Cell type:code id: tags:
``` python
gravity = sp.Matrix([0, -1e-2])
force = -gravity * (temperature_field(0) - 1.0)
```
%% Cell type:markdown id: tags:
Now, we can create both LB steps.
The coupling is created by passing the following parameters to the hydrodynamic step,
- `compute_velocity_in_every_step`: usually the velocity is not computed/stored in every time step, only for output and plotting reasons. In the coupled algorithm we have to make sure that after every time step the current velocity is stored in an array, since it enters the thermal LB scheme.
- `force`: we can simply pass our sympy expression for the force here, as long as the `LatticeBoltzmannStep` operates on a data handling that stores the fields that are referenced in the expression. This is why we have to create the data handling first and pass it to both Step objects
and to the thermal step
- `compute_density_in_every_step`: density corresponds to the temperature here, which we need to be computed in every time step, since it enters the force expression for the hydrodynamic scheme
- `equilibrium_order`: for the thermal LB method a first order accurate equilibrium is sufficient. This is slightly faster to compute than the normal equilibrium of order 2
- `velocity_input_array_name`: the velocity entering the thermal equilibrium equation is not computed as first moment of the thermal pdfs. Instead, the hydrodynamic velocity is used here.
%% Cell type:code id: tags:
``` python
optimization = {'target': 'cpu' if gpu else 'cpu', 'openmp': 2}
hydro_step = LatticeBoltzmannStep(data_handling=dh, name='hydro', optimization=optimization,
relaxation_rate=1.8,
compute_velocity_in_every_step=True,
force=force)
thermal_step = LatticeBoltzmannStep(data_handling=dh, name='thermal', optimization=optimization,
relaxation_rate=1.8, density_data_name="T",
compute_density_in_every_step=True,
equilibrium_order=1,
velocity_input_array_name=hydro_step.velocity_data_name)
```
%% Cell type:markdown id: tags:
We add `NoSlip` boundary conditions on all four walls for both schemes with the exception of the left wall of the thermal scheme. Here we set a heated wall, where the temperature is fixed to `1.01`. This kind of Dirichlet boundary condition can be set using a `FixedDensity` LB boundary.
%% Cell type:code id: tags:
``` python
add_box_boundary(hydro_step.boundary_handling)
add_box_boundary(thermal_step.boundary_handling)
thermal_step.boundary_handling.set_boundary(FixedDensity(1.01), slice_from_direction('W', dh.dim))
plt.figure(figsize=(20, 5))
plt.subplot(1, 2, 1)
plt.title("Hydrodynamic")
plt.boundary_handling(hydro_step.boundary_handling)
plt.subplot(1, 2, 2)
plt.title("Thermal")
plt.boundary_handling(thermal_step.boundary_handling)
```
%%%% Output: display_data
![](data:image/png;base64,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6ec///n23/72t0ffeOONN1955ZV3LFy4cIckOfnkk/c5++yz77nttttunj59+ppPfOITzzSgQ4cO7VqwYMGt7373u5cfe+yxk770pS/dfcsttyz65je/ueuyZcs6kuTiiy9esmjRosU33HDDzV/84hfHrB/v6e67797u1FNPffCOO+5YNGrUqHUXXXTRzv33yQEABob+q70JCQGARvrJT34y4ogjjlgxcuTIrtGjR3e98Y1vXPH4448PWrVqVcdb3vKW1Unyvve97+Frr712xPpljj766BVJMnPmzDWTJk1aM378+KeHDx9e995777V33nnn0CQ599xzx0ydOnXarFmz9l+2bNmQRYsWbbfhtseOHbv2Na95zZokOfDAA59YsmTJsP751AAAA0f/1d7ckxAAaKxSXthVJtttt11NkkGDBmXYsGHPPBlw0KBB6ezsLFdeeeXIa665ZuSCBQtuGTlyZNecOXOmrlmz5jlfyg4dOvSZZTs6OurG5gEA2Bbpv9qXXwgA0EiHHXbY6v/4j//YafXq1eXRRx8ddNVVV+20ww47dO24447rfvCDH4xIki9/+cu7HHTQQat7u84VK1Z0jBo1at3IkSO7rr/++u3WX0IDAID+q905kxAAaKRDDjnkiaOPPvqRGTNmTB87duzaOXPmrE6Sf//3f//jBz/4wfGnnnrqoHHjxq295JJLlvR2ncccc8zK888/f7cpU6ZM23fffZ+cOXPm41urfgCAlxr9V3srtdbNz9VHxo8fX88444xnjZ1959h+2z4A0Lc+NfHeZ01/5jOfyV133bXZa0gWLly4ZObMmQ+tn37F3/1oZl8+XW+n7Yd03nDmGxf21foGysKFC3edOXPmhC1dz/B9htdJfzvpWWOrFp+zpasFAAaIHowtsake05mEAMCA00wCAPQ/PRg9uSchAAAAADSckBAAAAAAGk5ICAAAAAANJyQEAAAAgIYTEgIAAABAwwkJAYBGKqXMet/73rfX+ukzzzxzzOmnn77n8y2zcOHCYXPmzJm63377TZs4ceL0d73rXeOT5Morrxz5ute9blKSXHzxxaM+9alP7b51qwcAeGnSg7WvwQNdAADAvHnzZq5du7bP+pJhw4Z1zp07d+HzzTN06ND6ve99b+f7779/2R577NHZm/V+6EMfGnfqqac+cOKJJ65Ikt/85jfDN5znhBNOWJlk5YsqHACgH+nB6MmZhADAgOvL5rS36+vo6KgnnXTS8rPPPnvMhu/ddtttQw866KApU6ZMmXbQQQdNuf3224cmyYMPPjhk/PjxT62fb86cOWs2XPa8887b5aSTThqXJMccc8yE448/ftysWbOmTpgwYcYll1wyass+GQBA39GD0ZOQEABorI9//OMPzp8/f/TDDz/c0XP8Ax/4wLjjjz/+4dtuu+3md77znQ9/8IMf3DtJPvShDz1wxBFHTHnta187+ayzznrZQw891LHxNf/J0qVLh/3mN7+59bvf/e7tp5122vgnnniibK3PAwDwUqAHa0+bDQlLKXuXUn5SSllcSllUSvlwa3x0KeWqUsrtrZ87b/1yAQD6zujRo7uOPfbYh88555yX9Ry//vrrdzjllFMeSZIPfvCDj1x33XUjkuTDH/7wwzfeeOOid7zjHY/87Gc/G/mqV71qvzVr1jxvw3nMMcc80tHRkQMOOGDt3nvvvfaGG27Yrje13XHHHUPmzp07Rg8GAGxr2rkHa7LenEnYmeSjtdb9k7w6yYdKKdOSfDLJ1bXWyUmubk0DALyk/NVf/dUDX//613d9/PHHe3WFxYQJE54+7bTTHr766qv/MHjw4CxYsOA598TpqZTyvNObMmTIkHz0ox99VA8GAGyL2rUHa7LN7oha6/211t+1Xq9KsjjJ2CRvSzKvNdu8JG/fWkUCAGwtY8aMWffWt7710a9//eu7rh878MADH7/gggt2TpIvfvGLo2fPnr06SS699NId165dW5Lk7rvvHrxixYqOnvfH2Zj58+fvvG7duixatGjY0qVLh82cOfPJ3tQ1fvz4p1/+8pc/lejBAIBtT7v2YE32gm5QWUqZkOTAJL9OMqbWen/SHSSWUl72PIsCALStM844Y9m8efN2Wz/9hS984e65c+dO+NznPrf7Lrvs0nnRRRctSZIf/OAHO37sYx8bN2zYsK4kOeuss+4ZN25c5+9///tNrnvSpElr58yZM/Xhhx8e8tnPfvau7bffvr7Q+vRgAMC2qN17sKbpdUhYShmR5LIkp9VaH+vtaZqllFOSnJIko0ePfjE1AgDbuGHDhnX25dP1hg0b1rm5eZ544onr17/ee++9O9esWfPM9NSpU5+69tprb9twmQsuuOCeJPdsOH7kkUeuOvLII1clyamnnvpwkofXv3fIIYes/vKXv7z0hX+Kbn3Rgw3ZZciL3TwAsA3Tg9FTr/5DKKUMSXdzenGtdX5r+IFSyh6tb7D3SPLgxpattZ6f5PwkGT9+vNQWAHiOuXPnLhzoGtrR008/nfRBDzZ8n+F6MADgOfRg9LTZkLB0f1395SSLa63/p8db30kyN8k5rZ9XbJUKAQBeoi677LIlL3bZrq6unHHGGbsmuVwPBgDQe1vSgzVZb84kPDjJf09yYynlhtbYp9LdmH6rlPKeJHcnOXbrlAgA0DxXXXXViB/96Ec7JDlMDwYAwNa22ZCw1vqLJJu6+c3r+7YcAKAhurq6usqgQYNcBrsJhx9++OM33HDDH2fOnPnyjbytBwMAoE8NGugCAIBGumn58uWjurq6evcUjobp6uoqy5cvH5XkpoGuBQCAZuizJ9gAAPRWZ2fne5ctW3bBsmXLZsSXlhvTleSmzs7O9w50IQAANIOQEADod7NmzXowyVEDXQcAAP2ro6Nj1uTJk9esn77iiivueOCBBwZfeOGFu3zlK19ZuqXrHzt27AELFixYvMcee3RuOL7DDjusS5J169aVt7zlLY+ee+659w8fPrzPbn9z8cUXj1q0aNHws88+e9lXv/rVnaZNm/bkrFmznuzt8hdeeOHOZ5999p533nnndj/96U8Xv/a1r31iY/NdeumlO37sYx8b19XVlRNPPPGhs88+e1mSnH322bv927/925ilS5cOu++++xZu+DvYHCEhAAAAQAMd8o1DZq5cu7LPsqFRw0Z1/uK4Xyx8vnmGDRvWdcstt9zcc2zq1KlPbSoQ60vXXHPNbXvssUfnypUrB5144onjTzjhhPHz589f0lfrP+GEE1YmWZkkl19++U6dnZ0rX0hI+IpXvGLNZZdddsf73ve+CZuap7OzMx/5yEfG/fCHP7xt4sSJT8+cOXP/Y445ZsWsWbOePPTQQ1cfc8wxKw877LCpL6Z+l/cAAAAANFBfBoRbsr4rr7xy5Ote97pJSXLyySfv/bGPfWyPJLnssst2nD179tR169blvvvuG/znf/7n+86YMWP/GTNm7P+jH/1ohyRZtmxZx8EHHzx5//33n3b88cePr3XzJwaOGjWqa968eXddddVVOz3wwAMdSfI3f/M3Y2bMmLH/lClTpn3kIx/ZM0luvfXWoRMnTpx+3HHHjZ80adL0gw8+ePLq1atLknz6059+2b777jt9ypQp04488siJSXLeeeftctJJJ4276qqrdvjP//zPnf76r/96r/3222/aokWLhk2bNm3/9du/8cYbh02fPn3/Det65Stf+eTMmTPXPl/tP/3pT3cYP3782mnTpj213Xbb1Xe84x2PXHrppTslycEHH7xm6tSpT/Xql74RQkIAAAAA+sXatWsH7bffftP222+/aYcffvi+G77/z//8z/defvnlo7/73e+O/OhHPzpu3rx5Szo6OvL+979/79NPP/2Bm266afG3v/3tP3zgAx+YkCSf/OQn9zzooINWL168+Oajjjpqxf333z+0N3WMHj26a+zYsU8tWrRou/nz5+94xx13bPf73/9+8eLFi2++4YYbtv/+978/Iknuvvvu7U499dQH77jjjkWjRo1ad9FFF+2cJOedd97uN91008233XbbzV/5ylfu6rnuww8//PE3vOENKz796U/fc8stt9w8ffr0tSNHjlz3q1/9aniSfPGLX9z1+OOPf/jF/P6WLl06dOzYsc8EgXvttddT9957b68+8+a43BgAAACAfrGxy417GjlyZNcXvvCFJW9+85v3O+uss5ZOnz59bZL88pe/3PH2228fvn6+1atXdzz66KODrr322pHz58+/I0mOO+64le9///vX9baW9Wcd/uAHP9jxZz/72Y7Tpk2bliRPPPHEoFtuuWW7iRMnPjV27Ni1r3nNa9YkyYEHHvjEkiVLhiXJ1KlT1xx99NH7HHXUUStOOOGEFZvb1sknn/zQl770pV3nzJmz9Iorrtj5t7/97eLe1rmxmnsqpfTJfRWFhAAAAAC0jRtuuGH4qFGjOu+7774h68dqrVmwYMHiESNGPCcQGzTohV8o++ijjw667777hh5wwAFPXnLJJTnttNPu//jHP/5Qz3luvfXWoUOHDn1mex0dHXXNmjWDkuQnP/nJ7d///vdHXn755Tv9/d///Z633377Tc+3vblz5z567rnn7vmNb3xj1QEHHPDE7rvv3usws6dx48Y968zBe+65Z+iee+759ItZ14ZcbgwAAABAW7jtttuG/su//Mvu11133c1XX331qB//+Mc7JMkhhxzy2Lnnnvuy9fOtv3T31a9+9aoLL7xwlyT51re+teNjjz3WsbltrFy5ctC73/3u8YcffviK3Xbbbd2b3/zmx7761a/uunLlykFJ8sc//nHIvffeu8kT69atW5c//OEPQ9/61reu+td//dd7Vq1a1bFy5cpnbXfEiBHrHnvssWdyt+23374eeuihK08//fRxJ5988kPPXWvvHHrooY8vWbJku1tuuWXok08+WebPnz/6mGOO2eyZjL0hJAQAAABgwHV1deXkk0+e8JnPfGbphAkTnv7Sl7605AMf+MD4J554opx//vlLf/e73+0wZcqUafvuu+/0z3/+87slyTnnnHPfL3/5yxHTpk3b/4c//OGoPfbYY5MP7jj00EOnTJ48eforX/nK/ffee++nvva1r92VJO9f/dUFAAAMEklEQVR4xzseO/bYYx951atetd+UKVOmHX300fuuWLFik2FjZ2dnOf744/eZMmXKtBkzZkx7//vf/8Cuu+76rDMDTzjhhEfOO++83ffff/9pixYtGpYkJ5100iPrt7ex9V500UU7jRkz5uU33HDDDkcfffTkQw45ZHKSLFmyZMihhx46KUmGDBmSf/zHf7z7TW9605TJkydPf/vb3/7I7Nmzn0y6H6YyZsyYlz/wwANDZ86cOe2d73zn+Bfy+y+9eepLXxk/fnw944wznjV29p1j+237AEDf+tTEe581/ZnPfCZ33XVXGaBy2ITh+wyvk/520rPGVi0+Z4CqAQC21IvtwRYuXLhk5syZz5zFdsg3DpnZl084HjVsVOcvjvvFwr5a37bmzDPPHLNy5cqOz33uc/cNZB0LFy7cdebMmRM2HHdPQgAAAIAGEuj1n8MPP3zfu+66a9g111xz20DXsilCQgAAAADYiq666qo/DHQNm+OehAAAAADQcEJCAAAAgGbo6urqcv/oBmvt/66NvSckBAAAAGiGm5YvXz5KUNhMXV1dZfny5aOS3LSx992TEAAAAKABOjs737ts2bILli1bNiNOHGuiriQ3dXZ2vndjbwoJAQAAABpg1qxZDyY5aqDroD1JjQEAAACg4YSEAAAAANBwQkIAAAAAaDghIQAAAAA0nJAQAAAAABpOSAgAAAAADSckBAAAAICGExICAAAAQMMJCQEAAACg4YSEAAAAANBwQkIAAAAAaDghIQAAAAA0nJAQAAAAABpOSAgAAAAADSckBAAAAICGExICAAAAQMMJCQEAAACg4YSEAAAAANBwQkIAAAAAaDghIQAAAAA0nJAQAAAAABpOSAgA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)
%% Cell type:code id: tags:
``` python
def run(time_steps):
hydro_step.pre_run()
thermal_step.pre_run()
for t in range(time_steps):
hydro_step.time_step()
thermal_step.time_step()
hydro_step.post_run()
thermal_step.post_run()
hydro_step.time_steps_run += time_steps
thermal_step.time_steps_run += time_steps
```
%% Cell type:code id: tags:
``` python
run(5000)
assert dh.max('T') < 2
plt.figure(figsize=(16, 5))
plt.subplot(1, 2, 1)
plt.scalar_field(thermal_step.density[:, :])
plt.subplot(1, 2, 2)
plt.vector_field(hydro_step.velocity[:, :]);
```
%%%% Output: display_data
![](data:image/png;base64,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6vGc29yBdUA94DIwSCmly/ex0HDU/te79UBPUM2VX93QQt7fch6p5XWrIQL5XFcWvX1WpVpt9QZaPmk+dUXveu/d/dADWtIse5mlh1QIUTDVgN9yPiucgDVKqe0ltTFjx44lLS2NKlWqmC0q8/zzz+Pp6UnXrl155ZVXKFOmDB07dmTDhg0EBwfTuXNndu/ezfz580lMTGTdunX8+eef7NmzB71ez/Dhw0lNoLIYvQAAIABJREFUTaVs2bK89tprfPnll1afj1lZWWiaVmyJg5OTk1nN0rp169pNliA7kd25cyepqakkJiaSmJhItWrVTEloZmYm69ato169ekybNg2j0UjLli3p16+f6THCwsJ46623iI2NpUOHDnh4ePDZZ59Ro0YN033++usvhg0bhoODA61ateLpp5/m7bffNtsv3377LR9//DE+Pj54eXnx7LPPmiWher2et956i7JlyzJjxgx8fHyshqyGhoYSGRnJ1q1badOmjc3exqysLCIiIuyurOvu7s6KFSvs7jPIPnfyktewVSHE/SXfobmapj0N6IGVdySiXwEJSqkvNE2bAlRSStmfaZyjZfNS6uiO/xU/jsjUm8VPPohDcy2H4uZ3PZ9Vcx3yGZprNVQ3n6G5GPIZqmvr+FsO181vFd277X5MRIt7aO69fjwhHhIyNLfo7sbQXKWUae6npU2bNrFixQp+++03q9j//d//8eijjzJlyhSz22fOnMkvv/zC7t27qVChAt999x1eXl6MGzeOxo0bM3HiRKZOnUpAQAAVKlSgW7dutGjRgh07dnD16lViY2OpVKkSx44ds0p6dDod0dHRpuGmD7ukpCTKlStnd95YfqvPgpReEUIUzl1bNTdngYMEi5t7A7k/Wa0A+hR6C4UQQgjxUIiIiLC7Wmfbtm05dOgQtn74/uijj5g7d65piG6u6dOnM3DgQNPiPm+99RZdu3bl1KlTdOzYkQEDBtChQwemTp1KWFgYzzzzDNu2bSMoKAiDwUB8fDypqal4enrSvHlznn76aXx8fKhRowbu7u588cUX+Pv7c/78eW7dugVkz3/09/fn999/v/s7qARVqFAhzzIkDg4OeSahYH/BlpJmb/VQIcSD4e+Ojq2mlLoOkPNvVXt31DRtpKZpgZqmBcbGG+zdTQghhBAPqP3797Nx40abyWa1atUoV64cly5d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)
%% Cell type:code id: tags:
``` python
assert np.isfinite(hydro_step.velocity[:, :].max())
assert np.isfinite(thermal_step.density[:, :].max())
```
%% Cell type:markdown id: tags:
# Shan-Chen Two-Phase Single-Component Lattice Boltzmann
%% Cell type:code id: tags:
``` python
from lbmpy.session import *
from lbmpy.updatekernels import create_stream_pull_with_output_kernel
from lbmpy.macroscopic_value_kernels import macroscopic_values_getter, macroscopic_values_setter
from lbmpy.maxwellian_equilibrium import get_weights
```
%% Cell type:markdown id: tags:
This is based on section 9.3.2 of Krüger et al.'s "The Lattice Boltzmann Method", Springer 2017 (http://www.lbmbook.com).
Sample code is available at [https://github.com/lbm-principles-practice/code/](https://github.com/lbm-principles-practice/code/blob/master/chapter9/shanchen.cpp).
%% Cell type:markdown id: tags:
## Parameters
%% Cell type:code id: tags:
``` python
N = 64
omega_a = 1.
g_aa = -4.7
rho0 = 1.
stencil = get_stencil("D2Q9")
weights = get_weights(stencil, c_s_sq=sp.Rational(1,3))
```
%% Cell type:markdown id: tags:
## Data structures
%% Cell type:code id: tags:
``` python
dim = len(stencil[0])
dh = ps.create_data_handling((N,)*dim, periodicity=True, default_target='cpu')
src = dh.add_array('src', values_per_cell=len(stencil))
dst = dh.add_array_like('dst', 'src')
ρ = dh.add_array('rho')
```
%% Cell type:markdown id: tags:
## Force & combined velocity
%% Cell type:markdown id: tags:
The force on the fluid is
$\vec{F}_A(\vec{x})=-\psi(\rho_A(\vec{x}))g_{AA}\sum\limits_{i=1}^{q}w_i\psi(\rho_A(\vec{x}+\vec{c}_i))\vec{c}_i$
with
$\psi(\rho)=\rho_0\left[1-\exp(-\rho/\rho_0)\right]$.
%% Cell type:code id: tags:
``` python
def psi(dens):
return rho0 * (1. - sp.exp(-dens / rho0));
```
%% Cell type:code id: tags:
``` python
zero_vec = sp.Matrix([0] * dh.dim)
force = sum((psi(ρ[d]) * w_d * sp.Matrix(d)
for d, w_d in zip(stencil, weights)), zero_vec) * psi(ρ.center) * -1 * g_aa
```
%% Cell type:markdown id: tags:
## Kernels
%% Cell type:code id: tags:
``` python
collision = create_lb_update_rule(stencil=stencil,
relaxation_rate=omega_a,
compressible=True,
force_model='guo',
force=force,
kernel_type='collide_only',
optimization={'symbolic_field': src})
stream = create_stream_pull_with_output_kernel(collision.method, src, dst, {'density': ρ})
opts = {'cpu_openmp': False,
'target': dh.default_target}
stream_kernel = ps.create_kernel(stream, **opts).compile()
collision_kernel = ps.create_kernel(collision, **opts).compile()
```
%% Cell type:markdown id: tags:
## Initialization
%% Cell type:code id: tags:
``` python
method_without_force = create_lb_method(stencil=stencil, relaxation_rate=omega_a, compressible=True)
init_assignments = macroscopic_values_setter(method_without_force, velocity=(0, 0),
pdfs=src.center_vector, density=ρ.center)
init_kernel = ps.create_kernel(init_assignments, ghost_layers=0).compile()
```
%% Cell type:code id: tags:
``` python
def init():
for x in range(N):
for y in range(N):
if (x-N/2)**2 + (y-N/2)**2 <= 15**2:
dh.fill(ρ.name, 2.1, slice_obj=[x,y])
else:
dh.fill(ρ.name, 0.15, slice_obj=[x,y])
dh.run_kernel(init_kernel)
```
%% Cell type:markdown id: tags:
## Timeloop
%% Cell type:code id: tags:
``` python
sync_pdfs = dh.synchronization_function([src.name])
sync_ρs = dh.synchronization_function([ρ.name])
def time_loop(steps):
dh.all_to_gpu()
for i in range(steps):
sync_ρs()
dh.run_kernel(collision_kernel)
sync_pdfs()
dh.run_kernel(stream_kernel)
dh.swap(src.name, dst.name)
dh.all_to_cpu()
```
%% Cell type:code id: tags:
``` python
def plot_ρs():
plt.title("$\\rho$")
plt.scalar_field(dh.gather_array(ρ.name), vmin=0, vmax=2.5)
plt.colorbar()
```
%% Cell type:markdown id: tags:
## Run the simulation
### Initial state
%% Cell type:code id: tags:
``` python
init()
plot_ρs()
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
### Check the first time step against reference data
The reference data was obtained with the [sample code](https://github.com/lbm-principles-practice/code/blob/master/chapter9/shanchen.cpp) after making the following changes:
```c++
const int nsteps = 1000;
const int noutput = 1;
```
Remove the next cell if you changed the parameters at the beginning of this notebook.
%% Cell type:code id: tags:
``` python
init()
time_loop(1)
ref = np.array([0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.136756, 0.220324, 1.2382, 2.26247, 2.26183, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.1, 2.26183, 2.26247, 1.2382, 0.220324, 0.136756, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15])
assert np.allclose(dh.gather_array(ρ.name)[N//2], ref)
```
%% Cell type:markdown id: tags:
### Run the simulation until converged
%% Cell type:code id: tags:
``` python
init()
time_loop(1000)
plot_ρs()
```
%%%% Output: display_data
![](data:image/png;base64,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)
This source diff could not be displayed because it is too large. You can view the blob instead.
%% Cell type:markdown id: tags:
# Shan-Chen Two-Component Lattice Boltzmann
%% Cell type:code id: tags:
``` python
from lbmpy.session import *
from lbmpy.updatekernels import create_stream_pull_with_output_kernel
from lbmpy.macroscopic_value_kernels import macroscopic_values_getter, macroscopic_values_setter
from lbmpy.maxwellian_equilibrium import get_weights
```
%% Cell type:markdown id: tags:
This is based on section 9.3.3 of Krüger et al.'s "The Lattice Boltzmann Method", Springer 2017 (http://www.lbmbook.com).
Sample code is available at [https://github.com/lbm-principles-practice/code/](https://github.com/lbm-principles-practice/code/blob/master/chapter9/shanchen.cpp).
%% Cell type:markdown id: tags:
## Parameters
%% Cell type:code id: tags:
``` python
N = 64 # domain size
omega_a = 1. # relaxation rate of first component
omega_b = 1. # relaxation rate of second component
# interaction strength
g_aa = 0.
g_ab = g_ba = 6.
g_bb = 0.
rho0 = 1.
stencil = get_stencil("D2Q9")
weights = get_weights(stencil, c_s_sq=sp.Rational(1,3))
```
%% Cell type:markdown id: tags:
## Data structures
We allocate two sets of PDF's, one for each phase. Additionally, for each phase there is one field to store its density and velocity.
To run the simulation on GPU, change the `default_target` to gpu
%% Cell type:code id: tags:
``` python
dim = len(stencil[0])
dh = ps.create_data_handling((N, ) * dim, periodicity=True, default_target='cpu')
src_a = dh.add_array('src_a', values_per_cell=len(stencil))
dst_a = dh.add_array_like('dst_a', 'src_a')
src_b = dh.add_array('src_b', values_per_cell=len(stencil))
dst_b = dh.add_array_like('dst_b', 'src_b')
ρ_a = dh.add_array('rho_a')
ρ_b = dh.add_array('rho_b')
u_a = dh.add_array('u_a', values_per_cell=dh.dim)
u_b = dh.add_array('u_b', values_per_cell=dh.dim)
```
%% Cell type:markdown id: tags:
## Force & combined velocity
The two LB methods are coupled using a force term. Its symbolic representation is created in the next cells.
The force value is not written to a field, but directly evaluated inside the collision kernel.
%% Cell type:markdown id: tags:
The force between the two components is
$\vec{F}_k(\vec{x})=-\psi(\rho_k(\vec{x}))\sum\limits_{k^\prime\in\{A,B\}}g_{kk^\prime}\sum\limits_{i=1}^{q}w_i\psi(\rho_{k^\prime}(\vec{x}+\vec{c}_i))\vec{c}_i$
for $k\in\{A,B\}$
and with
$\psi(\rho)=\rho_0\left[1-\exp(-\rho/\rho_0)\right]$.
%% Cell type:code id: tags:
``` python
def psi(dens):
return rho0 * (1. - sp.exp(-dens / rho0));
```
%% Cell type:code id: tags:
``` python
zero_vec = sp.Matrix([0] * dh.dim)
force_a = zero_vec
for factor, ρ in zip([g_aa, g_ab], [ρ_a, ρ_b]):
force_a += sum((psi(ρ[d]) * w_d * sp.Matrix(d)
for d, w_d in zip(stencil, weights)),
zero_vec) * psi(ρ_a.center) * -1 * factor
force_b = zero_vec
for factor, ρ in zip([g_ba, g_bb], [ρ_a, ρ_b]):
force_b += sum((psi(ρ[d]) * w_d * sp.Matrix(d)
for d, w_d in zip(stencil, weights)),
zero_vec) * psi(ρ_b.center) * -1 * factor
```
%% Cell type:markdown id: tags:
The barycentric velocity, which is used in place of the individual components' velocities in the equilibrium distribution and Guo force term, is
$\vec{u}=\frac{1}{\rho_a+\rho_b}\left(\rho_a\vec{u}_a+\frac{1}{2}\vec{F}_a+\rho_b\vec{u}_b+\frac{1}{2}\vec{F}_b\right)$.
%% Cell type:code id: tags:
``` python