{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Poiseuille Channel (Velocity-Neumann)\n", "\n", "This simulation is used as test for the outlet boundary condition with a fixed pressure. A velocity Bounce-Back BC is used at inlet. The fixed pressure at outlet is meant to avoid a constant increase of the domain average density." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from nassu.cfg.model import ConfigScheme\n", "\n", "filename = \"tests/validation/cases/02_poiseuille_channel_flow.nassu.yaml\"\n", "\n", "sim_cfgs = ConfigScheme.sim_cfgs_from_file_dct(filename)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "In this case, the domain's length is much longer than it is for the periodic cases. This assures that the flow will be able to develop before reaching the outlet." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'velocityNeumannPoiseuilleChannel:000'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sim_cfg = next(\n", " sim_cfg\n", " for (name, _), sim_cfg in sim_cfgs.items()\n", " if name == \"velocityNeumannPoiseuilleChannel\"\n", ")\n", "\n", "sim_cfg.full_name" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Extract data from multiblock data from output file of macrs export" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys([(0, 'velocityNeumannPoiseuilleChannel')])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "from vtk.util.numpy_support import vtk_to_numpy\n", "from tests.validation.notebooks import common\n", "\n", "extracted_data = {}\n", "array_to_extract = \"ux\"\n", "\n", "export_instantaneous_cfg = sim_cfg.output.instantaneous\n", "macr_export = export_instantaneous_cfg[\"default\"]\n", "time_step = macr_export.time_steps(sim_cfg.n_steps)[-1]\n", "reader = macr_export.read_vtm_export(time_step)\n", "\n", "p1 = [sim_cfg.domain.domain_size.x / 2, 0.5, 0]\n", "p2 = [sim_cfg.domain.domain_size.x / 2, sim_cfg.domain.domain_size.y - 0.5, 0]\n", "line = common.create_line(p1, p2, sim_cfg.domain.domain_size.y - 1)\n", "\n", "# Get the points from the vtkLineSource\n", "polyData = line.GetOutput()\n", "points = polyData.GetPoints()\n", "\n", "pos = np.linspace(p1, p2, sim_cfg.domain.domain_size.y)\n", "\n", "probe_filter = common.probe_over_line(line, reader.GetOutput())\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)] = {\"pos\": pos, \"data\": probed_data}\n", "\n", "extracted_data.keys()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Extract data from multiblock data from output file of macrs export for rho plotting" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{(0, 'velocityNeumannPoiseuilleChannel', 0): np.float32(1.0),\n", " (0, 'velocityNeumannPoiseuilleChannel', 16000): np.float32(1.0222814),\n", " (0, 'velocityNeumannPoiseuilleChannel', 32000): np.float32(1.0222814),\n", " (0, 'velocityNeumannPoiseuilleChannel', 48000): np.float32(1.0222814),\n", " (0, 'velocityNeumannPoiseuilleChannel', 64000): np.float32(1.0222814)}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "average_data = {}\n", "array_to_extract = \"rho\"\n", "\n", "export_instantaneous_cfg = sim_cfg.output.instantaneous\n", "macr_export = export_instantaneous_cfg[\"default\"]\n", "for time_step in macr_export.interval.get_all_process_steps(sim_cfg.n_steps):\n", " reader = macr_export.read_vtm_export(time_step)\n", "\n", " multiblock_dataset = reader.GetOutput()\n", " n_blocks = multiblock_dataset.GetNumberOfBlocks()\n", "\n", " blocks_data = []\n", " for i in range(n_blocks):\n", " block = multiblock_dataset.GetBlock(i)\n", " data_array = vtk_to_numpy(block.GetCellData().GetArray(array_to_extract))\n", " blocks_data.append(data_array)\n", " multiblock_avg = np.average(np.concatenate(blocks_data).flatten())\n", "\n", " average_data[(sim_cfg.sim_id, sim_cfg.name, time_step)] = multiblock_avg\n", "\n", "average_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Extract data from multiblock data from output file of macrs export for profile plotting" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys([(0, 'velocityNeumannPoiseuilleChannel')])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "profile_data = {}\n", "array_to_extract = \"ux\"\n", "\n", "export_instantaneous_cfg = sim_cfg.output.instantaneous\n", "macr_export = export_instantaneous_cfg[\"default\"]\n", "time_step = macr_export.time_steps(sim_cfg.n_steps)[-1]\n", "reader = macr_export.read_vtm_export(time_step)\n", "\n", "p1 = [0.5, sim_cfg.domain.domain_size.y / 2 - 0.5, 0]\n", "p2 = [\n", " sim_cfg.domain.domain_size.x - 0.5,\n", " sim_cfg.domain.domain_size.y / 2 - 0.5,\n", " 0,\n", "]\n", "line = common.create_line(p1, p2, sim_cfg.domain.domain_size.x - 1)\n", "\n", "# Get the points from the vtkLineSource\n", "polyData = line.GetOutput()\n", "points = polyData.GetPoints()\n", "\n", "pos = np.linspace(p1, p2, sim_cfg.domain.domain_size.x)\n", "\n", "probe_filter = common.probe_over_line(line, reader.GetOutput())\n", "\n", "probed_data = vtk_to_numpy(probe_filter.GetOutput().GetPointData().GetArray(array_to_extract))\n", "profile_data[(sim_cfg.sim_id, sim_cfg.name)] = {\"pos\": np.array(pos), \"data\": probed_data}\n", "\n", "profile_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": 6, "metadata": {}, "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, \"--k\", label=\"Analytical\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "fig, ax = plt.subplots()\n", "fig.set_size_inches(6, 5)\n", "\n", "style_num = [\"o\", \"^\", \"s\", \"+\", \"x\"]\n", "\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] - 0.5) / (sim_cfg.domain.domain_size.y - 1)\n", "ax.plot(\n", " position_vector,\n", " num_data[\"data\"] / num_avg_vel,\n", " style_num[0],\n", " label=f\"N={sim_cfg.domain.domain_size.x} (avg. {num_avg_vel:.2e})\",\n", " fillstyle=\"none\",\n", " c=\"k\",\n", ")\n", "\n", "plot_analytical_poiseuille_vels(ax)\n", "ax.set_title(\n", " f\"Poiseuille (Velocity Neumann)\\n({sim_cfg.models.LBM.vel_set} {sim_cfg.models.LBM.coll_oper})\"\n", ")\n", "ax.legend()\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", "The average domain's density is shown in the plot below:\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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SMnJyfW6IwQAAFwkJkh5eXlGUq0pPT3dGGNMenq6GT58eK339O/f3zidTtO9e3ezaNGigOV1tScpoO7YsWPmgQceMO3btzdhYWFm7Nixpri4uN799nq9RpLxer3BbjIAAM1aMMfQC3qOxaWE51gAAHB+mtRzLAAAQPNBsAAAANYQLAAAgDUECwAAYA3BAgAAWEOwAAAA1hAsAACANQQLAABgDcECAABYQ7AAAADWECwAAIA1BAsAAGANwQIAAFhDsAAAANYQLAAAgDUECwAAYA3BAgAAWEOwAAAA1hAsAACANQQLAABgDcECAABYQ7AAAADWECwAAIA1BAsAAGANwQIAAFhDsAAAANYQLAAAgDUECwAAYA3BAgAAWEOwAAAA1hAsAACANQQLAABgDcECAABYQ7AAAADWECwAAIA1BAsAAGANwQIAAFhDsAAAANYQLAAAgDUECwAAYA3BAgAAWEOwAAAA1hAsAACANQQLAABgDcECAABYQ7AAAADWECwAAIA1BAsAAGANwQIAAFhDsAAAANYQLAAAgDUECwAAYA3BAgAAWEOwAAAA1hAsAACANQQLAABgDcECAABYQ7AAAADWECwAAIA1BAsAAGANwQIAAFhDsAAAANYQLAAAgDUECwAAYA3BAgAAWEOwAAAA1hAsAACANUEHi40bNyotLU3R0dFyOBzKyso653vy8/M1YMAAuVwuJSQkaPHixUG3edddd8nhcARMo0aNCrb7AACgAQUdLI4ePap+/fpp4cKF9aovKirS6NGjNWLECBUUFGj69Om69957tW7duqDbHDVqlIqLi/3TsmXLgu0+AABoQC2DfcNNN92km266qd71zz33nOLj4/XUU09Jkq6++mq9++67+v3vf6/U1NSg2nS5XIqMjAy2ywAA4CJp8GssPB6PUlJSAualpqbK4/EE3VZ+fr66dOmiHj166P7779eXX355xtoTJ07I5/MFTAAAoGE1eLAoKSlRREREwLyIiAj5fD4dO3as3u2MGjVKS5YsUW5urv7zP/9TGzZs0E033aSqqqo66zMzMxUeHu6fYmJiLnhbAADA2QX9U0hjmThxov/fiYmJ6tu3r6644grl5+dr5MiRteozMjI0c+ZM/2ufz0e4AACggTX4GYvIyEiVlpYGzCstLZXb7VZoaOh5t9u9e3d16tRJe/furXO5y+WS2+0O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TR07dlSbNm00btw4lZaWBtt9KxrzlCAAXEybNm3S/v379Ytf/KLW35EICQlRRkaGioqKtGnTpgZZ/4oVK9SzZ0/16NFDd955p1588UUZYyRJkyZN0ptvvqmKigp//bp16/TNN99o7NixkqTMzEwtWbJEzz33nD755BPNmDFDd955pzZs2BCwnkcffVTz5s3Tp59+qr59+6qiokI333yzcnNztX37do0aNUppaWk6cOCA/z0//elPdfjwYeXn52vlypX685//rCNHjgS0e9ttt+nIkSN6++23tW3bNg0YMEAjR47UV199Va/tr6ys1AsvvCB95zkTNfbt26esrCytWbNGa9as0YYNGzRv3jz/8jlz5mjlypV66aWX9NFHHykhIUGpqan1Xvd5M0F66623zGOPPWZWrVplJJnVq1eftf7zzz83YWFhZubMmWbXrl1m/vz5pkWLFmbt2rX+muXLlxun02lefPFF88knn5gpU6aYdu3amdLSUn/N1KlTTUxMjMnNzTVbt241Q4YMMUOHDq13v71er5FkvF5vsJscYOXKlcbhcJi0tDTj8XhMeXm58Xg8Ji0tzTgcDrNy5coLah8AbDt27JjZtWuXOXbsWNDvXbp0qZFkysvL61zu8/mMJLN06VILPa1t6NCh5plnnjHGGHPq1CnTqVMnk5eXF/B6yZIl/vrbb7/dTJgwwRhjzPHjx01YWJjZvHlzQJuTJ082t99+uzHGmLy8PCPJZGVlnbMvvXv3NvPnzzfGGPPpp58aSebDDz/0L9+zZ4+RZH7/+98bY4zZtGmTcbvd5vjx4wHtXHHFFeb5558/43okmdatW5vLLrvMhISEGEkmLi7OfPnll/6auXPnmrCwMOPz+fzzZs+ebZKSkowxxlRUVJhWrVqZl19+2b/85MmTJjo62jzxxBN1rvdsn5NgjqFBB4uAN9cjWMyZM8f07t07YN6ECRNMamqq//XgwYPNtGnT/K+rqqpMdHS0yczMNMYYU1ZWZlq1amVeffVVf03NTvV4PPXqq41gUVlZaeLi4kxaWpqpqqoKWFZVVWXS0tJMfHy8qaysPO91AIBtFxIsag68Z/qu3bx5s5HkP9jb9Nlnn5mWLVsG/E/mtGnTzJ133ul//cADD/iPJxUVFSYsLMy88cYbxhhjCgsLjSRz2WWXBUytWrUygwcPDti+f/zjHwHr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8OBB/fznP1dOTo5at27d2N1pNDfddJP/33379lVSUpK6deumFStWKDQ0tFH7djFVV1dr0KBB+t3vfidJuuaaa1RYWKjnnntO6enpjd29JoszFuehU6dOatGiRa2roEtLSxUZGdlo/bKlZhvOtn2RkZE6cuRIwPLKykp99dVXATV1tfHddZyp5mKP44MPPqg1a9YoLy9PXbt29c+PjIzUyZMnVVZWdsY+Xsh2ut1uhYaGNonPlNPpVEJCggYOHKjMzEz169dPf/jDH5rVGGzbtk1HjhzRgAED1LJlS7Vs2VIbNmzQH//4R7Vs2VIRERHNZiy+q127drrqqqu0d+/eZvV5iIqKUq9evQLmXX311f6fhZrjd2V9ECzOg9Pp1MCBA5Wbm+ufV11drdzcXCUnJzdq32yIj49XZGRkwPb5fD5t2bLFv33JyckqKyvTtm3b/DXr169XdXW1kpKS/DUbN27UqVOn/DU5OTnq0aOH2rdv76/57npqai7WOBpj9OCDD2r16tVav3694uPjA5YPHDhQrVq1Cujj7t27deDAgYCx2LlzZ8CXR05Ojtxut/9L6Vzb2RQ/U9XV1Tpx4kSzGoORI0dq586dKigo8E+DBg3SpEmT/P9uLmPxXRUVFdq3b5+ioqKa1efhuuuuq3X7+d/+9jd169ZNambflUFp7KtHL1XLly83LpfLLF682Ozatcvcd999pl27dgFXQTdl5eXlZvv27Wb79u1Gknn66afN9u3bzd///ndjTt9C1a5dO/P666+bHTt2mFtuuaXOW6iuueYas2XLFvPuu++aK6+8MuAWqrKyMhMREWF+8pOfmMLCQrN8+XITFhZW6xaqli1bmieffNJ8+umnZu7cuRf1Fqr777/fhIeHm/z8/IBb67755ht/zdSpU01sbKxZv3692bp1q0lOTjbJycn+5TW31t14442moKDArF271nTu3LnOW+tmz55tPv30U7Nw4cI6b61rrM/Uo48+ajZs2GCKiorMjh07zKOPPmocDof561//2mzG4Ey+e1eIaSZjMWvWLJOfn2+KiorMe++9Z1JSUkynTp3MkSNHms0YmNO3HLds2dL89re/NXv27DEvv/yyCQsLM//7v//rr2ku35XBIFhcgPnz55vY2FjjdDrN4MGDzfvvv9/YXaq3vLw8I6nWlJ6ebszp26gef/xxExERYVwulxk5cqTZvXt3QBtffvmluf32202bNm2M2+02d999tykvLw+o+fjjj831119vXC6Xufzyy828efNq9WXFihXmqquuMk6n0/Tu3dtkZ2c38Nb/n7rGQJJZtGiRv+bYsWPmgQceMO3btzdhYWFm7Nixpri4OKCd/fv3m5tuusmEhoaaTp06mVmzZplTp04F1OTl5Zn+/fsbp9NpunfvHrCOGo31mbrnnntMt27djNPpNJ07dzYjR470hwrTTMbgTL4fLJrDWEyYMMFERUUZp9NpLr/8cjNhwoSAZzc0hzGo8eabb5o+ffoYl8tlevbsaf785z8HLG8u35XBcJhvv1wBAAAuGNdYAAAAawgWAADAGoIFAACwhmABAACsIVgAAABrCBYAAMAaggUAALCGYAEAAKwhWAAAAGsIFgAAwBqCBQAAsOb/A/f86NVorVQgAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "fig.set_size_inches(6, 5)\n", "\n", "plotting_data: list[float] = []\n", "axis_data: list[int] = []\n", "\n", "for (_, _, timestep), average_val in average_data.items():\n", " plotting_data.append(average_val)\n", " axis_data.append(int(timestep))\n", "ax.plot(axis_data, plotting_data, \"ok\", label=\"Average Rho\", fillstyle=\"none\")\n", "ax.legend()\n", "plt.show(fig)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "It can be seen that the average density quickly stabilizes after certain simulation time." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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db8MeILzUrQXE2oXc9o7P1jjVgRs9DnnPqB6V0fgPWb7wzrj/D3xHMXngXfpF6/Au7cdF/3lA6egI7AnutE0DTPDlk9npNt9nt3laZk8xny7dTliTUWt+GNH8RtZvqln50llL51tIsrxvE/qGQg9hxnHA9KAMv4la3DoPw91m5kb95LbtbQL3eSQFVAHfrn6A1b8DaRLoPgbRdMnXbPBaIJV/uuRlh+BJrDbwfq3iPxouseKJrc6Xps7NpWmwZKkg4WaUnq2ACB2/MHvKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqCW9tYH2TXMMb4zteQA/rU9eB/GSB7jxqsaY3Gyj6/7zVcY3TfZNl0oc9SMO7se5jULI9Ly3P/bVf8aX7dZ/8/UH/fwV87aahSNAewX+VbMZ4rg+teR6MsuUftfge4/brT/n6g/7+Cj7baf8/UP/AH8FeLLThT+tPsZvAr+Y9n+22n/P1D/38FH220/5+of+/grxsU6j6y+wvqa7nsX221/5+Yf+/go+22v/AD8w/wDfwV49Tqf1l9hfU13PX/ttr/z8w/8AfwUfbbX/AJ+Yf+/gryEUoo+s+Qvqi7nrv2y1/wCfmH/v4KPtlr/z8w/9/BXkdOp/WPIX1Vdz1r7Za/8APzD/AN9ij7Za/wDPzD/32K8mFLR7fyF9WXc9Z+2Wv/PzD/32KPtlr/z8w/8AfYryYUtP2/kL6uu56x9stf8An5h/77FH2y2/5+Yf++xXlApRR7byF7DzPVvtlt/z8Q/99ij7Zbf8/EP/AH2K8rFKKftvIXsfM9T+2W3/AD8Q/wDfYo+2W3/PxD/32K8s70U/a+RPsvM9T+2W3/PxD/32KPtdt/z8Q/8AfYry2in7QXsz1L7Xbf8APxF/32KPtdt/z8Rf99ivLqWn7QXIeofa7b/n4i/77FH2u2/5+Iv++xXl9FPnFynqH2u2/wCfiL/vsUfa7b/n4i/77FeX0tPmFY9P+123/PxF/wB9ij7Xbf8APxF/32K8woouKx6f9rtv+fiL/vsUfa7b/n4i/wC+xXl9JVCPUftdt/z8Rf8AfYo+123/AD8Rf99ivLzTadhX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TAQ0w080w0ANNNpxptMY00004000wGU006mmgY00004000wGU006mmgY3tTKf2plADT1php560w0DPQfg1/yO8n/AF5yf+hLXvteBfBr/kd5P+vOT/0Ja99rxcf/ABvkdFL4Qrxvx7/yVCL/ALB6/wA2r2SvG/Hv/JUIv+wev82rlj8E/wDCzel/Ej6op0UUV4x7gopaQUtAmOFOFNFOFMliinDpTRTh0poli96dTe9Opki06m06mIWlpKWmQwFLSClqiWKKUUgpRTJHClFIKUUyWHeijvRVIkWiiimiRaWkpaohhRRRTRIUtJS1SJCiiiqRIlJS0lUhCmm0402rRIGkpTSVSEBpKU0lUIQ0lKaSqQhDSUppKpEiUhpaQ1SEJQaKDTExhooNFUhCGmGnmmGqQhDSGlNIapCEppp1NNUA2kpaSmIbSGlpDVIQ002nGm0xCGmmnGmmqQDaaadTTTQCHpTacelNpoQ00004001QDaaadTTTAaabTjTaYDaaadTTTAaabTjTaYDD0pppx6U00wG00080w0ANNNpxptMY00004000wGU006mmgY00004000wGU006mmgY3tTKf2plADT1php560w0DPQfg1/yO8n/AF5yf+hLXvteBfBr/kd5P+vOT/0Ja99rxcf/ABvkdFL4Qrxvx9/yU+L/ALB6/wA2r2SvGvH/AB8Tov8ArwX+bVyx+Cf+Fm9L+JH1RSzSg0zNOFeMe7YdTqaKdQSxwpwpopwpksUU4dKSlHSmSxe9OpvenCmSxadTadTELS0gpaZDAUtIKWqJYopRSClFMkcKUUgpRTJYd6KO9FUiRaKKKaJFpaSlqiGFFFFNEhS0lLVIkKKKKpEiUlLSVSEKabTjTatEgaSlNJVIQGkpTSVQhDSUppKpCENJSmkqkSJSGlpDVIQlBooNMTGGig0VSEIaYaeaYapCENIaU0hqkISmmnU01QDaSlpKYhtIaWkNUhDTTacabTEIaaacaaapANppp1NNNAIelNpx6U2mhDTTTTjTTVANppp1NNMBpptONNpgNppp1NNMBpptONNpgMPSmmnHpTTTAQ0w06mmgBpptONNpjGmmmnGmmmAymmnU00DGmmmnGmmmAymmnU00DG9qZT+1MoAaetMNPPWmGgZ6D8Gv+R3k/685P8A0Ja99rwL4Nf8jvJ/15yf+hLXvteL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UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVBe3kGnWFxe3Unl29vE00r4J2ooyTgcngHpQBPRUcE0dzbxzxNujkUOjYxkEZBqSgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAorJ8R66PDmky6lJp17ewQqzzC0EZaNFUsXO914AHbJ9q0reZbm2inQELIgcA9cEZoAkorntQ8XW1nqk+nWum6nqdxbBWuRYwBxBuGQGLMBkjnaMnGOOabN420ldP0+6tFur99Q3fZba1hLTPs+/lTjbtPDbiMHjrQB0dFZOi+IbXW2uYY4bm1vLUqLi0uo9kse4ZUkAkEHBwQSDg+la1ABRRRQAUUUUAFFFFABRRRQAUUVieIfEieHFt5bjTb64tpZEjee3EZSEu6ou/c4PJYdAaANuiiuXuvHNjBcXawabqt7bWTtHdXlrbb4omX7w6hm299obFAHUUVz194xsLaW0gsre81a4urcXUcWnxq58k9JCWZVCntk89q0NF1q016w+12ZkULI0UsUyFJIpFOGR1PRh/8AX6GgDRooooAKKKKACiiigAooooAKKKKACvNPEV3ruoy+Pbc6mkWkabYsEtxApeQvabipfqFBOe5JPUAYPYal4kTS9c0/TZ9N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", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAGQCAIAAADZR5NjAABPeUlEQVR4Ae3dB3wURd/A8blLJSEkBJSigKAiyKOAHVGRqiAKSlVRIypFRfEBCwqioq/6UETRRwUREXyogoqKghTpoEF6L6ErhE4gQJJ9P3tzN7fZ3dtckqX/vu/7mGN2ZnZ2bnP3z8zurEfTNAEAAAD3eN2rCgAAADoCLAAAAJcRYAEAALiMAAsAAMBlBFg4VTIyMjw+c+fOPVX7OL9kZmb27du3SZMmVapUefLJJ4Ww6cPT2asPPvigfAeNYmNjk5OTq1ev/thjj02bNs3Fu2RO56EVkrWp4aScTuvWrevYseOYMWPefPNNj8dTtGjRQ4cOhd+AuXPnyjd91qxZ4ZeyZe2ZM8WhJVFRUR6P5/vvvz8NbVO/VrfeemtOTk6ee2zcuLHH4+nSpUueOXEaNG3adNGiRWHuiAALOCvMmTOncuXKL7300uTJk9euXXv8+PGzolkWx48f379//7Jly77++usGDRpcfvnlf/zxhyUXzqT333+/atWqgwcPzszMfOqppyIjIzMyMv73v/+F36bPP/9cCFGtWrU77rgj/FLIl/nz5w8YMCBfRXDG/f777zfffHOrVq127tyZZ2MIsIAz78iRI+3atdu2bVu5cuUGDRo0b968s+eTt2XLluk+e/bs2bVrV1pa2p9//jlu3Lhnn302ISFh8+bNderUWbNmzZnvRAiRk5PzyCOPvPLKKzk5OSkpKa1atSpbtux9990nhD9mCsf+/fvHjRsnhHj66afDyY8CiIyMFEL06tVr9erVBSiOM+WLL75ITEwcP3587dq1N23a5NwMAizgzPvoo4+2bNlSrFixRYsWPfvss7Vq1broootks0r6yI/jMyI2NraET8mSJUuXLl2hQoXrr7++ZcuWgwYN+vPPPy+++OJjx449++yzrrTtjB9s+M7Opr722msjR46MjIwcPnz4sGHD4uLihBCdO3cWQixZsiTMscbhw4dnZmYWLVq0Xbt24XfIOeHsedeaNWtWpUqVzMzMlJSU7Ozsc6L3IIRo06bN0qVLK1eunJaW1rhx44MHDzp0CwEWcOYtXbpUCNG2bdvSpUsbWxMfH7/H5+abbzamnyUqV67ct29fIcT06dN37NhRyFad5QdrdHY2ddy4ce+9954Qol+/fo8++qhqcP369a+88srwB7EGDx4shGjXrl2xYsVUJeeBs+pdK1KkyPDhwyMiIhYtWiR/iXCuqFChwtSpUy+99NJ169alpKQ4NJsACzjzNmzYIIS47LLLrE057uPiteTuatGiRXR0tKZpv//+e+FrPssP1uhsa+rhw4fljN6DDz74/PPPG5vq8Xg6deokhBg9enSel7rPmjVLTlrJca/zzFn1rt10000vvfSSEKJ3794rVqw4z7r6/Fa+fPmRI0d6PJ7vvvtuwoQJoQ6WAAuFYrwx5+TJk59++untt99+0UUXZWRkmOqdPHlymzZtLrvsstjY2NKlS9euXfv9999PT083ZbOaPXt2ly5drrnmmuTk5CJFilx22WXNmjUbMmTIsWPHrJkdHD9+vLPPxo0bhRDZ2dnff/9927Ztr7rqqqJFiyYlJVWtWrVjx45TpkyxrST8Iw2/wb169ZL3ai1evFgI8eqrr6r79R555BF5F2Gsz7x582xbZTV9+vTOnTtfffXVSUlJiYmJNWvWbNeunbu3+xnFx8eXLVtWCLFr1y5juhR+Vzgc7C+//HL33XeXKlWqbNmyd99992+//WbdkZKvwze+p6oGq88//9zj8ZQrV05tysjI9/tila+m5ql///7p6enFixf/+OOPrZlTUlJiY2MzMjK++eYb61YjeXn7bbfddu211xrTjdxteb5OEpMVK1a8+uqrN954Y6lSpeLi4q6++ur77rvvo48+OnLkiCmn9QR75JFH1K9bVlaWEKJ58+YqZcuWLS+//LLH40lKSjp69Ki1NmXChAkejyciIiItLU0lhumNN97417/+deLEiZSUFNmGAsjX21GYc152zty5czMyMt54441rrrkmISEhMTHxmmuuef311//55x/V+KysrOHDhzds2PDSSy+NjY0tV67c/fff/+2336oMocydO/e555675pprSpQoUaRIkYoVKzZu3Hjw4MGHDx8WQuzdu1e2YeHChbIG0+HMmzcvJSWlYsWKsbGxF198ce3atf/zn//s37/fursCF1Tq1KnzxBNPCCGee+65zMxMlZ6LBhSC+iD75ZdfbrvtNnVuHfGR//ztt99atWqlNhkVL1581KhRofa/efPmevXqGfMblS5devTo0aHKWqmmzpkzZ9WqVTfddJOxNqNatWqtWrXKVIMqbj1SlTO/De7Zs6dxv0bt2rXTtOBO58yZI/eimqFSlHXr1hnfApNq1aotXrxYZQ5H27Zt5VSRc2Y5/fT2228bs+W3K2wPVtO0Hj16mA5ECNGnTx/jvqQCHL5DZxp99tlnQohLL71UJVoLhpOiFKCpzg4ePJiQkCCE6Nu3b6icjz32mBCievXqoTJompaenh4TEyOE+Oabb2yzFaDl1p5RCnCSKHv37pXrHVhPDyFEUlLS22+/nZOTo/JbTzDnK8zS0tLWr1/v8ej1f/XVV8Z6TOrWrSuDM1N6KKZfq9TUVHmFpe1ZrWna3XffLYR49tlnrRW6+3YYOZzzY8aMkb/yJmXKlFm0aJGmaTt37gz1QVS/fv0DBw4Yd6Rs2bKlYcOGpjqVSy655IcfflB/kC9YsEAWVGfXzJkzn376afl+mVx00UXfffed2lEhCxpt3749KipKCDFs2DBjukKAhUJR5/f1118vhEhOTu7YseOIESOys7PVpipVqshN77zzzsKFC9esWTNmzJjnnntOfpR7vV7bGGv+/PnJycnyV6V58+aDBg2aPXv2smXLRo4c2bVr16JFi8pNr7/+epgHoNozePBgWXNSUlK3bt2++eab5cuXz549++OPP27ZsqWstmjRor/++quxZlXceqQyWwEanJGRIW/Qk6Mj7733nvxnenr64cOHrV8JtinS77//npiYKISIiIhISUn55ptvUlNTly9f/u2333bv3l1++0ZHRw8fPtxfIAymbwJbx48fL1KkiBD6zTUqQwG6wvbQpk+fLj8x27dvn+ojLy2SV66o3ckJygIcvnpPrdGqkcOXjSporcqaIp2Kd2rUqFFC6Jf17N+/39hyowULFshze+HChcZ0o/79+wuhfyEdP67PSpsUrOWh+qFgJ4m0Zs2aChUqyMO58847+/btO3Xq1HXr1s2cOfO9996rXLmy3NSmTZvMzEx1FKaWHD58WP26RURECCG+/vprlZKdrf9e169fXwhRu3ZtVYmJmtqTg8ThsP5a9e7dWwh9La4lS5ZYawgVYLn7dpg4nPPyF61+/fr/+9//li9fPmPGjPfff79EiRJCiFKlSm3evFl+QiYkJPTo0ePHH39cuXLlqFGj2rRpI9+U22+/3bQvTdP++OOPkiVLygx169bt16/ftGnTVq5cOWbMmFdeeUXe8eP1et99912ZxxpgXXPNNULof3W///778ltm3Lhx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ggXGT/uyZcvWqVNn0KBB8jmDhw8fftJn48aNMr/De2pk/ZYpcEFp0aJF8g5350l5j/NqY8B5IyMjQ17TMGfOnNq1a583xwUo48aNa926tRD6XW+DBg3Kc5UT5Evnzp0/++yzSpUqyQcn5KsszhtTpkxp167dnj17brvttunTp8uHPdviFAGA80SrVq2GDh0aERExZMiQm266Sd0ogMI7ePDgiBEjhBDPPPNMqKlJnPd69ux5991379mzp3bt2hMnTnSIrvRrHM/77gCAC0f79u1nzZpVq1atZcuWnYULM567hg0blpGRERcX1759+3P3KFBIH374ocfj6dSp0/Tp09VND6GwkjsAnFduvfXWefPmTZgwQa0xgULSNE0+KP2RRx6hVy9kHTp06Ny5s+267VZcg4ULBddgASiYyZMnN2nSRAixfPly+bgeIE+MYOFCERkZmZKSIoT9Y88BIBS5LnzdunWJrhA+RrAAAABcxkXuAIDz07p16zp27DhmzBh5eA8++KAnt9jY2OLFi5crV+6222577LHHhgwZsmPHjnD64sSJE8OHD2/UqFGlSpViY2PLlClzzz33fPPNN+GUFUK/YuG777575plnbrjhhvLly8fGxiYnJ1epUqVJkyb9+/c3PeM8lBMnTgwePPiuu+4qW7ZsTExM2bJl77rrrsGDB2dnZ4cqYsvaLVFRUcWKFStfvvztt9/+wgsvyNUBrWVdLFikSJGLL764Vq1aPXr02LZtm3Vftg4ePDh27Nj27dvXqFGjTJkysbGxFStWrFev3hNPPDF8+PDMzEzbUops/yOPPKJSrJYsWRIXF+fxeJo0aZKTk9O0adNFixZZs9kzLsYFAMD54b333pPrKXz11VfyiOQin848Hk/Lli1XrFjh0AnLli0rX768bT133nnn2rVrHcoeOHDgrbfeUk+GCaVRo0azZ892qOePP/6Qz2S0uvHGG53bbxJOt9xwww3r168/PQUjIyO7du1q2pfJvn37evXqJVdhDSU5Ofnf//73tm3bTGWVPBd9TU9Pl6tAX3nllXL1WrmYYsuWLXfs2KHqCYUACwBwXsnOzm7Xrp383k1JScnIyJCHJ79QW7Zsme6zZ8+eHTt2rF+/ftGiRaNGjXr55ZfVo5liY2OHDh1q2yl//fWXvJGwdOnS77777uLFi7ds2TJlypQePXrExsYKIS666KJ//vnHtuzcuXNVZFaqVKknn3xy9OjRCxYs2Lhx49KlS3/99dc333zzlltukS33eDzdunU7ceKEtSo5rCKE/vzjnj17Tp48edOmTZMnT3799dflg0djYmKmTJliLWjL2i27du3auHHjnDlzBgwYUL9+fbnSfUJCgulJl24V3L1797Zt25YsWTJ06NA77rhDHv5///tf29ZqmjZnzpxLLrlEZitduvRTTz01atSoBQsWbNiwITU19fvvv3/rrbeqVKkiM5QoUcL0YFnFOcDKysqqV6+eEPqBq6cdjB49OjExUQj96T1qQflQCLAAAOcV+TDjyMjI4cOHGw/M+QtVmjNnzk033SS/m20fUHPrrbcKIa655ppdu3YZK9c0bd26dfLJxM2aNTNt0jRt1KhRMlIpXrz4oEGDjh07Zs0jzZ8//84775RtqFu3bmZmpjFndna2bGG1atXWrFlj3KRp2saNG2+88UYhRPny5eUTZvKUZ7csXry4QoUKQogqVaoYA75TVPDhhx8WQkRHR1t72NiNycnJn3zyialzjGbNmlW5cmUhRERExIABA4ybJOf2v/DCC0LoYe53331nLJuWliarrVy58oEDB4ybTAiwAADnj7Fjx8rQZODAgaajcv5CVTIzMx9//HFZyeDBg1W6pmk///yzvkK31xtqDm7q1Kmy4O+//24sOHXqVLnq93XXXZeWlmbcZCs7O7tPnz6yqlatWuXk5KhsckWuyMhI03iSsm3bNjmT9cwzz6hEB+F0y59//unxeIQQEydOVFWdooLqoc5ffvml2pc0bdq06OhoIcRNN920detW01arjIyMNm3ayDjJ9I5omlP75ar9Qog333zTWu2WLVtkJN28eXPrVoUACwBwnjh06JBcX/vBBx+0HlI4AYHSsmVLOQe3evVqldipUychxO23365SrOSlUT169FCbDh06VKZMGSFE1apV9+3bp9Lz9H//938yxjI+47xatWpCiKefftqh+HvvvScb7zDAo4TZLXK+7OGHHz4NBStWrCiE6NWrl9qXpukPey5btqwQ4tprr3UeOjLKzMyUg45XXnnl0aNHjZtCHXhqamqRIkWE0OMnY2hrNHPmTBlxfvvtt8Z0I+4iBACcJ/r375+enl68eHG5clVhfP7552XLlj169Gjfvn1VPatWrRJCH4VSKVY1a9YUQmzZskVteuedd3bt2hUVFTVhwoTixYur9Dz16NGjcePGQoiXX3752LFjQoj09HR5j2H9+vUdit91111CiKNHj/7xxx8O2fJFzksW4AGXBSioaTY3Lf7f//3fzp07Y2JiJkyYIC+ECkdMTMxPP/20YMGCESNGHD9+PM8i6enp999//7Fjx6pVqzZixAgZRVnVqVPniSeeEEI899xzoW5XJMACAJwPDh06NGDAACHEq6++mpycXMhDSk5OfvbZZ4UQ48aNk8GNvPSqQYMG119/vUPle/bsEULIIRAhRFZW1hdffCGE6NSpk7ryOnwDBw70eDw7duyYPHmyEGLnzp2yrBzHCqVq1aryeq/t27eHypNf8pa9/fv3n+qCf//9d1pamryMTO0rKytryJAhQoguXbpcfvnlKj0cSUlJN/vk+ZijrKysVq1abd26NSkp6bvvvpMzraG88cYbUVFRO3bsGD16tG0eAiwAwPng559/Pnz4cJEiRZ588klXjqddu3Zer/fw4cPy0ish9CXdp06d6rBy0vHjxxcvXiyEUI+rmzlz5t69e4UQcsAjvypXrixnuL799lshxMmTJ2UNERERDlVF+jhkKAC5PJU6rvDlq2B2dnb37t2F0A+hadOmai8zZsyQ12ad0odtd+/efebMmV6vd/To0Xke6SWXXNKqVSt5Vqh2GhFgAQDOBz/88IMQ4r777stzoCJM5cqVk4MlGzZsCLPIm2++eeTIkcjISHkrnBAiNTVVCFG2bFm1BkR+NWrUSAixbNkyIYS8lksI4bwY6dq1a+W8VenSpfO7O1s5OTnTp0+XNxLaZgjFoeCJEycO+hw4cGD37t2rV68ePnx4w4YN5Xqtb731lrHxMmytUKFC1apVQ+2rkEaMGPHhhx8KId599105x5onuRpIamrqrl27rJkJsAAA54MpU6YIoa9r4OLBlCtXTgj/GEyeFi5cKC/Y6ty5sywohJBLw8v1KgtGViXrKVu2rKxq5syZDrX99ttvQuired18880O2cL3xRdfrF271uPxNG/ePPxSQjgVHDt2bJJP8eLFS5UqdfXVV6ekpMyYMUMI8d577/Xo0cO4IznXqVYRc11qamqHDh2EEG3btn3ppZfCrP+OO+6QN4fOnj3bWoQACwBwzsvIyJAzcTfccIOLB1OqVCkh9KuC8qxz7dq19913X1ZW1nXXXWe8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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pyvista as pv\n", "\n", "array_to_inspect = \"rho\"\n", "\n", "plotter = pv.Plotter(window_size=(800, 400))\n", "\n", "time_step = macr_export.time_steps(sim_cfg.n_steps)[-1]\n", "multiblock_file = macr_export.time_step_filename(time_step, \".vtm\")\n", "mesh = pv.read(multiblock_file)\n", "mesh.set_active_scalars(array_to_inspect)\n", "plotter.add_mesh(mesh, cmap=\"coolwarm\")\n", "\n", "plot_title = f\"{array_to_inspect} profile Poiseuille (Velocity-Neumann)\\n({sim_cfg.models.LBM.vel_set} {sim_cfg.models.LBM.coll_oper})\"\n", "plotter.add_text(plot_title, position=\"upper_right\", font_size=18, color=\"black\")\n", "plotter.camera_position = [(128.0, 16.0, 499.40275054596606), (128.0, 16.0, 1.0), (0.0, 1.0, 0.0)]\n", "plotter.camera.zoom(2)\n", "plotter.show(jupyter_backend=\"static\")\n", "# plotter.show(jupyter_backend='static', cpos=\"xy\", return_cpos=True) # Trick to get automatically the camera position" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The pressure profile of the current flow is shown above. Shortly after the inlet, the pressure decays linearly over $x$-direction." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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bk69UFJSAhcXF6xduxYBAQEYNmwY3nvvPXz00Uc13bQ668CBA5g7dy5Wr16NEydO4KuvvsK3336LOXPm1HTTyADs8XgITk5OsLS0RHp6us769PR0uLm56d3Gzc3NqPINSXXOp9aiRYswb948xMXFoVOnTjK3tO4w9pyeP38ely5dwjPPPCOtKykpAQAolUqcPXsWvr6+Zmh57VSd96i7uzusrKxgaWkprWvbti3S0tJQUFAAlUole7trs+qc03/9618IDw/HSy+9BADo2LEj8vLy8PLLL+O9996DhQX/pjZGRd9LdnZ2Ju/tAHs8Ho5KpUJAQADi4+OldSUlJYiPj0dQUJDebYKCgnTKA0BsbGyF5RuS6pxPAFiwYAHmzJmDvXv3olu3bmZqbd1g7Dn19/fHqVOnkJycLC2DBw/GgAEDkJycDC8vLzMfQe1Snffoo48+inPnzkkBDgB+//13uLu7N/jQgWqe03v37pULF9pgx8ePGc/s30uyTFltQGJiYoRarRYbN24Up0+fFi+//LJo0qSJSEtLE0IIER4eLt59912p/E8//SSUSqVYtGiR+O2330RUVBQvpy3F2PM5b948oVKpxBdffCFu3LghLXfu3KnBo6hdjD2nZfGqFl3Gns8rV66Ixo0bi9dee02cPXtW7N69W7i4uIj//Oc/NXgUtYux5zQqKko0btxYfPbZZ+LChQvi+++/F76+vmLo0KE1eBS1x507d0RSUpJISkoSAMSSJUtEUlKSuHz5shBCiHfffVeEh4dL5bWX006fPl389ttvYtWqVbyctrZbsWKFaN68uVCpVKJHjx7iyJEj0mv9+vUTY8aM0Sn/+eefizZt2giVSiXat28vvv322xpode1lzPn09vYWAMotUVFRNdT62snY92hpDB7lGXs+Dx8+LAIDA4VarRYtW7YU//3vf0VRUVENtLz2MuacFhYWivfff1/4+voKjUYjvLy8xKuvvipu375dQ62vXfbv36/3c1F7DseMGSP69etXbpsuXboIlUolWrZsKTZs2CBb+xSC/VJERERkJpzjQURERGbD4EFERERmw+BBREREZsPgQURERGbD4EFERERmw+BBREREZsPgQURERGbD4EFERERmw+BBREREZsPgQURERGbD4EFERERmw+BBREREZvP/ZMCUCvVndKkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "fig.set_size_inches(6, 5)\n", "\n", "num_data = profile_data[(sim_cfg.sim_id, sim_cfg.name)]\n", "position_vector = (num_data[\"pos\"][:, 0] - 0.5) / (sim_cfg.domain.domain_size.x - 1)\n", "ax.plot(position_vector, num_data[\"data\"], c=\"k\")\n", "\n", "ax.set_title(\n", " f\"Ux profile Poiseuille (Velocity-Neumann) ({sim_cfg.models.LBM.vel_set} {sim_cfg.models.LBM.coll_oper})\"\n", ")\n", "plt.show(fig)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The centerline velocity is shown in the plot above, in which a strong acceleration can be seen close to inlet. After that, the velocity seems to increase almost linearly at very slow rate until the outlet.\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Version" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Version: 1.6.33\n", "Commit hash: fbc0edb5260d2734f0a290e1806c26ac6d865ff4\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": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
simulations:\n",
       "  - name: periodicPoiseuilleChannel\n",
       "    save_path: ./tests/validation/results/02_poiseuille_channel_flow/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",
       "      divergence: { frequency: 50 }\n",
       "      instantaneous:\n",
       "        default: { interval: { frequency: 0 }, macrs: [rho, u] }\n",
       "      statistics:\n",
       "        interval: { frequency: 0 }\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: ./tests/validation/results/02_poiseuille_channel_flow/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",
       "      instantaneous:\n",
       "        default: { interval: { frequency: 16000 }, macrs: [rho, u] }\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: ./tests/validation/results/02_poiseuille_channel_flow/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",
       "      divergence: { frequency: 50 }\n",
       "      instantaneous:\n",
       "        default: { interval: { frequency: 12000 }, macrs: [rho, u, S] }\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}{./tests/validation/results/02\\PYZus{}poiseuille\\PYZus{}channel\\PYZus{}flow/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}{divergence}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{ frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{50}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{instantaneous}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{ interval}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{ frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{0}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZcb{}}\\PY{p+pIndicator}{,}\\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{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{statistics}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{interval}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{ frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{0}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZcb{}}\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}{./tests/validation/results/02\\PYZus{}poiseuille\\PYZus{}channel\\PYZus{}flow/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{+w}{ }\\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}{instantaneous}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{ interval}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{ frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{16000}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZcb{}}\\PY{p+pIndicator}{,}\\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{p+pIndicator}{\\PYZcb{}}\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}{./tests/validation/results/02\\PYZus{}poiseuille\\PYZus{}channel\\PYZus{}flow/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{+w}{ }\\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{+w}{ }\\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{+w}{ }\\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{+w}{ }\\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{+w}{ }\\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{+w}{ }\\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{+w}{ }\\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{+w}{ }\\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{+w}{ }\\PY{p+pIndicator}{\\PYZcb{}}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{data}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{divergence}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{ frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{50}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{instantaneous}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{ interval}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{ frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{12000}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZcb{}}\\PY{p+pIndicator}{,}\\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}{]}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZcb{}}\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: ./tests/validation/results/02_poiseuille_channel_flow/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", " divergence: { frequency: 50 }\n", " instantaneous:\n", " default: { interval: { frequency: 0 }, macrs: [rho, u] }\n", " statistics:\n", " interval: { frequency: 0 }\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: ./tests/validation/results/02_poiseuille_channel_flow/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", " instantaneous:\n", " default: { interval: { frequency: 16000 }, macrs: [rho, u] }\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: ./tests/validation/results/02_poiseuille_channel_flow/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", " divergence: { frequency: 50 }\n", " instantaneous:\n", " default: { interval: { frequency: 12000 }, macrs: [rho, u, S] }\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": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Code\n", "\n", "Code(filename=filename)" ] } ], "metadata": { "kernelspec": { "display_name": "nassu", "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.10" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }