{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Poiseuille Channel (regularized)\n", "\n", "The simulation of a periodic Poiseuille flow is used for the validation of regularized no-slip boundary condition, which works directly with macroscopic variables and is necessary for increasing numerical stability and use of moment based lattice-Boltzmann method.\n", "The external force density term still represents the pressure gradient $F_{x}=-\\mathrm{d}p/\\mathrm{d}x$, regularized no-slip BC is implemented at $y=0$ and $y=H$, and periodicity is considered in the remaining boundaries." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2026-06-29T17:41:36.739266Z", "iopub.status.busy": "2026-06-29T17:41:36.739148Z", "iopub.status.idle": "2026-06-29T17:41:37.213331Z", "shell.execute_reply": "2026-06-29T17:41:37.212862Z" } }, "outputs": [], "source": [ "from nassu.cfg.model import ConfigScheme\n", "\n", "filename = \"validation/analytical/02_poiseuille_channel_flow/02_poiseuille_channel_flow.nassu.yaml\"\n", "\n", "sim_cfgs = ConfigScheme.sim_cfgs_from_file_dct(filename)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The only change from the periodic case, is that it's now using regularized halfway bounce back (HWBB) as BC for the wall, instead of plain HWBB." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2026-06-29T17:41:37.214415Z", "iopub.status.busy": "2026-06-29T17:41:37.214293Z", "iopub.status.idle": "2026-06-29T17:41:37.216946Z", "shell.execute_reply": "2026-06-29T17:41:37.216701Z" } }, "outputs": [ { "data": { "text/plain": [ "['regularizedPeriodicPoiseuilleChannel:000',\n", " 'regularizedPeriodicPoiseuilleChannel:001',\n", " 'regularizedPeriodicPoiseuilleChannel:002',\n", " 'regularizedPeriodicPoiseuilleChannel:003']" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sim_cfgs_use = [\n", " sim_cfg\n", " for (name, _), sim_cfg in sim_cfgs.items()\n", " if name == \"regularizedPeriodicPoiseuilleChannel\"\n", "]\n", "\n", "[sim_cfg.full_name for sim_cfg in sim_cfgs_use]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Extract data from multiblock data from output file of macrs export" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2026-06-29T17:41:37.234150Z", "iopub.status.busy": "2026-06-29T17:41:37.233984Z", "iopub.status.idle": "2026-06-29T17:41:37.859841Z", "shell.execute_reply": "2026-06-29T17:41:37.859461Z" } }, "outputs": [ { "data": { "text/plain": [ "dict_keys([(0, 'regularizedPeriodicPoiseuilleChannel'), (1, 'regularizedPeriodicPoiseuilleChannel'), (2, 'regularizedPeriodicPoiseuilleChannel'), (3, 'regularizedPeriodicPoiseuilleChannel')])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from vtkmodules.util.numpy_support import vtk_to_numpy\n", "\n", "import nassu.viz as common\n", "\n", "common.use_style()\n", "\n", "extracted_data = {}\n", "array_to_extract = \"ux\"\n", "\n", "for sim_cfg in sim_cfgs_use:\n", " macr_export = sim_cfg.output.exports[\"default\"].volumes[\"default\"].inst\n", " data = macr_export.read_export(sim_cfg.n_steps)\n", "\n", " p1 = [sim_cfg.domain.domain_size.x / 2, 0, 0]\n", " p2 = [sim_cfg.domain.domain_size.x / 2, sim_cfg.domain.domain_size.y, 0]\n", " line = common.create_line(p1, p2, sim_cfg.domain.domain_size.y - 1)\n", "\n", " pos = np.linspace(p1, p2, sim_cfg.domain.domain_size.y)\n", " probe_filter = common.probe_over_line(line, data)\n", "\n", " probed_data = vtk_to_numpy(probe_filter.GetOutput().GetPointData().GetArray(array_to_extract))\n", " extracted_data[(sim_cfg.sim_id, sim_cfg.name)] = {\n", " \"pos\": np.array(pos),\n", " \"data\": probed_data,\n", " }\n", "\n", "extracted_data.keys()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Results\n", "\n", "The velocity profile at the end of simulation is compared with the steady state analytical solution below:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Processing functions for Poiseuille Flow case" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2026-06-29T17:41:37.860827Z", "iopub.status.busy": "2026-06-29T17:41:37.860712Z", "iopub.status.idle": "2026-06-29T17:41:37.862668Z", "shell.execute_reply": "2026-06-29T17:41:37.862433Z" } }, "outputs": [], "source": [ "from typing import Callable\n", "\n", "\n", "def get_poiseuille_analytical_func() -> Callable:\n", " \"\"\"Poiseuille analytical velocity function\n", "\n", " Returns:\n", " Callable: Analytical velocity function\n", " \"\"\"\n", " return lambda pos: 6 * (pos - pos**2)\n", "\n", "\n", "def plot_analytical_poiseuille_vels(ax):\n", " x = np.arange(0, 1.01, 0.01)\n", " analytical_func = get_poiseuille_analytical_func()\n", " analytical_data = analytical_func(x)\n", " ax.plot(x, analytical_data, **common.markers.exp_line(linestyle=\"--\"), label=\"Analytical\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2026-06-29T17:41:37.863600Z", "iopub.status.busy": "2026-06-29T17:41:37.863517Z", "iopub.status.idle": "2026-06-29T17:41:37.968481Z", "shell.execute_reply": "2026-06-29T17:41:37.968204Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = common.fig_single()\n", "\n", "for sim_cfg, mkr_shape in zip(sim_cfgs_use, common.markers.shapes()):\n", " num_data = extracted_data[(sim_cfg.sim_id, sim_cfg.name)]\n", " num_avg_vel = np.average(num_data[\"data\"])\n", " position_vector = (num_data[\"pos\"][:, 1]) / (sim_cfg.domain.domain_size.y)\n", " ax.plot(\n", " position_vector,\n", " num_data[\"data\"] / num_avg_vel,\n", " **common.markers.sim(shape=mkr_shape, color=\"k\"),\n", " label=f\"N={sim_cfg.domain.domain_size.x} (avg. {num_avg_vel:.2e})\",\n", " )\n", "\n", "sim_cfg_ref = sim_cfgs_use[0]\n", "plot_analytical_poiseuille_vels(ax)\n", "ax.set_title(\n", " f\"Poiseuille (Periodic Regularized)\\n({sim_cfg_ref.models.LBM.vel_set} {sim_cfg_ref.models.LBM.coll_oper})\"\n", ")\n", "ax.legend()\n", "plt.tight_layout()\n", "plt.show(fig)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The results show that the flow evolution equation from LBM converges to steady analytical solution.\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The second order error decay under grid refinement for the present case is also verified:\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2026-06-29T17:41:37.969464Z", "iopub.status.busy": "2026-06-29T17:41:37.969385Z", "iopub.status.idle": "2026-06-29T17:41:38.216977Z", "shell.execute_reply": "2026-06-29T17:41:38.216664Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = common.fig_single()\n", "\n", "analytical_error_prof: list[float] = []\n", "numerical_error_prof: list[float] = []\n", "N_list: list[int] = []\n", "\n", "analytical_func = get_poiseuille_analytical_func()\n", "\n", "for sim_cfg in sim_cfgs_use:\n", " num_data = extracted_data[(sim_cfg.sim_id, sim_cfg.name)]\n", " num_avg_vel = np.average(num_data[\"data\"])\n", " num_pos = num_data[\"pos\"][:, 1] / sim_cfg.domain.domain_size.y\n", " num_profile = num_data[\"data\"] / num_avg_vel\n", "\n", " num_o2_error = common.get_o2_error(num_pos, num_profile, analytical_func)\n", " analyical_error = (\n", " num_o2_error if len(analytical_error_prof) == 0 else analytical_error_prof[-1] / 4\n", " )\n", "\n", " analytical_error_prof.append(analyical_error)\n", " numerical_error_prof.append(num_o2_error)\n", " N_list.append(sim_cfg.domain.domain_size.y)\n", "\n", "ax.plot(N_list, numerical_error_prof, **common.markers.sim(shape=\"s\"), label=\"AeroSim\")\n", "ax.plot(\n", " N_list,\n", " analytical_error_prof,\n", " **common.markers.exp_line(linestyle=\"--\"),\n", " label=r\"$O(\\Delta x^2)$\",\n", ")\n", "\n", "ax.set_yscale(\"log\")\n", "ax.set_xscale(\"log\", base=2)\n", "ax.set_title(\n", " r\"Poiseuille $O(\\Delta x^2)$ (Periodic Regularized)\"\n", " + f\"\\n({sim_cfg.models.LBM.vel_set} {sim_cfg.models.LBM.coll_oper})\"\n", ")\n", "ax.legend()\n", "plt.tight_layout()\n", "plt.show(fig)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "It's possible to check that the second order error does not stands for regularized HWBB." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Version" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2026-06-29T17:41:38.218083Z", "iopub.status.busy": "2026-06-29T17:41:38.217988Z", "iopub.status.idle": "2026-06-29T17:41:38.242140Z", "shell.execute_reply": "2026-06-29T17:41:38.241861Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Version:" ] }, { "name": "stdout", "output_type": "stream", "text": [ " " ] }, { "name": "stdout", "output_type": "stream", "text": [ "2.0.1a0" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Commit hash:" ] }, { "name": "stdout", "output_type": "stream", "text": [ " " ] }, { "name": "stdout", "output_type": "stream", "text": [ "20647b9f11c91d10aafe36bf0a564a3a38f9d08a" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "sim_info = sim_cfg.output.read_info()\n", "\n", "nassu_commit = sim_info[\"commit\"]\n", "nassu_version = sim_info[\"version\"]\n", "print(\"Version:\", nassu_version)\n", "print(\"Commit hash:\", nassu_commit)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Configuration" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2026-06-29T17:41:38.242817Z", "iopub.status.busy": "2026-06-29T17:41:38.242749Z", "iopub.status.idle": "2026-06-29T17:41:38.279056Z", "shell.execute_reply": "2026-06-29T17:41:38.278787Z" } }, "outputs": [ { "data": { "text/html": [ "
simulations:\n",
       "  - name: periodicPoiseuilleChannel\n",
       "    save_path: ./validation/analytical/02_poiseuille_channel_flow/results/periodic\n",
       "\n",
       "    n_steps: !unroll [250, 1000, 4000, 16000]\n",
       "\n",
       "    report:\n",
       "      frequency: 1000\n",
       "\n",
       "    domain:\n",
       "      domain_size:\n",
       "        x: !unroll [4, 8, 16, 32]\n",
       "        y: !unroll [4, 8, 16, 32]\n",
       "      block_size: !unroll [4, 8, 8, 8]\n",
       "\n",
       "    data:\n",
       "      exports:\n",
       "        default:\n",
       "          macrs: [rho, u]\n",
       "          interval:\n",
       "            frequency: 0\n",
       "            lvl: 0\n",
       "          target:\n",
       "            volume: {}\n",
       "          outputs:\n",
       "            instantaneous: true\n",
       "\n",
       "    models:\n",
       "      precision:\n",
       "        default: single\n",
       "\n",
       "      LBM:\n",
       "        tau: 0.9\n",
       "        vel_set: D2Q9\n",
       "        coll_oper: RRBGK\n",
       "        F:\n",
       "          # FX is divided by 8\n",
       "          x: !unroll [4.0e-4, 5.0e-5, 6.25e-6, 7.8125e-07]\n",
       "          y: 0\n",
       "\n",
       "      multiblock:\n",
       "        overlap_F2C: 1\n",
       "\n",
       "      engine:\n",
       "        name: CUDA\n",
       "\n",
       "      BC:\n",
       "        periodic_dims: [true, false]\n",
       "        BC_map:\n",
       "          - pos: N\n",
       "            BC: HWBB\n",
       "            wall_normal: N\n",
       "\n",
       "          - pos: S\n",
       "            BC: HWBB\n",
       "            wall_normal: S\n",
       "\n",
       "  - name: regularizedPeriodicPoiseuilleChannel\n",
       "    parent: periodicPoiseuilleChannel\n",
       "\n",
       "    models:\n",
       "      LBM:\n",
       "        coll_oper: RRBGK\n",
       "\n",
       "      BC:\n",
       "        periodic_dims: [true, false]\n",
       "        BC_map:\n",
       "          - pos: N\n",
       "            BC: RegularizedHWBB\n",
       "            wall_normal: N\n",
       "\n",
       "          - pos: S\n",
       "            BC: RegularizedHWBB\n",
       "            wall_normal: S\n",
       "\n",
       "  - name: velocityNeumannPoiseuilleChannel\n",
       "    parent: periodicPoiseuilleChannel\n",
       "\n",
       "    save_path: ./validation/analytical/02_poiseuille_channel_flow/results/velocity_neumann\n",
       "\n",
       "    report: {frequency: 1000}\n",
       "\n",
       "    n_steps: 64000\n",
       "    domain:\n",
       "      domain_size:\n",
       "        x: 256\n",
       "        y: 32\n",
       "      block_size: 8\n",
       "\n",
       "    data:\n",
       "      exports:\n",
       "        default:\n",
       "          macrs: [rho, u]\n",
       "          interval:\n",
       "            frequency: 16000\n",
       "            lvl: 0\n",
       "          target:\n",
       "            volume: {}\n",
       "          outputs:\n",
       "            instantaneous: true\n",
       "\n",
       "    models:\n",
       "      LBM: !not-inherit\n",
       "        tau: 0.9\n",
       "        vel_set: D2Q9\n",
       "        coll_oper: RRBGK\n",
       "\n",
       "      BC:\n",
       "        periodic_dims: [false, false]\n",
       "        BC_map:\n",
       "          - pos: W\n",
       "            BC: UniformFlow\n",
       "            wall_normal: W\n",
       "            rho: 1.0\n",
       "            ux: 0.05\n",
       "            uy: 0\n",
       "            uz: 0\n",
       "            order: 1\n",
       "\n",
       "          - pos: E\n",
       "            BC: RegularizedNeumannOutlet\n",
       "            rho: 1.0\n",
       "            wall_normal: E\n",
       "            order: 1\n",
       "\n",
       "          - pos: N\n",
       "            BC: RegularizedHWBB\n",
       "            wall_normal: N\n",
       "            order: 0\n",
       "\n",
       "          - pos: S\n",
       "            BC: RegularizedHWBB\n",
       "            wall_normal: S\n",
       "            order: 0\n",
       "\n",
       "  - name: velocityNeumannPoiseuilleChannelMultilevel\n",
       "    parent: periodicPoiseuilleChannel\n",
       "\n",
       "    save_path: ./validation/analytical/02_poiseuille_channel_flow/results/multilevel\n",
       "\n",
       "    n_steps: 64000\n",
       "\n",
       "    domain:\n",
       "      domain_size:\n",
       "        x: 96\n",
       "        y: 24\n",
       "      block_size: 8\n",
       "      refinement:\n",
       "        static:\n",
       "          default:\n",
       "            volumes_refine:\n",
       "              - {start: [0, 0], end: [8, 8], lvl: 1, is_abs: true}\n",
       "              - {start: [0, 16], end: [8, 24], lvl: 1, is_abs: true}\n",
       "              - {start: [8, 8], end: [24, 16], lvl: 1, is_abs: true}\n",
       "              - {start: [16, 0], end: [32, 8], lvl: 1, is_abs: true}\n",
       "              - {start: [24, 16], end: [48, 24], lvl: 1, is_abs: true}\n",
       "              - {start: [40, 8], end: [48, 16], lvl: 1, is_abs: true}\n",
       "              - {start: [56, 0], end: [72, 8], lvl: 1, is_abs: true}\n",
       "              - {start: [80, 8], end: [88, 16], lvl: 1, is_abs: true}\n",
       "              - {start: [88, 16], end: [96, 24], lvl: 1, is_abs: true}\n",
       "\n",
       "    data:\n",
       "      exports:\n",
       "        default:\n",
       "          macrs: [rho, u, S]\n",
       "          interval:\n",
       "            frequency: 12000\n",
       "            lvl: 0\n",
       "          target:\n",
       "            volume: {}\n",
       "          outputs:\n",
       "            instantaneous: true\n",
       "\n",
       "    models:\n",
       "      precision:\n",
       "        default: single\n",
       "\n",
       "      LBM: !not-inherit\n",
       "        tau: 0.8\n",
       "        vel_set: D2Q9\n",
       "        coll_oper: RRBGK\n",
       "\n",
       "      engine:\n",
       "        name: CUDA\n",
       "\n",
       "      BC:\n",
       "        periodic_dims: [false, false, true]\n",
       "        BC_map:\n",
       "          - pos: W\n",
       "            BC: UniformFlow\n",
       "            rho: 1.0\n",
       "            ux: 0.05\n",
       "            uy: 0\n",
       "            uz: 0\n",
       "            order: 1\n",
       "\n",
       "          - pos: E\n",
       "            BC: RegularizedNeumannOutlet\n",
       "            rho: 1.0\n",
       "            wall_normal: E\n",
       "            order: 1\n",
       "\n",
       "          - pos: N\n",
       "            BC: RegularizedHWBB\n",
       "            wall_normal: N\n",
       "            order: 0\n",
       "\n",
       "          - pos: S\n",
       "            BC: RegularizedHWBB\n",
       "            wall_normal: S\n",
       "            order: 0\n",
       "
\n" ], "text/latex": [ "\\begin{Verbatim}[commandchars=\\\\\\{\\}]\n", "\\PY{n+nt}{simulations}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{name}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{periodicPoiseuilleChannel}\n", "\\PY{+w}{ }\\PY{n+nt}{save\\PYZus{}path}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{./validation/analytical/02\\PYZus{}poiseuille\\PYZus{}channel\\PYZus{}flow/results/periodic}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{n\\PYZus{}steps}\\PY{p}{:}\\PY{+w}{ }\\PY{k+kt}{!unroll}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{250}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{1000}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{4000}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{16000}\\PY{p+pIndicator}{]}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{report}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1000}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{domain}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{domain\\PYZus{}size}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{x}\\PY{p}{:}\\PY{+w}{ }\\PY{k+kt}{!unroll}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{8}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{16}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{32}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{k+kt}{!unroll}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{8}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{16}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{32}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{block\\PYZus{}size}\\PY{p}{:}\\PY{+w}{ }\\PY{k+kt}{!unroll}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{8}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{8}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{8}\\PY{p+pIndicator}{]}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{data}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{exports}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{macrs}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{rho}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{u}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{interval}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{target}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{volume}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{outputs}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{instantaneous}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{true}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{models}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{precision}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{single}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{LBM}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{tau}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0.9}\n", "\\PY{+w}{ }\\PY{n+nt}{vel\\PYZus{}set}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{D2Q9}\n", "\\PY{+w}{ }\\PY{n+nt}{coll\\PYZus{}oper}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RRBGK}\n", "\\PY{+w}{ }\\PY{n+nt}{F}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{c+c1}{\\PYZsh{} FX is divided by 8}\n", "\\PY{+w}{ }\\PY{n+nt}{x}\\PY{p}{:}\\PY{+w}{ }\\PY{k+kt}{!unroll}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{4.0e\\PYZhy{}4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{5.0e\\PYZhy{}5}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{6.25e\\PYZhy{}6}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{7.8125e\\PYZhy{}07}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{multiblock}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{overlap\\PYZus{}F2C}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{engine}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{name}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{CUDA}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{periodic\\PYZus{}dims}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{true}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{false}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{BC\\PYZus{}map}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{N}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{HWBB}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{N}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{S}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{HWBB}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{S}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{name}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{regularizedPeriodicPoiseuilleChannel}\n", "\\PY{+w}{ }\\PY{n+nt}{parent}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{periodicPoiseuilleChannel}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{models}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{LBM}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{coll\\PYZus{}oper}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RRBGK}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{periodic\\PYZus{}dims}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{true}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{false}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{BC\\PYZus{}map}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{N}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RegularizedHWBB}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{N}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{S}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RegularizedHWBB}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{S}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{name}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{velocityNeumannPoiseuilleChannel}\n", "\\PY{+w}{ }\\PY{n+nt}{parent}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{periodicPoiseuilleChannel}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{save\\PYZus{}path}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{./validation/analytical/02\\PYZus{}poiseuille\\PYZus{}channel\\PYZus{}flow/results/velocity\\PYZus{}neumann}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{report}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{1000}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{n\\PYZus{}steps}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{64000}\n", "\\PY{+w}{ }\\PY{n+nt}{domain}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{domain\\PYZus{}size}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{x}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{256}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{32}\n", "\\PY{+w}{ }\\PY{n+nt}{block\\PYZus{}size}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{8}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{data}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{exports}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{macrs}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{rho}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{u}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{interval}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{16000}\n", "\\PY{+w}{ }\\PY{n+nt}{lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{target}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{volume}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{outputs}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{instantaneous}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{true}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{models}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{LBM}\\PY{p}{:}\\PY{+w}{ }\\PY{k+kt}{!not\\PYZhy{}inherit}\n", "\\PY{+w}{ }\\PY{n+nt}{tau}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0.9}\n", "\\PY{+w}{ }\\PY{n+nt}{vel\\PYZus{}set}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{D2Q9}\n", "\\PY{+w}{ }\\PY{n+nt}{coll\\PYZus{}oper}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RRBGK}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{periodic\\PYZus{}dims}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{false}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{false}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{BC\\PYZus{}map}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{W}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{UniformFlow}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{W}\n", "\\PY{+w}{ }\\PY{n+nt}{rho}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1.0}\n", "\\PY{+w}{ }\\PY{n+nt}{ux}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0.05}\n", "\\PY{+w}{ }\\PY{n+nt}{uy}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{uz}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{order}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{E}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RegularizedNeumannOutlet}\n", "\\PY{+w}{ }\\PY{n+nt}{rho}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1.0}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{E}\n", "\\PY{+w}{ }\\PY{n+nt}{order}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{N}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RegularizedHWBB}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{N}\n", "\\PY{+w}{ }\\PY{n+nt}{order}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{S}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RegularizedHWBB}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{S}\n", "\\PY{+w}{ }\\PY{n+nt}{order}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{name}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{velocityNeumannPoiseuilleChannelMultilevel}\n", "\\PY{+w}{ }\\PY{n+nt}{parent}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{periodicPoiseuilleChannel}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{save\\PYZus{}path}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{./validation/analytical/02\\PYZus{}poiseuille\\PYZus{}channel\\PYZus{}flow/results/multilevel}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{n\\PYZus{}steps}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{64000}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{domain}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{domain\\PYZus{}size}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{x}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{96}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{24}\n", "\\PY{+w}{ }\\PY{n+nt}{block\\PYZus{}size}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{8}\n", "\\PY{+w}{ }\\PY{n+nt}{refinement}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{static}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{volumes\\PYZus{}refine}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{start}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{0}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{0}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ end}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{8}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{8}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{1}\\PY{p+pIndicator}{,}\\PY{n+nt}{ is\\PYZus{}abs}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{true}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{start}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{0}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{16}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ end}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{8}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{24}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{1}\\PY{p+pIndicator}{,}\\PY{n+nt}{ is\\PYZus{}abs}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{true}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{start}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{8}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{8}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ end}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{24}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{16}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{1}\\PY{p+pIndicator}{,}\\PY{n+nt}{ is\\PYZus{}abs}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{true}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{start}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{16}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{0}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ end}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{32}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{8}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{1}\\PY{p+pIndicator}{,}\\PY{n+nt}{ is\\PYZus{}abs}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{true}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{start}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{24}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{16}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ end}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{48}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{24}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{1}\\PY{p+pIndicator}{,}\\PY{n+nt}{ is\\PYZus{}abs}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{true}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{start}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{40}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{8}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ end}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{48}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{16}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{1}\\PY{p+pIndicator}{,}\\PY{n+nt}{ is\\PYZus{}abs}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{true}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{start}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{56}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{0}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ end}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{72}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{8}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{1}\\PY{p+pIndicator}{,}\\PY{n+nt}{ is\\PYZus{}abs}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{true}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{start}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{80}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{8}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ end}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{88}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{16}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{1}\\PY{p+pIndicator}{,}\\PY{n+nt}{ is\\PYZus{}abs}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{true}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{start}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{88}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{16}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ end}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{96}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{24}\\PY{p+pIndicator}{]}\\PY{p+pIndicator}{,}\\PY{n+nt}{ lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{1}\\PY{p+pIndicator}{,}\\PY{n+nt}{ is\\PYZus{}abs}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{true}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{data}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{exports}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{macrs}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{rho}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{u}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{S}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{interval}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{12000}\n", "\\PY{+w}{ }\\PY{n+nt}{lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{target}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{volume}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{outputs}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{instantaneous}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{true}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{models}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{precision}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{single}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{LBM}\\PY{p}{:}\\PY{+w}{ }\\PY{k+kt}{!not\\PYZhy{}inherit}\n", "\\PY{+w}{ }\\PY{n+nt}{tau}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0.8}\n", "\\PY{+w}{ }\\PY{n+nt}{vel\\PYZus{}set}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{D2Q9}\n", "\\PY{+w}{ }\\PY{n+nt}{coll\\PYZus{}oper}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RRBGK}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{engine}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{name}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{CUDA}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{periodic\\PYZus{}dims}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{false}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{false}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{true}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{BC\\PYZus{}map}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{W}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{UniformFlow}\n", "\\PY{+w}{ }\\PY{n+nt}{rho}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1.0}\n", "\\PY{+w}{ }\\PY{n+nt}{ux}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0.05}\n", "\\PY{+w}{ }\\PY{n+nt}{uy}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{uz}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{order}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{E}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RegularizedNeumannOutlet}\n", "\\PY{+w}{ }\\PY{n+nt}{rho}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1.0}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{E}\n", "\\PY{+w}{ }\\PY{n+nt}{order}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{N}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RegularizedHWBB}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{N}\n", "\\PY{+w}{ }\\PY{n+nt}{order}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{S}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{RegularizedHWBB}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{S}\n", "\\PY{+w}{ }\\PY{n+nt}{order}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\end{Verbatim}\n" ], "text/plain": [ "simulations:\n", " - name: periodicPoiseuilleChannel\n", " save_path: ./validation/analytical/02_poiseuille_channel_flow/results/periodic\n", "\n", " n_steps: !unroll [250, 1000, 4000, 16000]\n", "\n", " report:\n", " frequency: 1000\n", "\n", " domain:\n", " domain_size:\n", " x: !unroll [4, 8, 16, 32]\n", " y: !unroll [4, 8, 16, 32]\n", " block_size: !unroll [4, 8, 8, 8]\n", "\n", " data:\n", " exports:\n", " default:\n", " macrs: [rho, u]\n", " interval:\n", " frequency: 0\n", " lvl: 0\n", " target:\n", " volume: {}\n", " outputs:\n", " instantaneous: true\n", "\n", " models:\n", " precision:\n", " default: single\n", "\n", " LBM:\n", " tau: 0.9\n", " vel_set: D2Q9\n", " coll_oper: RRBGK\n", " F:\n", " # FX is divided by 8\n", " x: !unroll [4.0e-4, 5.0e-5, 6.25e-6, 7.8125e-07]\n", " y: 0\n", "\n", " multiblock:\n", " overlap_F2C: 1\n", "\n", " engine:\n", " name: CUDA\n", "\n", " BC:\n", " periodic_dims: [true, false]\n", " BC_map:\n", " - pos: N\n", " BC: HWBB\n", " wall_normal: N\n", "\n", " - pos: S\n", " BC: HWBB\n", " wall_normal: S\n", "\n", " - name: regularizedPeriodicPoiseuilleChannel\n", " parent: periodicPoiseuilleChannel\n", "\n", " models:\n", " LBM:\n", " coll_oper: RRBGK\n", "\n", " BC:\n", " periodic_dims: [true, false]\n", " BC_map:\n", " - pos: N\n", " BC: RegularizedHWBB\n", " wall_normal: N\n", "\n", " - pos: S\n", " BC: RegularizedHWBB\n", " wall_normal: S\n", "\n", " - name: velocityNeumannPoiseuilleChannel\n", " parent: periodicPoiseuilleChannel\n", "\n", " save_path: ./validation/analytical/02_poiseuille_channel_flow/results/velocity_neumann\n", "\n", " report: {frequency: 1000}\n", "\n", " n_steps: 64000\n", " domain:\n", " domain_size:\n", " x: 256\n", " y: 32\n", " block_size: 8\n", "\n", " data:\n", " exports:\n", " default:\n", " macrs: [rho, u]\n", " interval:\n", " frequency: 16000\n", " lvl: 0\n", " target:\n", " volume: {}\n", " outputs:\n", " instantaneous: true\n", "\n", " models:\n", " LBM: !not-inherit\n", " tau: 0.9\n", " vel_set: D2Q9\n", " coll_oper: RRBGK\n", "\n", " BC:\n", " periodic_dims: [false, false]\n", " BC_map:\n", " - pos: W\n", " BC: UniformFlow\n", " wall_normal: W\n", " rho: 1.0\n", " ux: 0.05\n", " uy: 0\n", " uz: 0\n", " order: 1\n", "\n", " - pos: E\n", " BC: RegularizedNeumannOutlet\n", " rho: 1.0\n", " wall_normal: E\n", " order: 1\n", "\n", " - pos: N\n", " BC: RegularizedHWBB\n", " wall_normal: N\n", " order: 0\n", "\n", " - pos: S\n", " BC: RegularizedHWBB\n", " wall_normal: S\n", " order: 0\n", "\n", " - name: velocityNeumannPoiseuilleChannelMultilevel\n", " parent: periodicPoiseuilleChannel\n", "\n", " save_path: ./validation/analytical/02_poiseuille_channel_flow/results/multilevel\n", "\n", " n_steps: 64000\n", "\n", " domain:\n", " domain_size:\n", " x: 96\n", " y: 24\n", " block_size: 8\n", " refinement:\n", " static:\n", " default:\n", " volumes_refine:\n", " - {start: [0, 0], end: [8, 8], lvl: 1, is_abs: true}\n", " - {start: [0, 16], end: [8, 24], lvl: 1, is_abs: true}\n", " - {start: [8, 8], end: [24, 16], lvl: 1, is_abs: true}\n", " - {start: [16, 0], end: [32, 8], lvl: 1, is_abs: true}\n", " - {start: [24, 16], end: [48, 24], lvl: 1, is_abs: true}\n", " - {start: [40, 8], end: [48, 16], lvl: 1, is_abs: true}\n", " - {start: [56, 0], end: [72, 8], lvl: 1, is_abs: true}\n", " - {start: [80, 8], end: [88, 16], lvl: 1, is_abs: true}\n", " - {start: [88, 16], end: [96, 24], lvl: 1, is_abs: true}\n", "\n", " data:\n", " exports:\n", " default:\n", " macrs: [rho, u, S]\n", " interval:\n", " frequency: 12000\n", " lvl: 0\n", " target:\n", " volume: {}\n", " outputs:\n", " instantaneous: true\n", "\n", " models:\n", " precision:\n", " default: single\n", "\n", " LBM: !not-inherit\n", " tau: 0.8\n", " vel_set: D2Q9\n", " coll_oper: RRBGK\n", "\n", " engine:\n", " name: CUDA\n", "\n", " BC:\n", " periodic_dims: [false, false, true]\n", " BC_map:\n", " - pos: W\n", " BC: UniformFlow\n", " rho: 1.0\n", " ux: 0.05\n", " uy: 0\n", " uz: 0\n", " order: 1\n", "\n", " - pos: E\n", " BC: RegularizedNeumannOutlet\n", " rho: 1.0\n", " wall_normal: E\n", " order: 1\n", "\n", " - pos: N\n", " BC: RegularizedHWBB\n", " wall_normal: N\n", " order: 0\n", "\n", " - pos: S\n", " BC: RegularizedHWBB\n", " wall_normal: S\n", " order: 0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Code\n", "\n", "Code(filename=filename)" ] } ], "metadata": { "kernelspec": { "display_name": "nassu (3.12.13)", "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.12.13" } }, "nbformat": 4, "nbformat_minor": 2 }