{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Poiseuille Channel (Multilevel)\n", "\n", "In this simulation, the multilevel approach is tested to check the macroscopics continuity when passing through different levels and when applied at boundary regions of the computational domain." ] }, { "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, a small value for the relaxation time $\\tau$ was adopted. Since the aim is to check possible discontinuities in the multilevel formulation, less stable values of $\\tau$ could highlight implementation issues." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "sim_cfg = next(\n", " sim_cfg\n", " for (name, _), sim_cfg in sim_cfgs.items()\n", " if name == \"velocityNeumannPoiseuilleChannelMultilevel\"\n", ")" ] }, { "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, 'velocityNeumannPoiseuilleChannelMultilevel')])" ] }, "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 * 0.75, 0.5, 0]\n", "p2 = [sim_cfg.domain.domain_size.x * 0.75, 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, 'velocityNeumannPoiseuilleChannelMultilevel', 0): np.float32(1.0),\n", " (0,\n", " 'velocityNeumannPoiseuilleChannelMultilevel',\n", " 12000): np.float32(1.0145637),\n", " (0,\n", " 'velocityNeumannPoiseuilleChannelMultilevel',\n", " 24000): np.float32(1.0145637),\n", " (0,\n", " 'velocityNeumannPoiseuilleChannelMultilevel',\n", " 36000): np.float32(1.0145637),\n", " (0,\n", " 'velocityNeumannPoiseuilleChannelMultilevel',\n", " 48000): np.float32(1.0145637),\n", " (0,\n", " 'velocityNeumannPoiseuilleChannelMultilevel',\n", " 60000): np.float32(1.0145637),\n", " (0,\n", " 'velocityNeumannPoiseuilleChannelMultilevel',\n", " 64000): np.float32(1.0145637)}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "average_data = {}\n", "array_to_extract = \"rho\"\n", "\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, 'velocityNeumannPoiseuilleChannelMultilevel')])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "profile_data = {}\n", "array_to_extract = \"ux\"\n", "\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, bounds_z[0]]\n", "# p2 = [sim_cfg.domain.domain_size.x - 0.5, sim_cfg.domain.domain_size.y / 2 - 0.5, bounds_z[1]]\n", "# line = create_line(p1, p2, sim_cfg.domain.domain_size.x - 1)\n", "p1 = [0.25, sim_cfg.domain.domain_size.y / 2, 0]\n", "p2 = [sim_cfg.domain.domain_size.x - 0.25, sim_cfg.domain.domain_size.y / 2, 0]\n", "line = common.create_line(p1, p2, 2 * 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 * 2)\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": "iVBORw0KGgoAAAANSUhEUgAAAgQAAAHXCAYAAADDQEKKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAg4dJREFUeJzt3XdcU9f/P/BXEjayHAyRGhQRVJwooqKiKHWgfBBFqYq7VdtaR1VcVG3BAWqHe+8FiBWts1CxUK0DKyJWFIoDcDIEGUnO74+f5GskYIKEm8D7+Xjk8TD3nnvzypXkvnPvuefyGGMMhBBCCKnT+FwHIIQQQgj3qCAghBBCCBUEhBBCCKGCgBBCCCFUEBBCCCEEVBAQQgghBFQQEEIIIQRUEBBCCCEEVBAQQgghBFQQEFJ1vXv3Ru/evbmOgXHjxkEoFMpM4/F4+O6776TPd+3aBR6Ph/T09Gp97SNHjqB+/fp4/fp1ta73Q95/f5URCoUYN26c9HlsbCx4PB5iY2NVmFAx8rKMHDkSI0aM4DQXqZuoICB1RtlOseyhp6cHe3t7fPnll8jOzuY6nsYRi8UICgrCV199hXr16kmnC4VC8Hg8eHh4yF1u69at0v+Dq1evVkuW+Ph4fPfdd8jJyamW9XFp3rx5iIiIwM2bN7mOQuoYLa4DEFLTli1bBltbWxQVFeHSpUvYuHEjTp06haSkJBgYGCi8nrNnz6o0p6K2bt0KiURS46974sQJ3L17F1OmTCk3T09PDzExMcjKyoKlpaXMvP3790NPTw9FRUXVliU+Ph5Lly7FuHHjYGpqKjPv7t274PM157dPhw4d4OzsjLCwMOzZs4frOKQO0ZxPCSHVZMCAARg9ejQmTZqEXbt24ZtvvkFaWhqOHz+u1Hp0dHSgo6OjspyK0tbWhq6ubo2/7s6dO9G9e3dYW1uXm9e9e3fUq1cPhw8flpn+6NEjxMXFYdCgQTWWU1dXF9ra2jX2etVhxIgRiIyMrPFTMaRuo4KA1Hl9+vQBAKSlpQEARCIRli9fjubNm0NXVxdCoRALFixAcXGxzHLy+hD8/PPPaN26NQwMDGBmZgZnZ2ccOHBAps3jx48xYcIEWFhYQFdXF61bt8aOHTtk2lR0zl/eOWd5fQgU9dtvv8HNzQ2GhoYwMjLCoEGDcPv27Q8uV1RUhNOnT1d4WkBPTw8+Pj7l3vvBgwdhZmYGT0/PcstU1CfjQ+/vu+++w7fffgsAsLW1lZ6OKNt27/chqMjly5fx6aefwsTEBAYGBujVqxf+/PNP6fzw8HDweDz88ccf5ZbdvHkzeDwekpKSpNNSUlLg6+uL+vXrQ09PD87Ozvj1118/mAMA+vXrh4KCApw7d06h9oRUByoISJ13//59AECDBg0AAJMmTcKSJUvQsWNHrF27Fr169UJISAhGjhxZ6Xq2bt2Kr7/+Gq1atcK6deuwdOlStG/fHpcvX5a2yc7ORteuXXH+/Hl8+eWX+PHHH2FnZ4eJEydi3bp1Kn6nsvbu3YtBgwahXr16WLlyJRYvXozk5GT06NHjg50Pr127hpKSEnTs2LHCNv7+/rhy5Yp0+wLAgQMH4OvrW62/2H18fDBq1CgAwNq1a7F3717s3bsXjRo1Ungdv//+O3r27Im8vDwEBQUhODgYOTk56NOnD65cuQIA0m115MiRcssfPnwYrVu3Rps2bQAAt2/fRteuXXHnzh3Mnz8fYWFhMDQ0hLe3N44dO/bBPK1atYK+vr5MQUKIyjFC6oidO3cyAOz8+fPs2bNn7OHDh+zQoUOsQYMGTF9fnz169IglJiYyAGzSpEkyy86ZM4cBYL///rt0Wq9evVivXr2kz4cOHcpat25daYaJEycyKysr9vz5c5npI0eOZCYmJqywsFAma1pamky7mJgYBoDFxMRIpwUEBLCmTZvKtAPAgoKCyr33svXl5+czU1NTNnnyZJnlsrKymImJSbnp79u2bRsDwG7dulVuXtOmTdmgQYOYSCRilpaWbPny5YwxxpKTkxkA9scff0jz/P3339Ll3t+eyry/1atXy91eZXkCAgKkz9/fhhKJhLVo0YJ5enoyiUQibVdYWMhsbW1Zv379pNNGjRrFzM3NmUgkkk7LzMxkfD6fLVu2TDqtb9++zMnJiRUVFUmnSSQS1q1bN9aiRYsKs7zL3t6eDRgwoNx0QlSFjhCQOsfDwwONGjWCjY0NRo4ciXr16uHYsWOwtrbGqVOnAACzZs2SWWb27NkAgJMnT1a4XlNTUzx69Ah///233PmMMURERMDLywuMMTx//lz68PT0RG5uLq5fv16t77Ui586dQ05ODkaNGiWTQyAQwMXFBTExMZUu/+LFCwCAmZlZhW0EAgFGjBiBgwcPAm87E9rY2MDNza2a383HSUxMxL179+Dv748XL15It0VBQQH69u2LixcvSjtt+vn54enTpzKnbMLDwyGRSODn5wcAePnyJX7//XeMGDEC+fn50vW9ePECnp6euHfvHh4/fvzBXGZmZnj+/LkK3zkhsugqA1LnrF+/Hvb29tDS0oKFhQVatmwp7YX+33//gc/nw87OTmYZS0tLmJqa4r///qtwvfPmzcP58+fRpUsX2NnZoX///vD390f37t0BAM+ePUNOTg62bNmCLVu2yF3H06dPq/W9VuTevXvAO/0n3mdsbKzQev7/j/WK+fv746effsLNmzdx4MABjBw5EjwerwqJVadsWwQEBFTYJjc3F2ZmZtI+BocPH0bfvn2Bt6cL2rdvD3t7ewBAamoqGGNYvHgxFi9eLHd9T58+ldsZ812MMbXbVqR2o4KA1DldunSBs7NzpW2q8kXs6OiIu3fvIjo6GqdPn0ZERAQ2bNiAJUuWYOnSpdJfmaNHj65w59O2bdtKX18sFiudS56yLHv37i13WSAAaGlV/tVQ1t/i1atXaNKkSYXtXFxc0Lx5c+mVHP7+/hW25fF4cguM6nrPFSnbFqtXr0b79u3ltikbZ0FXV1faD2DDhg3Izs7Gn3/+ieDg4HLrmzNnjtzOkwDKFZzyvHr1Ci1atKjSeyKkKqggIOQdTZs2hUQiwb179+Do6Cidnp2djZycHDRt2rTS5Q0NDeHn5wc/Pz+UlJTAx8cHP/zwAwIDA9GoUSMYGRlBLBZX2Du/TNmh+PcH2qnsCIUymjdvDgAwNzf/YBZ5HBwcgLdXZjg5OVXadtSoUfj+++/h6OhY4Q4Xb9/zgwcPyk1X5D1/zC/psm1hbGys0Lbw8/PD7t27ceHCBdy5cweMMenpAgBo1qwZ8PZy0KpsW7y90uXhw4cYMmRIlZYnpCqoDwEh7xg4cCAAlOvxv2bNGuBtT/OKlJ1XL6Ojo4NWrVqBMYbS0lIIBAIMGzYMERERMpenlXn27Jn032U7qYsXL0qnicXiCk81KMvT0xPGxsYIDg5GaWlppVnk6dSpE3R0dBQaaXDSpEkICgpCWFhYpe2aN2+OlJQUmde+efOmQj3tDQ0NATkFlCI6deqE5s2bIzQ0VO51/+9vCw8PD9SvXx+HDx/G4cOH0aVLF9ja2krnm5ubo3fv3ti8eTMyMzM/uD55kpOTUVRUhG7duin9fgipKjpCQMg72rVrh4CAAGzZsgU5OTno1asXrly5gt27d8Pb2xvu7u4VLtu/f39YWlqie/fusLCwwJ07d/DLL79g0KBBMDIyAgCsWLECMTExcHFxweTJk9GqVSu8fPkS169fx/nz5/Hy5UsAQOvWrdG1a1cEBgbi5cuXqF+/Pg4dOgSRSFQt79PY2BgbN27EmDFj0LFjR4wcORKNGjVCRkYGTp48ie7du+OXX36pcHk9PT30798f58+fx7Jlyyp9raZNmyp034EJEyZgzZo18PT0xMSJE/H06VNs2rQJrVu3Rl5eXqXLdurUCQCwcOFCjBw5Etra2vDy8pIWCpXh8/nYtm0bBgwYgNatW2P8+PGwtrbG48ePERMTA2NjY5w4cULaXltbGz4+Pjh06BAKCgoQGhpabp3r169Hjx494OTkhMmTJ6NZs2bIzs5GQkICHj169MFhic+dOwcDAwP069fvg/kJqTZcX+ZASE2Rd6mbPKWlpWzp0qXM1taWaWtrMxsbGxYYGChzCRmTc5nc5s2bWc+ePVmDBg2Yrq4ua968Ofv2229Zbm6uzHLZ2dls+vTpzMbGhmlrazNLS0vWt29ftmXLFpl29+/fZx4eHkxXV5dZWFiwBQsWsHPnzlXLZYdlYmJimKenJzMxMWF6enqsefPmbNy4cezq1asf3J6RkZGMx+OxjIwMmelllx1WpqL/i3379rFmzZoxHR0d1r59e3bmzBmF3h9jjC1fvpxZW1szPp8v814/dNlhmRs3bjAfHx/p/1/Tpk3ZiBEj2IULF8rlL/t/4PF47OHDh3Lf4/3799nYsWOZpaUl09bWZtbW1mzw4MEsPDz8g1lcXFzY6NGjK92GhFQ3HvtQN2FCCJFDLBajVatWGDFiBJYvX851nFojMTERHTt2xPXr1yvtc0FIdaOCgBBSZYcPH8bUqVORkZEhc8dDUnUjR46ERCKROyIiIapEBQEhhBBC6CoDQgghhFBBQAghhBAqCAghhBACKggIIYQQAioICFGtVatWwcHBQTq+PdFcI0eOxIgRI7iOQYjKUEFAiIrk5eVh5cqVmDdvnvRuing77n7ZQ0tLC/Xr10enTp0wY8YMJCcnl1vPw4cPsXTpUnTp0gVmZmZo2LAhevfujfPnz1f42n/++Sf+97//wcLCArq6uhAKhfjiiy/w8OFDue3PnTuHHj16wMDAAGZmZvD19UV6erpC77N3794y70lfXx9t27bFunXryhVC6enpMm35fD7q16+PAQMGICEhody6v/vuu3LtraysMHjwYPz1119y86SlpeHLL7+Evb09DAwMYGBggFatWmH69On4559/5K7//dsMP3z4EM2bN0f9+vWlt6SeN28eIiIiPjjKICGaioYuJkRFduzYAZFIhFGjRpWb169fP4wdOxaMMeTm5uLmzZvYvXs3NmzYgJUrV2LWrFnStsePH8fKlSvh7e2NgIAAiEQi7NmzB/369cOOHTswfvx4mXX//PPPmDFjBpo1a4avvvoKVlZWuHPnDrZt24bDhw/jt99+Q9euXaXto6OjMXToUHTs2BErVqxAXl4efvzxR/To0QM3btxAo0aNPvhemzRpgpCQEADA8+fPceDAAcycORPPnj3DDz/8UK79qFGjMHDgQIjFYvz777/YsGED3N3d8ffff8u9WdLGjRtRr149SCQSPHz4EFu3bkXPnj1x5coVmcF7oqOj4efnBy0tLXz22Wdo164d+Hw+UlJSEBkZiY0bNyItLa3Sm1Q9fvwY7u7uePnyJc6fP4+OHTsCADp06ABnZ2eEhYVhz549H9wmhGgcrodKJKS2atu2rdzhZwGw6dOnl5v+/Plz5urqygCwkydPSqcnJSWxZ8+eybQtKipiDg4OrEmTJjLTL126xPh8PnNzc2MFBQUy81JTU5mFhQVr3Lgxe/XqlXR6q1atmJ2dHSsuLpZOS0xMZHw+n82aNeuD77NXr16sdevWMtPevHnDmjZtyoyMjJhIJJJOT0tLYwDY6tWrZdr/9ttvDACbOnWqzPSgoCAGoNz7T0pKYgDYggULZN6foaEhc3R0ZE+ePCmXs7S0lP34448yQy2/v/7Hjx+zFi1aMFNTU7lDXIeGhjJDQ0OWn5//we1CiKahUwaEqEBaWhr++ecfpW5/26BBAxw6dAhaWloyv6pbt26Nhg0byrTV1dXFwIED8ejRI+Tn50unL1++HDweD7t374aBgYHMMs2bN8eqVavw5MkT6V0TX758ieTkZPzvf/+Djo6OtG27du3g6OiIQ4cOVen96+npoXPnzsjPz8fTp08/2N7NzQ0AcP/+fYXWb2lpCQDQ0vq/g5yrVq1CQUEBdu7cCSsrq3LLaGlp4euvv4aNjY3cdWZmZsLd3R1Pnz7F2bNn4ezsXK5Nv379UFBQgHPnzimUkxBNQgUBISoQHx8PANLDzYr65JNP0KtXL/z1118fvMNfVlaW9Bw5ABQWFuLChQtwc3OTuR3vu/z8/KCrqyu9e19xcTEAQF9fv1xbAwMDPHnyBFlZWUq9hzJl/QVMTU0VagsAZmZmcue/fPkSz58/x9OnT3Hjxg1MnjwZenp6Mp38oqOjYWdnBxcXF6WzZmdno0+fPsjKysKZM2fQuXNnue1atWoFfX19hW7JTIimoT4EhKhASkoKAFS4Y65MmzZtcOHCBaSnp6Nt27Zy26SmpiIyMhLDhw+HQCAAANy7dw8ikQjt2rWrcN26urpo2bKltPOihYUFTE1Ny+3gXrx4IW3z+PFj6S/yiojFYmnHvBcvXmD79u24evUqBg0aJLfYKCwsxPPnzyEWi3Hv3j1pnwlfX1+562/ZsqXMc1NTU0RFRaF169bA2w6cT548gbe3d7llc3JyZG4bbWhoWC7ToEGD8OrVK5w5c6bSgkJLSws2NjZyO38SoumoICBEBV68eAEtLa0q3fCnbJl3TwW8q7CwEMOHD4e+vj5WrFghnV7W3sjIqNL1GxkZSdvy+Xx8/vnnWLlyJQIDAzFhwgTk5eVh7ty5KCkpAQC8efPmg5lTUlLKdT4cMmQItm/fLrd9UFAQgoKCZN5zWFhYhQVBREQEjI2NwRjD48ePsXHjRgwbNgxnz55Ft27dpEdT5G3v3r17y1wZsHr1asyZM0emTXZ2NurXry/3VMP7zMzMyl2VQEhtQKcMCFEzr1+/BirYsYvFYowcORLJyckIDw9H48aNpfPK2ldUSJTJz8+Hubm59PmyZcswceJErFq1Cvb29nB2doaWlhYmTpwIVLCTfZ9QKMS5c+dw5swZbNiwAdbW1nj27Bn09PTktp8yZQrOnTuHEydOYObMmXjz5g3EYnGF6+/Zsyc8PDzQr18/jBs3DhcuXICRkRG++uormfdetu3etXnzZpw7dw779u2rcP379u3Dy5cv0a9fvw/2eWCMgcfjVdqGEE1ERwgIUYEGDRpAJBIhPz//g7/Y35eUlASBQCD3dMPkyZMRHR2N/fv3o0+fPjLzWrRoAS0trXLX2r+ruLgYd+/eRZcuXaTTdHR0sG3bNvzwww/4999/YWFhAXt7e/j7+4PP58POzu6DmQ0NDWU6UHbv3h0dO3bEggUL8NNPP5Vr36JFC2n7wYMHQyAQYP78+XB3d5fbme999erVg4uLC44fP46CggKYmJjAysoKSUlJ5dqWnQKobFyFXr164ciRI/Dx8YGnpydiY2NhYmIit+2rV6/QokWLD2YkRNPQEQJCVMDBwQF4e7WBMjIyMvDHH3/A1dW1XCHx7bffYufOnVi7dq3csQ0MDAzQt29fXLx4Ef/995/c9R85cgTFxcUYPnx4uXkWFhZwc3ODvb09xGIxYmNj4eLiUqXTHm3btsXo0aOxefNmZGRkfLD9woULYWRkhEWLFin8GmX9AsqOCgwaNAipqam4cuWK0nkBwMvLCzt27MDNmzcxePBguadKRCIRHj58CEdHxyq9BiHqjAoCQlTA1dUVAHD16lWFl3n58iVGjRoFsViMhQsXysxbvXo1QkNDsWDBAsyYMaPCdSxatAiMMYwbN67cDi0tLQ1z586FjY0NxowZU2mW0NBQZGZmYvbs2Qrnf9/cuXNRWlqKNWvWfLCtqakpPv/8c5w5cwaJiYkfbP/y5UvEx8fD0tJSevpj7ty5MDAwwIQJE5CdnV1umf8/BETlxowZg3Xr1uHSpUsYNmwYSktLZeYnJyejqKgI3bp1++C6CNE0dMqAEBVo1qwZ2rRpg/Pnz2PChAnl5v/777/Yt28fGGPIy8vDzZs3cfToUbx+/Rpr1qzBp59+Km177NgxzJ07Fy1atICjo2O5c+H9+vWDhYUFAKBHjx5Yu3YtvvnmG7Rt2xbjxo2DlZUVUlJSsHXrVvD5fERFRclcCrhv3z5ERESgZ8+eqFevHs6fP48jR45g0qRJGDZsWJW3QatWrTBw4EBs27YNixcvRoMGDSptP2PGDKxbtw4rVqwoN/5BeHg46tWrB8YYnjx5gu3bt+PVq1fYtGmT9Hx+ixYtcODAAYwaNQotW7aUjlTIGENaWhoOHDgAPp+PJk2aVJrj66+/xsuXL7F06VKMHTsW+/fvlw49fe7cORgYGKBfv35V3i6EqC2uR0YipLZas2YNq1evHissLJSZDkD64PP5zNTUlHXo0IHNmDGD3b59u9x6ykbTq+gRExNTbpm4uDg2dOhQ1rBhQ8bj8RgAZm5uzjIzM8u1vXz5MuvZsyczMzNjenp6rF27dmzTpk1MIpEo9D7ljVRYJjY2lgFgQUFBjFUyUmGZcePGMYFAwFJTUyt874aGhszV1ZUdOXJE7jpSU1PZ1KlTmZ2dHdPT02P6+vrMwcGBffHFFywxMVGmbUUjITLG2FdffcUAsC+++EI6zcXFRe7ok4TUBjymyHE0QojScnNz0axZM6xatUraY58ry5cvx5IlS7Bw4UJ8//33nGbRVImJiejYsSOuX78uc/8EQmoLKggIUaGVK1di586dSE5OlrnjIRemTp2KTZs2YfPmzZgyZQqnWTTRyJEjIZFIcOTIEa6jEKISVBAQQgghhK4yIIQQQggVBIQQQgihgoAQQggh0JRxCCQSCZ48eQIjIyMaQ5wQQghRAmMM+fn5aNy4caWdmzWiIHjy5AlsbGy4jkEIIYRorIcPH1Y6MJdGFARlY7o/fPgQxsbGXMchhBBCNEZeXh5sbGw+eKM1jSgIyk4TGBsbU0FACCGEVMGHTrlTp0JCCCGEUEFACCGEECoICCGEEFKVguDixYvw8vJC48aNwePxEBUV9cFliouLsXDhQjRt2hS6uroQCoXYsWNHVTMTQgghpJop3amwoKAA7dq1w4QJE+Dj46PQMiNGjEB2dja2b98OOzs7ZGZmQiKRVCUvIYQQQlRA6YJgwIABGDBggMLtT58+jT/++AMPHjxA/fr1AQBCoVDZlyWEEEKICqm8D8Gvv/4KZ2dnrFq1CtbW1rC3t8ecOXPw5s2bCpcpLi5GXl6ezIMQQgghqqPycQgePHiAS5cuQU9PD8eOHcPz588xbdo0vHjxAjt37pS7TEhICJYuXarqaIQQQgh5S+VHCCQSCXg8Hvbv348uXbpg4MCBWLNmDXbv3l3hUYLAwEDk5uZKHw8fPlR1TEIIIaROU/kRAisrK1hbW8PExEQ6zdHREYwxPHr0CC1atCi3jK6uLnR1dVUdjRBCCCFvqbwg6N69O44ePYrXr1+jXr16AIB///0XfD6/0pssEEK4JRaLERcXh8zMTFhZWcHNzQ0CgYDzdRFCVEPpUwavX79GYmIiEhMTAQBpaWlITExERkYG8PZw/9ixY6Xt/f390aBBA4wfPx7Jycm4ePEivv32W0yYMAH6+vrV+V4IIdUkMjISdnZ2cHd3h7+/P9zd3WFnZ4fIyEhO10UIUR2lC4KrV6+iQ4cO6NChAwBg1qxZ6NChA5YsWQIAyMzMlBYHAFCvXj2cO3cOOTk5cHZ2xmeffQYvLy/89NNP1fk+CCHVJDIyEr6+vnByckJCQgLy8/ORkJAAJycn+Pr6KrUjr851EUJUi8cYY1yH+JC8vDyYmJggNzeX7nZIiAqJxWLY2dnByckJUVFR4PP/7zeDRCKBt7c3kpKScO/evQ8e8q/OdRFCqk7RfSjdy4AQIhUXF4f09HQsWLBAZgcOAHw+H4GBgUhLS0NcXFyNrosQonoq71RICKlZH9OBLzMzEwDQpk0bufPLppe1q6l1laHOiYSoDh0hIKQW+dgOfFZWVgCApKQkufPLppe1q6l1gTonEqJyVBAQUktURwc+Nzc3CIVCBAcHl7sBmUQiQUhICGxtbeHm5laj66LOiYTUAKYBcnNzGQCWm5vLdRRC1JJIJGJCoZB5eXkxsVgsM08sFjMvLy9ma2vLRCLRB9cVERHBeDwe8/LyYvHx8SwvL4/Fx8czLy8vxuPxWEREhMK5qmNd1fneCKmLFN2HUkFASC0QExPDALCEhAS58+Pj4xkAFhMTo9D6IiIimFAoZACkD1tbW6WKgepaV3W/N0LqGkX3odSpkJBaoLo78Pn4+GDo0KHV0oHvY9elis6JhJDyqCAgpBZ4twNf165dy81XtgMfAAgEAvTu3bta8n3MulTx3ggh5dHARITUArV5EKDa/N4IqQk0MBEhdYhAIEBYWBiio6Ph7e0t0xPf29sb0dHRCA0N1cgdZm1+b4SoEzpCQEgtEhkZidmzZyM9PV06zdbWFqGhofDx8eE028eqze+NEFVSdB9KBQEhtUxtHs2vNr83QlSFCgJCNAjt6GoWbW9Sl1AfAkI0BA3JW7NoexMiHxUEhHBInYfkZYzh8ePHyMnJkU67ceMG/Pz80L9/f/Ts2ROdO3eGk5MTHBwc0L59e+zatUvaNjs7G3PnzsXatWtx8OBB/PXXX8jNzeXo3fx/6ry9CeEanTIghCPqdDmdSCRCUlISEhIScOXKFdy+fRspKSnIz8/Hli1bMHnyZADAxYsX0atXrwrXExYWhlmzZgEA4uPj0b1793JtrKys4OjoiIkTJ8Lf31+F70qWOm1vQmqSovtQGpiIEI7ExcUhPT0dBw8elNk5AQCfz0dgYCC6deuGuLi4ahsgSJ6EhAT069cPBQUF5eYJBAI8ffpU+tzBwQHr1q1DgwYNoK+vDz09Pejp6UFbWxvFxcVo0aKFtG3Dhg3xzTffICsrC0+ePEFqaiqePHmCzMxMZGZmwtfXV9o2JSUFixcvhqenJwYMGABra+tqf5/qsr0JUVdUEBDCkZoekre4uBi//fYbjh8/js6dO2PatGkAAHt7exQUFMDY2BguLi7o2rUr2rVrB0dHR9jZ2UFHR0e6DnNzc8yYMUOh17O3t8fatWtlpuXm5iIlJQV37tyBu7u7dPrFixcRHh6O8PBwAICTkxMGDhyI4cOHo2PHjuDxeB/9/mkIZEIqRwUBIRypiSF5xWIxYmNjceDAAUREREjP4d+7d09aEDRo0AApKSmws7NT+aFyExMTuLi4wMXFRWZ6z5498d133+G3337DlStXcOvWLdy6dQsrV65EixYtcPToUbRr1+6jXpuGQCakctSHgBCOqPKcNmMMwcHB2LhxIx4/fiyd3rhxYwwfPhxDhgxBnz59qvX9VJfnz5/j7NmzOH78OE6cOAGJRIKnT59KP/v379+HtbU19PT0lFov9SEgdZXC+9AauPPiR6PbH5PaKiIigvF4PObl5cXi4+NZXl4ei4+PZ15eXozH41XpdsNlvL29GQBmZmbGpkyZwmJiYphIJKrW/KqWl5fHYmNjZaY5OzuzBg0asG+//ZY9ePBAqfWpcnsToq4U3YdSQUAIxyIiIphQKGQApA9bW1uFd05isZhFRUWx7t27s//++086/a+//mL79+9nRUVFKkxfs54+fcpsbGyk20kgELDRo0ezpKQkhdfxsdubEE2j6D6UThkQogaqMnKeSCTC4cOHERISgtu3bwMAZsyYgXXr1tVQam6IxWKcPHkSv/zyC86dOyedPnToUAQFBaFDhw4KrYNGKiR1BQ1dTEgtxRjDiRMnEBgYiOTkZACAsbExvvzyS8yYMQPm5uZcR6wx169fR0hICCIiIsAYw6FDh+Dn58d1LELUCo1DQEgtxBhD//79cf78eQBA/fr1MXv2bEyfPh0mJiZcx6txHTt2xNGjR5GSkoIDBw5g+PDh0nmxsbGwt7dH48aNOc1IiKagoYsJ0SA8Hg+dOnWCvr4+AgMD8eDBAyxYsKBOFgPvcnBwwLJly6RXDrx+/Rp+fn6ws7PD8uXLUVRUxHVEQtQeFQSEqLGSkhKsWrUK169fl04LDAzEvXv3EBwcXOcLgYo8e/YMdnZ2ePPmDZYsWQInJyecOXOG61iEqDUqCAj5CGUD/xw8eBCxsbEQi8XVtu7Y2Fi0b98e8+bNw7Rp0yCRSIC3g/uoYmjf2sTW1haXLl3CgQMHYGVlhdTUVHz66acYNmwYHj16xHU8QtQSFQSEVJGqbqObn5+PqVOnwt3dHXfu3IG5uTmmTp1abbnrCh6Ph1GjRiElJQUzZ86EQCBAZGQk2rRpU63DE6uyKCSkJlFBQEgVqOo2ur///jucnJywadMmAMAXX3yBu3fvIiAgoNwNeYhijI2NsWbNGty4cQNdu3aFj49PtQ1PrKqikBBO1NC4CB+FBiYi6kQkEjGhUMi8vLyYWCyWmScWi5mXlxeztbVVelTAs2fPSgfKEQqF7MKFC9WcnIhEIlZQUCB9/ujRI7Z7924mkUiUXte7ox4mJCSw/Px8lpCQQKMeErVDAxMRoiKxsbFwd3dHQkKC3JvkJCQkoFu3boiJiVHqNrpisRg9e/ZEu3btsHLlShgZGVVzcvIuxhgGDRqE3377DaNGjcKmTZsU/n6h+yIQTaLoPpSOQRKipOq6jS5jDPv375deEicQCPD7779jw4YNVAzUAMYYevToAYFAgIMHD6JDhw64cuWKQsvGxcUhPT0dCxYsKHcqh8/nIzAwEGlpaYiLi1NRekKqHxUEhCjp3dvoyqPIbXRfvXqFYcOGYfTo0Zg3b550uq6ubrXnJfLx+XwsWLAAcXFxaNq0KR48eIDu3btj9erV+NCB0+oqCglRJ0oXBBcvXoSXlxcaN24MHo+HqKgohZf9888/oaWlhfbt2yv7soSoDTc3NwiFQgQHB0svBSwjkUgQEhICW1tbuLm5yV0+KSkJnTt3xrFjx6CtrQ1bW9saSk7kcXV1RWJiIoYPHw6RSIS5c+di+PDhyM/Pr3CZ6igKCVE3ShcEBQUFaNeuHdavX6/Ucjk5ORg7diz69u2r7EsSolYEAgHCwsIQHR0Nb29vmasMvL29ER0djdDQULnnjo8cOQIXFxfcv38fQqEQCQkJ+Oabbzh5H+T/mJqa4vDhw9i4cSO0tbXxzz//VHr54McWhYSopY/puQiAHTt2TKG2fn5+bNGiRSwoKIi1a9dOqdehqwyIOlLmNrqlpaVszpw50nYeHh7s+fPnnOQmlYuPj1fodsrvXmUQHx/P8vLyWHx8PF1lQNSOovvQGrm50c6dO/HgwQPs27cP33///QfbFxcXo7i4WPo8Ly9PxQkJUZ6Pjw+GDh2q0G1009PTsWXLFgDAvHnz8MMPP1DvczXl6uoq8/yXX37B69evMW/ePPB4POl0Hx8fhIeHY/bs2ejWrZt0uq2tLcLDw+Hj41OjuQn5WCovCO7du4f58+cjLi4OWlqKvVxISAiWLl2q6miEfDSBQKDQpYV2dnY4evQocnJyMGLEiBrJRj5eamoqZs6cCZFIhNTUVOkphTLKFIWEqDuVXmUgFovh7++PpUuXwt7eXuHlAgMDkZubK308fPhQlTEJUYlr167h0qVL0uf9+/enYkDD2NnZYc2aNeDz+di+fTsGDBiAnJwcmTZlReGoUaPQu3dvKgaIxvqogYl4PB6OHTsGb29vufNzcnJgZmYm8wGRSCRgjEEgEODs2bPo06fPB1+HBiYimub48ePw9/eHnp4eLl++DDs7O64jkY9w8uRJ+Pn5oaCgAI6Ojjh16hSEQiHXsQhRiFoMTGRsbIxbt24hMTFR+vjiiy/QsmVLJCYmwsXFRZUvTwgntm/fDh8fHxQWFqJz584wNzfnOhL5SIMGDcKlS5dgbW2NO3fuoHv37hVeckiIplK6D8Hr16+RmpoqfZ6WlobExETUr18fn3zyCQIDA/H48WPs2bMHfD6/3MAd5ubm0NPTq3BAD0I02apVq6QDDU2YMAGbN29WuO8MUW/t27fH5cuX4enpidu3byM6Opq+x0itovQ31dWrV+Hu7i59PmvWLABAQEAAdu3ahczMTGRkZFRvSkLUHGMMc+fORWhoKPD2SoKQkBCZXulE81lbW+PixYvYu3cvvv76a67jEFKt6OZGhFSDDRs2YPr06QCA1atXY86cOVxHIjWkoKAAcXFx+PTTT7mOQohcatGHgJC6Yvz48ejTpw927NhBxUAdUlJSgmHDhmHQoEHYu3cv13EI+Sh0cpOQKhKLxeDz+eDxeNDX18e5c+fK3fmO1G5aWlqwsbGBRCJBQEAAxGIxxo0bx3UsQqqEvr0IqYLS0lL4+flh4cKF0jvjUTFQ9/D5fGzevBlffPEFGGOYMGECtm/fznUsQqqEjhAQoqSSkhKMHDkSx44dg46ODgICAtCyZUuuYxGO8Pl8bNiwAVpaWvjll18wadIkiMViTJkyhetohCiFCgJSJ4nF4ioNNysSiTB69GgcO3YMurq6iIyMpGKAgMfj4aeffoJAIMCPP/6Izz//HHp6ehg7dqzC66jq3yQh1YUKAlLnREZGYvbs2UhPT5dOEwqFCAsLq/SGNBKJBJMmTcLRo0ehra2NqKgo6llOpHg8HtauXQsA2L17t1KFYlX/JgmpTnTSk9QpkZGR8PX1hZOTExISEpCfn4+EhAQ4OTnB19cXkZGRcpdjjOHLL7/E7t27IRAIcPjwYSoGSDllRYEyI7FW9W+SkOpG4xCQOkMsFsPOzg5OTk6IioqS6QQokUjg7e2NpKQk3Lt3r9yh2vj4eHTv3h08Hg/79u2Dv78/B++AaKKrV68iNzcXffv2LTfvY/4mCVEUjUNAyHvi4uKQnp6OBQsWlLsigM/nIzAwEGlpaYiLiyu3bLdu3bBz505s3ryZigGisFu3bqFv374YMmQI/vrrr3LzP+ZvkpDqRgUBqTMyMzMBoMLx58uml7XD219pZcaNG4fJkyerPCepPezt7eHq6orCwkIMHjwYd+/elZlflb9JQlSFCgJSZ1hZWQFAhXepK5te1i46OhouLi7IysqqwZSkNtHV1UV4eDg6d+6MFy9ewNPTE0+ePJHOV/ZvkhBVoj4EpM5Q5nztlStX0LdvX7x58wbz5s3DihUrOM1ONNuzZ8/QrVs3pKamom3btrh48SJMTEyoDwGpEQrvQ5kGyM3NZQBYbm4u11GIhouIiGA8Ho95eXmx+Ph4lpeXx+Lj45mXlxfj8XgsIiKC3blzh9WvX58BYAMHDmQlJSVcxya1wP3795mFhQUDwHr37s3evHnDmIJ/k4R8DEX3oXTKgNQpPj4+CA8Px61bt9CtWzcYGxujW7duSEpKQnh4OHr06IEBAwbg5cuXcHFxwZEjR6Ctrc11bFILNGvWDL/99huMjIygra2NkpISQIG/SRqHgNQUOmVA6iR5o8KVlJSgT58++Ouvv2BnZ4eEhAQ0bNiQ66iklklKSkLLli3LFZo0UiFRFUX3oVQQEPLWtGnTsHHjRpiZmSEhIYGGJCYqxxjDv//+S39rRKVoHAJClDR37lx06NCB7k9AaoRIJML06dPRtm1b/Pnnn1zHIYTuZUBIGaFQiKtXr9JtjEmN4PP5yM7ORklJCby9vfHXX3+hefPmXMcidRh985E67a+//sLJkyelz6kYIDWFz+dj7969cHZ2xvPnzzFkyBDk5+dzHYvUYfTtR+qsJ0+ewMfHB15eXjh27BjXcUgdZGBggF9//RWNGzdGcnIyxo4dKzM6JiE1iQoCUicVFxdj2LBhyMzMRKtWreDh4cF1JFJHWVlZITIyEjo6OoiKisLy5cu5jkTqKCoISJ3DGMO0adPw119/wdTUFMePH4eRkRHXsUgd5uLigk2bNgEAli9fjtTUVK4jkTqIOhWSOmfDhg3YsWMH+Hw+Dh8+TB25iFoYP348UlNT0b17d9jZ2XEdh9RBNA4BqVMuXboEd3d3iEQirF69GnPmzOE6EiGEqBSNQ0CIHKdOnYJIJMKoUaMwe/ZsruMQUqG0tDQsXLgQGvCbjdQSdMqA1CnBwcHo0KEDBgwYAB6Px3UcQuQqKCiAq6srsrOz0bBhQ8ycOZPrSKQOoCMEpE5491fW8OHDUa9ePU7zEFIZQ0NDLF68GHg7giaNZEhqAhUEpNaLjo7GwIED8fz5c66jEKKwadOmYeTIkRCJRBgxYgSePn3KdSRSy1FBQGq19PR0jBkzBqdPn8ZPP/3EdRxCFMbj8bB161Y4OjriyZMnGDVqFMRiMdexSC1GBQGptUpLSzFy5Ejk5OTAxcUFixYt4joSIUqpV68eIiIiYGhoiN9//x3BwcFcRyK1GBUERGOIxWLExsbi4MGDiI2N/eCvpcWLF+Py5cswNTXF4cOHoaOjU2NZCakujo6O2LhxIwDg119/RWlpaaXtlf2cEFKGrjIgGiEyMhKzZ89Genq6dJpQKERYWBh8fHzKtT979ixWrlwJANi+fTuaNm1ao3kJqU5jxowBn8+Hr68vtLW1K2yn7OeEkHfREQKi9iIjI+Hr6wsnJyckJCQgPz8fCQkJcHJygq+vLyIjI2XaZ2VlYcyYMQCAqVOn0hchqRU+++wz6OrqVjhf2c8JIe+jkQqJWhOLxbCzs4OTkxOioqJkbk8skUjg7e2NpKQk3Lt3DwKBAACQlJSEoUOHwtDQEJcvX4a+vj6H74CQ6iUSibBs2TJYWlpi2rRpQBU/J6TuUHgfypT0xx9/sMGDBzMrKysGgB07dqzS9hEREczDw4M1bNiQGRkZsa5du7LTp08r9Zq5ubkMAMvNzVU2LtFwMTExDABLSEiQOz8+Pp4BYDExMTLTc3Nz2YMHD2ooJSE15+DBgwwA09HRYYmJiYx9xOeE1A2K7kOVPmVQUFCAdu3aYf369Qq1v3jxIvr164dTp07h2rVrcHd3h5eXF27cuKHsS5M6KDMzEwDQpk0bufPLpmdmZsp0njI2NoatrW0NpSSk5vj5+cHLywslJSX47LPPUFRUpNTnhJCKKN2pcMCAARgwYIDC7detWyfzPDg4GMePH8eJEyfQoUMHucsUFxejuLhY+jwvL0/ZmKSWsLKyAt6eBujatWu5+UlJSQCA+vXrw8XFBQEBAZg+fbrMIVNCahMej4dt27bByckJt2/fxoIFCzBkyBBAgc9J2eeJEHlq/FtTIpEgPz8f9evXr7BNSEgITExMpA8bG5sazUjUh5ubG4RCIYKDgyGRSGTmSSQShISEwNbWFidPnsS1a9cQHByM3NxczvISUhPMzc2xY8cOAMDatWtRUlKi0OfEzc2No8REI3zMeQlF+hC8b+XKlczMzIxlZ2dX2KaoqIjl5uZKHw8fPqQ+BHVYREQE4/F4zMvLi8XHx7O8vDwWHx/PvLy8GI/HY0uWLGEAGAB26tQpruMSUmM+//xzBoBZW1uz3bt3V/o5iYiI4Dou4YiifQhqtCDYv38/MzAwYOfOnVPqdahTIYmIiGBCoVC64wfAbG1t2a5du1jjxo0ZADZt2jSuYxJSo16/fs1atGjB9PX12ZkzZyr8nFAxULcpug+tsYGJDh06hEmTJuHo0aPw8PCoqZcltYSPjw+GDh2KuLg4ZGZmwsrKCm5ubvD398eTJ0/QsmVLrF69muuYhNQoQ0NDHDlyBPr6+mjZsiUAyP2c0KWGRBE1UhAcPHgQEyZMwKFDhzBo0KCaeElSCwkEAvTu3Vv6/MiRIzhy5AgEAgH27dsHAwMDTvMRwoX27dvLPH//c0KIopTuVPj69WskJiYiMTERAJCWlobExERkZGQAAAIDAzF27Fhp+wMHDmDs2LEICwuDi4sLsrKykJWVRR2/yEd79OgRtLS0sHDhQjg7O3MdhxDOXbp0CV9//TU0YLw5ooaUHqkwNjYW7u7u5aYHBARg165dGDduHNLT0xEbGwsA6N27N/74448K2yuCRiokFbl16xZatmxJNy4idd7Tp0/RtGlTFBUVYffu3TI/zEjdpug+lIYuJoSQWiI4OBgLFy6EqakpkpKSYG1tzXUkogYU3YfS6C1Eo2RlZaFv3764efMm11EIUTtz586Fs7MzcnJyMGXKFDp1QJRCBQHRGIwxTJ06Fb///js+//xz+rIj5D1aWlrYvXs3dHR0cOrUKYVPyxICKgiIJjly5AiioqKgra2NLVu2gMfjcR2JELXTqlUrLFu2DAAwc+ZMun8BURgVBEQjvHjxAl999RUAYOHChWjbti3XkQhRW7Nnz4azszNyc3OlQxwT8iE1NjARIR9j9uzZePbsGVq3bo3AwECu4xCi1rS0tLBt2zbcvHkTY8aM4ToO0RBUEBC1d/bsWezevRs8Hg9bt26lSwwJUUC7du3Qrl07rmMQDUKnDIja27lzJwDgq6++gqurK9dxCNE4OTk52LdvH9cxiJqjIwRE7e3btw99+vTByJEjuY5CiMbJzc1FmzZt8PjxYzRp0oSGNSYVoiMERO0JBAJMnjwZRkZGXEchROOYmJjAy8sLADB58mS8efOG60hETVFBQNSSSCTCjz/+iMLCQq6jEKLxVqxYgcaNGyM1NRUrVqzgOg5RU1QQELW0YcMGfPPNN+jRowcNQETIRzIxMcFPP/0EvC0O7t69y3UkooaoICBq5/Hjx1i0aBEA4PPPP6cBiAipBj4+Phg4cCBKSkowdepUKrRJOVQQELXzzTffID8/H127dsXkyZO5jkNIrcDj8fDLL79AT08PMTExOHDgANeRiJqhqwyIWjl16hTCw8MhEAiwadMm8PlUsxJSXWxtbbFkyRKkpKSgX79+XMchaoYKAqI2CgsL8eWXXwJvjxLQoCqEVL/58+fTaTgiF/38ImpjxYoVSEtLQ5MmTfDdd99xHYeQWun9YiA/P5+zLES90BECojYmTpyI5ORk+Pv7o169elzHIaRWe/z4MaZPn45Hjx7h8uXLEAgEXEciHOMxDehqmpeXBxMTE+Tm5sLY2JjrOERJYrEYcXFxyMzMhJWVFdzc3OjLhxCOZWdnw97eHnl5edi8eTOmTJlSrg19dmsHRfehdMqAqFRkZCTs7Ozg7u4Of39/uLu7w87ODpGRkdI2eXl5nGYkpC6ysLDAsmXLAACBgYF48eKFzHxFPrukdqGCgKhMZGQkfH194eTkhISEBOTn5yMhIQFOTk7w9fVFZGQkioqK0KFDB4wePbrcFxIhRLWmT5+ONm3a4OXLl1i8eLF0uiKfXVL70CkDohJisRh2dnZwcnJCVFSUzOWDEokE3t7eSEpKQkBAAL777js0btwYd+/epb4DhNSw2NhYuLu7g8fj4erVq2jXrp1Cn9179+7R6QMNQacMCKfi4uKQnp6OBQsWlBtLgM/nIzAwEGlpaQgODgYAhIWFUTFACAd69+6NkSNHgjGGL7/8En/88YdCn924uDjOMhPVoIKAqERmZiYAoE2bNnLnl00vKSlB79694efnV6P5CCH/Z/Xq1TA0NERmZiaSk5MBBT67ZZ9xUntQQUBUwsrKCgCQlJQkd/6ePXuAt784fv75ZxoohRAONWnSBGfOnEFycrJ0h1/RZ7dsetlnnNQe1IeAqERlfQhKS0vRsGFD5OXlYdq0aVi/fj2nWQkh/0fR/j/Uh0BzUB8CwimBQICwsDBER0fD29tbpqeyp6cn8vLyYGhoiKVLl3IdlRDyHk9PT5w4caLcZ9fb2xvR0dEIDQ2lYqAWopEKicr4+PggPDwcs2fPRrdu3aTTbW1tsW/fPgiFQjRs2JDTjIQQWdOmTcOWLVvQvXt33Lp1q9xnNzw8HD4+PpxmJKpBpwyIytFoZ4Rojps3b6JDhw5gjCE2NhaMMfrsajhF96F0hIConEAgQO/evZGamorLly/TLY0JUWPt2rXDpEmTsHXrVsyePRtXrlyhz2wdQf/LpMbMmTMHo0ePxrfffst1FEJIJb7//nsYGxvj2rVr0iuCSO1HBQGpEbGxsTh+/DgEAgEmTJjAdRxCSCXMzc2lQxkvWLAABQUFXEciNYAKAqJyEokEc+bMAQB8/vnnaNWqFdeRCCEf8NVXX8HW1haZmZlYs2YN13FIDaCCgKjcoUOHcO3aNRgZGSEoKIjrOIQQBejq6iIkJAQ9e/bEp59+ynUcUgOULgguXrwILy8vNG7cGDweD1FRUR9cJjY2Fh07doSuri7s7Oywa9euquYlGqaoqAgLFiwAAMyfPx/m5uZcRyKEKGjEiBGIjY1F586duY5CaoDSBUFBQQHatWun8OhyaWlpGDRoENzd3ZGYmIhvvvkGkyZNwpkzZ6qSl2iYX375Bf/99x+sra3xzTffcB2HEKIEHo8nM6y4BlylTj6C0pcdDhgwAAMGDFC4/aZNm2Bra4uwsDAAgKOjIy5duoS1a9fC09NT2ZcnGqZLly7o2LEjvv76axgYGHAdhxBSBTk5Ofjhhx+QlpaG8PBwruMQFVH5OAQJCQnw8PCQmebp6Vnpr8Xi4mIUFxdLn+fl5ak0I1Gdnj174u+//+Y6BiHkIzx9+hTr1q2DSCRCTEwM3N3duY5EVEDlnQqzsrJgYWEhM83CwgJ5eXl48+aN3GVCQkJgYmIifdjY2Kg6JlEhPp9PA5sQosHs7e3x+eefA2/HE5FIJFxHIiqglt/SgYGByM3NlT4ePnzIdSSipC+++AJLly5Ffn4+11EIIdUgKCgIRkZGuH79Oo4cOcJ1HKICKi8ILC0tkZ2dLTMtOzsbxsbG0NfXl7uMrq4ujI2NZR5Ec9y4cQObN2/Gd999h/v373MdhxBSDRo1aiQdZXTRokUoLS3lOhKpZiovCFxdXXHhwgWZaefOnYOrq6uqX5pwpOwyQ39/f7Rv357rOISQajJz5kyYm5vj/v372LZtG9dxSDVTuiB4/fo1EhMTkZiYCLy9rDAxMREZGRnA28P9Y8eOlbb/4osv8ODBA8ydOxcpKSnYsGEDjhw5gpkzZ1bn+yBqIjY2FqdPn4aWlhaWLVvGdRxCSDWqV6+edEjj0NBQ6ktQyyh9lcHVq1dlepjOmjULABAQEIBdu3YhMzNTWhzg7f2zT548iZkzZ+LHH39EkyZNsG3bNrrksBZijGHevHnA2yGKmzdvznUkQkg1mzJlCh4/foyvvvqKOgvXMjymASNNKHovZ8KtyMhIDBs2DAYGBrh//z4sLS25jkQIIXWeovtQKu9ItWCM4bvvvgPeHjWiYoCQuoGuAqs9qCAg1YLH4+HYsWOYNGmS9M6GhJDa6/Xr1xgyZAjs7e3x6NEjruOQakAFAak2zZs3x9atW2FiYsJ1FEKIihkaGiInJwdFRUX44YcfuI5DqgEVBOSj0eBDhNQ9PB4P33//PQBg27ZtePDgAdeRyEeigoB8lMLCQjg6OsLf3x8vXrzgOg4hpAb17NkT/fv3h0gkosuMawEqCMhH2bhxIx4/foz4+HgYGRlxHYcQUsPKjhLs3bsXKSkpXMchH4EKAlJl+fn5WLFiBfB2nHMdHR2uIxFCaljnzp0xdOhQSCQSBAUFcR2HfAQqCEiV/fTTT3j+/DlatGiBMWPGcB2HEMKRstMFf/31F/Up0mBUEJAqefXqFVavXg0AWLp0KbS0lB70khBSS7Rt2xYnT57E3bt36dShBqNvcVIlYWFhyM3NRZs2beDn58d1HEIIxwYOHMh1BPKRqCAgFRKLxYiLi0NmZiasrKzg5uYGgUAAkUiE/fv3A28PFdJ45oSQMiKRCLGxsfDw8JBOq+i7hKgX+iYnckVGRsLOzg7u7u7w9/eHu7s77OzsEBkZCS0tLfzzzz/YtGkTvL29uY5KCFETxcXFaNeuHfr164crV64AH/guIeqFCgJSTmRkJHx9feHk5ISEhATk5+cjISEBTk5O8PX1RWRkJIyMjPD555+Dx+NxHZcQoiZ0dXXRpUsX4G3fIkW+S4j6oLsdEhlisRh2dnZwcnJCVFSUzOkAiUQCDw8PpKWlITU1lQ75EULKSU1NhYODA8RiMaysrODs7Cz3u8Tb2xtJSUm4d+8efZeoGN3tkFRJXFwc0tPTsWDBgnJ9A169eoXLly8jPT0dx48f5ywjIUR92dnZSS9DzszMlPtdwufzERgYiLS0NMTFxXGUlLyPCgIiIzMzEwDQpk2bcvPWrl2LwsJCAEBRUVGNZyOEaIaFCxdKi4CKvivKvmPKvnMI96ggIDKsrKwAAElJSTLTX7x4gZ9++kn6vHHjxjWejRCiGezs7NC/f3/gbXEgT9l3TNl3DuEeFQREhpubG4RCIYKDgyGRSKTT165di/z8fBgbG0MoFMLNzY3TnIQQ9bZu3ToAQEpKCl6/fi0zTyKRICQkBLa2tvRdokaoICAyBAIBwsLCEB0dDW9vbyQkJOC///7D2rVrgbedU8LCwqgTECGkUi1btsSPP/6Ily9fwt/fX+YqA29vb0RHRyM0NJS+S9QIXWVA5IqMjMTs2bORnp4unaajo4MDBw5g2LBhnGYjhGgOed8ltra2CA0NhY+PD6fZ6gpF96FUEJAKicViXLx4EdOnT8edO3dw6NAhGqaYEKK0Z8+e4eeff4ajoyONVMgBRfehNHQxqZBAIIC7uzuSkpJw9uxZ9OvXj+tIhBAN8+LFC9jZ2SEvLw9JSUlo3bo115FIBagPAfkgPp+PTz/9lCp6QojSGjRoIL2vQUhICNdxSCWoICAVun79OgoKCriOQQjRcGWXHh48eBCpqalcxyEVoIKAyFVUVAQvLy8IhUIkJiZyHYcQosE6duyIgQMHQiKRYMWKFVzHIRWggoDItWvXLjx58gR6enpwdHTkOg4hRMMtWrQIALB79278999/XMchclBBQMopLS2VVvHffvstdHV1uY5ECNFwrq6u6NOnD0QiEVauXMl1HCIHFQSknIMHD+K///6Dubk5Jk2axHUcQkgtsWjRImhp/f+L2zTgivc6hy47JDIkEom0ep85cyYMDAy4jkQIqSV69+6NjIwMun+BmqIjBETGiRMnkJycDGNjY0ydOpXrOISQWoTH41ExoMaoICAyrl27Bh6Ph2nTpsHExITrOISQWurWrVs4ceIE1zHIO2joYlJOSkoKGjRogEaNGnEdhRBSC50/fx79+vWDhYUF0tLSoK+vz3WkWk3RfSgdISDlODg4UDFACFGZXr164ZNPPkF2djZ2797NdRzyFhUEBADw4MEDpKWlcR2DEFIHaGtrY86cOQCAVatWQSQScR2JVLUgWL9+PYRCIfT09ODi4oIrV65U2n7dunVo2bIl9PX1YWNjg5kzZ6KoqKiqmYkKLFiwAC1atMCGDRu4jkIIqQMmTpyIhg0bIi0tDUePHuU6DqlKQXD48GHMmjULQUFBuH79Otq1awdPT088ffpUbvsDBw5g/vz5CAoKwp07d7B9+3YcPnwYCxYsqI78pBqkpqbi6NGjEIvF6NGjB9dxCCF1gIGBAb7++msAwIoVK2hcAjWgdEGwZs0aTJ48GePHj0erVq2wadMmGBgYYMeOHXLbx8fHo3v37vD394dQKET//v0xatSoDx5VIDUnLCwMEokEAwYMQNu2bbmOQwipI7788kvUq1cP//zzD86ePct1nDpPqYKgpKQE165dk97KEm9vjevh4YGEhAS5y3Tr1g3Xrl2TFgAPHjzAqVOnMHDgwApfp7i4GHl5eTIPohpPnz7Frl27AABz587lOg4hpA4xMzPDpEmTYGFhgVevXnEdp85TaqTC58+fQywWw8LCQma6hYUFUlJS5C7j7++P58+fo0ePHmCMQSQS4Ysvvqj0lEFISAiWLl2qTDRSRRs2bEBRURGcnZ3Rq1cvruMQQuqYoKAghISEQE9Pj+sodZ7KrzKIjY1FcHAwNmzYgOvXryMyMhInT57E8uXLK1wmMDAQubm50sfDhw9VHbNOKiwsxC+//AK8vYkRj8fjOhIhpI4xNTWlYkBNKHWEoGHDhhAIBMjOzpaZnp2dDUtLS7nLLF68GGPGjJHeJMfJyQkFBQWYMmUKFi5cCD6/fE2iq6tLd9irATdv3kRpaSlsbW3h4+PDdRxCSB0mFovx66+/olOnTvjkk0+4jlMnKXWEQEdHB506dcKFCxek0yQSCS5cuABXV1e5yxQWFpbb6QsEAoDudsU5V1dXZGRkIDw8XHoHMkII4cKkSZPg4+ODtWvXch2lzlL6lMGsWbOwdetW7N69G3fu3MHUqVNRUFCA8ePHAwDGjh2LwMBAaXsvLy9s3LgRhw4dQlpaGs6dO4fFixfDy8tLWhgQ7piYmKBjx45cxyCE1HEjR44EAGzdupU6GHJE6Z+Ffn5+ePbsGZYsWYKsrCy0b98ep0+flnY0zMjIkDkisGjRIvB4PCxatAiPHz9Go0aN4OXlhR9++KF63wlRGGMMV65cQZcuXajfACFELfTv3x9t27bFP//8g02bNsn8sCQ1g25uVAddvHgRvXr1Qvfu3XHx4kW5/TgIIaSm7d27F2PHjoWlpSXS09OpL1k1oZsbkQqFhYUBAFq3bk3FACFEbYwcORJNmjRBVlYW9u/fz3WcOof2BnXMvXv3pPcgnzlzJtdxCCFESltbWzqc8dq1a6njeQ2jgqCO+fHHH8EYw6BBg+Dg4MB1HEIIkTF58mQYGhpCT08Pz5494zpOnULXmtUhL1++xM6dO4G3V4sQQoi6MTU1RVJSEpo2bUqdnmsYFQR1yNatW1FYWIi2bdvC3d2d6ziEECKXUCjkOkKdRKcM6pAzZ84Ab48OUOVNCFF3ubm5dBfEGkRHCOqQ8+fP49SpU+jXrx/XUQghpFLp6elwcnKCSCRCRkYGGjVqxHWkWo+OENQyYrEYsbGxOHjwIGJjYyEWi6Xz+Hw+Bg8eTNf2EkLUXtOmTeHg4ICioiJs2rSJ6zh1AhUEtUhkZCTs7Ozg7u4Of39/uLu7w87ODtu3b0dRURHX8QghRGE8Hk96afT69etRXFwMfOBHD/k4VBDUEpGRkfD19YWTkxMSEhKQn5+PhIQEODk5YdKkSbCwsEB0dDTXMQkhRGHDhw+HtbU1srOzceDAgQp/9ERGRnIdtVaggqAWEIvFmD17NgYPHoyoqCh07doV9erVQ9euXaV3DsvLy0PTpk25jkoIIQrT1tbGV199BQBYtmwZhg0bJvdHj6+vLxUF1YAKglogLi4O6enpWLBgQbmhiDds2CD994sXLzhIRwghVTd58mTo6+sjPT0d3bp1K/ejJyoqCoMHD8acOXPo9MFHooKgFsjMzAQAtGnTRmb669evsX379nLtCCFEU9SvXx99+/YFADg7O5f70cPn8xEYGIi0tDTExcVxlLJ2oIKgFrCysgIAJCUlyUzfu3cvcnNzYWNjI9OOEEI0iaenJwDghx9+kDu/7McQ/ej5OFQQ1AJubm4QCoUIDg6GRCIBAEgkEvz0008AABMTE9ja2sLNzY3jpIQQoryyHf77P3rKlE2nHz0fhwqCWkAgECAsLAzR0dHw9vZGQkIC/vjjD6SkpEBLSwtJSUkIDQ2FQCDgOiohhCjt3R89d+/eRWFhoXSeRCJBSEgI/eipBlQQ1BI+Pj4IDw/HrVu30K1bN/Tp0wd4e/4tIiICPj4+XEckhJAqKfvRc+LECTg4OGDp0qXSqwy8vb0RHR1NP3qqAY9pwA2n8/LyYGJigtzcXBgbG3MdR62JxWLExcUhMzMTVlZWcHNzow8JIaRWGD9+PHbt2iUzzdbWFqGhofSjpxKK7kOpIKiFCgsLYWBgwHUMQgipVjk5OWjSpAkKCgqwYMEC9OvXj370KEDRfSidMqhl8vLy8Mknn2D06NHIy8vjOg4hhFQbU1NTjBs3DnjbkbB3795UDFQjKghqmT179uDFixe4du0ajIyMuI5DCCHV6ssvvwQAnDhxAunp6VzHqVWoIKhFGGNYv349AGD69Ong8XhcRyKEkGrl4OAADw8PMMboLojVjAqCWuT3339HSkoK6tWrh7Fjx3IdhxBCVKLsKEFkZCQ0oBucxqCCoBYpOzowduxY6nxJCKm1Bg8ejD179iAxMZGOhFYjusqglsjIyICtrS0kEglu376NVq1acR2JEEKIGqCrDOqYLVu2QCKRwN3dnYoBQkidwRhDfn4+1zFqBS2uA5DqMXPmTJiYmKBdu3ZcRyGEkBpx/vx5fP3113B2dsaePXu4jqPx6JQBIYQQjXTlyhW4uLhAR0cHjx49QqNGjbiOpJbolAEhhJBarUuXLnB2dkZJSQm2bdvGdRyNRwWBhrt27Rp69OiB8PBwrqMQQkiNK7sEcdOmTRCLxVzH0WhUEGi4jRs34s8//8SxY8e4jkIIITXOz88PDRo0QEZGBk6dOsV1HI1GBYEGy8nJwYEDBwAA06ZN4zoOIYTUOD09PYwfPx54+wOJVB0VBBpsz549ePPmDdq0aYNu3bpxHYcQQjjx+eefAwBOnz5N9zf4CHTZoYZ6dxzvqVOn0mhdhJA6y87ODsuWLYOrqys++eQTruNorCodIVi/fj2EQiH09PTg4uKCK1euVNo+JycH06dPh5WVFXR1dWFvb0/nej7SxYsXcefOHRgaGmL06NFcxyGEEE4tXrwYHh4e4PPpwHdVKX2E4PDhw5g1axY2bdoEFxcXrFu3Dp6enrh79y7Mzc3LtS8pKUG/fv1gbm6O8PBwWFtb47///oOpqWl1vYc6qexc2WeffUZjMxBCCPloShcEa9asweTJk6WdODZt2oSTJ09ix44dmD9/frn2O3bswMuXLxEfHw9tbW0AgFAorI7sddrw4cORlZWFL774gusohBCiFrKyshAaGor79+/TlVdVoNRIhSUlJTAwMEB4eDi8vb2l0wMCApCTk4Pjx4+XW2bgwIGoX78+DAwMcPz4cTRq1Aj+/v6YN28eBAKB3NcpLi5GcXGx9HleXh5sbGxopEJCCCEVevz4MZo2bQqxWIykpCS0bt2a60hqQSUjFT5//hxisRgWFhYy0y0sLJCVlSV3mQcPHiA8PBxisRinTp3C4sWLERYWhu+//77C1wkJCYGJiYn0YWNjo0xMQgghdZC1tTWGDBkCvD16TZSj8t4XEokE5ubm2LJlCzp16gQ/Pz8sXLiw0v+swMBA5ObmSh8PHz5UdUyNERsbixUrVuDp06dcRyGEELUzdepU4O1l2QUFBVzH0ShKFQQNGzaEQCBAdna2zPTs7GxYWlrKXcbKygr29vYypwccHR2RlZWFkpISucvo6urC2NhY5kH+v7Vr1yIwMBArVqzgOgohhKidvn37ws7ODnl5eTh8+DDXcTSKUgWBjo4OOnXqhAsXLkinSSQSXLhwAa6urnKX6d69O1JTUyGRSKTT/v33X1hZWUFHR+djstc5jx8/RnR0NPDOQByEEEL+D5/Px5QpUwAAW7Zs4TqORlH6lMGsWbOwdetW7N69G3fu3MHUqVNRUFAgvepg7NixCAwMlLafOnUqXr58iRkzZuDff//FyZMnERwcjOnTp1fvO6kDtm/fDolEgl69eqFly5ZcxyGEELUUEBAAbW1tXL58GTdv3uQ6jsZQ+rJDPz8/PHv2DEuWLEFWVhbat2+P06dPSzsaZmRkyAwMYWNjgzNnzmDmzJlo27YtrK2tMWPGDMybN69630ktJxaLpbf3LKt+CSGElGdubo4JEyZAX18fZmZmXMfRGEpddsgVRS+ZqM1OnTqFQYMGoX79+nj8+DH09PS4jkQIIUQDqOSyQ8KdsnNhAQEBVAwQQgipdlQQaADGGMzMzKCnp4fJkydzHYcQQjQCYwwxMTFYvHgx11E0Ap0y0CB5eXl1+v0TQogynj59Cmtra4hEIty8eRNt27blOhIn6JRBLUTFACGEKM7c3Fw6zP7WrVu5jqP2qCBQc0lJSbh16xbXMQghRCOVXZW1d+9eFBYWch1HrVFBoOYWL16Mtm3bYs2aNVxHIYQQjdO3b1/Y2toiNzcXR48e5TqOWqOCQI1lZWXhxIkTAID+/ftzHYcQQjQOn8/HpEmTAEA6lguRjwoCNbZnzx6IxWJ07doVbdq04ToOIYRopHHjxoHP5+PSpUtISUnhOo7aooJATTHGsH37dgDAxIkTuY5DCCEaq3Hjxhg0aBDs7e2RlZXFdRy1pfTQxaRmXLp0Cf/++y8MDQ3h5+fHdRxCCNFoe/bsgYmJCXg8HtdR1BYVBGpCLBYjLi4OmZmZsLKyws6dO4G3944wMjLiOh4hhGg0U1NTmefvf+e6ublBIBBwlk8dUEGgBiIjIzF79mykp6dLp2lp/f//mrLOMIQQQj7emzdvsGrVKuzatUvmO1coFCIsLAw+Pj6c5uMS9SHgWGRkJHx9feHk5ISEhATk5+cjISEBnp6eAIAnT55wHZEQQmqFly9fwtzcHN999x3s7OxkvnOdnJzg6+uLyMhIrmNyhoYu5pBYLIadnR2cnJwQFRUlc9toiUQCb29vJCUl4d69e3X+UBYhhHwssVgMQ0NDFBcXY9myZTL3OKjN37k0dLEGiIuLQ3p6OhYsWCAtBl6/fg2JRAI+n4/AwECkpaUhLi6O66iEEKLx4uLiUFxcDADYuXMnJBKJdB5951JBwKnMzEwAkBljYMGCBWjevDkiIiKk08vaEUIIqbqy71JjY2OkpaUhJiZGZn5d/86lgoBDVlZWwNv7FQBAUVER9u3bh/T0dNSrV086vawdIYSQqiv7Lu3bty8ASMd6KVPXv3OpDwGH3u9DcPToUYwcORI2Nja4f/8+hg0bVivPZxFCCBfKvnNtbGwQFxcHXV1dZGZmwszMjPoQ0GWH3BIIBAgLC4Ovry+8vb3x9OlT4G31OmzYMERHRyM8PLxW/WESQghXyr5zhw0bBiMjI+Tn5+PkyZNo3rw5QkJC6vx3Lh0hUAORkZGYMWMGHj16JJ1ma2uL0NDQOn1NLCGEqEJkZCSmT58uM4xxbf7OVXQfSgWBmvj++++xePFiODg4YOPGjTRqFiGEqFBdGqmQThloEMYYdu/eDQCYN28eevfuzXUkQgip1QQCgfS7tri4uNYWA8qgqwzUxO7du/HFF1/A19eX6yiEEFInPH36FD4+PrCzs0NpaSnXcThHpwwIIYTUSaWlpWjSpAmePn2KqKgoDB06lOtIKkEjFRJCCCGV0NbWxpgxY4C3IxfWdVQQcOzIkSOYOnUqEhMTuY5CCCF1zvjx4wEAJ0+elF76XVdRQcCx9evXY9OmTTh16hTXUQghpM5p3bo1unTpApFIhH379nEdh1NUEHDo/v37uHjxIvh8PsaOHct1HEIIqZPKjhLs3LkTGtCtTmWoIODQnj17AAAeHh5o0qQJ13EIIaROGjlyJHR1dZGUlIQbN25wHYczNA4BRyQSibQgCAgI4DoOIYTUWaamppgzZw4aNWoEoVDIdRzO0GWHHPnjjz/Qu3dvGBkZISsrCwYGBlxHIoQQUgvRZYdqrmxkwhEjRlAxQAghhHNUEHCkefPmsLa2ptMFhBCiJvLz87F9+3YEBQVxHYUTdMqAQ2KxGHw+Hzwej+sohBBS5926dQtt27aFtrY2MjMz0aBBA64jVQuVnjJYv349hEIh9PT04OLigitXrii03KFDh8Dj8eDt7V2Vl611BAIBFQOEEKImnJyc0L59e5SWluLQoUNcx6lxShcEhw8fxqxZsxAUFITr16+jXbt28PT0/OAIT+np6ZgzZw7c3Nw+Jq/Gy8rKwsmTJyESibiOQggh5D1lp3HL+nnVJUoXBGvWrMHkyZMxfvx4tGrVCps2bYKBgQF27NhR4TJisRifffYZli5dimbNmn3wNYqLi5GXlyfzqC12796NwYMH010NCSFEDfn7+0NLSwt///037ty5w3WcGqVUQVBSUoJr167Bw8Pj/1bA58PDwwMJCQkVLrds2TKYm5tj4sSJCr1OSEgITExMpA8bGxtlYqotxpi06vTy8uI6DiGEkPeYm5tjwIABwDuDx9UVShUEz58/h1gshoWFhcx0CwsLZGVlyV3m0qVL2L59O7Zu3arw6wQGBiI3N1f6ePjwoTIx1dbVq1dx584d6OvrY/jw4VzHIYQQIkfZaYO9e/dCLBZzHafGqHSkwvz8fIwZMwZbt25Fw4YNFV5OV1cXurq6qozGibJq83//+1+tulqCEEJqk8GDB6Nhw4ZwdHTE8+fPy/0Irq2UKggaNmwIgUCA7OxsmenZ2dmwtLQs1/7+/ftIT0+XOTwukUj+/wtraeHu3bto3rx51dNrkHd7rdKNjAghRH3p6uoiLS0N9erV4zpKjVLqlIGOjg46deqECxcuSKdJJBJcuHABrq6u5do7ODjg1q1bSExMlD6GDBkCd3d3JCYm1pq+AYo4ffq0tNLs27cv13EIIYRUoq4VA6jKKYNZs2YhICAAzs7O6NKlC9atW4eCggLp7SPHjh0La2trhISEQE9PD23atJFZ3tTUFADKTa/tYmJigHd6sBJCCFF/jx8/Rm5uLlq1asV1FJVTes/k5+eHZ8+eYcmSJcjKykL79u1x+vRp6TmWjIwM8Pk0IvL7wsLCMHbsWGlBRAghRL3t2rULEyZMgKenJ3777Teu46gcDV1MCCGEyHHv3j3Y29uDz+fj8ePHcvvKaQK626EaKS4u5joCIYQQJbVo0QIuLi6QSCR1YihjKghULCMjA40aNcK4cePq1PWshBBSG4wZMwZ4OyZBbUcFgYrt378f+fn5SE9Ph0Ag4DoOIYQQJfj5+UFLSwvXr19HcnIy13FUigoCFWKMSavKsiqTEEKI5mjYsKF0KON9+/ZxHUelqCBQoRs3buDOnTvQ09OjmxkRQoiGKvtBFxERAQ3oh19lVBCoUFk1OWTIEJiYmHAdhxBCSBV4eXlh+/btuHLlCng8HtdxVIZGyFERsViMgwcPAgBGjx7NdRxCCCFVpKenhwkTJnAdQ+XoCIGKxMTEICsrC/Xr14enpyfXcQghhFST2nragAoCFXF0dMT333+P2bNnQ0dHh+s4hBBCPtLu3bvRuXNn/Prrr1xHUQk6ZaAi1tbWWLhwIdcxCCGEVJNbt27h6tWr2L9/P4YOHcp1nGpHRwgIIYQQBXz22WcAgBMnTiAvL4/rONWOCgIVWLFiBQ4fPow3b95wHYUQQkg1ad++PRwcHFBUVIRjx45xHafaUUFQzV69eoWgoCCMHDkSqampXMchhBBSTXg8nvQowf79+7mOU+2oIKhmERERKCkpgZOTE5ycnLiOQwghpBqNGjUKAHDhwgVkZWVxHadaUUFQzQ4cOAC8c66JEEJI7dG8eXN07doVEokEhw8f5jpOtaKrDKrR48ePERsbCwAYOXIk13EIIYSowPjx42FlZYW2bdtyHaVaUUFQjQ4ePAjGGNzc3NC0aVOu4xBCCFGBKVOmYMqUKVzHqHZ0yqAalZ0u8Pf35zoKIYQQohQ6QvARxGIx4uLikJmZCVNTU2hra0NbWxvDhw/nOhohhBAVu3fvHqKjo9G+fXtkZWXBysoKbm5uEAgEXEerEioIqigyMhKzZ89Genq6dJpQKMSmTZvQoEEDTrMRQghRrYKCArRp0wYlJSUy04VCIcLCwuDj48NZtqqiUwZVEBkZCV9fXzg5OSEhIQH5+flISEiAk5MTJk2ahMjISK4jEkIIUaEzZ85Ii4HRo0fL7Ad8fX01cj/AYxpw26a8vDyYmJggNzcXxsbGnGYRi8Wws7ODk5MToqKiwOfz8fTpU2hra8PExATe3t5ISkrCvXv3NPawESGEkIqV7QcaNGiAa9eu4ZNPPkFaWhr4fD4kEona7QcU3YfSEQIlxcXFIT09HQsWLACf//83X2hoKCwsLLB69WoEBgYiLS0NcXFxXEclhBCiAmX7gdDQUBgZGSEjIwN//fUXAIDP52vsfoAKAiVlZmYCANq0aQMA0sEpSktLYWdnJ51e1o4QQkjtUvb97uzsDG9vb+DtZedlNHU/QAWBkqysrAAASUlJAICEhARkZGTAyMgIAwcOlE4va0cIIaR2eXc/UDaU8ZEjRyASiaTToYH7ASoIlOTm5gahUIjg4GBIJBIcOnQIAODt7Q1dXV2EhITA1tYWbm5uXEclhBCiAu/uB/r06YMGDRrgzZs3uHv3LiQSicbuB+iyQyUJBAKEhYXB19cXQ4YMQXx8PPD2tpje3t6Ijo5GeHi4WnQkIYQQUv3e3Q8MHz4coaGhGDhwIO7fv6/R+wG6yqCKIiMjMW3aNGRnZ0un2draIjQ0VCOvPyWEEKIceePRqON+QNF9KBUEH2HChAnYuXMn+vbti0WLFmn0CFWEEEKU9+6ItZaWlujUqZNa7adABUHNyMrKwpEjR9C9e3d06tSJ6ziEEEI4cubMGcyYMQMdOnSQueJAHSi6D6U+BB/B0tISX3/9NdcxCCGEcMzMzAx3797Fw4cPUVhYCAMDA64jKY2uMiCEEEI+UufOnSEUClFYWIiTJ09yHadKqCCogqKiInh5eWHr1q0oLS3lOg4hhBCO8Xg8jBgxAng7JoEmqlJBsH79egiFQujp6cHFxQVXrlypsO3WrVvh5uYGMzMzmJmZwcPDo9L2muC3335DdHQ0li9fTp0ICSGEAAD8/PwAACdPnsTr16+5jqM0pQuCw4cPY9asWQgKCsL169fRrl07eHp64unTp3Lbx8bGYtSoUYiJiUFCQgJsbGzQv39/PH78uDryc+Lw4cMAgBEjRkjvZ0AIIaRu69ChA+zs7PDmzRtER0dzHUdpSu/N1qxZg8mTJ2P8+PFo1aoVNm3aBAMDA+zYsUNu+/3792PatGlo3749HBwcsG3bNkgkEly4cKE68te4wsJCnDhxAninGiSEEELePW1Q9sNRkyh1lUFJSQmuXbuGwMBA6TQ+nw8PDw8kJCQotI7CwkKUlpaifv36FbYpLi5GcXGx9HleXp4yMVXq5MmTKCwshK2tLZydnbmOQwghRI2MGjUKmZmZ8Pf35zqK0pQ6QvD8+XOIxWJYWFjITLewsEBWVpZC65g3bx4aN24MDw+PCtuEhITAxMRE+rCxsVEmpkq9e7qAx+NxHYcQQogaadOmDXbs2FHpPk5d1egJ8BUrVuDQoUM4duwY9PT0KmwXGBiI3Nxc6ePhw4c1GbNC+fn50stJ6HQBIYSQ2kSpgqBhw4YQCAQy4/cDQHZ2NiwtLStdNjQ0FCtWrMDZs2fRtm3bStvq6urC2NhY5qEOnj17hh49esDR0RHt27fnOg4hhBA1dfXqVcydOxevXr3iOorClCoIdHR00KlTJ5kOgWUdBF1dXStcbtWqVVi+fDlOnz6t0efdmzVrhnPnziExMZFOFxBCCKnQ+PHjsXr1akRFRXEdRWFKnzKYNWsWtm7dit27d+POnTuYOnUqCgoKMH78eADA2LFjZTodrly5EosXL8aOHTsgFAqRlZWFrKwsjbxGs4yOjg7XEQghhKixstPKmjRIkdIFgZ+fH0JDQ7FkyRK0b98eiYmJOH36tLSjYUZGBjIzM6XtN27ciJKSEvj6+sLKykr6CA0Nrd53omIpKSl48uQJ1zEIIYRogLLLD8+fP48XL15wHUchdLdDBQ0ZMgTR0dHYsmULJk2axEkGQgghmqNDhw5ITEzEtm3bMHHiRM5yKLoPpWH2FJCbm4szZ86AMYauXbtyHYcQQogG8PX1BQAcPXqU6ygKodsfK+DEiRMoKSmBg4MDWrduzXUc8g6xWEw3mCLkHdra2nSPFTUxfPhwLFq0CBcuXMDLly8rHZBPHVBBoICy6m748OF0dYGaYIwhKysLOTk5XEchRO2YmprC0tKSvq84Zm9vj7Zt2yIrKwspKSno1q0b15EqRQXBB+Tl5eHMmTPA24KAqIeyYsDc3BwGBgb0xUfI20K5sLBQerM5KysrriPVedHR0WjcuLFGHLWhguADTpw4geLiYtjb26NNmzZcxyFvTxOUFQMNGjTgOg4hakVfXx8A8PTpU5ibm2vEjqg2U6eh9z+EOhV+QGRkJECnC9RKWZ8BAwMDrqMQopbKPhvUv0Z9SCQSPH/+nOsYlaKC4AO2b9+O3bt3IyAggOso5D1UoBEiH3021Mvp06dhY2Oj9vsROmXwAaamphg7dizXMQghhGiopk2b4smTJ3j27BlycnJgamrKdSS56AgBIYQQokKOjo5o3bo1SktLcfz4ca7jVIgKggq8fv0aPXv2RGhoKJ2Hq6XEYjFiY2Nx8OBBxMbGQiwWcx1J7ZSUlMDOzg7x8fFcRyFvde3aFREREVzHIEoqu0otPDyc6ygVooKgAidPnkRcXBw2b94MLS06s1LbREZGws7ODu7u7vD394e7uzvs7OyknUhVYdy4ceDxeFixYoXM9KioqI8655ufn49vvvkGTZs2hb6+Prp164a///67XLs7d+5gyJAhMDExgaGhITp37oyMjIxK171p0ybY2tqq5fXTkZGRcHZ2hqmpKQwNDdG+fXvs3bv3g8utX78ejo6O0NfXR8uWLbFnzx6Z+bdv38awYcMgFArB4/Gwbt26asv8zz//wM3NDXp6erCxscGqVatk5m/duhVubm4wMzODmZkZPDw8cOXKFZk2ixYtwvz58yGRSKotF1G9soLg7NmzyM3N5TqOXFQQVKCsivP19aUOOrVMZGQkfH194eTkhISEBOTn5yMhIQFOTk7w9fVVaVGgp6eHlStXVus90idNmoRz585h7969uHXrFvr37w8PDw88fvxY2ub+/fvo0aMHHBwcEBsbi3/++QeLFy+Gnp5ehetljOGXX37hdAz2ytSvXx8LFy5EQkIC/vnnH4wfPx7jx4+Xjhsiz8aNGxEYGIjvvvsOt2/fxtKlSzF9+nScOHFC2qawsBDNmjXDihUrYGlpWW158/Ly0L9/fzRt2hTXrl3D6tWr8d1332HLli3SNrGxsRg1ahRiYmKQkJAAGxsb9O/fX+b/csCAAcjPz8dvv/1WbdmI6rVq1QqOjo4oKSnBr7/+ynUc+ZgGyM3NZQBYbm5ujbxeQUEBMzAwYADY1atXa+Q1ieLevHnDkpOT2Zs3b5ReViQSMaFQyLy8vJhYLJaZJxaLmZeXF7O1tWUikagaE/9/AQEBbPDgwczBwYF9++230unHjh1jVf0oFhYWMoFAwKKjo2Wmd+zYkS1cuFD63M/Pj40ePVqpdf/999+Mz+ezvLw8melz585lLVq0YPr6+szW1pYtWrSIlZSUMMYYu3v3LgPA7ty5I7PMmjVrWLNmzaTPjx8/zuzs7Jiuri7r3bs327VrFwPAXr16pVTG93Xo0IEtWrSowvmurq5szpw5MtNmzZrFunfvLrd906ZN2dq1a8tNF4vFLDg4mAmFQqanp8fatm3Ljh49Wmm2DRs2MDMzM1ZcXCydNm/ePNayZcsKlxGJRMzIyIjt3r1bZvr48eMr/f/8mM8IUZ3FixczAMzb27tGX1fRfSgdIZDj9OnTKCwshFAoRMeOHbmOQ6pRXFwc0tPTsWDBAvD5sn/+fD4fgYGBSEtLQ1xcnEpeXyAQIDg4GD///DMePXokt01GRgbq1atX6SM4OBgAIBKJIBaLy/3S19fXx6VLl4C31z+fPHkS9vb28PT0hLm5OVxcXBAVFVVp1ri4ONjb28PIyEhmupGREXbt2oXk5GT8+OOP2Lp1K9auXQu8HarV2dkZ+/fvl1lm//798Pf3BwCkpaXB19cX3t7euHnzJj7//HMsXLhQ6W35LsYYLly4gLt376Jnz54VtisuLpa7ra5cuaJUX6GQkBDs2bMHmzZtwu3btzFz5kyMHj0af/zxR4XLJCQkoGfPntDR0ZFO8/T0xN27dys8YlRYWIjS0tJyY+B36dJFZX+jRHX8/PzwzTffYO7cuVxHka/GSpSPUNNHCPz9/RkANmvWrBp5PaKcj/n1c+DAAQaA5efny52fl5fHALADBw5UQ1JZAQEBbOjQoYwxxrp27comTJjAmJwjBKWlpezevXuVPl68eCFt7+rqynr16sUeP37MRCIR27t3L+Pz+cze3p4xxlhmZiYDwAwMDNiaNWvYjRs3WEhICOPxeCw2NrbCvDNmzGB9+vT54PtavXo169Spk/T52rVrWfPmzaXP3z9qMG/ePNamTRuZdSxcuLBKRwhycnKYoaEh09LSYrq6umz79u2Vtg8MDGSWlpbs6tWrTCKRsL///ptZWFgwAOzJkyfl2ss7QlBUVMQMDAxYfHy8zPSJEyeyUaNGVfja/fr1Y1OmTJGZdvv2bQaAJScny11m6tSprFmzZuX+1o8fP874fH65o1xl6AgBeZei+1DqLfee4uJiREdHAwCGDRvGdRxSzcrGdk9KSpJ7K+ukpCSZdqqycuVK9OnTB3PmzCk3T0tLC3Z2dgqva+/evZgwYQKsra0hEAjQsWNHjBo1CteuXQPeHiEAgKFDh2LmzJkAgPbt2yM+Ph6bNm1Cr1695K73zZs3cvsYHD58GD/99BPu37+P169fQyQSydxjfeTIkZgzZw7++usvdO3aFfv370fHjh3h4OAAALh79y46d+4ss84uXboo/H7fZWRkhMTERLx+/RoXLlzArFmz0KxZM/Tu3Vtu+8WLFyMrKwtdu3YFYwwWFhYICAjAqlWryh0xqkhqaioKCwvRr18/meklJSXo0KEDAKB169b477//AABubm5VOt+/YsUKHDp0CLGxsXKPakgkEhQXF0uHKibkY9Epg/e8fPkSHh4eaNGihdwdBtFsbm5uEAqFCA4OLtdLWyKRICQkBLa2tnBzc1Npjp49e8LT0xOBgYHl5ilzygAAmjdvjj/++AOvX7/Gw4cPpYe/mzVrBgBo2LAhtLS00KpVK5nXcXR0rPQqg4YNG5Y7lJ2QkIDPPvsMAwcORHR0NG7cuIGFCxeipKRE2sbS0hJ9+vTBgQMHAAAHDhzAZ5999hFbq2J8Ph92dnZo3749Zs+eDV9fX4SEhFTYXl9fHzt27EBhYSHS09ORkZEBoVAIIyMjNGrUSKHXfP36NfD2SqTExETpIzk5WdoZ+dSpU9Lp27ZtA95ul+zsbJl1lT1/v/NiaGgoVqxYgbNnz6Jt27blMrx8+RKGhoZUDGggiUSC8+fP46uvvsKbN2+4jiODjhC8x8rKChERERCLxQr/YiCaQyAQICwsTHoOOzAwEG3atEFSUhJCQkIQHR2N8PDwGrkhzIoVK9C+fXu0bNlSZnrjxo2RmJhY6bLy7qtuaGgIQ0NDvHr1CmfOnJFe0qajo4POnTvj7t27Mu3//fdfNG3atMLX6NChAzZu3AjGmPRKm/j4eDRt2lTmnH/ZL+F3ffbZZ5g7dy5GjRqFBw8eYOTIkdJ5LVu2xKlTp2Tay7tMsirKfjV/iLa2Npo0aQIAOHToEAYPHqzw571Vq1bQ1dVFRkZGhUdX5G1XV1dXLFy4EKWlpdDW1gYAnDt3Di1btoSZmZm03apVq/DDDz/gzJkzcHZ2lrv+pKQk6dEIoll4PB4mTpyIjIwMeHh4YOjQoVxH+j81dhLjI9R0HwKi3qrj/GhERAQTCoUMgPRha2vLIiIiqjXru97tQ1BmzJgxTE9Pr8pXGTDG2OnTp9lvv/3GHjx4wM6ePcvatWvHXFxcpD3/GWMsMjKSaWtrsy1btrB79+6xn3/+mQkEAhYXF1fhep8/f860tbXZrVu3pNOOHz/OtLS02MGDB1lqair78ccfWf369ZmJiYnMsnl5eUxfX5+1a9eO9e3bV2begwcPmLa2Nps7dy67e/cuO3z4MGvSpAkDwHJychhjjD169Ii1bNmSXb58ucJ8wcHB7OzZs+z+/fssOTmZhYaGMi0tLbZ161Zpm/nz57MxY8ZIn9+9e5ft3buX/fvvv+zy5cvMz8+P1a9fn6WlpUnbFBcXsxs3brAbN24wKysrNmfOHHbjxg127949aZuFCxeyBg0asF27drHU1FR27do19tNPP7Fdu3ZVmDcnJ4dZWFiwMWPGsKSkJHbo0CFmYGDANm/eLG2zYsUKpqOjw8LDw1lmZqb08X6fl169erFly5ZV+FrUh0C9ffPNNwyAzN+mKim6D6WC4B33799nd+/eVelrkI9XXV92IpGIxcTEsAMHDrCYmBiVXGr4LnkFQVpaGtPR0fmoguDw4cOsWbNmTEdHh1laWrLp06dLd6zv2r59O7Ozs2N6enqsXbt2LCoq6oPrHjFiBJs/f77MtG+//ZY1aNCA1atXj/n5+bG1a9eWKwjKlgXAduzYUW7e+5cdbty4kQGQ/p+mpaUxACwmJqbCbAsXLpS+HzMzM+bq6soOHTok0yYgIID16tVL+jw5OZm1b9+e6evrM2NjYzZ06FCWkpIis0zZa7//eHc9EomErVu3jrVs2ZJpa2uzRo0aMU9PT/bHH39Uuj1v3rzJevTowXR1dZm1tTVbsWKFzPymTZvKfe2goCBpm0ePHjFtbW328OHDCl+HCgL1FhcXxwAwExMTmctQVUXRfSiPMca4PkrxIXl5eTAxMUFubq5M56Xq9sUXX2Dz5s1YsmQJli5dqrLXIR+nqKgIaWlpsLW1rXRgHfLx/vnnH/Tr1w/3799HvXr1VPY6P/zwAzZt2oSHDx+q7DVqi3nz5uHVq1cyAxq9jz4j6k0ikcDa2hpZWVk4deoUBgwYoNLXU3QfSifJ3xKLxTh27BgAqOUwrYRwoW3btli5ciXS0tKqdb0bNmzA33//jQcPHmDv3r1YvXq12t8aVl2Ym5tj+fLlXMcgH4HP5+N///sfAKjVfSnoCMFbFy9eRK9evWBqaors7GyZwUOIeqFfP5pv5syZOHz4MF6+fIlPPvkEY8aMQWBgIN03pJrQZ0T9XbhwAR4eHmjQoAGysrJU+rev6D6UPn1vlVVpQ4YMoWKAEBVbu3atdHRDQuqiXr16oUGDBjA2NkZGRob0MmEuUUHwdtjTshva0GBEhBBCVE1LSwuJiYmwtrZWmxvoUUEA4OrVq3j06BEMDQ3Rv39/ruMQQgipA8rGwlAX1KkQwPHjxwEAAwcOpPNthBBCalRpaSlyc3O5jkEFAQAsWLAAUVFR0nHeCSGEkJqwYcMGmJubVzrkdk2hggCAgYEBhg4dCldXV66jEEIIqUMaNmyInJwcREZGguuL/qggIIQQQjgyYMAA6Orq4t69e0hOTuY0S50vCPz9/bFo0SI8ffqU6yiEVAuhUIh169Z91DpiY2PB4/GQk5NTLZnS09PB4/E+eNMmQuoaIyMj6a20y65240qdLggyMjJw8OBBtTh3Q+qOhIQECAQCDBo0iOsoAIDevXvjm2++kZnWrVs3ZGZmwsTEhLNchNQVZaMWlo2Wy5U6XRCUbfwePXrA3Nyc6zikjti+fTu++uorXLx4EU+ePOE6jlw6OjqwtLRUm+ujCanNvLy8wOfzcePGjWofJlwZdbIgEIvFiI2NxebNmwFAve5HTaqsoKCgwkdRUZHCbd+8eaNQ26p4/fo1Dh8+jKlTp2LQoEHYtWuXdF7ZYfoLFy7A2dkZBgYG6NatG+7evSttc//+fQwdOhQWFhaoV68eOnfujPPnz1f4ehMmTMDgwYNlppWWlsLc3Bzbt2/HuHHj8Mcff+DHH38Ej8cDj8dDenq63FMGf/75J3r37g0DAwOYmZnB09MTr169AgCcPn0aPXr0gKmpKRo0aIDBgwfj/v37VdpGhNQ1jRo1Qs+ePQEAoaGhOHjwIGJjYyEWi2s0R5UKgvXr10MoFEJPTw8uLi64cuVKpe2PHj0KBwcH6OnpwcnJCadOnapq3o8WGRkJOzs7uLu7486dO8DbYVS5PndDPl69evUqfLw/AqW5uXmFbd+/85hQKJTbriqOHDkCBwcHtGzZEqNHj8aOHTvK9SxeuHAhwsLCcPXqVWhpaWHChAnSea9fv8bAgQNx4cIF3LhxA59++im8vLyQkZEh9/UmTZqE06dPIzMzUzotOjoahYWF8PPzw48//ghXV1dMnjwZmZmZyMzMhI2NTbn1JCYmom/fvmjVqhUSEhJw6dIleHl5Sb+wCgoKMGvWLFy9ehUXLlyQ3rxFIpFUaTsRUtd07NgRJiYm2LBhA/z9/eHu7g47O7ua3Tcpe1/lQ4cOMR0dHbZjxw52+/ZtNnnyZGZqasqys7Pltv/zzz+ZQCBgq1atYsnJyWzRokVMW1ub3bp1S+HXVPRezh8SERHBeDwe8/LyYoGBgQwAa9myJfPy8mI8Ho9FRER81PpJzajoXu/y7iNf9hg4cKBMWwMDgwrbvnvfe8YYa9iwodx2VdGtWze2bt06xhhjpaWlrGHDhiwmJoYxxlhMTAwDwM6fPy9tf/LkSQag0vvat27dmv3888/S502bNmVr166VPm/VqhVbuXKl9LmXlxcbN26c9HmvXr3YjBkzZNZZluXVq1eMMcZGjRrFunfvrvD7fPbsGQMg/ZynpaUxAOzGjRsKr4NUXUWfEaKe3t03JSQksPz8fJaQkFBt+yZF96FKf6t16dKFTZ8+XfpcLBazxo0bs5CQELntR4wYwQYNGiQzzcXFhX3++ecKv2Z1FAQikYgJhULm5eXFxGIxGzhwIAPAli9fzsRiMfPy8mK2trZMJBJV+TVIzajoy+7169cVPpRpW1hYqFBbZaWkpDAtLS2Z4nn69Ols9OjRjL2zE3769Kl0/vXr1xkA9t9//zHGGMvPz2ezZ89mDg4OzMTEhBkaGjI+n8++/fZb6TLvFwRr1qxhDg4OjDHGsrKymJaWFrt48aJ0viIFgaOjI1uyZEmF7+3ff/9lI0eOZLa2tszIyIgZGhoyAOzkyZOMUUFQ46gg0Bzv75veVV37JkX3oUrdy6CkpATXrl1DYGCgdBqfz4eHhwcSEhLkLpOQkIBZs2bJTPP09ERUVFSFr1NcXIzi4mLp87y8PGViyhUXF4f09HQcPHgQPB4PNjY2qF+/Pnx8fMDn8xEYGIhu3bohLi4OvXv3/ujXIzXP0NCQ87aV2b59O0QiERo3biydxhiDrq4ufvnlF+k0bW1t6b/LOvWVHXqfM2cOzp07h9DQUNjZ2UFfXx++vr4oKSmp8HXHjh2L+fPnIyEhAfHx8bC1tYWbm5tS2fX19Sud7+XlhaZNm2Lr1q1o3LgxJBIJ2rRpU2kuQojsvqm4uBhpaWkwNjZGkyZNanzfpFQfgufPn0MsFsPCwkJmuoWFBbKysuQuk5WVpVR7AAgJCYGJiYn0Ie+cprLKzqG2adMGPB4PmzZtQnZ2NhwdHaXT321HSHUSiUTYs2cPwsLCkJiYKH3cvHkTjRs3xsGDBxVaz59//olx48bhf//7H5ycnGBpaYn09PRKl2nQoAG8vb2xc+dO7Nq1C+PHj5eZr6Oj88HOS23btsWFCxfkznvx4gXu3r2LRYsWoW/fvnB0dJR2NiSEVO7dfZO2tjZatWolc9Ojmtw3qeVVBoGBgcjNzZU+Hj58+NHrtLKyAgAkJSVJp2lpaUl/gZVNL2tHSHWKjo7Gq1evMHHiRLRp00bmMWzYMGzfvl2h9bRo0QKRkZHSYsLf31+hjnuTJk3C7t27cefOHQQEBMjMEwqFuHz5MtLT0/H8+XO56wsMDMTff/+NadOm4Z9//kFKSgo2btyI58+fw8zMDA0aNMCWLVuQmpqK33//vdxRQUKIfO/um7S0yh+0r8l9k1IFQcOGDSEQCJCdnS0zPTs7G5aWlnKXsbS0VKo9AOjq6sLY2Fjm8bHc3NwgFAoRHBxc7gtPIpEgJCSkSodSCVHE9u3b4eHhIXegn2HDhuHq1av4559/PrieNWvWwMzMDN26dYOXlxc8PT3RsWPHDy7n4eEBKysreHp6ypyywNvTEAKBAK1atUKjRo3kXrFgb2+Ps2fP4ubNm+jSpQtcXV1x/PhxaGlpgc/n49ChQ7h27RratGmDmTNnYvXq1R/MRAhRs32Tsp0TunTpwr788kvpc7FYzKytrSvtVDh48GCZaa6urjXeqZC915MzPj6e5eXlsfj4eLrKQMNQhynl5efnM2NjY/obryPoM6JZVL1vUtlVBocOHWK6urps165dLDk5mU2ZMoWZmpqyrKwsxhhjY8aMYfPnz5e2//PPP5mWlhYLDQ1ld+7cYUFBQZxddsjebnihUChz+ZitrS19UWoQ+rJTnFgsZtnZ2Wzu3Lnsk08+YaWlpVxHIjWAPiOaR5X7JpVcZQAAfn5+ePbsGZYsWYKsrCy0b98ep0+flnYczMjIAJ//f2ciunXrhgMHDmDRokVYsGABWrRogaioKGlHiZrm4+ODoUOHIi4uDpmZmbCysoKbmxsEAgEneQhRpYyMDNja2qJJkybYtWuX3HOUhBDuqcO+ice4vgGzAvLy8mBiYoLc3Nxq6U9ANFtRURHS0tJga2sLPT09ruMQonboM0Lepeg+VC2vMiCEEEJIzaKCgGgsGiefEPnos0Gqgk4oEo2jo6MDPp+PJ0+eoFGjRtDR0aHb9BLyduTLkpISPHv2DHw+Hzo6OlxHIhqECgKicfh8PmxtbZGZmYknT55wHYcQtWNgYIBPPvlEpoM3IR9CBQHRSDo6Ovjkk08gEolq/J7hhKgzgUAgMworIYqigoBoLB6PB21tbZmbARFCCKkaOp5ECCGEECoICCGEEEIFASGEEEI0pQ9B2WCKeXl5XEchhBBCNErZvvNDAxNrREGQn58PALCxseE6CiGEEKKR8vPz5d6CvYxG3MtAIpHgyZMnMDIyqrZLafLy8mBjY4OHDx/S/RGqCW3T6kXbs/rRNq1etD2rnyq2KWMM+fn5aNy4caVjU2jEEQI+n48mTZqoZN3Gxsb0h1zNaJtWL9qe1Y+2afWi7Vn9qnubVnZkoAx1KiSEEEIIFQSEEEIIqcMFga6uLoKCgqCrq8t1lFqDtmn1ou1Z/WibVi/antWPy22qEZ0KCSGEEKJadfYIASGEEEL+DxUEhBBCCKGCgBBCCCFUEBBCCCGECgJCCCGEoLYXBOvXr4dQKISenh5cXFxw5cqVStsfPXoUDg4O0NPTg5OTE06dOlVjWTWBMttz69atcHNzg5mZGczMzODh4fHB7V8XKfs3WubQoUPg8Xjw9vZWeUZNouz2zMnJwfTp02FlZQVdXV3Y29vT5/49ym7TdevWoWXLltDX14eNjQ1mzpyJoqKiGsurzi5evAgvLy80btwYPB4PUVFRH1wmNjYWHTt2hK6uLuzs7LBr1y7VBWS11KFDh5iOjg7bsWMHu337Nps8eTIzNTVl2dnZctv/+eefTCAQsFWrVrHk5GS2aNEipq2tzW7dulXj2dWRstvT39+frV+/nt24cYPduXOHjRs3jpmYmLBHjx7VeHZ1pew2LZOWlsasra2Zm5sbGzp0aI3lVXfKbs/i4mLm7OzMBg4cyC5dusTS0tJYbGwsS0xMrPHs6krZbbp//36mq6vL9u/fz9LS0tiZM2eYlZUVmzlzZo1nV0enTp1iCxcuZJGRkQwAO3bsWKXtHzx4wAwMDNisWbNYcnIy+/nnn5lAIGCnT59WSb5aWxB06dKFTZ8+XfpcLBazxo0bs5CQELntR4wYwQYNGiQzzcXFhX3++ecqz6oJlN2e7xOJRMzIyIjt3r1bhSk1S1W2qUgkYt26dWPbtm1jAQEBVBC8Q9ntuXHjRtasWTNWUlJSgyk1i7LbdPr06axPnz4y02bNmsW6d++u8qyaRpGCYO7cuax169Yy0/z8/Jinp6dKMtXKUwYlJSW4du0aPDw8pNP4fD48PDyQkJAgd5mEhASZ9gDg6elZYfu6pCrb832FhYUoLS1F/fr1VZhUc1R1my5btgzm5uaYOHFiDSXVDFXZnr/++itcXV0xffp0WFhYoE2bNggODoZYLK7B5OqrKtu0W7duuHbtmvS0woMHD3Dq1CkMHDiwxnLXJjW9X9KIux0q6/nz5xCLxbCwsJCZbmFhgZSUFLnLZGVlyW2flZWl0qyaoCrb833z5s1D48aNy/1x11VV2aaXLl3C9u3bkZiYWEMpNUdVtueDBw/w+++/47PPPsOpU6eQmpqKadOmobS0FEFBQTWUXH1VZZv6+/vj+fPn6NGjBxhjEIlE+OKLL7BgwYIaSl27VLRfysvLw5s3b6Cvr1+tr1crjxAQ9bJixQocOnQIx44dg56eHtdxNFJ+fj7GjBmDrVu3omHDhlzHqRUkEgnMzc2xZcsWdOrUCX5+fli4cCE2bdrEdTSNFRsbi+DgYGzYsAHXr19HZGQkTp48ieXLl3MdjSigVh4haNiwIQQCAbKzs2WmZ2dnw9LSUu4ylpaWSrWvS6qyPcuEhoZixYoVOH/+PNq2bavipJpD2W16//59pKenw8vLSzpNIpEAALS0tHD37l00b968BpKrp6r8jVpZWUFbWxsCgUA6zdHREVlZWSgpKYGOjo7Kc6uzqmzTxYsXY8yYMZg0aRIAwMnJCQUFBZgyZQoWLlwIPp9+gyqjov2SsbFxtR8dQG09QqCjo4NOnTrhwoUL0mkSiQQXLlyAq6ur3GVcXV1l2gPAuXPnKmxfl1RlewLAqlWrsHz5cpw+fRrOzs41lFYzKLtNHRwccOvWLSQmJkofQ4YMgbu7OxITE2FjY1PD70C9VOVvtHv37khNTZUWVgDw77//wsrKqs4XA6jiNi0sLCy30y8ruOg+esqr8f2SSroqqoFDhw4xXV1dtmvXLpacnMymTJnCTE1NWVZWFmOMsTFjxrD58+dL2//5559MS0uLhYaGsjt37rCgoCC67PAdym7PFStWMB0dHRYeHs4yMzOlj/z8fA7fhXpRdpu+j64ykKXs9szIyGBGRkbsyy+/ZHfv3mXR0dHM3Nycff/99xy+C/Wi7DYNCgpiRkZG7ODBg+zBgwfs7NmzrHnz5mzEiBEcvgv1kZ+fz27cuMFu3LjBALA1a9awGzdusP/++48xxtj8+fPZmDFjpO3LLjv89ttv2Z07d9j69evpssOq+vnnn9knn3zCdHR0WJcuXdhff/0lnderVy8WEBAg0/7IkSPM3t6e6ejosNatW7OTJ09ykFp9KbM9mzZtygCUewQFBXGUXj0p+zf6LioIylN2e8bHxzMXFxemq6vLmjVrxn744QcmEok4SK6+lNmmpaWl7LvvvmPNmzdnenp6zMbGhk2bNo29evWKo/TqJSYmRu73Ytk2DAgIYL169Sq3TPv27ZmOjg5r1qwZ27lzp8ry8RgdxyGEEELqvFrZh4AQQgghyqGCgBBCCCFUEBBCCCGECgJCCCGEUEFACCGEEFBBQAghhBBQQUAIIYQQUEFACCGEEFBBQAghhBBQQUAIIYQQUEFACCGEEAD4fxKdnzfTPtB+AAAAAElFTkSuQmCC", "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 (Multilevel)\\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": [ "No discontinuities issues are seen through the velocity profile, indicating a satisfactory implementation.\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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vm+v16vw8HBlZmZ2+L5wfAQLAIAjVq5cqauuukojR46U1+tVbW2tvF6vRo4cqauuuqrDw8Vjjz2m2bNna926ddq3b1+H7svMdPTo0Q7dx+mKYNFGjY2NKisr01NPPaWysrJ2354DAKezxsZGzZs3T5dffrkKCwt18cUX64wzztDFF1+swsJCXX755brjjjs67L2yrq5OTz/9tG6++WZlZmaqoKAgsO7aa6/VlClTguqPHDmi/v37a9myZdIXD4hatGiRkpKSFBkZqZSUFD377LOB+rKyMrlcLv3973/XmDFj5PF49Morr+i9997T97//fcXExOiMM87QRRddpJdeeiloX1VVVcrMzFRkZKSSkpL05JNPKjExUYsXLw7UHDhwQDNnztSAAQMUFRWl73znO3rjjTeOe7zHxvPlJ6SWl5fL5XLpgw8+kCTNmDFDF1xwgRoaGiRJhw8f1oUXXqjrr7++HTPdChail19+2S6//HIbNGiQSbJVq1addJu1a9fahRdeaG63284991xbunRps5q8vDwbMmSIeTweGzdunG3cuDFofX19vd1yyy3Wt29f6927t1155ZVWXV3d6nH7fD6TZD6fr9XbHM9zzz1niYmJJimwJCYm2nPPPdfuvgGgq9TX19tbb71l9fX1IW+7du1ak2Rer7fF9Rs2bDBJtnbtWgdG2txjjz1mY8eONTOzv/3tb3buuedaU1OTmZm98MILFhkZabW1tYH6v/3tbxYZGWl+v9/MzH71q1/ZsGHDrLi42N577z1bunSpeTweKysrCzq+Cy64wP7xj3/Yrl277F//+peVl5fbkiVLbPv27fbuu+/aL37xC+vZs6d9+OGHgX2lp6fbqFGj7LXXXrMtW7bYxIkTLTIy0h588MGgmqysLHv99dft3XfftXnz5lm/fv3sX//6V4vHe2w8n376aaBt27ZtJskqKyvNzKy2ttbOOeccmzNnjpmZ3XHHHZaYmHjcz8ET/fxD+QwNOVi8+OKL9vOf/9xWrlzZqmDx/vvvW69evSwnJ8feeuste/jhhy08PNyKi4sDNcuXLze3222PP/64/fOf/7Sf/vSn1qdPH6upqQnUzJo1y+Lj4620tNQ2b95sF198sY0fP77V43YqWDz33HPmcrksKyvLvF6v1dbWmtfrtaysLHO5XIQLAKet9gSLJ5980iQFfXh/md/vN0n25JNPOjDS5saPH2+LFy82M7MjR45Y//79AyHm2Otly5YF6q+55hqbMmWKmZkdOnTIevXqZRs2bAjq84YbbrBrrrnG7Esf5IWFhScdy/Dhw+3hhx82M7O3337bJNnrr78eWL9z506TFAgW69evt6ioKDt06FBQP+eee6796U9/anEfrQkW9kWg69Gjh919990WERFh69evP+64uyxYBG3cimAxf/58Gz58eFDblClTLCMjI/B63LhxduuttwZeNzY2WlxcnC1atMjMzA4cOGA9evSwZ555JlBz7Id1vHT8VU4Ei6NHj1piYqJlZWVZY2Nj0LrGxkbLysqypKQkO3r0aJv3AQBd5XQ9Y/HOO+9YRERE0D9Gb731Vvvxj38ceH3LLbcEPnfq6uqsV69e9vzzz5uZWUVFhUmy3r17By09evSwcePGBR3f//3f/wXtu7a21ubNm2fDhg2z6Oho6927t4WFhdmdd95pZmaFhYUWERHR7DPjrLPOCgSLvLw8CwsLa7b/sLAwmz9/fovH3NpgYWaWm5trkmzBggUnnEengkWH327q9XqVnp4e1JaRkaE5c+ZIX3zns2XLFuXm5gbWh4WFKT09XV6vV5K0ZcsWHTlyJKifYcOGKSEhQV6vVxdffHGz/TY0NAS+V5Ikv9/f7mNZv369PvjgAz311FPN/rRsWFiYcnNzNX78eK1fv17f/va3270/ADhdTJgwQYmJifr1r3+twsLCoPfIL1+/MGHCBMf3/dhjj+no0aOKi4sLtJmZPB6P8vLyFB0drWnTpmnixInav3+/SkpKFBkZqUsvvVT64voMSSoqKtLZZ58d1LfH4wl63bt376DXd9xxh0pKSnT//fcrOTlZkZGRuuqqq3T48OFWj7+urk6DBg1SWVlZs3V9+vRpcZtj8/v5v/E/19KfuW9qatKrr76q8PBw7dq1q9Vjao8Ov3izurpaMTExQW0xMTHy+/2qr6/Xxx9/rMbGxhZrqqurA3243e5mE/zlmq9atGiRoqOjA0t8fHy7j6WqqkqSNGLEiBbXH2s/VgcA3UV4eLgeeOABvfDCC5o8eXLQXSGTJ0/WCy+8oPvvv9/x51kcPXpUy5Yt0wMPPKDy8vLA8sYbbyguLk5PPfWUJGn8+PGKj4/X008/rb/+9a/60Y9+FPhDW+eff748Ho92796t5OTkoOVknx2vvvqqfvKTn+gHP/iBRo4cqdjY2MDFk5I0dOhQHT16VNu2bQu07dq1S59++mng9ejRo1VdXa2IiIhm++/fv3+L+x0wYID0lc+b8vLyZnW/+93v9M477+jll19WcXGxli5dGsLsts1/7F0hubm58vl8gWXPnj3t7nPQoEGSpIqKihbXH2s/VgcA3cmVV16pZ599Vtu3b9f48eMVFRWl8ePHq6KiQs8++6yuvPJKx/f5wgsv6NNPP9UNN9ygESNGBC0//OEP9dhjjwVqr732Wi1ZskQlJSWaNm1aoP3MM8/UHXfcoblz5+qJJ57Qe++9p61bt+rhhx/WE088ccL9n3feeVq5cmUgzFx77bVqamoKrB82bJjS09N14403atOmTdq2bZtuvPFGRUZGBv42R3p6utLS0jR58mT94x//0AcffKANGzbo5z//uTZv3tzifo+FnnvvvVc7d+5UUVGRHnjggaCabdu26Z577tGjjz6qb3zjG/r973+v22+/Xe+//36b57tVTvplyQm05hqLCRMm2O233x7U9vjjj1tUVJSZmTU0NFh4eHizfq6//nq74oorzMystLS02XdJZmYJCQn2+9//vlVj5RoLADix9lxj8WVHjx61tWvX2pNPPmlr167t0PfEyy+/3L73ve+1uG7jxo0myd544w0zM3vrrbdMkg0ZMiRwx8gxTU1NtnjxYhs6dKj16NHDBgwYYBkZGfbyyy+bHeeaBjOzyspKmzRpkkVGRlp8fLzl5eXZxIkTgz739u3bZ5dddpl5PB4bMmSIPfnkkzZw4EBbsmRJoMbv99vs2bMtLi7OevToYfHx8TZt2jTbvXv3cY/9lVdesZEjR1rPnj1twoQJ9swzzwSusaivr7fzzz/fbrzxxqBtrrjiChs/fnyLP5PT6uLNESNGBLVdc801zS7evO222wKvGxsb7eyzz2528eazzz4bqHnnnXc6/eJN+8pdIRs2bDC/328bNmzgrhAApz2nggVObM+ePSbJXnrppa4eSpAuu3izrq4u6AKQyspKlZeXq2/fvkpISFBubq727t0beOjIrFmzlJeXp/nz52vGjBlas2aNVqxYoaKiokAfOTk5ys7O1tixYzVu3DgtXrxYBw8e1PTp0yVJ0dHRuuGGG5STk6O+ffsqKipKs2fPVlpaWosXbnakY6f65s2bp/Hjxwfak5KSOuxUHwDg9LVmzRrV1dVp5MiRqqqq0vz585WYmKhvfetbXT20jhFqojl2OuirS3Z2tpmZZWdn28SJE5ttM2rUKHO73XbOOee0+ICshx9+2BISEsztdtu4cePstddea5akbrnlFjvrrLOsV69e9oMf/MCqqqpaPW4nH5BlnXyqDwA6A2csOkZxcbENHz7cIiMjbeDAgTZ58mT74IMPunpYzTh1xsJlX75X5T+Y3+9XdHS0fD6foqKiuno4AHDKOXTokCorK5WUlKSePXt29XDQyU708w/lM/Q/9q4QAADQ+QgWAIAgX75dEt2HU19gdPiTNwEApwe3262wsDDt27dPAwYMkNvtDjxrAf/ZzEwfffSRXC5X4MFhbUWwAABIXzwmOikpSVVVVdq3b19XDwedzOVyafDgwe1+OirBAgAQ4Ha7lZCQoKNHj6qxsbGrh4NO1KNHD0ceuU6wAAAEOXY6vL2nxNE9cfEmAABwDMECAAA4hmABAAAc022usTh2f67f7+/qoQAAcFo59tnZmmdddJtgUVtbK0mKj4/v6qEAAHBaqq2tVXR09Alrus3fCmlqatK+fft05plnOvbAF7/fr/j4eO3Zs6fb//0R5uJzzMPnmIfPMQ+fYx4+dzrPg5mptrZWcXFxCgs78VUU3eaMRVhYmAYPHtwhfUdFRZ12vyQdhbn4HPPwOebhc8zD55iHz52u83CyMxXHcPEmAABwDMECAAA4hmDRDh6PRwsXLpTH4+nqoXQ55uJzzMPnmIfPMQ+fYx4+113modtcvAkAADoeZywAAIBjCBYAAMAxBAsAAOAYggUAAHAMwQIAADiGYNEO+fn5SkxMVM+ePZWamqpNmzZ19ZBabd26dcrKylJcXJxcLpcKCwuD1puZ7rnnHg0aNEiRkZFKT0/Xzp07g2o++eQTTZs2TVFRUerTp49uuOEG1dXVBdW8+eabmjBhgnr27Kn4+Hj99re/bTaWZ555RsOGDVPPnj01cuRIvfjiix101M0tWrRIF110kc4880wNHDhQkydP1o4dO4JqDh06pFtvvVX9+vXTGWecoR/+8IeqqakJqtm9e7cyMzPVq1cvDRw4UHfeeaeOHj0aVFNWVqbRo0fL4/EoOTlZBQUFzcbTVb9TjzzyiC644ILAEwHT0tL097//PbC+O8xBS+677z65XC7NmTMn0NYd5uLee++Vy+UKWoYNGxZY3x3m4Ji9e/fqxz/+sfr166fIyEiNHDlSmzdvDqzvLu+VITG0yfLly83tdtvjjz9u//znP+2nP/2p9enTx2pqarp6aK3y4osv2s9//nNbuXKlSbJVq1YFrb/vvvssOjraCgsL7Y033rArrrjCkpKSrL6+PlBz6aWXWkpKir322mu2fv16S05OtmuuuSaw3ufzWUxMjE2bNs0qKirsqaeessjISPvTn/4UqHn11VctPDzcfvvb39pbb71lv/jFL6xHjx62ffv2TpmHjIwMW7p0qVVUVFh5ebl973vfs4SEBKurqwvUzJo1y+Lj4620tNQ2b95sF198sY0fPz6w/ujRozZixAhLT0+3bdu22Ysvvmj9+/e33NzcQM37779vvXr1spycHHvrrbfs4YcftvDwcCsuLg7UdOXv1PPPP29FRUX27rvv2o4dO+z//b//Zz169LCKiopuMwdftWnTJktMTLQLLrjAbr/99kB7d5iLhQsX2vDhw62qqiqwfPTRR91qDszMPvnkExsyZIj95Cc/sY0bN9r7779vq1evtl27dgVqust7ZSgIFm00btw4u/XWWwOvGxsbLS4uzhYtWtSl42qLrwaLpqYmi42Ntd/97neBtgMHDpjH47GnnnrKzMzeeustk2Svv/56oObvf/+7uVwu27t3r5mZ/fGPf7SzzjrLGhoaAjULFiywoUOHBl5fffXVlpmZGTSe1NRUu+mmmzroaE9s//79Jslefvllsy+Ou0ePHvbMM88Eat5++22TZF6v1+yLkBYWFmbV1dWBmkceecSioqICxz5//nwbPnx40L6mTJliGRkZgden2u/UWWedZY8++mi3nIPa2lo777zzrKSkxCZOnBgIFt1lLhYuXGgpKSktrusuc2BfvF9985vfPO767vxeeSJ8FdIGhw8f1pYtW5Senh5oCwsLU3p6urxeb5eOzQmVlZWqrq4OOr7o6GilpqYGjs/r9apPnz4aO3ZsoCY9PV1hYWHauHFjoOZb3/qW3G53oCYjI0M7duzQp59+Gqj58n6O1XTVPPp8PklS3759JUlbtmzRkSNHgsY4bNgwJSQkBM3FyJEjFRMTE6jJyMiQ3+/XP//5z0DNiY7zVPqdamxs1PLly3Xw4EGlpaV1yzm49dZblZmZ2Wy83Wkudu7cqbi4OJ1zzjmaNm2adu/eLXWzOXj++ec1duxY/ehHP9LAgQN14YUX6s9//nNgfXd+rzwRgkUbfPzxx2psbAz6n0aSYmJiVF1d3WXjcsqxYzjR8VVXV2vgwIFB6yMiItS3b9+gmpb6+PI+jlfTFfPY1NSkOXPm6Bvf+IZGjBgRGJ/b7VafPn2OO8b2HKff71d9ff0p8Tu1fft2nXHGGfJ4PJo1a5ZWrVql888/v1vNgSQtX75cW7du1aJFi5qt6y5zkZqaqoKCAhUXF+uRRx5RZWWlJkyYoNra2m4zB5L0/vvv65FHHtF5552n1atX6+abb9bPfvYzPfHEE0HH0t3eK0+m2/zZdOBkbr31VlVUVOiVV17p6qF0iaFDh6q8vFw+n0/PPvussrOz9fLLL3f1sDrVnj17dPvtt6ukpEQ9e/bs6uF0mcsuuyzw3xdccIFSU1M1ZMgQrVixQpGRkV06ts7U1NSksWPH6te//rUk6cILL1RFRYWWLFmi7Ozsrh7eKYszFm3Qv39/hYeHN7sKuqamRrGxsV02LqccO4YTHV9sbKz2798ftP7o0aP65JNPgmpa6uPL+zheTWfP42233aYXXnhBa9eu1eDBgwPtsbGxOnz4sA4cOHDcMbbnOKOiohQZGXlK/E653W4lJydrzJgxWrRokVJSUvTQQw91qznYsmWL9u/fr9GjRysiIkIRERF6+eWX9Yc//EERERGKiYnpNnPxZX369NHXvvY17dq1q1v9PgwaNEjnn39+UNvXv/71wNdC3fG9sjUIFm3gdrs1ZswYlZaWBtqamppUWlqqtLS0Lh2bE5KSkhQbGxt0fH6/Xxs3bgwcX1pamg4cOKAtW7YEatasWaOmpialpqYGatatW6cjR44EakpKSjR06FCdddZZgZov7+dYTWfNo5nptttu06pVq7RmzRolJSUFrR8zZox69OgRNMYdO3Zo9+7dQXOxffv2oDePkpISRUVFBd6UTnacp+LvVFNTkxoaGrrVHFxyySXavn27ysvLA8vYsWM1bdq0wH93l7n4srq6Or333nsaNGhQt/p9+MY3vtHs9vN3331XQ4YMkbrZe2VIuvrq0dPV8uXLzePxWEFBgb311lt24403Wp8+fYKugj6V1dbW2rZt22zbtm0myX7/+9/btm3b7MMPPzT74haqPn362P/+7//am2++ad///vdbvIXqwgsvtI0bN9orr7xi5513XtAtVAcOHLCYmBi77rrrrKKiwpYvX269evVqdgtVRESE3X///fb222/bwoULO/UWqptvvtmio6OtrKws6Na6zz77LFAza9YsS0hIsDVr1tjmzZstLS3N0tLSAuuP3Vr33e9+18rLy624uNgGDBjQ4q11d955p7399tuWn5/f4q11XfU7ddddd9nLL79slZWV9uabb9pdd91lLpfL/vGPf3SbOTieL98VYt1kLubNm2dlZWVWWVlpr776qqWnp1v//v1t//793WYO7ItbjiMiIuy///u/befOnfbXv/7VevXqZX/5y18CNd3lvTIUBIt2ePjhhy0hIcHcbreNGzfOXnvtta4eUqutXbvWJDVbsrOzzb64jeruu++2mJgY83g8dskll9iOHTuC+vjXv/5l11xzjZ1xxhkWFRVl06dPt9ra2qCaN954w775zW+ax+Oxs88+2+67775mY1mxYoV97WtfM7fbbcOHD7eioqIOPvp/a2kOJNnSpUsDNfX19XbLLbfYWWedZb169bIf/OAHVlVVFdTPBx98YJdddplFRkZa//79bd68eXbkyJGgmrVr19qoUaPM7XbbOeecE7SPY7rqd2rGjBk2ZMgQc7vdNmDAALvkkksCocK6yRwcz1eDRXeYiylTptigQYPM7Xbb2WefbVOmTAl6dkN3mINj/va3v9mIESPM4/HYsGHD7H/+53+C1neX98pQuOzzN1cAAIB24xoLAADgGIIFAABwDMECAAA4hmABAAAcQ7AAAACOIVgAAADHECwAAIBjCBYAAMAxBAsAAOAYggUAAHAMwQIAADjm/wO8F2zAgltqAAAAAABJRU5ErkJggg==", "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(timestep)\n", "\n", "ax.plot(axis_data, plotting_data, \"ok\", label=f\"Average {array_to_extract}\", fillstyle=\"none\")\n", "ax.legend()\n", "plt.show(fig)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The average pressure sustains the convergence aspect exhibited in the single level simulation, though it takes longer to converge since a smaller value of $\\tau$ was adopted." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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hKXTLXz0sNYiubk+Yq+XGpGW+YjP0GTQBwdpp+vfCDXLXxTrdx/adlrAEetzKm57aZmJDA9Sozj0OCMfdr3SCeK6t47iCRJYZVDpIhyrKRkEHuMVFqOn2mradcaffQLPa3CGOWNujKa4b4f6L4l8HX994cvYWvPDcRMmm6iZk3RKeTG653d+oGMg9jwAM+OTQj4S6sJcbi8Aiz/e81On4bq7nSVlTRrFZ8+cLeMPn+9tGf1ry7XLtfip47sNA0xhP4c0WdbvU7tDmOaUfdjU9+4/EnsM+u0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBlX3hrR9R1iy1e6sIn1GybMFyMq68EYJHUcng5HNatFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABUF9ZwajYXNjcqXt7mJoZVBIyrAgjI5HBqeigCjpGjaboGnR6fpVnFaWkf3Y4hgZ7k9yfc81eoooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK89+LerahpGh2EunXk1rI9yVZonKkjaeK8z0Hxh4jubm5WbWr5wmNoMx45NOqvZ01UfU6MNh5V3LldrfqfR1FeT2+t6qw51G5PA/wCWpq2usal/z/3H/fw1zxrp9Anh3Hqem0V5r/a+o/8AP9cf9/DS/wBraj/z/XH/AH8NaKdzFxsek0V5t/a2o/8AP9cf9/DR/a2o/wDP9cf9/DVXJPSaK82/tbUf+f64/wC/hpP7X1H/AJ/rj/v4aaA9KorzT+19R/5/rj/v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Ae9/78tSf8Ivr3/QHvf+/LV79RT+vz7IPYLueAHwtr2P+QPe/wDflqafC2v4/wCQPe/9+Wr6Boo+vz7IPYLufPp8K6/j/kDXv/flqb/winiD/oDXv/flq+hKKP7Qn2QewXc+ev8AhFPEH/QGvv8Avy1IfCniDH/IGvv+/LV9DUUf2hPsg9gu587/APCJ+If+gNff9+WoPhPxDj/kC33/AH5avoiij+0J9kP2C7nzr/wiXiH/AKAt9/35ak/4RLxF/wBAW+/78tX0XRT/ALQn2QexXc+cz4R8Rf8AQFvv+/LU0+EfEX/QEvv+/LV9HUUf2hPsg9ij5vPhDxH/ANAS+/78NSHwf4j/AOgJf/8Afhq+kaKP7Qn2QexR82/8If4k/wCgJf8A/flqQ+DvEn/QDv8A/vw1fSdFH9oz7IPYo+aj4O8SH/mB3/8A34amnwb4l/6Ad/8A9+Gr6Xoo/tGfZB7FHzAvgrxOM/8AEhv/APvwalHgvxN/0Ar/AP78NX01RR/aM+yH7JHzL/whnib/AKAV/wD9+GoPgvxN/wBAK/8A+/DV9NUUf2jPsg9ij5jPgvxN/wBAK/8A+/DUf8IX4m/6AV//AN+Gr6coo/tGfZB7JHzCfBXif/oA3/8A34avW/hJpOoaRol/FqNnPayPchlWVCpI2gZGa9DorKtjJVY8rQ401F3CiiiuQ0CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiioL28g06wuL26k8u3t4mmlfBO1FGScDk8A9KAJ6KjgmjubeOeJt0cih0bGMgjINSUAFF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H/l4vf8Avtf/AImn9VqFrNMP3f3HmL9agevUz8PNIP8Ay8Xv/faf/E0w/DjRz/y833/faf8AxNH1WoUs1w/d/ceUPVd69cPw00Y/8vN//wB/E/8AiKYfhfoh/wCXrUP+/if/ABFNYaoWs2w3d/cePPVaTrXs5+Fehn/l71H/AL+J/wDEUw/CbQW63epf9/E/+Iqlh5lLOMN3f3HiMnQ1Slr3dvhB4fbrean/AN/Y/wD4io2+DPh1ut7qn/f2P/4itI0Zo0jnWFXV/cYXwL6+IP8At3/9qV7DXN+E/BOm+Djef2fPdy/a9m/7Q6tjbuxjCj+8a6SuqCsrM+czCvCviZVIbO35IKKKKo4gooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/9k=", "image/png": "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aZcuXQS5AcAZ1sECAAAAkAxzsCCv27JlS8eOHUuVKlW2bNnevXv/8ssvbnrk119/7dChQ/HixcuWLdu9e/djx47xmf3Zm0fs27dPsZs/f777Vru/ND4Vlaf41DPuO/n8+fNdunSJjo6uWLHiuHHjUlNT81RPGpHYw7x+/fopirJjxw4+Mc+S2MldunSxf+rYzJ07Nws6FgEW5Glff/31k08+GR0d/emnn3788cfBwcGtW7deunSpsFN+/PHHZs2alSxZ8rvvvps6darFYqlfv/6qVatoZn/25h01atTYaxUeHu6+1R4vjfdF5TXe94z7Tk5NTW3Tpk1ycvL8+fPHjx///fffjxgxIq91ppCsHubFxsZ6/CdHniKxk48fPz527Fj6yUN17NgxKzpTBcirbt26FRUV9dZbb/Ed8MYbbxQqVCgpKYlPVFX133//LVy48P/+9z8+/bXXXitRosStW7f82csXmHcUKFDgxx9/NGqvT5fGfVF5mfue8djJS5cujYiISExMpH34008/BQUFJScn5+Uu1fGzh5nbt2/HxMS8+OKLhJDt27ezdFBVfzv53r17JpNp27ZtWd+ZCLAg71qzZk1wcDD7/qBu3LhBCFmzZo2uXxYsWBAeHp6amsqn3759OygoaPXq1f7s5QvMO9x/M/l0adwXlZe57xmPnbxu3boJEyawDqSrt589e5algJ89zAwdOrRixYpXrlxBgOXKz04+ePAgISQuLs615EDDrwgh77p06VLx4sULFizId0F0dHRUVNQ///zDJxJCTpw4UalSJd3K15GRkeXKlTtx4sSdO3cyvbdz5866c4FPlwYyx2Mnd7Biha9atapw4cLly5dnKeCexx6mdu/e/fXXX2/cuDEiIsJ9geDKYycfP348KiqqRIkSFy9eVBTF9fFQgYMAC/Ku27dvR0ZGurY/Kirqzp07uvTSpUvTf1/yzGZzfHx82bJlExISMr2XLxAony4NZI6XnZySkvLOO+8cPXo0NjZ2yZIliqJk7nR5kDc9nJKSMnDgwOeff/6JJ55ITEzMg73kJ4+dfPz4cUVRqlatSpfMLVmy5AcffPD888/7eV5vYJI75GnCbwvd89qo5s2bJyYmLlmyhO+v77//PjU1tUmTJv7s5QsExvtLA5nmTSdbLJZjx46dO3eOEHLkyJFMnytv8tjDkyZNSkxMnDp1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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 (Multilevel)\\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 = [(48.0, 12.0, -192.16548199848856), (48.0, 12.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 general flow's density profile shown above presents no visible disconuity." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "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 has an asympotic profile. However, it would take a longer length for the velocity to completely stabilizes.\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 }