{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Poiseuille Pipe (Periodic)\n", "\n", "The simulation of a periodic Poiseuille pipe flow is used for the validation of the immersed boundary method (IBM) as to represent a curved boundary. In the current case, the external force density term represents the pressure gradient $F_{x}=-\\mathrm{d}p/\\mathrm{d}x$, periodicity is considered in all boundaries, and an cylindrical Lagrangian mesh is placed with axis alligned to the $x$-axis." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2026-06-19T18:47:08.341848Z", "iopub.status.busy": "2026-06-19T18:47:08.341660Z", "iopub.status.idle": "2026-06-19T18:47:09.517761Z", "shell.execute_reply": "2026-06-19T18:47:09.516794Z" } }, "outputs": [], "source": [ "from nassu.cfg.model import ConfigScheme\n", "\n", "filename = \"validation/analytical/03_poiseuille_pipe_flow/03_poiseuille_pipe_flow.nassu.yaml\"\n", "\n", "sim_cfgs = ConfigScheme.sim_cfgs_from_file_dct(filename)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The simulation parameters are shown below" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2026-06-19T18:47:09.520246Z", "iopub.status.busy": "2026-06-19T18:47:09.519971Z", "iopub.status.idle": "2026-06-19T18:47:09.539450Z", "shell.execute_reply": "2026-06-19T18:47:09.538486Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NFtautime_steps
0246.250000e-050.82000
1407.812500e-060.88000
2729.765630e-070.832000
31361.220700e-070.8128000
\n", "
" ], "text/plain": [ " N F tau time_steps\n", "0 24 6.250000e-05 0.8 2000\n", "1 40 7.812500e-06 0.8 8000\n", "2 72 9.765630e-07 0.8 32000\n", "3 136 1.220700e-07 0.8 128000" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "from nassu.cfg.schemes.simul import SimulationConfigs\n", "\n", "dct = {\"N\": [], \"F\": [], \"tau\": [], \"time_steps\": []}\n", "\n", "\n", "def add_to_dict(sim_cfg: SimulationConfigs):\n", " dct[\"N\"].append(sim_cfg.domain.domain_size.x)\n", " dct[\"tau\"].append(sim_cfg.models.LBM.tau)\n", " dct[\"F\"].append(sim_cfg.models.LBM.F.x)\n", " dct[\"time_steps\"].append(sim_cfg.n_steps)\n", "\n", "\n", "sim_cfgs_use = [\n", " sim_cfg\n", " for (name, _), sim_cfg in sim_cfgs.items()\n", " if sim_cfg.name.startswith(\"periodicPoiseuillePipeN\")\n", "]\n", "for sim_cfg in sim_cfgs_use:\n", " add_to_dict(sim_cfg)\n", "\n", "df = pd.DataFrame(dct, index=None)\n", "\n", "df" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Where N represents the domain size, directly correlated to the scale of the problem and the level of mesh refinement. Also, F is a volumetric force generating the flow. Since the domain size changes between cases F must be reescaled in order to keep the velocity profile constant.\n", "\n", "An extra spacing of 2 lattices at each side of the cylinder is kept to assure a complete interpolation-spread procedure." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Functions to use for processing of poiseuille pipe." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2026-06-19T18:47:09.589556Z", "iopub.status.busy": "2026-06-19T18:47:09.589367Z", "iopub.status.idle": "2026-06-19T18:47:09.596723Z", "shell.execute_reply": "2026-06-19T18:47:09.595821Z" } }, "outputs": [], "source": [ "from typing import Callable\n", "\n", "import numpy as np\n", "\n", "\n", "def get_poiseuille_pipe_analytical_func() -> Callable:\n", " \"\"\"Poiseuille analytical velocity function\n", "\n", " Returns:\n", " Callable[[float], float]: Analytical velocity function\n", " \"\"\"\n", " return lambda r: 2 * (1 - r * r)\n", "\n", "\n", "def get_poiseuille_pipe_numerical_avg_vel(ux_vals: np.ndarray) -> float:\n", " # Average velocity is ~half the maximun velocity.\n", " # Numerical integration gives worse results for average velocity\n", " return np.max(ux_vals) / 2\n", "\n", "\n", "def get_pos_values_inside_pipe(sim_cfg: SimulationConfigs) -> np.ndarray:\n", " body = sim_cfg.domain.bodies[\"cylinder\"]\n", " scale, translation = sim_cfg.domain.export_rescale_components(None, \"cylinder geometry\", 3)\n", " lnas = body.get_lnas_rescaled(scale, translation)\n", " vertices = lnas.geometry.vertices\n", "\n", " x_val = sim_cfg.domain.domain_size.x / 2\n", " z_val = sim_cfg.domain.domain_size.z / 2\n", " min_y, max_y = (vertices[:, 1].min(), vertices[:, 1].max())\n", " min_y, max_y = int(np.ceil(min_y)), int(np.ceil(max_y))\n", "\n", " p1, p2 = (x_val, min_y, z_val), (x_val, max_y, z_val)\n", " line = np.linspace(p1, p2, num=max_y - min_y, endpoint=False)\n", " return line\n", "\n", "\n", "def plot_analytical_poiseuille_pipe_vels(ax):\n", " x = np.arange(\n", " -1,\n", " 1.01,\n", " 0.01,\n", " )\n", " analytical_func = get_poiseuille_pipe_analytical_func()\n", " analytical_data = analytical_func(x)\n", " ax.plot(x, analytical_data, **common.markers.exp_line(linestyle=\"--\"), label=\"Analytical\")" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Results\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Extract the velocity profile from simulation" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2026-06-19T18:47:09.598643Z", "iopub.status.busy": "2026-06-19T18:47:09.598454Z", "iopub.status.idle": "2026-06-19T18:47:11.359592Z", "shell.execute_reply": "2026-06-19T18:47:11.358706Z" } }, "outputs": [ { "data": { "text/plain": [ "dict_keys([(0, 'periodicPoiseuillePipeN16'), (0, 'periodicPoiseuillePipeN32'), (0, 'periodicPoiseuillePipeN64'), (0, 'periodicPoiseuillePipeN128')])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "from vtkmodules.util.numpy_support import vtk_to_numpy\n", "\n", "import nassu.viz as common\n", "\n", "common.use_style()\n", "\n", "extracted_data = {}\n", "array_to_extract = \"ux\"\n", "\n", "for sim_cfg in sim_cfgs_use:\n", " export_instantaneous_cfg = sim_cfg.output.exports\n", " macr_export = export_instantaneous_cfg[\"default\"].volumes[\"default\"].inst\n", " data = macr_export.read_export(sim_cfg.n_steps)\n", "\n", " pos = get_pos_values_inside_pipe(sim_cfg)\n", " # Sum 0.5 because data is cell data, so it's in the center of the cell\n", " p1 = pos[0] + 0.5\n", " p2 = pos[-1] + 0.5\n", "\n", " line = common.create_line(p1, p2, len(pos) - 1)\n", "\n", " probe_filter = common.probe_over_line(line, data)\n", "\n", " probed_data = vtk_to_numpy(probe_filter.GetOutput().GetPointData().GetArray(array_to_extract))\n", " extracted_data[(sim_cfg.sim_id, sim_cfg.name)] = {\"pos\": pos, \"data\": probed_data}\n", "\n", "extracted_data.keys()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The velocity profile at the end of simulation is compared with the steady state analytical solution below:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2026-06-19T18:47:11.362246Z", "iopub.status.busy": "2026-06-19T18:47:11.361856Z", "iopub.status.idle": "2026-06-19T18:47:11.624487Z", "shell.execute_reply": "2026-06-19T18:47:11.623528Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAHqCAYAAADyPMGQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Xd4VNX28PHv1MxMegJpkEJJ6AFElOL1WkDBclWuogIiSlGqFSkKKHpFwXKFYKEoYAHpileaithASpTQAiGQXia9zUymnfePX+a8CUkgAZJAsj/Pw6PMnHNm75mQWWfvtddWSJIkIQiCIAiCIFyUsqkbIAiCIAiCcK0QgZMgCIIgCEIdicBJEARBEAShjkTgJAiCIAiCUEcicBIEQRAEQagjETgJgiAIgiDUkQicBEEQBEEQ6kgEToIgCIIgCHUkAidBEARBEIQ6EoGTIAiCIAhCHYnASRAEQRAEoY5E4CQI15jNmzczfPhwNm/e3NRNqbPa2lzfxxva+++/z4gRIygsLGzU162Pv//+m+HDh7No0aIGf62ff/6Z4cOH88knnzRIG3744QeGDx/Ovn37LrOlgtB41E3dAEFoTj755BN+/PHHKo+p1Wp8fX3p3r07DzzwAEFBQZf1GllZWRw5coRbbrnlMlvbeGprc30fb0inT59m+fLl3Hffffj4+FR5bvfu3SxfvrzKY0qlEi8vLyIjI7n33nvp3Llzo7SzuLiYI0eO0KpVqwZ/rfz8fI4cOUJkZGSDtGHAgAHMmTOHBQsWsHXrVpRKcS8vXP1E4CQIV1BKSgpHjhyp8bkffviBTz75hAULFjB06NBGb5twYe+88w6SJDFx4sRqz+Xm5tb6ue7du5eVK1cyefJkpk6d2ggtbT4MBgNPPPEE7777Lt9++y33339/UzdJEC5KBE6C0ADuuusuHn/8cQAsFgtnzpxh5cqVZGRkMH36dLp3705oaOglXfvf//43AwYMIDg4+Aq3uuFc7W1OTExk7969DBgwgLCwsFqP69SpE/PnzwfAbreTlpbGF198wdGjR4mJiaFLly4MGjSoQdvau3dvvv76a7y9vRv0dRqrDcOGDeO///0vn332mQichGuCCJwEoQG0atWKXr16yX/v168fd9xxB3fffTfFxcVs2rSJZ5999pKuHRgYSGBg4BVsbcO72tv89ddfA3Dvvfde8Dh3d/cqn+v111/PPffcw4MPPsjJkydZt25dgwdOnp6eVdrQFK5kG1q1akX//v357bffiIuLIzo6+opcVxAaigicBKGRBAQEcPPNN/Pdd99x6tSpKs8dP36cb7/9ljNnzmC1WgkODuaWW25hyJAh1fI+Nm/ezLp163jkkUcYNmxYlefi4uL49ttvOXv2LDabjaCgICIjIxk2bFiN+Si5ubls3ryZv//+m6KiIry9vbnhhht48MEH8fDwqHb8okWLOHjwILNnz67xi3P58uXs3r2bp556ittvv71Obb4U9W33hUiSxHfffYdCoajS5rpSq9Xcd999nDx5strnarFY+Oabb9i/fz85OTnodDp69OjBww8/XGOu26+//sqSJUv45z//ycSJE/nf//7Hnj17yM7Opk+fPjz//PP8/fffvPnmm/Tt25fp06dXu0ZmZiYbN27k2LFjlJaW4u/vz4033siwYcPQ6/U19uHEiRN8/fXXnD17FoPBQO/evXn00Udr7fPF2mCxWNi2bRt//vkn2dnZuLu70759ex544IFq+VIAgwYN4rfffuPbb78VgZNw1ROBkyA0Ii8vLwCsVqv82Pvvv88nn3yCJElVjv3mm2/4/PPP+fDDD/H19ZUfry1xetmyZbz77rs1vu7ixYv59ttvad++vfzY9u3bmT17NiaTqcqxP/74I5999hkrVqyo9iV37tw5jhw5QnFxcY2vk5qaypEjR8jPz6/y+JVM9r6Udl/ImTNnyMvLIyIi4pKnnmr6XI8dO8bkyZPJysqqcuyvv/7KZ599xnvvvcdtt91W5TlXMnZoaCjjxo3j999/l59z/QxcKDH7f//7H7NmzaK8vLzK4zt37mTlypV88skn1d6bdevWMX/+fBwOh/zYzz//zNq1a3nwwQdr7O+F2hAXF8fUqVOr9XvPnj2sXLmSJUuWcMcdd1R5zhUs/fnnnzW+niBcTUTgJAiNRJIkOcHYNW21efNmPv74Y6iYJrr77rsxGAwcPnyYFStWEBsby4wZM1i2bNkFr200Gvnvf/8LFflEt912G97e3hiNRk6dOsXmzZurfJkePHiQF154AYfDwU033cS9995LUFAQWVlZrF27lr///ptJkybx3Xff4ebm1oDvSv00RLsPHz4MQI8ePS65Xed/rtnZ2YwbN46CggI6d+7Mo48+Snh4OIWFhezYsYMdO3bw/PPP8+2339aYU7Vjxw4kSeKxxx7jxhtvpHXr1hcN6o4fP86MGTOw2Wz07duXESNG0Lp1axISEli+fDnp6elMnDiRb7/9FoPBAMDRo0floOnWW2/lwQcfxMvLi6NHj7Js2TL5Z7Ou0tLSGDduHEVFRYSFhTFy5Eg6d+6M2WwmMTGRrVu3UlpaWu28Tp06odVqSUhIkEcQBeFqJQInQWgEVquVDz74gOPHjwPwz3/+E0mSiImJAeCxxx7jlVdekY+/8cYb6du3L6NGjWLv3r0cOXKEnj171nr9c+fO4XA4GDhwIG+++WaV5+6++26mTp2K0+mUH3vrrbdwOBw89dRTPP/881WOv++++xgzZgz79+/nu+++49///vcVex8uV0O0OzU1FSqmUi/Fli1b2LhxI1R8rgAffvghBQUF/OMf/2DZsmVVpluHDh3K22+/zaeffspnn33GvHnzql3TbrfzzjvvXDTnqrKPP/5YDppWr16NSqUCoG/fvgwaNIi77rqL1NRUtmzZwsiRI6FilNLhcDB48GD5ZxHghhtuoH///vX+7JcuXUpRURHdu3dnzZo1uLu7y8/deuutjBs3rsbASa1W4+fnR1ZWFhkZGSJwEq5qomiGIDSA7du3M3z4cIYPH86//vUvbrzxRlasWAHAwIEDGTx4MGfPniU9PR2tVlvjMva+ffty8803A/DLL79c8PVcK/TS09MpKiqq9rxGo5FHYDIyMjh27Bh6vZ4pU6ZUO1ahUPDYY48B8Mcff1xS/xtCQ7W7oKAAoFrtppqcOnVK/lyHDRvGjTfeyMyZM3E4HISGhjJ27FgAdu3aBcDzzz9fY22iMWPGXLCdERER9QqanE6nPK337LPPykGTS0BAgPzeuH6WnE4nv/32G0CNP39du3Zl8ODB9WqDq4bZjBkzqgRNldWWg+YKllyfhyBcrcSIkyA0gJycHHJycqo85uvry8MPP8ykSZNQKpWkpKQAEBYWVusddvfu3fnll1/kUZHahISEMGrUKL744gtuueUW+vfvT8+ePYmOjqZPnz5otVr52ISEBKgINFwlE87PryorK4OKROOrRUO12zWFWfk9qk1ZWVm1ek56vZ4hQ4Ywffp0fHx8yM/Pl3O85s+fj0KhqNZO199ra2eHDh3q3H6AvLw8ysrKUCgUdOvWrcZjunfvDpVG2PLy8jCZTGg0mlpzwrp168bOnTvr1IaCggKKiopQqVT06dOnXu2n0vt/fn6WIFxtROAkCA2gch0nlUqFj48Pbdu2RaFQyMfYbDa4wB04Fcu+OS/puDZz5szhH//4B99++y2HDh2S7/49PT0ZM2YMkydPRqFQyF9MJpOJ2NjYC17TYrHUqb+NoaHa7Uq6rss2K5XrOCmVSjw8PAgLC0Ot/v+/Siu/9l9//XXB69UWJLiSzevK9bOkVqvR6XQ1HnP+z5LrHIPBUGvF7vqsUKwcgJ4/4lUXrpHSygshBOFqJAInQWgA59dxqomfnx9UGgGoiWtUynXsxdxyyy3yyrWcnBz+/PNPli5dypIlS/Dw8GDMmDHytUJDQ3nnnXcueD1XErGL6wuxtkDOaDTWqZ2X4nLafSGulWF1CZzOr+NUE19fXzkQ+eyzz2oNZK4kHx8fFAoFNpuNrKysGguNnv+z5DqnqKiI4uLiGoO1i410Vubn54dKpcJsNpOdnV3vul2uwMnf379e5wlCYxOBkyA0kS5duqDRaMjLy2Pv3r1yYrFLaWmpPE1yKbVtWrduzT333IOPjw9jx47lxx9/ZMyYMfTo0QODwUBaWhqenp71mhZy5QGdPXu22nNFRUX8/fff9W5nXV1Ouy/ENYXlmgq8XHq9nu7duxMXF4fRaORf//rXFbnuhRgMBiIjIzl9+jSbNm2qMQds06ZNUOlnqfI5W7duZfTo0VWOt1gsfP/993Vug6tG1d9//81XX33Fc889V+dzs7OzKSoqkkdmBeFqJpLDBaGJuLu7c/fddwPw2muvceLECfm5wsJCZsyYQX5+Pr6+vtXq3pzvjz/+4JNPPqk2QlD5y881WuTm5sbIkSORJInx48fz008/VVlxR8VIw0cffcSBAweqPO760l2zZg2JiYny45mZmTz77LMNmth7Oe2+kN69e6NSqTh+/HiVWkaXw5UkPnfuXNavX19tSi4/P5+vvvqKLVu2XJHXAxg+fDgAK1as4IcffpAft1qtvPvuu8TGxqJUKnnooYfk51x1mpYsWcK+ffvkx0tLS3n55ZfJzs6uVxtc09PLly9nxYoVVfpdXl7Ohg0bqryOiytvrE+fPlWmswXhaiRGnAShCc2YMYNDhw6RlpbGAw88QHh4OHq9nrNnz2K1WtFoNCxYsOCiU09ZWVm89957vPfee7i7uxMSEgIVdXXMZjMKhYJRo0bJx0+bNo2TJ0/y22+/MXHiRNzd3QkKCkKhUJCZmSknWb/33ntVXmfo0KEsWbKE7Oxs7r33XkJDQ3E4HKSnp6PT6ejdu/dF83oux6W2+0Lc3d254YYb2LdvH0eOHOG666677HYOGTKEJ598kk8//ZQ5c+bw+uuvExQUhF6vJzs7W54WfPLJJy/7tVxGjBjBjz/+yL59+5g8eTIBAQG0bt2a5ORkuQTAtGnT6NSpk3zOyJEj2b59O3/99RdjxoyhTZs2eHl5ce7cOSwWC3379uXgwYN1bsNdd93FgQMHWLt2LYsWLWLJkiVERERgNptJT0/HbrezYMGCaue5At1bb731irwXgtCQxIiTIDQhPz8/vv76a+6//350Oh3JycnEx8djs9no1asXq1atqtOXycCBA3n66aeJiIigrKyMhIQEEhISMJvN9O3bl+XLl1fZQ02r1bJs2TJmz55NeHg4ZWVlJCYmcubMGcrKyoiIiGDSpEnccMMNVV7Hw8ODTz/9lO7du+NwOEhKSiI1NZXOnTuzevVqoqKiGuR9utx2X8zDDz8MwHfffXfF2jpjxgxiYmKIjo7GZrORkpLCqVOnKCwspHXr1owcOZIHHnjgir2eSqVi2bJlPPXUU/j4+GA0Gjl+/DilpaWEh4ezcOFCJk6cWOUctVrNihUrGDZsGBqNhvT0dE6ePIm7uzuvvfbaJW2P8+qrr7JgwQLat2+PxWIhPj6e5ORkNBoNw4cPZ8CAAVWOdzgcbN++HXd3d+66667Lfh8EoaEppPPXyQqCcMlSU1PJy8ujdevWtGnTpl7nlpeXk5KSIu8xV1tCeHZ2NpmZmQQHB9eYgFtaWkpGRgYajYbAwMA6JUrn5OSQm5uLm5sbwcHBte5pVllWVhZ5eXm0atVKboer/2FhYVXaX1ub6/v4lWh3TWw2G7feeisOh4O9e/dWK02Ql5dHamoqHh4edOzYsd7XLy4uJjMzE4VCQWBgYK3lJ/Lz80lJScHPz6/GiuIAJSUlJCYm4u3tTbt27Wo8xuFwkJqaSllZGX5+fjUmi5+vtLSU1NRUdDodYWFhqFQquT3+/v5yrbC6toFKZTm8vLwIDg6ucbXdL7/8wvjx43n00Ud59dVXL9pOQWhqInASBEGo2LNt3rx5vPbaazzyyCNN3ZwWY/To0Rw5coRdu3bVeyWeIDQFMVUnCIIAPPTQQ3To0IFPPvmkTnWzhMt36NAh/vzzT8aMGSOCJuGaIUacBEEQKmRlZZGVlUVUVFS9akEJlyYjIwOj0UinTp0ueZpVEBqbCJwEQRAEQRDqSEzVCYIgCIIg1JEInARBEARBEOpIBE6CIAiCIAh1JAInQRAEQRCEOhKBkyAIgiAIQh2JwEkQrnLvvvsu3bp14+jRo03dFEGAiqKVAwYMoKSkpKmbIgiNTpQjEISrWEZGBkOGDKFfv34sW7asynNHjhzh0UcfrfKYWq3G3d0dPz8/OnXqRN++fbnnnnvw9PSs8fqSJBEXF8fOnTs5dOgQGRkZlJaW0rp1a66//noef/xxOnfufME25uXl8eWXX/Lbb7+RmpqK2WzG19eX7t27M3ToUIYOHVrjjvelpaX88ssv/PTTT5w+fZqMjAwA2rZtyz//+U8ef/zxGredeeutt1izZs1F37sbbriBVatWXfQ4ankvFQoFer2eNm3aMGDAgFqLNF7pc6nYd87Hx4cePXrw6KOP8o9//OOC7U9MTGTjxo0cOHBA3uzYy8uLqKgobrnlFh544AE8PDyqnTd37lw2btzI6NGjmTlzZrXnzWYzU6ZMYd++fYSEhLBy5UrCw8PZt28fY8aMYfz48bz44osXbJsgNDcicBKEq9jMmTPZsmUL69ato3fv3lWe+/vvv+XNaS9Er9fz7LPP8vjjj1cLYI4cOcLw4cNrPVetVvPGG2/Uuhntt99+y7x58zCZTLVeo2fPnsTExBAQEFDl8eeff57//e9/tZ7n5+fHp59+SpcuXao8/p///KdOgdOECRN44YUXLnocdXwvvby8+Pzzz6sFkg19LsCUKVOYOnVqtcetVisLFixg3bp1OJ3OC77+7Nmzq32OL7/8shw4vfzyy1WeKykpYcKECcTGxtKuXTs+++yzKnveDR8+nPj4eH744Ydqn60gNGfqpm6AIAg1y8/P53//+x/t2rWrFjRVZjAYOHjwIFSMIJWWlpKdnc3hw4dZt24dp0+fZsGCBWRlZVUbVVAoFNx4443ceeedREdH07ZtWyRJ4tSpU8TExHDo0CHmzZvHgAEDqo2YfPvtt0yfPh2Abt268dRTT9GnTx8MBgOZmZls376dlStXcuTIEUaMGMGWLVuqjHx5eHhw1113cdtttxEZGUlwcDAWi4U//viDd955h9zcXJ599lm2b9+OUvn/swpmzZrFjBkzanwv8vLyuP3227HZbPz73/+u93t+/nuZl5fHb7/9xsKFCykqKmL+/Pl89dVXDXougMViISkpiaVLl/LTTz/x4Ycfctddd9GhQwf5GEmSmDZtGnv27AHgzjvv5IEHHqBr1654e3tTWlrK2bNn+fnnn9mwYQMzZ85k0KBBtY4+Vpafn8/YsWM5ceIEXbp0YeXKlfj7+1c55v777+e1115jw4YNTJ48uU7vryA0C5IgCFelFStWSFFRUVJMTEyNz//1119SVFSU1KtXr1qvYbPZpFdffVWKioqSoqKipP3799f59UtLS6UBAwZIUVFR0vr166s8l52dLfXq1UuKioqSJk2aJFmt1hqvceLECalPnz5SVFSUNHPmzDq/dmxsrNzmI0eO1Pm85cuXS1FRUdLIkSPrfI5Uh/dy48aNUlRUlNSpUyeppKSk0c4tLy+X/vGPf0hRUVHS559/XuW5NWvWSFFRUVLnzp2l//3vfxfsX0lJiTRz5kypuLi4yuOzZ8+WoqKipDfeeEN+LDMzUxoyZIgUFRUlPfLII9XOccnPz5e6desm3XrrrZLD4bjg6wtCcyKSwwXhKrVjxw4Abr755ku+hlqtZs6cOXTv3h2AFStW1Plcd3d3eWqprKysynNffvklJpMJf39/3nrrLTQaTY3X6NKlizwq9e2335KVlVWn1+7duzetWrUCIDc3t85t3rhxI8AljTZdSNeuXaHSiF5jnavVauVRJrPZLD/ucDjknLfRo0dz1113XfA6Hh4eLFiw4KKjTSkpKYwYMYKzZ89y00038emnn9Z6jiuPLT09nbi4uHr1SxCuZSJwEoSrUFlZGSdOnECr1V40OftilEolo0aNAuDgwYPYbLY6nWe1WklMTASgU6dOVZ776aefAHjggQcu+mX8wAMP4OXlhd1u59dff63za7vyptq0aVOncw4dOsS5c+fw8PBgyJAhdTqnrk6ePAmARqORA7rGONdut3Pu3DkAwsPD5cePHTuG0WgE4LHHHqvXNWtz+vRpRowYQXp6OnfeeScfffTRRTfejY6OBuDAgQNXpA2CcC0QgZMgXIWOHj2K3W4nMjKy1tGc+rjuuuugYtQiJSXlgsdaLBaOHTvG1KlTyczMpF+/fvTv319+vry8nISEBKhYuXYxWq1W/oI9fvx4ndq7bt06TCYTXbt2rRa01WbDhg0A3H333Rf9wq+r/Px8vvnmG95++22oyOtRq+uWGno551qtVs6cOcP06dPJzMykTZs23HLLLfLzx44dAyAwMJC2bdteQs+qio+P57HHHiMnJ4d///vfvP/++2i12oue5xpN++uvvy67DYJwrRDJ4YJwFXJNaZ2fkHupKl+nqKioxmMGDhxIQUEBDocDKlZijR07lmnTplU5rrCwENdi3LqupnIllhcUFFz02KNHj/Lee++h0Wh47bXX6nT90tJSdu7cCcCDDz5Yp3Nq4grWXFzvhUKh4O677+aVV15p1HPVajX33HMPL774YpVAxvU+1jaCVVuZg2nTpvH0009Xe9w1YtShQwfeeOONKsn4F+L6ucrOzq7T8YLQHIgRJ0G4Crm+GL29vRvtNe12u/yFTcV04bFjxzhz5kyt59RUn+lCx12s+kliYiJPPfUUFouFV199VR6puphvv/0Ws9lMVFRUnc+pjcPhkP+4REVF8cILL6DT6Rr1XLvdzrFjx6qsuKustvdfkqQq13P9qa1kQffu3dFqtSQmJvLKK69c9HNycf181iUgFoTmQgROgtAC5OXlyf9fWzD2xx9/cPz4cfbv38/69eu5//77+fPPP3nkkUfkPB0AHx8f+f/rOtLgyse50AhaQkICo0ePJj8/n7lz59Zr5OhKJYUbDAaOHz/O8ePH+euvv9i4cSM33XQTp06dYsyYMdWS5Bvi3OPHjxMXF8dPP/3E/PnzKSgoYPr06fJUJBWJ2Vwgcb5Xr15VrnfHHXdcsN/XXXcdS5cuRavVsmnTpnoFT4LQ0ojASRCuQq4vxtqm1erLlYOi0+kIDQ2t8RiVSoVarcbX15eePXvy5ptv8tBDD2Gz2fjoo4/k49zc3OjYsSMAhw8fvuhr22w2edVVt27dajzmxIkTPPbYY+Tl5TFv3jxGjBhR576dPHmS48ePo9Fo+Ne//lXn82qjVqtRq9UYDAZ69OjBRx99RJcuXUhJSWHx4sUNfq5arcbNzY02bdrw8MMPM3v2bADee+89+VjXtF5WVhaZmZkXvV5dRgZvvvlmOXjauHFjnYIn18+n6+dVEFoCETgJwlXIlRNUeaToUkmSxLp16wC4/vrr65T06zJgwAAAeWWXiytRefPmzRccSaFiGq2wsBCNRsOtt95a7fm///6bxx9/nMLCQl599dUac3MuZP369QDcfvvtNW7Rcrm0Wi2zZs0C4KuvvqpzSYXLPdfFFSTl5+fLI3w9evSQ85u+/PLLel+zNucHT3PmzLlg8JSfnw/1yHUThOZABE6CcBXq0aMHKpWKM2fO1Ll8QE2cTieLFi2SR5zGjh1br/MPHToENSQhjx49Gp1OR05ODi+//HKVvJzKEhIS5FVlo0aNqjZVd+DAAZ544glKSkp4/fXXeeSRR+rVPovFwnfffQeXmRR+MTfeeCN9+/bFarXWqxbW5Z5LxYo3F9cKS7Vazbhx4wD47LPP5OrhV0Ll4GnDhg0XDJ5OnDgBFXW3BKGlEIGTIFyFPDw86Ny5M+Xl5VW+OOvCYrFw7tw5Nm3axPDhw1m5ciUAI0eOlEeQXObOnct7773HkSNHyMnJwel0UlhYSGxsLLNmzZJHM86fAgsMDGTu3LkAbN++nZEjR7J3715KS0txOBykpaWxYsUKHn30UYqKirjhhhuq7Rv3+++/M378eCwWC//5z3946KGH6v0+7dixg+LiYoKDgxk4cGC9z6+PiRMnQkXZg/oU5byUc51OJ7m5uWzdupU333wTKoLpyiNqjz/+ODfddBN2u51JkyYxc+ZM9u3bR1FREZIkYbVaOXfuHMuWLavTlGpl5wdPc+fOrTF4OnLkCFSMZApCSyHKEQjCVWrIkCEcP36c3377jR49etR6XOWl7JIkVVs5pdVqmTJlCuPHj692bnZ2Nl9//TWffPJJrdcfOXJkjZv8/vvf/8bpdPL666/z119/MWHChGrHKBQKHnzwQWbOnFmtHtXSpUuxWCwAzJkzhzlz5tT4+i+//DIjR46s8TlXUviwYcPqvIT+Ug0cOJCePXty5MgRVq5cWet+eZdy7vnlCM7/HH18fHjjjTeqnKNUKvnwww959dVX2bx5M1u2bGHLli1Q8b6fH+jcfffd9ZoGdQVPkydPlqdD58+fL+dLFRYWcuzYMQIDA+nVq1edrysI1zox4iQIV6l///vfaDQatm3bdtFjXcvNJUnC3d2d0NBQBg0axOzZs9m7dy9PPfVUjYHFG2+8wSuvvEK/fv0ICgpCqVSi1WoJDw/n/vvv54svvpBHlmry0EMPsWvXLsaOHUtUVBQGg6HK84888gj/+c9/aqwuXvmLvaal85X7VJOkpCQOHjyIQqFg2LBhF32PrgTXyNG6devqvQT/YueeXzZAp9MRFRXFuHHj+N///ldjBXk3NzcWLFjAli1bGDFiBJGRkbi7uwPg6elJ165defzxx9m2bRvvvfdevZO4K488rV+/vsrI044dO+TNlFUqVb2uKwjXMoUk1pwKwlVr+vTpfPvtt2zYsKHG+kR2u73K31UqVZ1rKzUUh8PBunXrmD9/PiqVilWrVtVYYfxCQVFltfXJVatIoVBckS9uu91ep2u53vPK7brcc8+nVCobfASNiilBp9N50ddzHUdFfhUVQfGxY8fYvXs3wcHBDd5WQbhaiBEnQbiKTZs2DY1GU6UcQGWVl5zXddl5Q1OpVIwcOZJhw4bhcDh47rnnaqz35Cp/cLE/tfVJoVCgVquv2GhHXa9VU7su99zz/zRG0ERFgFaX13Md5wqa/vzzT/766y9GjRolgiahxRGBkyBcxUJDQxk1ahQ//fRTnfd5u1q8+uqrdOvWjdzcXJ599tkaR1aEa1NMTAze3t41bt8iCM2dmKoThKuca0rqapiGqy9X26k0xSNc+1xTpI01MiYIVxMROAmCIAiCINSRuF0QBEEQBEGoIxE4CYIgCIIg1FGzTDrIzc1l586dREREoNfrm7o5giAIgiBcxcxmM0lJSdx5553Vtpg6X7MMnHbu3MmoUaOauhmCIAiCIFxDvvjii1p3KnBploFTREQEVLwBXbp0ueLXdzgcnD59mqioqBZRMbcl9bcl9RXR36ZuToMT/W2+WlJfaYT+njx5klGjRsnxw4U0y8DJNT3XpUsXrrvuuit+fYfDgVKppFevXi3mB7al9Lcl9RXR36ZuToMT/W2+WlJfacT+1iW9RySHC4IgCIIg1JEInARBEARBEOpIBE6CIAiCIAh1JAInQRAEQRCEOhKBkyAIgiAIQh2JwEkQBEEQBKGOROAkCIIgCIJQRyJwEgSh2YqLiyMuLu6SnxcEQThfsyyAKQhCy+EKfKKjo+XHjEYjx48fZ968eQC89tprdOvWDX9/f/n5+Pj4as8HBARc8LqCIAj1CpzKy8v54Ycf2L59O2fOnMFisdC2bVuGDh3KQw89hFarrfO1du7cyeeff865c+fw8PDglltuYcqUKXh6el7WsYIgtAy1BUcBAQG89dZbbN26FT8/PwDGjh3L/fffz6JFiwB4++232bp1q/w7ZPTo0QwaNIjZs2eTl5dHQkICixcvBmDatGnccssthIaGVnl9EVgJQstUr8BpwYIFrF27tspjmZmZHDx4kK1bt/Lll1/WKXhavXo1b775pvz33NxcVq1axf79+1m7di0Gg+GSjhUEoflxBShBQUEA8qjQf/7zHzZv3oyPjw9UCn5uu+02li1bhtPpxMvLCyqCrBUrVnD33Xdz5swZPv30U+x2Ozk5OQBYLBbWrFnD77//TlFREYWFhajV//frcdy4cQwfPpz777+fnTt3kpmZidPp5Ny5c/j5+fHhhx+K4EkQWpB6BU5arZZ77rmHoUOH0q5dOwwGAwcOHGDBggXExcWxdetWhg8ffsFrGI1G3nvvPTQaDXPmzOG2224jOzub119/nb///ptVq1YxadKkeh8rCELzcv6I0vXXX09wcDDTp09nz549rFy5ErPZTH5+PlQKfr744gucTidU3NgBSJKEw+Fg9OjR2Gw2HA4HCoUCDw8P+VyAs2fPIkkSgBw42e121q5dy59//omXlxepqakUFBSgUqlIS0vj0UcfZebMmfTr169K++Pj4wG44447cHNza6R3TRCEhlavwGnWrFkoFIoqj913331IksSMGTM4d+7cRa+xY8cOLBYLTz/9NA8//DAArVu3JiYmhttvv50tW7bIwVB9jhUE4dpmNBqh0ohS5ek2m83GihUraN++Pddffz1jx47F4XAAyMGP2WxGkiScTicKhQI3NzdKS0sBCAkJISMjQw6kdDodbdq0ISMjA4DQ0FCys7MpLy8HwM3NjaFDh/LLL79gMplQKBQkJyfTr18/ioqKcDqd2O12rFYrJ0+eZOzYsXTs2BGNRgOAzWYjNTUVgK+++op77723kd9NQRAaSr1W1Z0fNLm4Ei7PzwGoyZEjRwC46667qjzeunVr+vbtS0pKCgUFBfU+VhCEa4/RaGTPnj3ExcWxevVqVq9eDcCePXtYsWIFRqMRtVpNSUkJDoeDhIQERowYgdFoRKlUotVqKS0tRa/X4+bmJv+OcnNzIyQkBJvNhs1mQ61Wy89JkoRSqUStVsvP6/V6lEqlPNqkVCo5cuQIxcXFKBQK+dz9+/fLQZm3tzcajQZJkrDb7SQnJ5OVlUVWVhapqak4nU4cDgdz5syptnJPrOYThGvXZa+qkySJzz77jMDAQO67776LHu+642vXrl2159q1a8dvv/1GZmYmvr6+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stlsnD17tt5LrJ1OJ4mJiTX+udCqCKvVSlpaGkVFRZfaZEGoF9dUwalTp8jKyuLw4cO4u7vLe2INHDiwWnXwysujBUG4NK5Vdi56vR6DwYDVasVoNMoBUfv27dHpdPz6669s376drKws5syZg7u7u9gQWGgw9c5x2r17N7t27eLnn3+muLiYwMBAfvnllzqfX1payl133VXjc61ateL333+v8pjNZuO9995j3bp18oqJ3r1789prr8k5J4LQEFavXo0kSTidTg4fPgzAiy++yMcffywX2zObzaSkpCBJEgEBASJoEoQr4PxVdlSstJs0aRJarZaSkhLat2/P2bNnad++PRkZGaxevZrg4GDmz5/P4sWLeeaZZ+TgSfy7FK6kegVOdrudKVOm/N+JajVq9aXnlnt7e+Pn51flsfP/DjB//nzWr1+PQqGgTZs2FBQU8Ndff/H444/zzTffEBgYeMltEISa5Ofns3HjRjZt2kReXh6+vr7YbDZyc3Ox2+0kJycTHh4OFYnilauDi1/OgnD5aprmds04KJVKAgICGDVqFJ999hlU5CMWFBTg7e3Nd999x5gxY5qg1UJLUa/IR6FQMHjwYAYNGsStt97Kgw8+SHl5+SW98H333cfLL798wWPOnDnDhg0b8PPz47PPPqNz585YrVbmzZvH5s2b+eijj3j11Vcv6fUFoTarVq3i+PHjhIWFodVqWbhwIQBPPPEEKSkpeHh4yPWZXFs9zJ07lx49ejRxywWh+Tp06BChoaGkpKSg1WqZOHEis2fPRqvVyqPDeXl5bN++nf379+NwOMTUudAg6pXjpFKpiImJ4f7778fb2/uyX7ywsJD09PQqc9mV7dixA0mSmDJliry0VKvVMm/ePHx8fNixY8dlt0EQKvv555/56aef5HpMxcXFGAwG+vXrx5NPPklERAQmkwmr1YokSfj5+bFy5UruvfdekQwuCA3ElSzuqiyenp7OiRMnGD16NE8++SSSJKFUKikpKSE1NZX09HQRNAkNpslW1W3evJl+/fpx2223cf311/PCCy9gNBqrHBMfHw/AzTffXOVxnU5H3759KSgoIDMzs1HbLTRfcXFxjB8/ni5duqBUKsnMzMRisTB27Fi2bdvGwIEDMRgMhIaGUlJSIn4xC0IjqZws7gqelEolDoeD3Nxc+TuhW7du2O12CgsLefbZ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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "fig, ax = common.fig_single()\n", "\n", "\n", "def normalize_pos(pos):\n", " # Normalize between -1 and 1\n", " pos -= pos.min()\n", " R = pos.max()\n", " pos /= pos.max()\n", " pos -= 0.5\n", " pos *= 2\n", "\n", " return R\n", "\n", "\n", "for sim_cfg, mkr_shape in zip(sim_cfgs_use, common.markers.shapes()):\n", " num_data = extracted_data[(sim_cfg.sim_id, sim_cfg.name)]\n", " num_avg_vel = get_poiseuille_pipe_numerical_avg_vel(num_data[\"data\"])\n", " pos_norm = num_data[\"pos\"][:, 1].copy()\n", " R = normalize_pos(pos_norm)\n", "\n", " ax.plot(\n", " pos_norm,\n", " num_data[\"data\"] / num_avg_vel,\n", " **common.markers.sim(shape=mkr_shape, alpha=0.8, color=\"k\"),\n", " label=f\"R={R} (avg. {num_avg_vel:.2e})\",\n", " )\n", "\n", "sim_cfg_ref = sim_cfgs_use[0]\n", "plot_analytical_poiseuille_pipe_vels(ax)\n", "ax.set_title(\n", " f\"Poiseuille (Periodic)\\n({sim_cfg_ref.models.LBM.vel_set} {sim_cfg_ref.models.LBM.coll_oper})\"\n", ")\n", "ax.legend()\n", "plt.tight_layout()\n", "plt.show(fig)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The first order error decay under grid refinement for the present case is also verified:\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2026-06-19T18:47:11.626460Z", "iopub.status.busy": "2026-06-19T18:47:11.626264Z", "iopub.status.idle": "2026-06-19T18:47:11.985689Z", "shell.execute_reply": "2026-06-19T18:47:11.984701Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAHqCAYAAADyPMGQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAdnZJREFUeJzt3XdYU+fbB/BvCHsKigut4kABERxUi9ZRrVvrXrhn60BRVNyj7oFb66qtinWAVK2rVq3W0QoOFFBxi4KKoAiyQpL3jx/JS2SFeQL5fq4rl+ac55xzJzmQm2eK5HK5HERERESUKx2hAyAiIiIqKZg4EREREamJiRMRERGRmpg4EREREamJiRMRERGRmpg4EREREamJiRMRERGRmpg4EREREamJiRMRERGRmpg4EREREamJiRMRUSFISkrC/fv3ERkZCa5kRVR66QodABFRSXb37l1s3boVly5dQo0aNRAbGwt9fX3MmjULbdu2FTo8IipkrHEiIiqAgIAAxMXF4eTJkzh27BguXbqE9u3bY+LEibh586bQ4RFRIWPiRERUAK1atcIvv/yCL774AgCgo6ODKVOmQFdXF0ePHhU6PCIqZEyciLLw8eNHxMfHCx1GnqSkpODjx49ITU1V2S6RSPDx40ckJSWpbJfJZPj48SMSEhKKOdLC8enTJ434jFq0aAE9PT2VbTo6OtDV1cXHjx9Vtis+I5lMVuDrKs4llUoLfK6ikpSUhI8fP0IikRTL9eLj4zO950i/VwrjvUpMTMzy/KRdmDhRiZKQkICPHz+qPD5PFAqDq6sr3NzcCv28RWn79u1wdXXFL7/8orL93LlzcHV1xdy5c1W2P336FK6urnB3dy/mSDNLSUnJ05fau3fv0Lx5c0ybNi3Xsop7Jjk5uYBRqu/s2bNITEyEk5OTyvZ///0Xrq6u2LVrV4HOL5fL4e7ujg4dOmS6/xVJQsZHcb72jObOnQtXV1ecO3euWK7n5uYGV1dXpKWlqWwfNWoUXF1dERYWVqDz+/v7w9XVFX/++WcBI6WSjJ3DqURp37493r17l2l7mTJl0LRpU4wZMwaOjo6CxEbqS0pKQkBAAE6dOoUHDx4gLi4OIpEINjY2aNWqFUaMGAEbG5tsj9+wYQMSExMxfvz4HK/z5s0btG7dGlKpFA4ODggICCiCV6MqNjYWS5cuRYUKFdC3b1+VfS1btkT9+vWxfft29OnTB2XKlMnXNU6cOIG7d+9ixowZMDIyUtk3atSoLPtWmZiYoFGjRhg+fHiJ+6NAU/Tt2xfbt2/HmjVr8M0330BXl1+h2og1TlQiGRsbw8zMDGZmZhCLxfjw4QNOnz6Nfv364a+//irw+c3MzGBubl4osRYXAwMDmJmZQV9fX+hQcnT58mV07twZCxcuxPXr1xEXFwcDAwOIRCK8fPkS+/btQ9euXXHx4sUsj3/27Bn8/PzQvHnzTDU6nwsICFDWZIWFheHevXtF8poUUlJSMGHCBLx//x4+Pj4wNTXNVGbs2LH4+PEjtm/fnq9rSKVSrF27FhYWFhgwYEC25QwNDZU/I3p6evj06RMuXbqE4cOH49dff83XtfNK8XP6eVNmcTMxMYGZmVmBEx0DAwMMGzYMz549g7+/f6HFRyULEycqkTZv3oygoCAEBQXh9u3b2LNnD2rUqAGJRIK5c+dm6s+TV0FBQbhy5UqhxVscxowZg6CgIAwbNkzoULJ14sQJjB07Fq9evUK9evWwevVqXLt2DXfu3MGdO3ewc+dO1K5dG58+fcLkyZPx/PnzTOc4cOAApFIpevTokev1FDVM/fv3B9KbWoqKVCrF1KlTcfv2baxduxaNGzfOslzLli1RpkwZ+Pv756uZ+eLFi3j58iU6dOiQqbYpI29vb+XPSHBwMAICAtCgQQMAwKpVqxAZGZnna+fVokWLEBQUhDZt2hT5tXKyc+dOBAUFwd7evsDn6tq1K8RiMXx9fQslNip5mDhRiaevr48mTZpg/fr1QHpTyfXr17Msm5aWptaXlTqdw1NSUjL1pchNcnJyrh2Dc+vIquig+vm1s+scXhgkEkmBzxsYGIhp06YhLS0NgwcPxsGDB9G1a1dYWVkBAPT09PD1119j3759qFChAhITE/HTTz+pnCM1NRUBAQEwNjbO9cs4MDAQz549Q4MGDTBhwgSIxWIcP348x9eheO9TUlKy3K/oUJ/V57Nw4UL89ddfWLx4cY7zN+np6aFjx47KWtK8OnjwIJD+Ba4usVgMBwcHbNmyBSYmJpBIJDn2O1LnDw9F37GM97NMJkN8fLxym7qdw6VSabbveXZkMpna92ReOofn1h+sfPnyaNq0KR48eIDg4GC146XSg4kTlRp2dnawtrYGALx8+VK5PSEhAWvXrkXbtm1Rr149ODk5oUWLFli8eDFiYmKyPFd2ncNfvHgBLy8vNGnSBPXr10f9+vXxzTffwNvbGyEhIVme6+7du/Dw8MCXX34JZ2dnODo6omfPnvj999+zLD98+HC4uroiPDw8y/1eXl5wdXXFP//8o7I9u87h+fX27VssXrwYrVu3Vr5v33zzDdatW4fExMQ8nSsxMRHTp0+HVCpFu3btMGfOnGybTcqUKYNBgwYBAP7++2+VfdevX8eHDx/QsGHDHGtbkKF2qXv37rC2toabmxs+fPiQY8Lw22+/wdXVFQMHDsy0TyaTwdPTE66urvD29laZHXzdunU4ePAgZs6ciZ49e+bybgDNmjUDgDx3Mk5MTMSVK1dgbGyMhg0b5ulYALCyslLWukRERKjsO3fuHIYNGwZnZ2e4uLjAyckJw4YNw3///ZfluXr06AFXV1dERkbC398f3333HerVq4fGjRvj4cOHQC6dw1NTU7Fjxw507twZ9erVQ/369dG0aVN4e3tnii2j4OBgDB06FE5OTnByckLr1q2xefPmHJOznDqHy2QyHDlyBAMHDoSTkxOcnZ3h6uqK4cOH46+//spyFnjF74YzZ85ke00qvdizjUoVRS2Mjs7//iaIjY3FoEGD8PjxYwCArq4uRCIR3rx5g7179+Ls2bPYt28fqlatmuu5IyMj0adPH3z48AFI/yteR0cHr169QkBAAG7fvp2pBsHPzw/z589XxqWnpweJRILQ0FDMmDEDISEhmDNnTqG/DwUVFhaGUaNGKRNLHR0d5WvdunUr/vnnH+zduxfGxsZqne/gwYOIjIxEmTJlsGTJklzLK/ouxcbGIiEhQdlXKDAwEABQv379HI//9OkTzpw5A319fXTq1AlI/6L/559/4O/vj44dO2Z53JAhQ7B//36EhITg9OnT6NChg3Lf/Pnzcfr0aXz11VdYt26dMvE7fPgwtm7ditatW8PR0RFBQUHKY8zMzFCnTp1M11HEn7GsOm7dugWJRAJnZ2eIxeI8HaugSDAyHr948WLs3btX+VxPTw+pqam4du0a/vvvPyxevBi9evXK8nzr1q3D8ePHgfR+VcbGxhCJRDnGkJKSghEjRihfv46ODvT19fH+/XsEBATg3Llz2LVrV6bP+fLly/j++++Vr8HQ0BBRUVHYsGEDHjx4kOf3IjU1FePHj8elS5eU2wwNDfHx40dcvXoVV69eRWBgYKb+jvn9/Kh0YI0TlRpBQUF4//49AMDW1hZI/0J4/PgxypYtiy1btiA4OBh3797Fr7/+ii+++AKvX7/G9OnT1Tr/4cOH8eHDB9SvXx9Hjx5FaGgo7t69i4sXL2LFihWZOiqHhIQok6bBgwfjr7/+wp07d3Dz5k2sWLECFhYW2Lt3b6ZaFaElJSVh/PjxiImJgZubGw4fPozg4GDcvn0bvr6+sLOzQ0hICNatW6f2Offt2wcAGDRokFqd7g0MDJT/z9gkqWgaya2vysmTJ5GYmIjWrVsrr9e2bVuYmZnhypUreP36dZbH6evrY8qUKUB6QqBo2lm1ahUOHToEFxcXbN68WaUD/uvXr9GwYUPExcVhzZo1Ko9Dhw5leZ0KFSrAysoK79+/z7IfV3bUff3ZiYiIwP3794EMPyOHDx/G3r17YWRkhOnTp+Pq1asICQnBv//+i8mTJwPpzZCvXr3K8pzHjx/HgAEDcOHCBQQHByMoKAh2dnY5xrFp0yYEBQXB2NgYy5cvx+3bt3H37l34+/vD0dERHz9+hKenp0otUlJSEmbMmAGJRIKWLVvi7NmzyutNnjwZf/75Z56bk1evXo1Lly7B0NAQs2bNwr///qs85y+//II2bdoo/wjLyMHBAQAQGhpabHNUkeZgjROVSBknoouLi0NQUBDWrFkDAKhcuTIaNmyIt2/f4tSpUwCAFStW4Ouvv1Ye37RpU2zcuBE9evTAzZs3cffu3VxHaMXFxQEAhg0bhrp16yq3V6xYEd27d0f37t1Vym/fvh1paWkYPnw4vL29ldtNTEzQvXt36Ovrw9PTE/v370erVq0K5X0pDL///jsiIyNRr149bNu2TSVJaNy4MbZv346OHTvi8OHDmDZtWq4jph4/fqxsOlXU/uTm7du3QHrNh4WFRabtin5R2cnYTKdgYGCA9u3bw8/PDwEBAfjhhx+yPLZz58745ZdflF/kcXFx2LlzJ+zs7LB9+3aYmJiolJ84cSImTpyo1uvKyNLSErGxsYiOjka1atXUOkbx+i0tLXMtq+jzhvQauJCQEKxZswYpKSkqfcS2bt0KpP+R0aVLF5X4fvjhB8THx2PXrl3w9/eHh4dHpuu0a9cOCxYsUPNV/6/Ga//+/QCAGTNmqHTyV9xz7dq1w8uXL3Hu3Dllrd+ZM2fw7t07VKxYERs3blQm16ampvjhhx/w8uVL+Pn5qR3Hhw8f8NtvvwEA1qxZo9IvzczMDF999RW++uqrLI81NTVV1h6/f/8e5cuXV/u6VPKxxolKpPHjx8PV1RWurq5o27YtvL29ER0dDVNTU6xatQr6+vq4desWZDIZatSooZI0KdStWxdNmzYF1KxyV1TP//bbb8qmv+zI5XLlqLzvvvsOnz59QkJCgsrD1dUVOjo6uH37dj7fhaJx+fJlIL3zsUQiyRS7qakp6tati8TExGz7YWWkqOEwNjZGjRo11Irh1q1bAABHR0eVZp/Y2FgAUEmmPvfkyRPcunULVlZWaNGihco+xZd0TvM5iUQizJgxA0hPuFevXo1q1arh559/zvG6eaWYw0nxmtShKKvO/E/Lli1T/oy0atUKEyZMwNOnT6Gnp4fFixejbNmyePLkCV69egUzMzO0bNkyy/tU0Z8nu/u0d+/eascPAA8ePEBCQgJMTEzQp0+fTPutra3RuXNn4LOfS8X/e/furVIjqTBkyJA8xREUFITU1FTUrFkzX4sx5+fzo9KBNU5UIhkbGyv7aBgYGKBChQpo0qQJBg8ejMqVKwMAoqOjASDHL2tbW1tcvXpV+Zd8Tr777jtcu3YNv//+Ozp16oSKFSuiXr16aNSoEdq1a4cqVaooy8bFxSmXMvm8JupzcXFxSEtL05jJ9BTD1JctW4Zly5blWFadLw1FPylLS8tc+74gvUbi5MmTQPrQ/YwUn3lOo6MUtQ6dO3fO9J42atQIVatWxfPnzxEYGAhXV9csz+Hq6gpHR0eEhobCysoKu3fvVg48KCyK15BVU1B21Hn9CoaGhsraQD09PZQrVw4NGjTAoEGDlE1pis86Pj4+2+kTFLL7rDPe9+pQ/Fx+8cUX2fbTUjQjZvy5VBxXvXr1LI+pXr06RCJRlp25s6Jors2qD5o6FE3I+e1rRiWXZvymJsqjzZs35zr7seJLOqcvmc87k+d2vhUrVmDMmDE4f/48goODcefOHfz1119YvXo1xo4di0mTJmU6zszMLNdz52XtssJY50wdGZPTglCMfvv06ZNa5Q8ePIi3b9/C0NBQOf+SgqWlJd69e6dsNv1cWloajh07BmSTsIpEInTr1g2bN29WLp+RlZ07dyI0NBRIH5Wp7pdxXigGGajT7KagKJvd68/I29s7xwkyMxKLxbl29Dc0NMxye1a1PzlR/Kzl9HOZVVKp+HnObgqQtLS0PH1O6sSRE8V0JXn5/Kh0YOJEpValSpUAAI8ePcq2jGKfoqw6atasiZo1ayqfh4aGYvz48diyZQuaNWuGxo0bw8LCAqampkhISMDx48fzdH5FLUF280i9ePFC7XPlR+XKlREWFoa5c+eqNbQ+N7Vq1QLSE4UnT57kWAMYHh6O1atXA+lDyD/vy1SxYkU8fPgw22kkLl68iOjoaNSqVQv16tXLskz37t2xefNmnDlzBnPmzMk0u/fhw4exatUqVK5cGY0bN8axY8ewdu1aZR+6wqKowcnLvVGxYkUgfa2+wqConbWyssI///yjVo1gQSleQ0REBFJSUrJMvBTTGWR8bxTHZddMnlvz+ecUNWWhoaGQy+V5eu2xsbFIS0uDgYEBEyctxD5OVGo1bNgQenp6iIiIUHYSzygoKAg3btwA0juL5ya7v2YdHR2VtV+KuZxEIpGyw/eOHTvydN4KFSoAGfr5ZPTvv//iyZMnucZaEK1btwbSR8LlNF+Tun/dOzk5Kb/01q5dm+1xd+7cwejRo5GUlIRGjRpl2XlbMfN1dnNmKTqFf/fdd9nG88UXX6Bhw4ZITEzMdF+cOnUK8+bNQ9myZbF7927MmjULpqamOHHiRLbXzI8XL17g48ePqFChgjJ5UYdi7iZFbVhB1ahRA9WrV0d0dHSu6/gVVq1b7dq1UbZsWSQlJalMgaDw4sUL5eeS8edS8f/Dhw8rO71nlNvP2ecaN24MU1PTPHcqR4b3vyDTQlDJxcSJSq0yZcooO5/Onj0bvr6+iIyMxJs3bxAQEKAcCdW6dWtlrUhOJk+ejOnTp+PMmTO4f/8+YmJi8Pz5c+zfv1/5iz7jl+C4ceNgZGQEX19ffP/997h48SKeP3+O6OhohISE4Pjx45gwYQJWrlypch3FSJ7t27fDz88PkZGRePz4Mfbu3QsPD48iaTbKqFu3bqhduzZCQ0PRr18/HDlyBOHh4Xj37h3Cw8Px999/Y8GCBXB3d1frfLq6uvDy8gLSJ3wcOXIkrly5gujoaLx8+RJXr17FzJkz4e7ujtevX8PFxQXbtm3Lss/Xl19+CaRPKvq5mJgYXLp0CSKRCK1bt1bO8J3Vo3379sBnS7D8888/mDZtGkxMTLBr1y5Ur14dlpaWGDVqFORyOVasWJHv9/RzivizayrMTv369WFgYID79+8X2gzxU6dOBdInq5w3bx4CAwPx6tUrvH79Grdu3cJvv/2GwYMH4+jRo4VyPR0dHYwYMQJIn/Jh69atyp+Ls2fPYsSIEZBIJKhbt67KoI42bdqgWrVq+PDhA4YNG4Zr164hJiYG4eHhmDNnTp4nEzU2NsaYMWOA9Dm6li9fjrCwMMTGxuL+/fs4fPgwunfvnmWSpvj8cusXRqUTm+qoVJs2bRoePXqE69evY9GiRVi0aJHK/jp16mDp0qVqnSsxMRGnT5/O9gvk66+/VlkGpGbNmti0aROmTJmCCxcu4MKFC1keN3jwYJXn3333HXx9fXHv3j3Mnj1bZV+DBg1gYmKiHPlWFPT19bF9+3Z8//33ePDgAWbOnJlluYzNlbnp2rUroqOjsXr1aly5ciXLdQB1dHQwcOBAeHl5ZRryr9CwYUNUqFABt27dQlxcnMoot99//105p07GYfU5uXXrFp48eYL3799j4sSJEIvF+Omnn1TmSRo2bBh8fX1x/fp1XLhwQVkjVxCKubuym4gzO/r6+mjTpg1OnjyJa9euZeo8nx+KmdyXL1+OgwcPKpd0+Vx2E2Dmx4gRIxAaGoqTJ09i3bp1meYEq1y5MtavX6/Sx0lPTw8+Pj4YNmwYQkNDM63JqFjGJy8J5ZgxY/Dy5UscOnQIu3fvxu7duzOVyaoJT7EAdV4/PyodmDhRiWJqaoqUlBS1R6AZGxvj559/xpEjR3DixAk8ffoUcrkcVapUQbt27TBgwIAsl+4wMzPL1Pdi3bp1OH/+PP766y88ffoU7969g6WlJapWrYoePXqgbdu2martmzdvjlOnTuG3337D5cuXlZMIVqhQATVq1EC7du0yDZnX19fHnj17sGXLFvz999+Ii4tDhQoV0L59e4wcORIzZ87McqV3AwMDmJmZqcy7hPQvHDMzs0ydf8ViMczMzLJMUipXrgw/Pz8cPXoUf/75Jx4/fozk5GSUK1cONjY2aNWqFdq1a6fWZ6AwYsQItGzZEr/99huCgoIQHR0NfX195YjIrl275lrzJxaL0adPH2zatAlnzpxB3759lfvOnj2rVkf8z+3fvx/nz5+HgYEBVq5cmakWwcjICB4eHli5ciW2bduGli1b5mkk3OeSkpLw119/wdraOl/zd/Xv3x8nT57EsWPHskycTExMsrwPcjJ48GA0a9YMv/32GwIDAxEdHa0crerg4ICOHTuiUaNGKseYmprCzMwsx/fC2NgYZmZmmeb60tHRgY+PD7799lsEBATg4cOHSE1NRcWKFdG6dWsMGTIky6kf6tWrh4CAAGzZsgXXr19HSkoKqlatit69e6NXr144deoUUlJSMiU7ivfk858ZkUiEH3/8UTkvWUhICD59+oSKFSvC0dER7u7ume6piIgI3L59Gw0aNMh1ok8qnUTyoq73JyIqRG/evMG3334Le3v7bGtHNNnvv/+OGTNmYNKkSRg3bly+ztGtWze8ePECFy9eLNS5pSh369evx5YtW+Dj46Ocb4q0C/s4EVGJUqFCBQwdOhS3b9/GtWvXhA4nT2QyGbZt2wZra+tMTU15MW3aNCQlJWXZtERFJyEhAfv27YOjo6Pas+BT6cPEiYhKnLFjx8LGxga//vqr0KHkyfnz5xEdHY1JkyapvUByVr7++mu0bt0aR48eVU60SkXPz88Pcrkc06dPL5apG0gzsamOiIiISE2scSIiIiJSExMnIiIiIjUxcSIiIiJSExMnIiIiIjUxcSIiIiJSExMnIiIiIjUxcSIqIdasWQNHR8csF7glEsKQIUPg5uaG+Ph4oUMhKjacx4moBIiMjESHDh3QtGlTbN++XWVfcHAwBgwYoLJNV1cXJiYmsLKyQp06deDq6oouXbpku5abXC7HnTt3cObMGQQFBSEyMhIJCQmwtrZG48aNMXToUNStWzfHGGNiYuDr64vLly8jIiICSUlJsLS0RL169dCxY0d07Ngxy0kDExIScOnSJZw/fx7h4eGIjIwEAFSpUgUtW7bE0KFDYWVllem45cuXY8+ePbm+d19++SV++eWXXMshm/dSJBLByMgINjY2cHNzw7Bhw1ChQoUiPxbpa/OVKVMGTk5OGDBgAL7++usc43/8+DH8/Pxw/fp1REVF4dOnTzA3N4ednR1atWqFHj16wNTUNNNx8+bNg5+fH4YMGQJvb+9M+5OSkjBhwgRcu3YNlStXxq5du1CtWjVcu3YNw4YNw+jRo+Hl5ZVjbESlBRMnohLA29sbAQEBOHDgABo0aKCy7/bt2+jXr1+u5zAyMsLkyZMxdOjQTAlMcHCwyoK5n9PV1cXixYvRo0ePLPcfO3YM8+fPR2JiYrbncHZ2xqZNm1C+fHmV7VOmTMGJEyeyPc7Kygo///wz7O3tVbYvWbJErcRpzJgxmDp1aq7loOZ7aW5ujr1792ZKJIv6WACYMGECJk6cmGl7amoqli1bhgMHDkAmk+V4/VmzZmX6HGfPnq1MnGbPnq2yLz4+HmPGjMHNmzdha2uL3bt3o1KlSsr9ffv2xf379/HXX39l+myJSiP1lpgnIsHExsbixIkTsLW1zZQ0ZWRsbIzAwEAgvQYpISEBb968wY0bN3DgwAGEh4dj2bJleP36daZaBZFIhCZNmqB9+/aoX78+qlSpArlcjgcPHmDTpk0ICgrC/Pnz4ebmlqnG5NixY5g2bRoAwNHREWPHjkWjRo1gbGyMqKgonDp1Crt27UJwcDAGDhyIgIAAlZovU1NTdOrUCd988w1q166NSpUqITk5GVevXsXq1avx7t07TJ48GadOnYKOzv/3Lpg5cyZmzJiR5XsRExODNm3aQCKRoFevXnl+zz9/L2NiYnD58mWsXLkScXFxWLRoEfbv31+kxwJAcnIynj17hs2bN+P8+fPYsmULOnXqhJo1ayrLyOVyeHh44MKFCwCA9u3bo0ePHnBwcICFhQUSEhLw5MkT/P333zh8+DC8vb3Rtm3bbGsfM4qNjcXIkSMRFhYGe3t77Nq1C2XLllUp0717dyxcuBCHDx/G+PHj1Xp/iUo0ORFptJ07d8rt7OzkmzZtynL/rVu35HZ2dnIXF5dszyGRSOQLFiyQ29nZye3s7OT//vuv2tdPSEiQu7m5ye3s7OSHDh1S2ffmzRu5i4uL3M7OTj5u3Dh5ampqlucICwuTN2rUSG5nZyf39vZW+9o3b95UxhwcHKz2cTt27JDb2dnJ3d3d1T5GrsZ76efnJ7ezs5PXqVNHHh8fX2zHpqSkyL/++mu5nZ2dfO/evSr79uzZI7ezs5PXrVtXfuLEiRxfX3x8vNzb21v+8eNHle2zZs2S29nZyRcvXqzcFhUVJe/QoYPczs5O3r9//0zHKMTGxsodHR3lrVu3lkul0hyvT1QasHM4kYY7ffo0AKBFixb5Poeuri7mzp2LevXqAQB27typ9rEmJibKpqVPnz6p7PP19UViYiLKli2L5cuXQ09PL8tz2NvbK2uljh07htevX6t17QYNGqBcuXIAgHfv3qkds5+fHwDkq7YpJw4ODkCGGr3iOlZfX19Zy5SUlKTcLpVKlX3ehgwZgk6dOuV4HlNTUyxbtizX2qYXL15g4MCBePLkCZo3b46ff/4522MU/dhevXqFO3fu5Ol1EZVETJyINNinT58QFhYGfX39XDtn50ZHRweDBg0CAAQGBkIikah1XGpqKh4/fgwAqFOnjsq+8+fPAwB69OiR65dxjx49YG5ujrS0NPzzzz9qX1vRb8rGxkatY4KCgvD06VOYmpqiQ4cOah2jrnv37gEA9PT0lAldcRyblpaGp0+fAgCqVaum3B4SEoK3b98CAAYPHpync2YnPDwcAwcOxKtXr9C+fXts3boVRkZGOR5Tv359AMD169cLJQYiTcbEiUiD3b17F2lpaahdu3a2tTl50bBhQyC91uLFixc5lk1OTkZISAgmTpyIqKgoNG3aFF999ZVyf0pKCh4+fAikj1zLjb6+vvILNjQ0VK14Dxw4gMTERDg4OGRK2rJz+PBhAEDnzp1z/cJXV2xsLI4ePYoVK1YA6f16dHXV6yJakGNTU1Px6NEjTJs2DVFRUbCxsUGrVq2U+0NCQgAAFSpUQJUqVfLxylTdv38fgwcPRnR0NHr16oW1a9dCX18/1+MUtWm3bt0qcAxEmo6dw4k0mKJJ6/MOufmV8TxxcXFZlmnWrBnev38PqVQKpI/EGjlyJDw8PFTKffjwAYpBueqOplJ0LH///n2uZe/evQsfHx/o6elh4cKFap0/ISEBZ86cAQD07t1brWOyokjWFBTvhUgkQufOnTFnzpxiPVZXVxddunSBl5eXSiKjeB+zq8HKbpoDDw8PfP/995m2K2qMatasicWLF6t0xs+J4r568+aNWuWJSjLWOBFpMMUXo4WFRbFdMy0tTfmFjfTmwpCQEDx69CjbY7KanymncrnNgvL48WOMHTsWycnJWLBggbKmKjfHjh1DUlIS7Ozs1D4mO1KpVPlQsLOzw9SpU2FoaFisx6alpSEkJERlxF1G2b3/crlc5XyKR3ZTFtSrVw/6+vp4/Pgx5syZk+vnpKC4P9VJiIlKOiZORFokJiZG+f/skrGrV68iNDQU//77Lw4dOoTu3bvjv//+Q//+/ZX9dACgTJkyyv+rW9Og6I+TUw3aw4cPMWTIEMTGxmLevHl5qjkqrE7hxsbGCA0NRWhoKG7dugU/Pz80b94cDx48wLBhwzJ1ki+KY0NDQ3Hnzh2cP38eixYtwvv37zFt2jRlUyTSO2Yjh47zLi4uKudr165djq+7YcOG2Lx5M/T19eHv75+n5IlIWzBxItJgii/G7JrV8krRB8XQ0BBVq1bNsoxYLIauri4sLS3h7OyMpUuXok+fPpBIJNi6dauynIGBAWrVqgUAuHHjRq7XlkgkylFXjo6OWZYJCwvD4MGDERMTg/nz52PgwIFqv7Z79+4hNDQUenp66Natm9rHZUdXVxe6urowNjaGk5MTtm7dCnt7e7x48QIbNmwo8mN1dXVhYGAAGxsb9OvXD7NmzQIA+Pj4KMsqmvVev36NqKioXM+nTs1gixYtlMmTn5+fWsmT4v5U3K9EpRkTJyINpugTlLGmKL/kcjkOHDgAAGjcuLFanX4V3NzcAEA5sktB0VH5yJEjOdakIL0Z7cOHD9DT00Pr1q0z7b99+zaGDh2KDx8+YMGCBVn2zcnJoUOHAABt2rTJcomWgtLX18fMmTMBAPv371d7SoWCHqugSJJiY2OVNXxOTk7K/k2+vr55Pmd2Pk+e5s6dm2PyFBsbC+ShrxtRScbEiUiDOTk5QSwW49GjR2pPH5AVmUyGVatWKWucRo4cmafjg4KCgCw6IQ8ZMgSGhoaIjo7G7NmzVfrlZPTw4UPlqLJBgwZlaqq7fv06hg8fjvj4ePz444/o379/nuJLTk7GH3/8ARSwU3humjRpAldXV6SmpuZpLqyCHov0EW8KihGWurq6GDVqFABg9+7dytnDC0PG5Onw4cM5Jk9hYWFA+rxbRKUdEyciDWZqaoq6desiJSVF5YtTHcnJyXj69Cn8/f3Rt29f7Nq1CwDg7u6urEFSmDdvHnx8fBAcHIzo6GjIZDJ8+PABN2/exMyZM5W1GZ83gVWoUAHz5s0DAJw6dQru7u64ePEiEhISIJVK8fLlS+zcuRMDBgxAXFwcvvzyy0zrxl25cgWjR49GcnIylixZgj59+uT5fTp9+jQ+fvyISpUqoVmzZnk+Pi9++OEHIH3ag7xMypmfY2UyGd69e4fff/8dS5cuBdKT6Yw1akOHDkXz5s2RlpaGcePGwdvbG9euXUNcXBzkcjlSU1Px9OlTbN++Xa0m1Yw+T57mzZuXZfIUHBwMpNdkEpV2nI6ASMN16NABoaGhuHz5MpycnLItl3Eou1wuzzRySl9fHxMmTMDo0aMzHfvmzRscPHgQ27Zty/b87u7uWS7y26tXL8hkMvz444+4desWxowZk6mMSCRC79694e3tnWk+qs2bNyM5ORkAMHfuXMydOzfL68+ePRvu7u5Z7lN0Cu/Zs6faQ+jzq1mzZnB2dkZwcDB27dqV7Xp5+Tn28+kIPv8cy5Qpg8WLF6sco6Ojgy1btmDBggU4cuQIAgICEBAQAKS/758nOp07d85TM6gieRo/fryyOXTRokXK/lIfPnxASEgIKlSoABcXF7XPS1RSscaJSMP16tULenp6OH78eK5lFcPN5XI5TExMULVqVbRt2xazZs3CxYsXMXbs2CwTi8WLF2POnDlo2rQpKlasCB0dHejr66NatWro3r079u3bp6xZykqfPn3w559/YuTIkbCzs4OxsbHK/v79+2PJkiVZzi6e8Ys9q6HzGV9TVp49e4bAwECIRCL07Nkz1/eoMChqjg4cOJDnIfi5Hfv5tAGGhoaws7PDqFGjcOLEiSxnkDcwMMCyZcsQEBCAgQMHonbt2jAxMQEAmJmZwcHBAUOHDsXx48fh4+OT507cGWueDh06pFLzdPr0aeViymKxOE/nJSqJRHKONSXSeNOmTcOxY8dw+PDhLOcnSktLU3kuFovVnlupqEilUhw4cACLFi2CWCzGL7/8kuUM4zklRRll95oUcxWJRKJC+eJOS0tT61yK9zxjXAU99nM6OjpFXoOG9CZBmUyW6/UU5ZDevwrpSXFISAjOnj2LSpUqFXmsREJjjRNRCeDh4QE9PT2V6QAyyjjkXN1h50VNLBbD3d0dPXv2hFQqhaenZ5bzPSmmP8jtkd1rEolE0NXVLbTaDnXPlVVcBT3280dxJE1IT9DUuZ6inCJp+u+//3Dr1i0MGjSISRNpDSZORCVA1apVMWjQIJw/f17tdd40xYIFC+Do6Ih3795h8uTJWdasUMm0adMmWFhYZLl8C1FpxaY6ohJC0SSlCc1weaWIHRmaeKjkUzSRFlfNGJEmYOJEREREpCb+mUBERESkJiZORERERGrSis4G7969w5kzZ1C9enUYGRkJHQ4RERFpkKSkJDx79gzt27fPtLTU57QicTpz5gwGDRokdBhERESkwfbt25ftCgUKWpE4Va9eHUh/Q+zt7YUOR0kqlSI8PBx2dnaccZeKDO8zKg68z6g4FNV9du/ePQwaNEiZL+REKxInRfOcvb09GjZsKHQ4SlKpFDo6OnBxceEvGioyvM+oOPA+o+JQ1PeZOt152DmciIiISE1MnIiIiIjUxMSJiIiISE1MnIiIiIjUxMSJiIiISE1aMaqOiIi0j0QiUS4uTaWD4vNMTk7O86g6sVgMPT29AsfAxImIiEodiUSCx48fg+vYly5yuRy6urp4/vw5RCJRno4ViUSoWbNmgZMnJk5ERFTqSKVSyOVyVK5cGQYGBkKHQ4VELpcjKSkJRkZGeUqcUlJSEBkZCalUysSJiIgoOwYGBjA0NBQ6DCokcrkcMpkMhoaGea5xKixMnPJInpaMtISnapXVNbWFSJc/sERERKUFE6c8Skt4itgzbdQqa9X+HPTKaM7aeERERFQwJTJxWrZsGaKiogAAdnZ2mDBhgtAhERERkRYokYlTixYtEB8fj99//x1BQUGCxWHhth1is5oq26TxjxF3dYxgMREREZUE//77Lw4ePIi5c+fCyspK6HDUViITp2bNmgEAgoODce/ePcHiEJvVZFMcEREJ6sCBA/jvv//QqlUrfPfdd0KHA6lUij///BMhISGIjY1FxYoV4ezsjK+//lpl7qWIiAicPHkSU6dO1Y7E6dOnT3j06BH09PTg4OCQY1m5XI4XL14gKSkJVatWhYmJSX4vq5GePXuG3bt3Y8KECShT8Lm1iIhIg2jyoKDU1FSsX78ecXFxuHPnDrp16ybYaDMAiIqKwogRIxAXF4c+ffqgcePGePHiBWbOnAkDAwMcO3YM5ubmAICmTZvCx8enRCVNyE/i5O/vj7Nnz+LKlStITU1FhQoVcOnSpWzLX7lyBfPmzcPLly+B9KGhAwYMwPTp01Uyz7/++gvHjh3L9jwuLi4YMWJEXsMtcnK5HJs3b8aDBw8wadIk/DC8B+yEDoqIiAqNJg8KOnfuHGJjYzFz5kwsW7YM165dg5ubW7Fd/3OrV6/GixcvcOLECVSvXl25fejQoZg0aRJSUlKU26pWrYqqVasKFGn+5SlxSktLw6xZswAAxsbGuZYPCwvD999/j9TUVJQvXx5lypTBo0eP8Msvv0AkEsHb21tZtkaNGujUqVO256pYsWJeQi02IpEInp6eWLNmDR4+fIhVG/eiRa0v0LfRS6FDIyKiUu7w4cNo0KABhg0bhkOHDuHQoUPZJk4RERH4448/8Pz5cxgYGKBp06Zo3749dHT+t2xtfHw85s2bh+7du8PJyQmHDh3CkydPMGDAADRo0ABpaWk4deoUgoKCkJKSgurVq6N79+4q38+hoaGwsbFRSZoAwMrKCjt37lSpDcuqj9OFCxdw7Ngx/Pjjj3jw4AFOnDgBuVyObt26oUGDBgCA27dv49y5c0hNTcW3336Lli1bFsl7m508LfIrEonQs2dPbN26Ff/++2+uycz69euRmpqK8ePH49KlSzh+/DiOHTuGMmXKYO/evcqRcUhPnDp06JDtw8XFJf+vsohI4x9D8uEerI3j8OPMYeje+X8f3qVH5bHktD2evYjK9RxERFRyWLhth1X7cyoPC7ftgsTy8uVLXL16Ff379wcA9O/fH3/99RdiY2MzlT127Bg6duyI27dvo379+qhcuTJ+/PFHjB07FmlpaUD6+m8nT55EYGAgJkyYAB0dHdjY2ODNmzdISEjAgAEDsGjRIlhbW8PJyQmXLl1Cx44dceXKFeV1qlSpgtevXyMyMjJTDAYGBtDX11c+V/RxSkxMVG578uQJTp48id9//x2//vor6tSpg0+fPmHQoEG4du0a/P39sXfvXtSuXRtSqRRjxozB6dOnC/29zUmeapzEYjGWLVumVtnExERcuXIFVapUwYQJE5RZZu3atTF69GisWrUK586dw6BBg/IXuQb4fPRc5zKA7Tdm+PmqLaLijOC9cBOWL6+K2rVrCxYjEREVHk0aFOTn54cyZcooW2t69OiBtWvX4ujRoxg+fLiy3LNnzzBr1iz06tULCxcuVG7/9ttv0bVrV/j6+mLo0KEq5z127BjKly8PpCdUPj4+uHv3Lo4cOaLs19yvXz8MGjQIXl5eOH/+PIyMjODh4YEhQ4age/fu6NKlCxo3bgwHB4dMNVC5CQsLw4YNG5TXiYiIwNKlS+Ho6Ig1a9bA2NgYAwYMQEREBLZs2YIOHToU8N1UX5GNqnv8+DEkEgnc3NyU1YAKzZs3x6pVq3D//v18nXvPnj0ICgrCgwcPEB8fDw8PD1SqVAkzZ87M8bj4+HjExcUpn+vr66tkv+qQyXJeaduhUjzmdw7D7mvVITNvgGrVqmW7OrdiO1fvpqLE+4yKg6bdZ4q16hSPAsl4fFbny21/EZBKpThy5Ah69eoFPT09yOVymJqaonPnzjh8+DCGDRumLBsQEACJRILRo0erxGZra4vGjRvj9OnTGDJkiHJfixYtYG1trXxuYGCAEydOoEmTJrC3t1duF4vFGDJkCDw9PXHlyhW0adMGTk5OOHnyJPz8/PDff//hjz/+QFxcHKpWrYrx48eje/fuGd4qufLfjP8HgJ49e6rE+uWXX+Knn37C7NmzVcp9+eWX2Lp1KyQSCXR1s09pFNeQSqVZ3qN5uW+LLHGKiYkBAFSqVCnTvsqVK6uUySsXFxeUL19epU+UmZlZrscNGTJEZc2inj17onfv3nm7uCwFulU25FqsT005ElEOd+/eBdJX6o6MjES1atUylVWUISpKvM+oOGjSfaarq4ukpCTIZLICnUeanKT8ok5KToI4Q9OSOvuLwsWLF/HmzRvcvn0bHh4eyu1v377F48ePceXKFWWfoIcPH0JHRwerV69WllPE++LFC8hkMiQmJiIpKQlI/47O2HyWnJyMd+/eoVWrVirbkeE7/smTJ/jqq68AABYWFhg5ciRGjhwJpNcerVu3Dt7e3khNTUWXLl2A9BGBivMrziuRSAAA5cqVU7mWol91uXLlAEAZq4mJCWQyGV69egVra+ts36+UlBRIJJJsK2zCw8Nzecf/X5ElToo206xWIVZkhYo3KK/q16+P+vXr5/m4PXv2qPSVyk+NU35t27YNZ86cQY8ePTBgwADo6upCKpXi7t27cHJyUhlhSFSYeJ9RcdC0+yw5ORnPnz+HkZFRgRf5TUs1QlJ6dxMjQyPofjY4Krf9ReH48eNwc3NDr169Mu0Ti8U4fvy4cs5DAwMD6Orqom3btpnKfvvttzA0NISxsTGMjIwAAGXKlFEZAKanpweRSASpVJppYJgiATMxMcl20Fjjxo2xZcsWfPXVVzh58iT69u0LpH8HA1BeHxlyBnNzc5XzGRgYABkqSYyMjCASiZTnMDAwyHHQmo6ODvT09FCrVq0s74e8JNdFljgpXkBCQkKmffHx8SpliouZmRksLCyK9ZpI/0AU1YRHjhxBSEgIvLy8lNmxWCzWiF80VLrxPqPioCn3mVgshkgkUj4KJMPx0oQnKs+V2zKULep5lN68eYOLFy9i2bJlytqbjOLj47FixQrMmTMHZmZmcHZ2xsmTJ2FnZwc7u+wnzMkYd8b/6+vro1atWggJCcn02hQ1jPb29hCJRLh+/Tq+/PLLTOc2MTGBrq4uEhISlOfI+O/n2z7//+fbPv9sc/ucFfuzuz/zcs/maVRdXlSpUgUA8ODBg0z7FFViJXH+hvzQ0dHB+PHjMWPGDJiYmCA8PByTJk3Kcf4rIiLSPHFXxyD2TBuVR3Evs3XkyBHIZDI0b948y/0tWrRAUlKScm7E3r17o3Llypg3bx6io6NVyoaHh+Pvv//O9ZpDhgzBw4cPsW/fPuW2iIgI7Ny5E87OzmjYsCEA4Mcff8SiRYtU+hPL5XLs3LkTKSkpaNNGvfmwNFmR1ThVrVoV1tbWuHLlCqKiolT6Ovn7+wMAGjVqVFSX10jNmjWDnZ0d1qxZg7CwMKxduxbOzs6oU6cOTE1NhQ6PiIg0nFwuh7+/PxwcHFC2bNksy9jY2KBmzZrw8/ODu7s7TE1NsWfPHsyaNQvt2rWDo6MjTExM8Pz5cxgaGmLGjBm5Xrdv3754/fo1li9fDn9/f1haWuLWrVuwt7fH2rVrleUGDBiA/fv34+uvv0bDhg1haGiI8PBwREdHY+jQoRgzpuSv5ZrnxOnRo0fK5rfU1FRIJBLcvn0bSG96U1QDikQi9OnTB1u2bMHIkSMxYcIEWFpa4tSpUzh16hRsbGyyzZZLM2trayxZsgSHDh3CwYMH8eDBA3z69ImJExGRhtI1tYVV+3Nqly1KiYmJ8PT0zLXFZunSpXj16hVSU1Ohr6+PqlWrYu/evYiIiMCjR4+go6ODatWqqUwTYG5uDh8fn2yXUfPw8MDgwYNx9+5dpKSkwNvbO1PT38CBAzFw4EC8fPkSL168QHx8PMqWLQt7e/tMy61lteRK69atUbFixUzfiS1btoS1tTXMzc1VRsA1b94cPj4+KFOmjJrvYMGJ5HkcNzlgwADcvHkzy32Ojo44cuSI8nlSUhKGDBmCO3fuqJQzMDDAjh070KRJk/zGnSc3b95Eo0aNcOPGDWV1oia4e/cuQkJC0LdvX2X7qlwuF3SdISp9pFIpbt++DRcXF43oe0Klk6bdZ8nJyXj69ClsbW0L3DmcNIdcLkdiYiKMjY3z9F2Z2/2QlzwhzzVOitk6s1KzZk2V50ZGRvD19cX+/ftx9epVJCUloVatWhg0aFCmstrIwcFBORwTAAIDA3H8+HFMnjy5xC16SEREpA3ynDgtWrQoT+X19fUxbNgwlcm4hDJx4kRYWFjA3d0d7u7uQoejIi0tDdu2bcPbt28xadIkTJo0CY0bNxY6LCIiIsqgyEbVaaKNGzfi5MmTGpc0IX1uq/nz58PW1hZxcXFYtGgRduzYke+5roiIiKjwaVXipOmqVq2KVatWoWvXrkD6BGdeXl54+fKl0KEREREREyfNo6+vj9GjR2Pu3LkwNzfH06dP4enpibdv3wodGhERkdZj4qShXF1dsX79ejg7O6NFixbKVaqJiIhIOEU2ASYVXNmyZbFw4ULlun8A8P79e0RFRWU7zwYREREVHdY4aTgdHR3lIoYymQxr167FrFmzcODAgWynhSAiIqKiwcSpBJFIJLC0tIRMJsP+/fsxZ86cTOsOERERUdFh4lSCGBgYwNPTE56enjAyMkJoaCgmTZqEq1evCh0aERGRVmAfpxKodevWqFu3LtasWYPw8HAsX74c7du3x6hRo2BgYCB0eERERJDL5Th16hT+/fdfmJqaolu3bqhbt67QYRWYVtU4TZw4EZ06dYKvr6/QoRRYpUqVsHz5cvTq1QsikQghISGQyWRCh0VERAQAmDp1Ks6ePQt7e3uIRCL06dMHQUFBQodVYFpV47Rx40aNWuS3oHR1dTF06FC4uLjA1NQURkZGQHqWD4CLBRMRkWBmzJiBChUqKJ9/+PABAQEBJX45Ma2qcSqtnJ2dVRZNPnbsGJYsWYKPHz8KGhcREWkePz8/TJ06tcivkzFpAoCkpCSYmJgon4eGhmLw4MGIjY0t8lgKExOnUiYhIQH79+/H9evX4eHhgeDgYKFDIiKiIhQVFYUdO3bAw8MDQ4YMgYeHB/bt24dPnz5lKvvhwwesXLkSTZo0yfJcKSkpGDp0KAYMGICnT58WWox37tzBhQsX0LdvX+U2R0dHfPr0CevXry+06xQHJk6ljKmpKZYvX44qVaogNjYW8+bNw6+//qoyiSYREZUO27ZtQ8eOHRESEoJvv/0WY8aMQcOGDbFlyxZ069YNERERKuV/+eUXiMVi9OjRI8vznT59GsHBwfjw4QMOHTpUKDE+fvwY48aNw48//ohatWqp7Bs+fDgOHz6MyMjIQrlWcWDiVArZ2tpi7dq1aN++PeRyOfz9/eHt7Y2oqCihQyMiokKyaNEibNq0CWvXrsX69evRtWtXNG/eHMOGDYOfnx9iYmJUmuQkEgn8/PzQuXNn6OnpZXlOPz8/tGrVCt999x2OHj0KiURSoBifP3+OYcOGYdKkSejSpUum/W3btoWhoWGhJWnFgYlTKWVgYIDx48djxowZMDExQXh4OLy8vJCYmCh0aEREVEBHjhyBr68vpk2bhtatW2faX7lyZXTq1AnBwcEIDw8HANy4cQPR0dFo2bJllud89uwZrl+/jk6dOqFTp06IiYnBuXPnMpW7cOECBgwYkGkOwX///RcDBw5UJkEREREYOnQovv/+e/Tp0yfLaxoZGeHLL7/EqVOn8vU+CIGJUynXrFkzbNiwAQ4ODujVqxeMjY2FDomIiAogJSUFPj4+sLGxgbu7e7blqlevDgDKvkqBgYEAgPr162dZ/tChQzAxMUHLli3xxRdfoF69ejh8+HCmcs2aNcO7d++wbNky5TQ4N2/exA8//ICKFSuid+/eAIBp06YhJSUFQUFBysmbt27dmul8Li4uePbsGd68eZOv96O4adV0BNrK2toaS5YsUZme4NmzZ5BIJKhdu7agsRERCSE5OTnbfRnXCM2trEgkUpl4OC9l8+vSpUuIjo7G5MmTIRaLsy2nmJpG0Sz37NkzmJiYwMLCIlNZiUSCo0ePok2bNsoYO3XqhNWrV+PVq1ewsbFRltXX18f06dMxYcIEBAQEoG7duhgzZgyaN2+OlStXQkfnf3Uy48aNQ3x8vMp1ypUrl+nalStXBtITvM9H4mkiJk5aIuMPV3JyMlauXImoqCgMHjwY3bt3V97oRETaIOPors81btwY8+bNUz4fPHgwUlJSsixbr149LF26VPl81KhR2U4FU6tWLfj4+BQobqTX7gCAk5NTjuUUTXQ1atQA0kfUZZU0AcD58+fx7t07dOrUSbmtY8eOWLVqFfz8/DBp0iSV8t9++y2aNGmCtWvXQiKRoFGjRlizZg10df8/rWjRooVar0cR0/v379UqLzR+W2ohqVSKL774AlKpFL/88gsWLFhQ4ubRICLSVjExMUD6ChLZSUhIwPnz51GzZk1lk52BgUG2CeChQ4dgbm6OZs2aKbdVrlwZLi4u8Pf3h1QqzXRMz549ER0dDWtra2zcuFGlli4vFLV0JaUrCWuctJCJiQlmzJiBs2fPYvv27bh9+zYmTZqESZMmlfgZXYmI1JHTKK7Pa+D37t2bbdnPV2jYuXOn2mXzS50amsOHDyMxMRFjx45VbrO2tkZcXBykUqlKK0RkZCSuXr2K7t27Z0p+OnbsiKVLl+Kff/5Bq1atlNtDQkKwePFiWFpa4tmzZ3j9+jW++OKLfL0exeuwtrbO1/HFTatqnErTWnUFJRKJ0K5dO6xduxa2traIi4vDokWLsGPHjgIPPyUi0nSGhobZPj5PHnIq+3mfpbyUzS9FrdCVK1ey3B8eHo7169ejbdu2+O6775TbXVxckJaWhocPH6qU9/Pzg0wmQ+fOnTOdq2PHjtDR0VFJNO/fv4+RI0eicePGOHr0KAwMDLBy5cp8v56wsDAYGxvDzs4u3+coTlqVOG3cuBEnT57McRSCtqlatSpWrVqFrl27AulzbuTU2ZCIiITVsmVLNGvWDLt371aZLkAqleLkyZMYNGgQvvzyS6xZs0bluK+++go6OjrKPlIAIJPJcOTIEVhaWqJp06aZrlW+fHk0btwYFy9exNu3b/H48WOMGDECjo6O2LBhAypUqIDRo0fj7NmzuH79er5ez40bN9C0aVOV/lGarGRESUVKX18fo0ePRoMGDWBra6usppZKpdDR0eFiwUREGkQkEmHz5s1Ys2YNpkyZAjMzM5QvXx4vX76ElZUVPD090a9fv0xNjhUrVkSLFi3wxx9/YODAgQCAf/75B1FRUTA3N8fgwYOzvN6rV6+QlpaGn3/+GSdOnICtrS02b96srJkbNmwYfvvtNyxbtgz+/v55Gmx0//59PHr0CF5eXgV6T4oTEydS+rx/0/bt2/Hx40eMHz8epqamgsVFRESqjIyMMGfOHEyfPh1PnjyBRCJB+fLlcx3OP2LECAwdOhSPHj1CrVq1UKtWLbW7ryQkJKBt27awt7eHkZGRcruhoSH27duHN2/eIDU1FYaGhmq/jsOHD6NGjRrZTsqpiZg4UZaioqJw9uxZpKWlITw8HFOnToWDg4PQYRERUQb6+vqoW7eu2uWbNGmCVq1aYcOGDdiwYQNsbGxU5mjKr6pVq6Jq1ap5OubNmzc4dOgQNm3aVKKmxCk5kVKxqlSpElasWIGKFSsiOjoas2bNwoEDB7IckkpERCXH0qVLMWzYMKHDgFgsxt69e0tUbROYOFFOateujXXr1qF169aQyWTYv38/Zs+ejejoaKFDIyKifLKyskLDhg2FDgPlypWDi4uL0GHkGRMnypGxsbFyjSEjIyOEhYVh9uzZrHkiIiKtxD5OpJbWrVujbt26WLNmDXr37s0pC4iISCsxcSK1VapUSWUBRwC4ffs2LCwsYGtrK2hsRERExYGJE+VJxqQpJiYGq1atQnJyMoYPH47OnTtzziciIirV2MeJ8k1PTw9169aFRCLB9u3bsWTJkmxXBSciIioNmDhRvpmbm2POnDkYM2YM9PT0cP36dXh4eCA4OFjo0IiIiIqEVjXVTZw4ERYWFnB3d+d6dYVEJBKhS5cucHR0xKpVq/Dy5UvMmzcPPXv2xJAhQ9h0R0SCSklJEToEKkRyuRwpKSl5Xg6sMO8DrUqcNm7cqBFzV5RGtra2WLt2LXbu3IkzZ84gISGBSRMRCUYsFkMkEiEyMlLoUKgQyeVySCQS6Onp5fk7RiQSFcqIcK1KnKhoGRgYYPz48fjyyy/h5OSk3J6amqpcDJKIqDjo6emhZs2anHOulJFKpbh//z5q1aqV5yRILBZDT0+vwDEwcaJC5+rqqvy/TCbDjz/+CCsrK4wdOxbGxsaCxkZE2kNPT69QvihJcygSYUNDQ8HmE2TiREXqwYMHuHv3LmQyGe7fvw8vLy/Url1b6LCIiIjyhaPqqEjZ29tj6dKlsLa2RlRUFKZPnw5/f3/IZDKhQyMiIsozJk5U5BwcHLB+/Xq4ublBKpXi119/xfz58xEbGyt0aERERHnCxImKhampKWbMmIEJEyZAX18fwcHBWLlypdBhERER5QkTJyo2IpEI7dq1w9q1a2FnZ4fRo0cLHRIREVGeMHGiYle1alWsWrUKNWvWVG77+++/8fLlS0HjIiIiyg1H1ZEgMk5c9ujRI2zYsAFisRijR4/Gt99+y8kziYhII7HGiQRnZWUFR0dHpKSkYNOmTVi5ciUSEhKEDouIiCgTJk4kOCsrKyxcuBBDhw6FWCzGlStXMGnSJISFhQkdGhERkQomTqQRdHR00KtXL6xYsQIVK1ZEdHQ0Zs2ahcOHDwsdGhERkRITJ9IodnZ2WLduHVq3bg2ZTMblEoiISKNoVefwiRMnwsLCAu7u7nB3dxc6HMqGsbExPD090apVKzg7Oyu3JyYmcq07APK0ZKQlPFWrrK6pLSBi8klEVFi0KnHauHEjGjZsKHQYpKYGDRoo/5+cnIypU6eiXr16GDVqFAwMDASNTUhpCU8Re6aNWmWt2p+DjpldkcdERKQt2FRHJcLNmzcRGRmJM2fOYMqUKXj6VL0aFyIiosLExIlKBDc3NyxatAhWVlaIiIiAl5cX/vjjD8jlcqFDE5SF23ZYtT+n8rBw2y50WEREpRYTJyoxnJ2dsX79ejRu3BgSiQTbt2/H4sWLERcXJ3RoghGb1YReGXuVh9isphpHEhFRfjBxohLFwsICc+fOxZgxY6Cnp4fAwEDs3LlT6LCIiEhLaFXncCodRCIRunTpAkdHR+zYsQPDhw8XOiQiItISrHGiEsvW1hZLly6FlZWVcltAQACioqIEjYuIiEov1jhRqXH16lXs3r0bBw4cwA8//IBWrVoJHVKRk8Y/VmsbEREVDiZOVGrUrl0bDg4OCAsLg4+PD27duoWxY8eW6kkz466OEToEIiKtwqY6KjWsra2xZMkSDBgwADo6Orhw4QI8PT3x8OFDoUMjIqJSgjVOVKqIxWIMGDAAzs7OWLNmDaKiojB9+nSMHj0anTp1Ejq8QqFragur9ufULisr8oiIiLQHEycqlRwcHLB+/Xps2rQJV69eRbly5YQOqdCIdA2hV8Ze/QOk0qIMh4hIqzBxolLL1NQUM2bMwP3792Fv//+JxsePH2Fubi5obEREVDKxjxOVaiKRSCVpevfuHX744Qfs2LEDEolE0NiIiKjkYeJEWiUwMBDx8fE4fvw4vLy8EBERIXRIRERUgjBxIq3SsWNHzJ07F+bm5nj69Ck8PT3x559/av1iwUREpB4mTqR1XF1dsWHDBjg7OyM1NRWbNm3CihUrkJCQIHRoRESk4Zg4kVaysrLCwoULMWzYMIjFYly9ehVHjhwROiwiItJwWjWqbuLEibCwsIC7uzvc3d2FDocEpqOjg549e8LJyQkHDx5Ev379hA6JiIg0nFYlThs3bkTDhg2FDoM0TO3atTFnzhzlc6lUij179qBLly6wtrYWNDYiItIsbKoj+szvv/+OgIAAeHh44OrVq0KHQ0REGoSJE9Fn3NzcYGdnh0+fPmH58uXYvHkzUlJShA6LiIg0ABMnos9UqlQJy5cvR69evSASiXDmzBlMmTIFT58+FTo0IiISGBMnoizo6upi6NChWLRoEaysrBAREQEvLy9cvHhR6NCIiEhATJyIcuDs7IwNGzbA1dUVAPDFF18IHRIREQlIq0bVEeWHubk55syZg2fPnsHW1la5PSYmBmXLlhU0NiIiKl6scSJSg0gkUkmaHj58iNGjR+PXX39FWlqaoLEREVHxYeJElA83btxAWloa/P394e3tjaioKKFDIiKiYsDEiSgf+vfvD29vb5iYmCA8PByTJ0/GhQsXhA6LiIiKGBMnonxyc3PDhg0b4ODggKSkJKxduxY+Pj5ITEwUOjQiIioiTJyICsDa2hpLlizBwIEDoaOjg7///huXLl0SOiwiIioiHFVHVEBisRj9+/dH/fr1cf78ebRr107okIiIqIiwxomokDg4OGDChAnQ0fnfj1VSUhI2bdqE2NhYoUMjIqJCwsSJqIjs3r0bf/75Jzw8PBAYGCh0OEREVAiYOBEVka5du8LW1hYfP37Ejz/+iB07diA1NVXosIiIqACYOBEVkapVq2LVqlXo2rUrAOD48eOYNm0aIiIihA6NiIjyiYkTURHS19fH6NGjMXfuXJibm+Pp06fw9PTEjRs3hA6NiIjygYkTUTFwdXXFhg0b4OzsDCMjI9SoUUPokIiIKB84HQFRMbGyssLChQvx5s0bWFpaKrdHRkaicuXKgsZGRETqYY0TUTHS0dFBpUqVlM8vX76McePG4bfffoNUKhU0NiIiyh0TJyIBhYWFQSaT4bfffsPs2bMRHR0tdEhERJQDJk5EAhozZgymTJkCIyMjhIWFwcPDA1evXhU6LCIiyoZWJU4TJ05Ep06d4OvrK3QoREqtWrXCunXrYGdnh0+fPmH58uXYtGkTUlJShA6NiIg+o1WJ08aNG3Hy5Em4u7sLHQqRikqVKmH58uXo1asXRCIR/vzzT4SFhQkdFhERfYaj6og0hK6uLoYOHQoXFxfcu3cPDRo0EDokIiL6jFbVOBGVBM7Ozujfv7/yeXR0NNasWYO4uDhB4yIiIiZORBpv48aNuHjxIiZNmoTg4GChwyEi0mpMnIg03PDhw1G1alXExsZi3rx5+PXXX5GWliZ0WEREWomJE5GGs7W1hY+PDzp06AC5XA5/f3/MmDEDUVFRQodGRKR1mDgRlQAGBgYYN24cvL29YWJigocPH2Ly5Ml48OCB0KEREWkVjqojKkHc3NxQu3ZtrFmzBp8+fUL16tWFDomISKswcSIqYaytrbFkyRLExcXBwMAAACCVSvHy5UtUq1ZN6PCIiEo1NtURlUBisRhWVlbK5/7+/vD09MTRo0chl8sFjY2IqDRj4kRUwsnlcjx//hxpaWnYtWsXFi9ejI8fPwodFhFRqcTEiaiEE4lE8PLywvfffw89PT0EBgZi8uTJCA0NFTo0IqJSh4kTUSkgEonQqVMnrFq1CjY2Nnj37h1mz56NQ4cOQSqVCh0eEVGpwcSJqBSpUaMGfHx80KpVK8hkMhw8eBCvX78WOiwiolKDo+qIShkjIyN4enrC2dkZUqkUNjY2iI6OFjosIqJSgYkTUSkkEonQpk0bIH2qAgAIDw/HjRs3MGDAAIjFYoEjJCIqmZg4EWmBtLQ0+Pj44M2bNwgJCYGXlxfKlSsndFhERCUO+zgRaQFdXV0MGjQIRkZGCAsLw6RJkxAYGCh0WEREJQ4TJyIt0bx5c6xduxa1atVCfHw8fvzxR+zatQsSiUTo0IiISgwmTkRapHLlylixYgW6du0KADh69Ci8vb2RkJAgdGhERCUCEyciLaOnp4fRo0dj1qxZMDU1hYWFBUxMTIQOi4ioRGDncCIt1bRpU9SsWRMGBgYQiUQAgOTkZOjo6EBfX1/o8IiINBITJyItZm1trfJ869atePbsGaZNm4YqVaoIFhdpFnlaMtISnuZYRiaTQjf5KeTSuoCYNZhUejFxIiIAQGxsLG7evIm4uDhMmTIFP/zwA1q3bi10WKQB0hKeIvZMm1zLlZVIILW/AF2resUSF5EQ2MeJiAAAVlZWWLduHZycnJCcnIy1a9di/fr1SE5OFjo0IiKNwRonIlIqW7YsFi1ahMOHD+PAgQM4d+4cwsPDMW3aNFSvXl3o8EgDWLhth9ispso2afxjxF0dI1hMRMWJNU5EpEIsFqN///5YvHgxrKysEBERgcWLFyMtLU3o0EgDiM1qQq+Mvcrj80SKqDRj4kREWapXrx7Wr1+Pxo0bY/z48dDVZQU1ERF/ExJRtiwsLDB37lzldAUAEBgYCEtLS9SqVUvQ2IiIhMDEiYhylDFpioqKwpo1a5Camorhw4ejS5cuKvuJiEo7NtURkdrMzMxQv359pKWlYceOHVi6dCni4+OFDouKkTT+MSQf7qk8pPGPhQ6LqNiwxomI1GZqaoqZM2fixIkT+Pnnn/Hff/9h8uTJ8PLygr29vdDhUTHg6DnSdqxxIqI8EYlE6NKlC1atWoVKlSohOjoaM2fOhL+/v9ChEREVOa2qcZo4cSIsLCzg7u4Od3d3ocMhKtFq1qyJtWvXYuvWrbh48SLev38vdEhURHRNbWHV/lyOZWQyKe7fu4+KprbFFheRELQqcdq4cSMaNmwodBhEpYaxsTGmTJmCr776Cq6ursrtUqkUYrFY0Nio8Ih0DaFXJuemWKlUijTDFIjEhsUWF5EQ2FRHRAUiEong5uYGPT09IP0LdO7cudi/fz+kUqnQ4RERFSqtqnEioqL333//ISQkRPmYOnUqypYtK3RYRESFgjVORFSo3NzcMGXKFBgZGSEkJASTJk3CjRs3hA6LiKhQMHEiokLXqlUr+Pj4wNbWFh8/fsTChQuxe/durndHRCUeEyciKhI2NjZYtWoVOnfuDAAICAjA5s2bhQ6LiKhAmDgRUZHR19fH2LFj4e3tjbJly6Jnz55Ch0REVCDsHE5ERc7NzQ2urq7KkXcAcOvWLTg6OkJfX1/Q2IiI8oI1TkRULDImTaGhoVi4cCGmT5+OyMhIQeMiIsoLJk5EVOxSU1NhYmKCJ0+ewNPTExcvXhQ6JCIitTBxIqJi16BBA6xfvx6Ojo5ISkrCmjVrsHHjRqSkpAgdGhFRjpg4EZEgypUrh8WLF6N///4QiUQ4e/Yspk6dihcvXggdGhFRtpg4EZFgxGIxBg4ciEWLFsHS0hIvXrxASEiI0GEREWWLo+qISHDOzs5Yt24dzp07h44dOwodDhFRtljjREQawdLSEr1794ZIJAIAfPr0CQsWLMCTJ0+EDo2ISIk1TkSkkfbu3YubN2/i7t27GDFiBDp16qRMqoio9JKnJSMt4WmW+2QyKXSTnyItzgAyHTF0TW0h0jUs1viYOBGRRho4cCDevXuH69evY9u2bbhz5w4mTpwIU1NToUMjoiKUlvAUsWfaZLu/rESCDy//Ny+cVftz0CtjX4zRsamOiDSUubk5Zs+ejZEjR0JXVxfXrl3D5MmT8eDBA6FDIyItxhonItJYIpEI3333HRwcHLBq1Sq8fv0a3t7emD59Or766iuhwyOiImbhth1is5rK5zKZFA+D/4L125WCxcQaJyLSeLVr18batWvRvHlzlClTBo6OjkKHRETFQGxWE3pl7JUPXQt7SPWrCBoTa5yIqEQwMTHBtGnT8P79e5ibmyu3v3z5ElWqCPuLlIi0B2uciKjEEIlEsLKyUj4/d+4cJkyYgIMHD0IqlQoaGxFpByZORFRiPXz4EDKZDL6+vpg/fz5iY2OFDomISjkmTkRUYn3//feYPHkyDA0NcefOHUyaNAm3bt0SOiwiKiTS+MeQfLinfKTF3YM49aWgMbGPExGVaN988w3s7OywcuVKPHv2DAsWLECvXr3g7u4OsVgsdHhEVABxV8dk2lZGIgH09ASJB6xxIqLSoEqVKli1ahU6duwIuVwOPz8/zvdEREWCNU5EVCoYGBjghx9+gJOTEyIjI+Hg4CB0SESUD7qmtrBqfy7LfTKZFPfv3Udd+7rQSV9ypdjjK/YrEhEVoebNm6s8f/36Nc6cOYOBAwdCT8DqfSJSj0jXMNtlVKRSKdIMU6BrYS9YUzwTJyIqtWQyGVatWoWHDx8iODgY06ZNQ6VKlYQOi4hKMPZxIqJSS0dHB/369YOZmRkePXoET09PXL58WeiwiKgEY+JERKXal19+iXXr1sHe3h6JiYlYuXIltmzZgpSUFKFDI6ISiIkTEZV61tbWWLp0Kfr06QORSITTp0/Dy8sLMTExQodGRCUMEyci0gpisRiDBw/GggULYGFhAT09PZU174iI1MHO4USkVRo0aIANGzYgNTVVOcpOKpUiNTUVRkZGQodHRBqONU5EpHUsLS1RoUIF5fPffvsNU6ZMwdOnTwWNi4g0HxMnItJqiYmJOH/+PF69egUvLy+cOnUKcrlc6LCISEMxcSIirWZsbIx169ahcePGkEgk2Lp1K1auXIlPnz4JHRoRaSAmTkSk9czNzTFnzhwMHz4cYrEYV65cgaenJx4+fCh0aESkYZg4ERGlT5bZo0cPLF++HOXLl8fr168xb948JCYmCh0aEWkQJk5ERBnUqVMH69atg5ubG0aNGgVjY2OhQyIiDcLpCIiIPmNqaooZM2aobLt37x7kcjkcHBwEi4uIhMfEiYgoCyKRSPn/jx8/YuXKlXj//j3c3d3Rq1cv6Oiwwp5IG/Enn4goF7q6uqhXrx5kMhn27t2LBQsW4P3790KHRUQCYOJERJQLY2NjTJkyBR4eHtDX18ft27cxefJkBAcHCx0aERUzJk5ERGoQiURo27YtfHx88MUXX+D9+/eYN28efH19IZVKhQ6PiIoJEyciojz44osvsGbNGrRr1w5yuRwRERHs70SkRdg5nIgojwwMDDBhwgQ0bNgQ9evXV3Ykl8lkTKKISjn+hBMR5ZObmxtMTU0BAHK5HGvWrMHu3bshkUiEDo2IighrnIiICsG9e/fwzz//AABCQ0Mxbdo0VKhQQeiwiKiQlcgap7S0NFy4cAE7d+7E8ePHuSQCEQnOwcEBs2bNgomJCcLDwzF58mRcvXpV6LCIqJCVuMQpIiIC3bp1w8GDBxETEwNfX1+0a9cOERERQodGRFquadOmWL9+PerUqYNPnz5h+fLl+Omnn5Camip0aERUSEpc4qSvr49t27bhp59+wowZM7B//36UL18ee/fuFTo0IiKUL18ey5YtQ69evQAAJ0+exPLly4UOi4gKSYH6OCUmJkIkEsHIyEit8mlpadDVLVi3qs/7DOjo6MDMzAwymaxA5yUiKiy6uroYOnQo6tWrhw0bNqBnz55Ch0REhSTPWcydO3dw9uxZnD17Fk+fPkWFChVw6dKlbMs/ffoUK1aswJUrVyCRSGBra4uRI0eid+/eKuWCgoJw7dq1bM9Ts2ZNdOrUKdP2a9eu4ebNm5g2bVpeXwoRUZFq1KgRtm/fDgMDA+W2sLAw1KhRA4aGhoLGRkT5k6fEKS0tDX369FG7fGRkJAYOHIjY2Nj/XUxXF0+ePMHs2bORlJSEwYMH5z3iDIKDgzFp0iQsXLgQ9erVK9C5iIiKQsak6eXLl5g/fz7Kly+P6dOno1q1aoLGRkR5l6fESSQSwcnJCd9++y3atm2L77//HikpKdmWX79+PWJjY9G5c2fMnTsXFhYW+PPPPzFt2jT4+Piga9euKFOmDACgcePGaNy4sdqxXL9+HePHj8ecOXPw3Xff5eVlEBEJIiEhASYmJoiIiMDUqVMxZswYfPvtt8oJNIlI8+Wpc7hYLIafnx/Gjh2LmjVr5lg2NTUVf/75J6ysrLBs2TJYWlpCR0cHHTp0wLBhw5CYmIjz58/nK+hLly5h3LhxWLx4MZMmIiox6tati3Xr1qFhw4ZITU3Fpk2bsHr1ak6pQlSCFNkEmE+ePEFiYiLatm2rUlUNAG3btsX27dsREhKS506T9+7dw7hx4+Di4oLw8HCEh4cD6etH5ZZExcfHIy4uTvlcX18f+vr6ebp+YVIsDMoFQqko8T7TLGZmZpg9ezaOHj2Kffv24Z9//sHDhw/h5eWV6x+kmoz3GRWHorrP8nK+Ikuc3rx5AwBZtuFXrVpVpUxeGBoaYuzYsfmKaciQISodMnv27Jmpk7oQ7t69K3QIpAV4n2kWW1tbDBs2DP7+/nj9+jV+//13tGnTRuiwCoz3GRWHwr7PFJUw6iiyxEkx4dvntU0AlNMXJCcn5/m8tra2mDhxYr5i2rNnD1xcXJTPNaHG6e7du3BycoJYLBYsDirdeJ9pLhcXF7Rq1QrHjh1D//79S/Tnw/uMikNR3Wd5mdKoyBInRc1OUlJSpn2K9nx1538qLGZmZrCwsCjWa6pDLBbzFw0VOd5nmqlMmTIYMmSI8rlEIsGaNWvQvXt31K1bV9DY8oP3GRWHwr7P8nKuIps5vFKlSkD6PE6fU2xTlCEiov8JCAjA1atX4e3tDX9/f07uS6Rhiixxql69OszMzHD58mUkJCSo7Dt9+jQAoH79+kV1eSKiEqlLly74+uuvIZPJ8Ouvv2LhwoX48OGD0GERUbo8J07Jycn49OkTPn36BLlcDrlcrnyesc+Srq4uOnfujI8fP2LSpEl49OgRYmJisG/fPuzfvx8WFhZo3bp1Yb8eIqISzdjYGF5eXpgwYQL09fVx69YtTJ48mZ2uiTREnvs4DR8+HDdv3lTZ1rBhQwCAo6Mjjhw5otw+ceJEXLx4EZcvX0bnzp1Vjpk1axZMTU3zHzkRUSklEonQrl072NnZYdWqVYiIiMDcuXMxbtw4tGvXTujwiLRanmucjIyMYGxsnOXj887e5cqVw8GDB9G7d29UrlwZlpaWcHV1xU8//YTu3bsX5usgIip1qlevjjVr1qBNmzYwMDCAk5OT0CERab081zj9/PPPeSpfoUIFLFmyJK+XKRITJ06EhYUF3N3d4e7uLnQ4RES5MjQ0xKRJkzBw4EBYW1srt0dFRXGADZEAimw6Ak20ceNGZbMiEVFJkjFpun37NhYsWIAePXrA3d0durpa9aucSFBFNqqOiIiKRmhoKGQyGfz9/TFr1iy8fftW6JCItAYTJyKiEsbd3R3e3t4wMTHB/fv3MXnyZPz7779Ch0WkFZg4ERGVQG5ubli7di3s7OyQkJCApUuXYseOHZBIJEKHRlSqMXEiIiqhKlasiGXLlilHKR8/fhyBgYFCh0VUqrFHIRFRCaanp4cRI0bAyckJt2/fxldffSV0SESlGmuciIhKAVdXV4wePRoikQgA8PHjR/z6669ISUkROjSiUoWJExFRKbRx40b4+/vDy8sLL168EDocolKDiRMRUSnUuXNnlClTBs+fP8fUqVNx7tw5yOVyocMiKvG0KnGaOHEiOnXqBF9fX6FDISIqUi4uLli/fj2cnZ2RkpKC9evXY926dUhKShI6NKISTasSp40bN+LkyZNcboWItIKlpSUWLlyIQYMGQUdHBxcuXMCUKVPw6tUroUMjKrG0KnEiItI2Ojo66Nu3L5YuXYpy5cpBIpHAwsJC6LCISixOR0BEpAUcHBywbt06vH//HqampgAAuVyO5ORkGBkZCR0eUYnBGiciIi1hbm6OatWqKZ+fOXMGEydORHh4uKBxEZUkTJyIiLSQVCrF8ePH8fbtW8yYMQMBAQGQyWRCh0Wk8Zg4ERFpIbFYjJUrV6JZs2aQSqXYvXs3Fi9ejI8fPwodGpFGY+JERKSlTExMMH36dIwbNw56enoICgrCpEmTEBoaKnRoRBqLiRMRkRYTiUTo0KEDVq9eDRsbG8TExGDu3LmIiYkROjQijcRRdUREBFtbW/j4+OCnn35CpUqVULZsWaFDItJITJyIiAgAYGRkBE9PT5WlWV6+fIno6Gg0aNBA0NiINAUTJyIiUiESiQAAKSkpWLlyJZ4/f47evXtj4MCBEIvFQodHJCit6uPEteqIiPKmbt26kMvlOHz4MGbPno3o6GihQyISlFYlTlyrjohIfQYGBhg3bhymTZsGIyMjhIWFYfLkybh+/brQoREJRqsSJyIiyruvv/4aa9euRa1atRAfH4/Fixdj165dkEgkQodGVOyYOBERUa4qV66MFStWoFu3bgCABw8eQEeHXyGkfdg5nIiI1KKnp4dRo0bByckJNWrUUHYUzzgKj6i0Y+JERER50qRJE5Xnu3fvhkQigYuLi2AxERUXJk5ERJRvEREROHr0KORyOW7duoUqVarAxsZG6LCIigwbqImIKN+qVq2KOXPmwNTUFJGRkZg6dSquXr0qdFhERYaJExERFYirqyt8fHxQpUoVJCYmYvny5dixYwdH3VGpxMSJiIgKzNraGsOGDUOPHj0AAMePH8fChQvZcZxKHSZORERUKMRiMYYMGYK5c+fCzMwM7dq1Uy7fQlRasHM4EREVKldXV2zbtg2mpqbKbREREahYsSL09PQEjY2ooFjjREREhS5j0vT+/XvMnj0bM2bMwOvXrwWNi6igtCpx4iK/RETFLyoqClKpFI8ePYKnpydH3VGJplWJExf5JSIqfg4ODli3bh3q1q2LT58+cdQdlWhalTgREZEwrK2tsXTpUvTs2RNIH3XHpjsqiZg4ERFRsdDV1cWwYcOUo+4ePXoEf39/ocMiyhMmTkREVKxcXV2xbt06tG7dGiNGjBA6HKI8YeJERETFztraGp6enjAyMgIAyOVy/Prrr2y6I43HxImIiAR34sQJ+Pv7Y/LkyRx1RxqNiRMREQmuSZMmqFu3rnKtu+3bt3PUHWkkJk5ERCS4z0fd/fHHHxx1RxqJiRMREWmErEbdTZ48GYGBgUKHRqTExImIiDSKYtRd3bp1kZKSAjMzM6FDIlLiIr9ERKRxFE139+/fR926dZXbU1NToa+vL2hspN1Y40RERBpJV1cX9erVUz5/9uwZRo8ezVF3JCgmTkREVCL8/vvveP/+PZYvX45t27Zx1B0JgokTERGVCBMmTECvXr2A9HmfZsyYgaioKKHDIi2jVYnTxIkT0alTJ/j6+godChER5ZGuri6GDh2KefPmKUfdeXp6sumOipVWJU4bN27EyZMn4e7uLnQoRESUT40bN1aOulNMmHnjxg2hwyItwVF1RERU4ihG3fn6+uLRo0dwcXEROiTSEkyciIioRFI03UmlUojFYiB9uoK7d++iUaNGQodHpZRWNdUREVHpo0iaAGDnzp1YuHAhR91RkWHiREREpYJcLoeJiQnAUXdUhJg4ERFRqSASibIcdXflyhWhQ6NShIkTERGVKopRd/b29khMTMSKFSvYdEeFhokTERGVOtbW1liyZIlywsyLFy/iw4cPQodFpQBH1RERUamkGHXn6OgIpCdTRAXFxImIiEq1xo0bqzwPDAzEjRs3MHLkSOjp6QkWF5VMTJyIiEhrJCYmYv369fj48SMePHiA6dOno1KlSkKHRSUI+zgREZHWMDY2xuTJk2FmZobHjx/D09MTly9fFjosKkGYOBERkVZp3Lgx1q9frxx1t3LlSvz0008cdUdqYeJERERap1y5ciqj7k6ePInp06cjOTlZ6NBIwzFxIiIiraQYdaeYMLNWrVowNDQUOizScOwcTkREWk3RdGdmZqbcFh8fD0NDQ466o0xY40RERFqvXLlyMDAwAABIpVKsXLkS06dP51p3lAkTJyIiogxev36NJ0+ecNQdZUmrEqeJEyeiU6dO8PX1FToUIiLSUDY2Nhx1R9nSqsRp48aNOHnyJNzd3YUOhYiINFh2o+7YdEdalTgRERGp6/NRd48fP8aqVasgl8uFDo0ExMSJiIgoB4pRd87OzpgwYQJEIpHQIZGAmDgRERHloly5cvjxxx9Ro0YN5bZ//vmHTXdaiIkTERFRHj18+BBr167lqDstxMSJiIgojywtLVG7dm2VUXepqalCh0XFgIkTERFRHpUrVw5Lly5F7969gfRRdzNmzGDTnRZg4kRERJQPYrEYQ4YMwfz585Wj7jw9PXHlyhWhQ6MixMSJiIioABo1aoT169fDwcEBiYmJePPmjdAhURHiIr9EREQFpJgw8++//0br1q2V2+VyOacvKGVY40RERFQIxGIx2rRpAx2d/321JiUlYdq0aRx1V8owcSIiIioCx48fR3h4OEfdlTJMnIiIiIpAr169VEbdTZ8+HZGRkUKHRQXExImIiKgIfD7q7smTJ5wwsxRg4kRERFSEMo66S0pKwsqVK3HixAmhw6J8YuJERERUxBSj7nr37g1LS0t89dVXQodE+cTEiYiIqBgomu42b94MKysr5fbHjx8LGhflDRMnIiKiYmRqaqr8/+XLl+Hp6YmtW7dy1F0JwcSJiIhIIIpRdqdOncK0adM46q4EYOJEREQkkL59+2L+/PkwNzfH06dPOequBGDiREREJKBGjRph3bp1KqPu2HSnuZg4ERERCSzjqDukN92FhoYKHRZlgYv8EhERaQDFqDtHR0c8ePAADRo0EDokyoJW1ThNnDgRnTp1gq+vr9ChEBERZalRo0YYOHCg8vm7d++we/duNt1pCK2qcdq4cSMaNmwodBhERERqkcvlWL16NcLCwhAcHIzp06ejcuXKQoel1bSqxomIiKgkEYlE6NOnD8zNzbnWnYZg4kRERKTBslrr7qeffmLTnUCYOBEREWm4smXLYsmSJejTpw8A4OTJk5g+fTrevXsndGhah4kTERFRCSAWizF48GDlhJlSqRRmZmZCh6V1tKpzOBERUUmnaLpLSUmBgYEBAEAmkyEtLQ36+vpCh1fqscaJiIiohClbtqzK6Dp/f3+udVdMmDgRERGVYElJSfjjjz+Ua939888/QodUqjFxIiIiKsGMjIzg4+MDR0dHJCUlYdWqVVzrrggxcSIiIirhypYti8WLF6Nv375A+lp3bLorGkyciIiISgGxWIxBgwZhwYIFMDc3x9OnTzF9+nQkJSUJHVqpwsSJiIioFGnYsCHWr18PR0dHDBw4EEZGRkKHVKpwOgIiIqJSRtF0p6Pz//UjT548gaGhIde6KyDWOBEREZVCYrEYIpEIAJCQ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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = common.fig_single()\n", "\n", "analytical_error_prof: list[float] = []\n", "numerical_error_prof: list[float] = []\n", "N_list: list[int] = []\n", "analytical_func = get_poiseuille_pipe_analytical_func()\n", "\n", "for sim_cfg in sim_cfgs_use:\n", " num_data = extracted_data[(sim_cfg.sim_id, sim_cfg.name)]\n", " num_avg_vel = get_poiseuille_pipe_numerical_avg_vel(num_data[\"data\"])\n", " num_pos = num_data[\"pos\"][:, 1].copy()\n", " R = num_pos.max() - num_pos.min()\n", " normalize_pos(num_pos)\n", " num_profile = num_data[\"data\"] / num_avg_vel\n", "\n", " num_o2_error = common.get_o2_error(num_pos, num_profile, analytical_func)\n", " analyical_error = (\n", " num_o2_error if len(analytical_error_prof) == 0 else analytical_error_prof[-1] / 4\n", " )\n", "\n", " analytical_error_prof.append(analyical_error)\n", " numerical_error_prof.append(num_o2_error)\n", " N_list.append(R)\n", "\n", "ax.plot(N_list, numerical_error_prof, **common.markers.sim(shape=\"s\"), label=\"AeroSim\")\n", "ax.plot(\n", " N_list,\n", " analytical_error_prof,\n", " **common.markers.exp_line(linestyle=\"--\"),\n", " label=r\"$O(\\Delta x^2)$\",\n", ")\n", "\n", "ax.set_yscale(\"log\")\n", "ax.set_xscale(\"log\", base=2)\n", "ax.set_title(\n", " r\"Poiseuille $O(\\Delta x^2)$ (Periodic)\"\n", " + f\"\\n({sim_cfg.models.LBM.vel_set} {sim_cfg.models.LBM.coll_oper})\"\n", ")\n", "ax.legend()\n", "plt.tight_layout()\n", "plt.show(fig)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The results show that the flow evolution equation from LBM converges to steady analytical solution.\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Version" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2026-06-19T18:47:11.987758Z", "iopub.status.busy": "2026-06-19T18:47:11.987557Z", "iopub.status.idle": "2026-06-19T18:47:12.066680Z", "shell.execute_reply": "2026-06-19T18:47:12.065749Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Version: 2.0.1a0\n", "Commit hash: 393bce29ecf6abfa9bb7b9a302e957a62556cbcc\n" ] } ], "source": [ "sim_info = sim_cfg.output.read_info()\n", "\n", "nassu_commit = sim_info[\"commit\"]\n", "nassu_version = sim_info[\"version\"]\n", "print(\"Version:\", nassu_version)\n", "print(\"Commit hash:\", nassu_commit)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Configuration" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2026-06-19T18:47:12.068722Z", "iopub.status.busy": "2026-06-19T18:47:12.068531Z", "iopub.status.idle": "2026-06-19T18:47:12.216029Z", "shell.execute_reply": "2026-06-19T18:47:12.215065Z" } }, "outputs": [ { "data": { "text/html": [ "
simulations:\n",
       "  - name: periodicPoiseuillePipeN16\n",
       "    save_path: ./validation/analytical/03_poiseuille_pipe_flow/results/periodic\n",
       "    n_steps: 2000\n",
       "    report:\n",
       "      frequency: 1000\n",
       "\n",
       "    data:\n",
       "      divergence: {frequency: 50}\n",
       "      exports:\n",
       "        default:\n",
       "          macrs: [rho, u, f_IBM, S]\n",
       "          interval:\n",
       "            frequency: 0\n",
       "            lvl: 0\n",
       "          target:\n",
       "            volume: {}\n",
       "          outputs:\n",
       "            instantaneous: true\n",
       "        plane_series:\n",
       "          macrs: [rho, u]\n",
       "          interval: {frequency: 2000, lvl: 0}\n",
       "          target:\n",
       "            planes:\n",
       "              # Cross-section normal to the streamwise (x) flow at mid-domain.\n",
       "              # Exported as a triangle surface so ParaView renders the parabolic\n",
       "              # pipe velocity profile as a plane instead of a point cloud. With\n",
       "              # min/max omitted the plane spans the full domain; each case below\n",
       "              # only overrides axis_pos for its own mid-domain x position.\n",
       "              cross_section:\n",
       "                axis: x\n",
       "                axis_pos: 12\n",
       "                dist: 1\n",
       "\n",
       "          outputs:\n",
       "            instantaneous: true\n",
       "    domain:\n",
       "      domain_size:\n",
       "        x: 24\n",
       "        y: 24\n",
       "        z: 24\n",
       "      block_size: 8\n",
       "\n",
       "      bodies:\n",
       "        cylinder:\n",
       "          geometry_path: fixture/stl/basic/cylinder.stl\n",
       "          small_triangles: add\n",
       "          transformation:\n",
       "            scale: [8, 8, 8]\n",
       "            translation: [-4, 4, 4]\n",
       "\n",
       "    models:\n",
       "      precision:\n",
       "        default: single\n",
       "\n",
       "      LBM:\n",
       "        tau: 0.8\n",
       "        F:\n",
       "          x: 6.25E-05\n",
       "          y: 0\n",
       "          z: 0\n",
       "        vel_set: D3Q27\n",
       "        coll_oper: RRBGK\n",
       "\n",
       "      engine:\n",
       "        name: CUDA\n",
       "\n",
       "      IBM:\n",
       "        forces_accomodate_time: 1000\n",
       "        body_cfgs:\n",
       "          default: {}\n",
       "\n",
       "      BC:\n",
       "        periodic_dims: [true, false, false]\n",
       "        BC_map:\n",
       "          - pos: N\n",
       "            BC: RegularizedHWBB\n",
       "            wall_normal: N\n",
       "            order: 1\n",
       "\n",
       "          - pos: S\n",
       "            BC: RegularizedHWBB\n",
       "            wall_normal: S\n",
       "            order: 1\n",
       "\n",
       "          - pos: F\n",
       "            BC: RegularizedHWBB\n",
       "            wall_normal: F\n",
       "            order: 2\n",
       "\n",
       "          - pos: B\n",
       "            BC: RegularizedHWBB\n",
       "            wall_normal: B\n",
       "            order: 2\n",
       "\n",
       "  - name: periodicPoiseuillePipeN32\n",
       "    parent: periodicPoiseuillePipeN16\n",
       "\n",
       "    n_steps: 8000\n",
       "\n",
       "    data:\n",
       "      exports:\n",
       "        plane_series:\n",
       "          target:\n",
       "            planes:\n",
       "              # Mid-domain x for this domain size; bounds auto-span the full domain.\n",
       "              cross_section: {axis_pos: 20}\n",
       "\n",
       "    domain:\n",
       "      domain_size:\n",
       "        x: 40\n",
       "        y: 40\n",
       "        z: 40\n",
       "      block_size: 8\n",
       "      bodies: !not-inherit\n",
       "        cylinder:\n",
       "          geometry_path: fixture/stl/basic/cylinder.stl\n",
       "          small_triangles: add\n",
       "          transformation:\n",
       "            scale: [16, 16, 16]\n",
       "            translation: [-4, 4, 4]\n",
       "\n",
       "    models:\n",
       "      LBM:\n",
       "        F:\n",
       "          x: 7.8125E-06\n",
       "          y: 0\n",
       "          z: 0\n",
       "\n",
       "  - name: periodicPoiseuillePipeN64\n",
       "    parent: periodicPoiseuillePipeN16\n",
       "\n",
       "    n_steps: 32000\n",
       "\n",
       "    data:\n",
       "      exports:\n",
       "        plane_series:\n",
       "          target:\n",
       "            planes:\n",
       "              # Mid-domain x for this domain size; bounds auto-span the full domain.\n",
       "              cross_section: {axis_pos: 36}\n",
       "\n",
       "    domain:\n",
       "      domain_size:\n",
       "        x: 72\n",
       "        y: 72\n",
       "        z: 72\n",
       "      block_size: 8\n",
       "      bodies: !not-inherit\n",
       "        cylinder:\n",
       "          geometry_path: fixture/stl/basic/cylinder.stl\n",
       "          small_triangles: add\n",
       "          transformation:\n",
       "            scale: [32, 32, 32]\n",
       "            translation: [-4, 4, 4]\n",
       "    models:\n",
       "      LBM:\n",
       "        F:\n",
       "          x: 9.76563E-07\n",
       "          y: 0\n",
       "          z: 0\n",
       "\n",
       "  - name: periodicPoiseuillePipeN128\n",
       "    parent: periodicPoiseuillePipeN16\n",
       "\n",
       "    n_steps: 128000\n",
       "\n",
       "    data:\n",
       "      exports:\n",
       "        plane_series:\n",
       "          target:\n",
       "            planes:\n",
       "              # Mid-domain x for this domain size; bounds auto-span the full domain.\n",
       "              cross_section: {axis_pos: 68}\n",
       "\n",
       "    domain:\n",
       "      domain_size:\n",
       "        x: 136\n",
       "        y: 136\n",
       "        z: 136\n",
       "      block_size: 8\n",
       "      bodies: !not-inherit\n",
       "        cylinder:\n",
       "          geometry_path: fixture/stl/basic/cylinder.stl\n",
       "          small_triangles: add\n",
       "          transformation:\n",
       "            scale: [64, 64, 64]\n",
       "            translation: [-4, 4, 4]\n",
       "    models:\n",
       "      LBM:\n",
       "        F:\n",
       "          x: 1.22070E-07\n",
       "          y: 0\n",
       "          z: 0\n",
       "\n",
       "  - name: velocityNeumannPoiseuillePipeMultilevel\n",
       "    save_path: ./validation/analytical/03_poiseuille_pipe_flow/results/velocity_neumann_multilevel\n",
       "\n",
       "    n_steps: 32000\n",
       "\n",
       "    report:\n",
       "      frequency: 1000\n",
       "\n",
       "    data:\n",
       "      divergence: {frequency: 1}\n",
       "      exports:\n",
       "        default:\n",
       "          macrs: [rho, u, f_IBM, S]\n",
       "          interval:\n",
       "            frequency: 8000\n",
       "            lvl: 0\n",
       "          target:\n",
       "            volume: {}\n",
       "          outputs:\n",
       "            instantaneous: true\n",
       "        plane_series:\n",
       "          macrs: [rho, u]\n",
       "          interval: {frequency: 8000, lvl: 0}\n",
       "          target:\n",
       "            planes:\n",
       "              # Cross-section normal to the streamwise (x) flow; bounds omitted so\n",
       "              # the plane auto-spans the full domain on the in-plane axes.\n",
       "              cross_section:\n",
       "                axis: x\n",
       "                axis_pos: 52\n",
       "                dist: 1\n",
       "\n",
       "          outputs:\n",
       "            instantaneous: true\n",
       "    domain:\n",
       "      domain_size:\n",
       "        x: 104\n",
       "        y: 32\n",
       "        z: 32\n",
       "\n",
       "      block_size: 8\n",
       "      bodies_domain_limits:\n",
       "        start: [4, 8, 8]\n",
       "        end: [88, 40, 40]\n",
       "        is_abs: true\n",
       "      bodies:\n",
       "        cylinder:\n",
       "          geometry_path: fixture/stl/basic/cylinder.stl\n",
       "          small_triangles: add\n",
       "          transformation:\n",
       "            scale: [8, 8, 8]\n",
       "            translation: [4, 8, 8]\n",
       "      refinement:\n",
       "        static:\n",
       "          default:\n",
       "            bodies:\n",
       "              - body_name: cylinder\n",
       "                lvl: 1\n",
       "                normal_offsets: [-2, 0, 2]\n",
       "\n",
       "    models:\n",
       "      precision:\n",
       "        default: single\n",
       "\n",
       "      LBM:\n",
       "        tau: 0.51\n",
       "        vel_set: D3Q27\n",
       "        coll_oper: RRBGK\n",
       "\n",
       "      engine:\n",
       "        name: CUDA\n",
       "\n",
       "      BC:\n",
       "        periodic_dims: [false, 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: 2\n",
       "\n",
       "          - pos: E\n",
       "            BC: RegularizedNeumannOutlet\n",
       "            rho: 1.0\n",
       "            wall_normal: E\n",
       "            order: 2\n",
       "\n",
       "          - pos: N\n",
       "            BC: Neumann\n",
       "            wall_normal: N\n",
       "            order: 1\n",
       "\n",
       "          - pos: S\n",
       "            BC: Neumann\n",
       "            wall_normal: S\n",
       "            order: 1\n",
       "\n",
       "          - pos: F\n",
       "            BC: Neumann\n",
       "            wall_normal: F\n",
       "            order: 0\n",
       "\n",
       "          - pos: B\n",
       "            BC: Neumann\n",
       "            wall_normal: B\n",
       "            order: 0\n",
       "\n",
       "      IBM:\n",
       "        forces_accomodate_time: 1000\n",
       "        body_cfgs:\n",
       "          default: {}\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}{periodicPoiseuillePipeN16}\n", "\\PY{+w}{ }\\PY{n+nt}{save\\PYZus{}path}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{./validation/analytical/03\\PYZus{}poiseuille\\PYZus{}pipe\\PYZus{}flow/results/periodic}\n", "\\PY{+w}{ }\\PY{n+nt}{n\\PYZus{}steps}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{2000}\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}{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{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{exports}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{macrs}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{rho}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{u}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{f\\PYZus{}IBM}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{S}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{interval}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{target}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{volume}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{outputs}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{instantaneous}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{true}\n", "\\PY{+w}{ }\\PY{n+nt}{plane\\PYZus{}series}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{macrs}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{rho}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{u}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{interval}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{2000}\\PY{p+pIndicator}{,}\\PY{n+nt}{ lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{0}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{target}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{planes}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{c+c1}{\\PYZsh{} Cross\\PYZhy{}section normal to the streamwise (x) flow at mid\\PYZhy{}domain.}\n", "\\PY{+w}{ }\\PY{c+c1}{\\PYZsh{} Exported as a triangle surface so ParaView renders the parabolic}\n", "\\PY{+w}{ }\\PY{c+c1}{\\PYZsh{} pipe velocity profile as a plane instead of a point cloud. With}\n", "\\PY{+w}{ }\\PY{c+c1}{\\PYZsh{} min/max omitted the plane spans the full domain; each case below}\n", "\\PY{+w}{ }\\PY{c+c1}{\\PYZsh{} only overrides axis\\PYZus{}pos for its own mid\\PYZhy{}domain x position.}\n", "\\PY{+w}{ }\\PY{n+nt}{cross\\PYZus{}section}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{axis}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{x}\n", "\\PY{+w}{ }\\PY{n+nt}{axis\\PYZus{}pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{12}\n", "\\PY{+w}{ }\\PY{n+nt}{dist}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{outputs}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{instantaneous}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{true}\n", "\\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}{24}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{24}\n", "\\PY{+w}{ }\\PY{n+nt}{z}\\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", "\n", "\\PY{+w}{ }\\PY{n+nt}{bodies}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{cylinder}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{geometry\\PYZus{}path}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{fixture/stl/basic/cylinder.stl}\n", "\\PY{+w}{ }\\PY{n+nt}{small\\PYZus{}triangles}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{add}\n", "\\PY{+w}{ }\\PY{n+nt}{transformation}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{scale}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\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", "\\PY{+w}{ }\\PY{n+nt}{translation}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{\\PYZhy{}4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{4}\\PY{p+pIndicator}{]}\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.8}\n", "\\PY{+w}{ }\\PY{n+nt}{F}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{x}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{6.25E\\PYZhy{}05}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{z}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{vel\\PYZus{}set}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{D3Q27}\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}{IBM}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{forces\\PYZus{}accomodate\\PYZus{}time}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1000}\n", "\\PY{+w}{ }\\PY{n+nt}{body\\PYZus{}cfgs}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{p+pIndicator}{\\PYZcb{}}\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}{,}\\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", "\\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}{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}{1}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{F}\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}{F}\n", "\\PY{+w}{ }\\PY{n+nt}{order}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{2}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{B}\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}{B}\n", "\\PY{+w}{ }\\PY{n+nt}{order}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{2}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{name}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{periodicPoiseuillePipeN32}\n", "\\PY{+w}{ }\\PY{n+nt}{parent}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{periodicPoiseuillePipeN16}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{n\\PYZus{}steps}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{8000}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{data}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{exports}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{plane\\PYZus{}series}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{target}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{planes}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{c+c1}{\\PYZsh{} Mid\\PYZhy{}domain x for this domain size; bounds auto\\PYZhy{}span the full domain.}\n", "\\PY{+w}{ }\\PY{n+nt}{cross\\PYZus{}section}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{axis\\PYZus{}pos}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{20}\\PY{p+pIndicator}{\\PYZcb{}}\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}{40}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{40}\n", "\\PY{+w}{ }\\PY{n+nt}{z}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{40}\n", "\\PY{+w}{ }\\PY{n+nt}{block\\PYZus{}size}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{8}\n", "\\PY{+w}{ }\\PY{n+nt}{bodies}\\PY{p}{:}\\PY{+w}{ }\\PY{k+kt}{!not\\PYZhy{}inherit}\n", "\\PY{+w}{ }\\PY{n+nt}{cylinder}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{geometry\\PYZus{}path}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{fixture/stl/basic/cylinder.stl}\n", "\\PY{+w}{ }\\PY{n+nt}{small\\PYZus{}triangles}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{add}\n", "\\PY{+w}{ }\\PY{n+nt}{transformation}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{scale}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{16}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{16}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{16}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{translation}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{\\PYZhy{}4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{4}\\PY{p+pIndicator}{]}\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}{F}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{x}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{7.8125E\\PYZhy{}06}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{z}\\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}{periodicPoiseuillePipeN64}\n", "\\PY{+w}{ }\\PY{n+nt}{parent}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{periodicPoiseuillePipeN16}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{n\\PYZus{}steps}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{32000}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{data}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{exports}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{plane\\PYZus{}series}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{target}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{planes}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{c+c1}{\\PYZsh{} Mid\\PYZhy{}domain x for this domain size; bounds auto\\PYZhy{}span the full domain.}\n", "\\PY{+w}{ }\\PY{n+nt}{cross\\PYZus{}section}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{axis\\PYZus{}pos}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{36}\\PY{p+pIndicator}{\\PYZcb{}}\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}{72}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{72}\n", "\\PY{+w}{ }\\PY{n+nt}{z}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{72}\n", "\\PY{+w}{ }\\PY{n+nt}{block\\PYZus{}size}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{8}\n", "\\PY{+w}{ }\\PY{n+nt}{bodies}\\PY{p}{:}\\PY{+w}{ }\\PY{k+kt}{!not\\PYZhy{}inherit}\n", "\\PY{+w}{ }\\PY{n+nt}{cylinder}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{geometry\\PYZus{}path}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{fixture/stl/basic/cylinder.stl}\n", "\\PY{+w}{ }\\PY{n+nt}{small\\PYZus{}triangles}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{add}\n", "\\PY{+w}{ }\\PY{n+nt}{transformation}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{scale}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{32}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{32}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{32}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{translation}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{\\PYZhy{}4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{4}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{models}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{LBM}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{F}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{x}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{9.76563E\\PYZhy{}07}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{z}\\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}{periodicPoiseuillePipeN128}\n", "\\PY{+w}{ }\\PY{n+nt}{parent}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{periodicPoiseuillePipeN16}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{n\\PYZus{}steps}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{128000}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{data}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{exports}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{plane\\PYZus{}series}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{target}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{planes}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{c+c1}{\\PYZsh{} Mid\\PYZhy{}domain x for this domain size; bounds auto\\PYZhy{}span the full domain.}\n", "\\PY{+w}{ }\\PY{n+nt}{cross\\PYZus{}section}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{axis\\PYZus{}pos}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{68}\\PY{p+pIndicator}{\\PYZcb{}}\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}{136}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{136}\n", "\\PY{+w}{ }\\PY{n+nt}{z}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{136}\n", "\\PY{+w}{ }\\PY{n+nt}{block\\PYZus{}size}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{8}\n", "\\PY{+w}{ }\\PY{n+nt}{bodies}\\PY{p}{:}\\PY{+w}{ }\\PY{k+kt}{!not\\PYZhy{}inherit}\n", "\\PY{+w}{ }\\PY{n+nt}{cylinder}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{geometry\\PYZus{}path}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{fixture/stl/basic/cylinder.stl}\n", "\\PY{+w}{ }\\PY{n+nt}{small\\PYZus{}triangles}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{add}\n", "\\PY{+w}{ }\\PY{n+nt}{transformation}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{scale}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{64}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{64}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{64}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{translation}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{\\PYZhy{}4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{4}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{4}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{models}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{LBM}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{F}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{x}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1.22070E\\PYZhy{}07}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{z}\\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}{velocityNeumannPoiseuillePipeMultilevel}\n", "\\PY{+w}{ }\\PY{n+nt}{save\\PYZus{}path}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{./validation/analytical/03\\PYZus{}poiseuille\\PYZus{}pipe\\PYZus{}flow/results/velocity\\PYZus{}neumann\\PYZus{}multilevel}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{n\\PYZus{}steps}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{32000}\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}{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}{1}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{exports}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{macrs}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{rho}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{u}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{f\\PYZus{}IBM}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{S}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{interval}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{8000}\n", "\\PY{+w}{ }\\PY{n+nt}{lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\\PY{+w}{ }\\PY{n+nt}{target}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{volume}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{outputs}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{instantaneous}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{true}\n", "\\PY{+w}{ }\\PY{n+nt}{plane\\PYZus{}series}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{macrs}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{rho}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{u}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{interval}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{n+nt}{frequency}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{8000}\\PY{p+pIndicator}{,}\\PY{n+nt}{ lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{n+nv}{0}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\PY{+w}{ }\\PY{n+nt}{target}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{planes}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{c+c1}{\\PYZsh{} Cross\\PYZhy{}section normal to the streamwise (x) flow; bounds omitted so}\n", "\\PY{+w}{ }\\PY{c+c1}{\\PYZsh{} the plane auto\\PYZhy{}spans the full domain on the in\\PYZhy{}plane axes.}\n", "\\PY{+w}{ }\\PY{n+nt}{cross\\PYZus{}section}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{axis}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{x}\n", "\\PY{+w}{ }\\PY{n+nt}{axis\\PYZus{}pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{52}\n", "\\PY{+w}{ }\\PY{n+nt}{dist}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{outputs}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{instantaneous}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{true}\n", "\\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}{104}\n", "\\PY{+w}{ }\\PY{n+nt}{y}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{32}\n", "\\PY{+w}{ }\\PY{n+nt}{z}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{32}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{block\\PYZus{}size}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{8}\n", "\\PY{+w}{ }\\PY{n+nt}{bodies\\PYZus{}domain\\PYZus{}limits}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{start}\\PY{p}{:}\\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}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{end}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{88}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{40}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{40}\\PY{p+pIndicator}{]}\n", "\\PY{+w}{ }\\PY{n+nt}{is\\PYZus{}abs}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{true}\n", "\\PY{+w}{ }\\PY{n+nt}{bodies}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{cylinder}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{geometry\\PYZus{}path}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{fixture/stl/basic/cylinder.stl}\n", "\\PY{+w}{ }\\PY{n+nt}{small\\PYZus{}triangles}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{add}\n", "\\PY{+w}{ }\\PY{n+nt}{transformation}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{scale}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\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", "\\PY{+w}{ }\\PY{n+nt}{translation}\\PY{p}{:}\\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}{]}\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}{bodies}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{body\\PYZus{}name}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{cylinder}\n", "\\PY{+w}{ }\\PY{n+nt}{lvl}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1}\n", "\\PY{+w}{ }\\PY{n+nt}{normal\\PYZus{}offsets}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{[}\\PY{n+nv}{\\PYZhy{}2}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{0}\\PY{p+pIndicator}{,}\\PY{+w}{ }\\PY{n+nv}{2}\\PY{p+pIndicator}{]}\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.51}\n", "\\PY{+w}{ }\\PY{n+nt}{vel\\PYZus{}set}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{D3Q27}\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}{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}{2}\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}{2}\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}{Neumann}\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}{1}\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}{Neumann}\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}{1}\n", "\n", "\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZhy{}}\\PY{+w}{ }\\PY{n+nt}{pos}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{F}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{Neumann}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{F}\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}{B}\n", "\\PY{+w}{ }\\PY{n+nt}{BC}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{Neumann}\n", "\\PY{+w}{ }\\PY{n+nt}{wall\\PYZus{}normal}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{B}\n", "\\PY{+w}{ }\\PY{n+nt}{order}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{0}\n", "\n", "\\PY{+w}{ }\\PY{n+nt}{IBM}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{forces\\PYZus{}accomodate\\PYZus{}time}\\PY{p}{:}\\PY{+w}{ }\\PY{l+lScalar+lScalarPlain}{1000}\n", "\\PY{+w}{ }\\PY{n+nt}{body\\PYZus{}cfgs}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{n+nt}{default}\\PY{p}{:}\\PY{+w}{ }\\PY{p+pIndicator}{\\PYZob{}}\\PY{p+pIndicator}{\\PYZcb{}}\n", "\\end{Verbatim}\n" ], "text/plain": [ "simulations:\n", " - name: periodicPoiseuillePipeN16\n", " save_path: ./validation/analytical/03_poiseuille_pipe_flow/results/periodic\n", " n_steps: 2000\n", " report:\n", " frequency: 1000\n", "\n", " data:\n", " divergence: {frequency: 50}\n", " exports:\n", " default:\n", " macrs: [rho, u, f_IBM, S]\n", " interval:\n", " frequency: 0\n", " lvl: 0\n", " target:\n", " volume: {}\n", " outputs:\n", " instantaneous: true\n", " plane_series:\n", " macrs: [rho, u]\n", " interval: {frequency: 2000, lvl: 0}\n", " target:\n", " planes:\n", " # Cross-section normal to the streamwise (x) flow at mid-domain.\n", " # Exported as a triangle surface so ParaView renders the parabolic\n", " # pipe velocity profile as a plane instead of a point cloud. With\n", " # min/max omitted the plane spans the full domain; each case below\n", " # only overrides axis_pos for its own mid-domain x position.\n", " cross_section:\n", " axis: x\n", " axis_pos: 12\n", " dist: 1\n", "\n", " outputs:\n", " instantaneous: true\n", " domain:\n", " domain_size:\n", " x: 24\n", " y: 24\n", " z: 24\n", " block_size: 8\n", "\n", " bodies:\n", " cylinder:\n", " geometry_path: fixture/stl/basic/cylinder.stl\n", " small_triangles: add\n", " transformation:\n", " scale: [8, 8, 8]\n", " translation: [-4, 4, 4]\n", "\n", " models:\n", " precision:\n", " default: single\n", "\n", " LBM:\n", " tau: 0.8\n", " F:\n", " x: 6.25E-05\n", " y: 0\n", " z: 0\n", " vel_set: D3Q27\n", " coll_oper: RRBGK\n", "\n", " engine:\n", " name: CUDA\n", "\n", " IBM:\n", " forces_accomodate_time: 1000\n", " body_cfgs:\n", " default: {}\n", "\n", " BC:\n", " periodic_dims: [true, false, false]\n", " BC_map:\n", " - pos: N\n", " BC: RegularizedHWBB\n", " wall_normal: N\n", " order: 1\n", "\n", " - pos: S\n", " BC: RegularizedHWBB\n", " wall_normal: S\n", " order: 1\n", "\n", " - pos: F\n", " BC: RegularizedHWBB\n", " wall_normal: F\n", " order: 2\n", "\n", " - pos: B\n", " BC: RegularizedHWBB\n", " wall_normal: B\n", " order: 2\n", "\n", " - name: periodicPoiseuillePipeN32\n", " parent: periodicPoiseuillePipeN16\n", "\n", " n_steps: 8000\n", "\n", " data:\n", " exports:\n", " plane_series:\n", " target:\n", " planes:\n", " # Mid-domain x for this domain size; bounds auto-span the full domain.\n", " cross_section: {axis_pos: 20}\n", "\n", " domain:\n", " domain_size:\n", " x: 40\n", " y: 40\n", " z: 40\n", " block_size: 8\n", " bodies: !not-inherit\n", " cylinder:\n", " geometry_path: fixture/stl/basic/cylinder.stl\n", " small_triangles: add\n", " transformation:\n", " scale: [16, 16, 16]\n", " translation: [-4, 4, 4]\n", "\n", " models:\n", " LBM:\n", " F:\n", " x: 7.8125E-06\n", " y: 0\n", " z: 0\n", "\n", " - name: periodicPoiseuillePipeN64\n", " parent: periodicPoiseuillePipeN16\n", "\n", " n_steps: 32000\n", "\n", " data:\n", " exports:\n", " plane_series:\n", " target:\n", " planes:\n", " # Mid-domain x for this domain size; bounds auto-span the full domain.\n", " cross_section: {axis_pos: 36}\n", "\n", " domain:\n", " domain_size:\n", " x: 72\n", " y: 72\n", " z: 72\n", " block_size: 8\n", " bodies: !not-inherit\n", " cylinder:\n", " geometry_path: fixture/stl/basic/cylinder.stl\n", " small_triangles: add\n", " transformation:\n", " scale: [32, 32, 32]\n", " translation: [-4, 4, 4]\n", " models:\n", " LBM:\n", " F:\n", " x: 9.76563E-07\n", " y: 0\n", " z: 0\n", "\n", " - name: periodicPoiseuillePipeN128\n", " parent: periodicPoiseuillePipeN16\n", "\n", " n_steps: 128000\n", "\n", " data:\n", " exports:\n", " plane_series:\n", " target:\n", " planes:\n", " # Mid-domain x for this domain size; bounds auto-span the full domain.\n", " cross_section: {axis_pos: 68}\n", "\n", " domain:\n", " domain_size:\n", " x: 136\n", " y: 136\n", " z: 136\n", " block_size: 8\n", " bodies: !not-inherit\n", " cylinder:\n", " geometry_path: fixture/stl/basic/cylinder.stl\n", " small_triangles: add\n", " transformation:\n", " scale: [64, 64, 64]\n", " translation: [-4, 4, 4]\n", " models:\n", " LBM:\n", " F:\n", " x: 1.22070E-07\n", " y: 0\n", " z: 0\n", "\n", " - name: velocityNeumannPoiseuillePipeMultilevel\n", " save_path: ./validation/analytical/03_poiseuille_pipe_flow/results/velocity_neumann_multilevel\n", "\n", " n_steps: 32000\n", "\n", " report:\n", " frequency: 1000\n", "\n", " data:\n", " divergence: {frequency: 1}\n", " exports:\n", " default:\n", " macrs: [rho, u, f_IBM, S]\n", " interval:\n", " frequency: 8000\n", " lvl: 0\n", " target:\n", " volume: {}\n", " outputs:\n", " instantaneous: true\n", " plane_series:\n", " macrs: [rho, u]\n", " interval: {frequency: 8000, lvl: 0}\n", " target:\n", " planes:\n", " # Cross-section normal to the streamwise (x) flow; bounds omitted so\n", " # the plane auto-spans the full domain on the in-plane axes.\n", " cross_section:\n", " axis: x\n", " axis_pos: 52\n", " dist: 1\n", "\n", " outputs:\n", " instantaneous: true\n", " domain:\n", " domain_size:\n", " x: 104\n", " y: 32\n", " z: 32\n", "\n", " block_size: 8\n", " bodies_domain_limits:\n", " start: [4, 8, 8]\n", " end: [88, 40, 40]\n", " is_abs: true\n", " bodies:\n", " cylinder:\n", " geometry_path: fixture/stl/basic/cylinder.stl\n", " small_triangles: add\n", " transformation:\n", " scale: [8, 8, 8]\n", " translation: [4, 8, 8]\n", " refinement:\n", " static:\n", " default:\n", " bodies:\n", " - body_name: cylinder\n", " lvl: 1\n", " normal_offsets: [-2, 0, 2]\n", "\n", " models:\n", " precision:\n", " default: single\n", "\n", " LBM:\n", " tau: 0.51\n", " vel_set: D3Q27\n", " coll_oper: RRBGK\n", "\n", " engine:\n", " name: CUDA\n", "\n", " BC:\n", " periodic_dims: [false, 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: 2\n", "\n", " - pos: E\n", " BC: RegularizedNeumannOutlet\n", " rho: 1.0\n", " wall_normal: E\n", " order: 2\n", "\n", " - pos: N\n", " BC: Neumann\n", " wall_normal: N\n", " order: 1\n", "\n", " - pos: S\n", " BC: Neumann\n", " wall_normal: S\n", " order: 1\n", "\n", " - pos: F\n", " BC: Neumann\n", " wall_normal: F\n", " order: 0\n", "\n", " - pos: B\n", " BC: Neumann\n", " wall_normal: B\n", " order: 0\n", "\n", " IBM:\n", " forces_accomodate_time: 1000\n", " body_cfgs:\n", " default: {}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Code\n", "\n", "Code(filename=filename)" ] } ], "metadata": { "kernelspec": { "display_name": "nassu (3.12.13)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.13" } }, "nbformat": 4, "nbformat_minor": 2 }