{ "cells": [ { "cell_type": "markdown", "id": "ac8ede50", "metadata": {}, "source": [ "# Mesh2d Basics\n", "\n", "This is the basic introduction for using the `meshkernel` library.\n", "\n", "`meshkernel` can be used for creating and manipulating various kinds of meshes.\n", "\n", "The most common case deals with unstructured, two-dimensional meshes which is why this tutorial focuses on these." ] }, { "cell_type": "markdown", "id": "1cb76801", "metadata": {}, "source": [ "At the very beginning, the necessary libraries have to be imported." ] }, { "cell_type": "code", "execution_count": 1, "id": "651f8535", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "from meshkernel import GeometryList, MakeGridParameters, MeshKernel, ProjectionType" ] }, { "cell_type": "markdown", "id": "1c86a232", "metadata": {}, "source": [ "`meshkernel` provides a set of convenience methods for creating common meshes.\n", "\n", "We use the curvilinear_compute_rectangular_grid method to create a simple curvilinear grid. You can look at the documentation in order to find all its parameters." ] }, { "cell_type": "code", "execution_count": 2, "id": "87d93674", "metadata": {}, "outputs": [], "source": [ "mk = MeshKernel()\n", "\n", "make_grid_parameters = MakeGridParameters()\n", "make_grid_parameters.num_columns = 3\n", "make_grid_parameters.num_rows = 2\n", "make_grid_parameters.angle = 0.0\n", "make_grid_parameters.origin_x = 0.0\n", "make_grid_parameters.origin_y = 0.0\n", "make_grid_parameters.block_size_x = 1.0\n", "make_grid_parameters.block_size_y = 1.0\n", "\n", "mk.curvilinear_compute_rectangular_grid(make_grid_parameters)" ] }, { "cell_type": "markdown", "id": "27bea1f6", "metadata": {}, "source": [ "We convert the curvilinear grid to an unstructured mesh and get the resulting mesh2d" ] }, { "cell_type": "code", "execution_count": 3, "id": "9776cb5d", "metadata": {}, "outputs": [], "source": [ "mk.curvilinear_convert_to_mesh2d()" ] }, { "cell_type": "code", "execution_count": 4, "id": "f8a7ef32", "metadata": {}, "outputs": [], "source": [ "mesh2d_input = mk.mesh2d_get()" ] }, { "cell_type": "markdown", "id": "f49a198a", "metadata": {}, "source": [ "`Mesh2D` has three mandatory attributes, which are enough to fully describe any unstructured mesh.\n", "\n", "The first two are `node_x` and `node_y`.\n", "They are one-dimensional `double` arrays, which describe the position of the nodes as can be seen below." ] }, { "cell_type": "code", "execution_count": 5, "id": "e7cd78e7", "metadata": {}, "outputs": [ { "data": { "image/png": "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tq127txZ7Xy3262YmJigCQAANF0hBZaoqCj169dPBQUFgbaqqioVFBQoLS2txuWeeOIJPfzww1q+fLn69+9/xvfZu3evDh8+rISEhFDKAwAATVTItzXn5OTo5Zdf1quvvqpt27Zp3LhxKisr0+jRoyVJo0aNUm5ubqD/448/rsmTJ2vWrFnq1KmTvF6vvF6vSktLJUmlpaW6//77tW7dOn311VcqKCjQ9ddfr65duyozM7OeNhMAADRmIY9hGTFihL755htNmTJFXq9Xffr00fLlywMDcb/++mtFRJzIQS+++KIqKip0ww03BK1n6tSpevDBBxUZGalPP/1Ur776qo4cOaLExEQNGjRIDz/8sNxu91luHgAAaApCfg6LjXgOCwAAjc85ew4LAABAOBBYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAABgPQJLDcrLpT/+UUpMlFq2lFJTpRUrwl0VGrvSUmnqVGnwYCk2VnK5pDlzwl0VGru//12aMEHq2VM6/3ypQwdp+HDpyy/DXRkas88/l268UerSRWrVSmrbVvr1r6W33w5PPQSWGtx2mzRtmnTzzdKzz0qRkdJvfyutWRPuytCYHTokPfSQtG2blJwc7mrQVDz+uLRokXTNNc7n1Z13SqtXSz//ubR1a7irQ2O1e7d09KiUne0cV5MnO+3XXSe99FLD1+MyxpiGf9v65ff75fF45PP5FBMTc9br27DBOaPy5JPSffc5bceOSVdcIbVvL61de9ZvgWaqvFz69lspPl7auFG68kpp9mwnIAN1tXat1L+/FBV1om3HDqlXL+mGG6S//S18taFpqayU+vVzvhP/+7/Pfn2hfH/X6QxLfn6+OnXqpOjoaKWmpmrDhg2n7b9w4UL16NFD0dHR6tWrl959992g+cYYTZkyRQkJCWrZsqUyMjK0Y8eOupRWL9580zmjcuedJ9qio6UxY6TCQmnPnrCVhkbO7XbCClCfBgwIDiuSdNllziWibdvCUxOapshIKSlJOnKk4d87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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "# Plot white points only for scaling the plot\n", "ax.plot(mesh2d_input.node_x, mesh2d_input.node_y, \"ow\")\n", "\n", "# Numbering the nodes\n", "for i in range(mesh2d_input.node_x.size):\n", " ax.annotate(\n", " int(i),\n", " xy=(mesh2d_input.node_x[i], mesh2d_input.node_y[i]),\n", " ha=\"center\",\n", " va=\"center\",\n", " fontsize=12,\n", " color=\"blue\",\n", " )" ] }, { "cell_type": "markdown", "id": "56c0aa00", "metadata": {}, "source": [ "The third mandatory attribute is `edge_nodes`.\n", "It describes the indices of the nodes that make up the edges.\n", "\n", "Two indices describe one edge.\n", "So in our case the indices 0-4, 1-5, 2-6, ... each describe one edge." ] }, { "cell_type": "code", "execution_count": 6, "id": "a6c17a98", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0, 4, 1, 5, 2, 6, 3, 7, 4, 8, 5, 9, 6, 10, 7, 11, 0,\n", " 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 10, 11],\n", " dtype=int32)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mesh2d_input.edge_nodes" ] }, { "cell_type": "markdown", "id": "9868b5fb", "metadata": {}, "source": [ "With all three parameters together we can plot the mesh." ] }, { "cell_type": "code", "execution_count": 7, "id": "e3c50fe9", "metadata": {}, "outputs": [ { "data": { "image/png": "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0NITevUZliFDhigyMlINDQ1B7Q0NDUpISGh3n4SEBFv14aIzc/V9t9xyiyZOnKhjx46FYog3tautq9jYWPXt27eHRnXzmDx5cq9aV4899pjef/99ffLJJxo2bNg1a3vrc9Zldubq+3rTc1ZUVJRGjRqlSZMmqaioSGlpaVq1alW7tT21pnp1YImKitKkSZNUUVERaGtra1NFRcVV37vLzMwMqpek7du3X7U+XHRmrr6vtbVVBw8eVGJiYqiGedPqreuqq9TW1vaKdWVZlh577DFt3bpVH3/8sVJSUq67T29dW52Zq+/rzc9ZbW1tam5ubvexHltTIb2k9yawYcMGy+l0WqWlpdb//M//WI8++qg1cOBAy+v1WpZlWQ8//LC1fPnyQP2nn35q9enTx3rllVesw4cPW4WFhdYtt9xiHTx4sKcOodvYnatf/vKX1ocffmgdP37cqqmpsebNm2dFR0dbn3/+eU8dQre5ePGideDAAevAgQOWJGvFihXWgQMHrC+//NKyLMtavny59fDDDwfq//jHP1r9+vWznnrqKevw4cNWcXGxFRkZaZWXl/fUIXQbu3P16quvWmVlZdbRo0etgwcPWo8//rgVERFh/eEPf+ipQ+g2S5YssVwul1VZWWnV19cHtj/96U+BGp6zLunMXPXW56zly5dbVVVVVl1dnfXZZ59Zy5cvtxwOh/XRRx9ZlmXOmur1gcWyLOvf//3frdtuu82KioqyJk+ebO3evTvw2NSpU63c3Nyg+k2bNll33HGHFRUVZY0bN8764IMPunnEPcfOXC1btixQGx8fb/3t3/6ttX///h4Ydfe7/NHb72+X5yc3N9eaOnXqFfukp6dbUVFR1siRI6233nqr28fdE+zO1UsvvWTdfvvtVnR0tDV48GBr2rRp1scff9wzg+9m7c2TpKC1wnPWJZ2Zq976nPWP//iP1vDhw62oqChr6NCh1v333x8IK5ZlzppyWJZlhfYcDgAAwI3p1dewAACAmwOBBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADG+3/lJ7QjUFZE+AAAAABJRU5ErkJggg==", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "mesh2d_input.plot_edges(ax, color=\"blue\")" ] }, { "cell_type": "markdown", "id": "35f31c20", "metadata": {}, "source": [ "In order to interact with the `meshkernel` library, we create a new instance of the `MeshKernel` class.\n", "\n", "The `projection` parameter of its constructor describes whether the mesh is cartesian (`ProjextionType.CARTESIAN`) or spherical (`ProjextionType.SPHERICAL`). " ] }, { "cell_type": "code", "execution_count": 8, "id": "7c29964a", "metadata": {}, "outputs": [], "source": [ "mk = MeshKernel(projection=ProjectionType.CARTESIAN)" ] }, { "cell_type": "markdown", "id": "7954ccae", "metadata": {}, "source": [ "Each instance holds it own state.\n", "This state can be accessed with the corresponding getter and setter methods." ] }, { "cell_type": "code", "execution_count": 9, "id": "19aa165f", "metadata": {}, "outputs": [], "source": [ "mk.mesh2d_set(mesh2d_input)" ] }, { "cell_type": "code", "execution_count": 10, "id": "a874eb76", "metadata": {}, "outputs": [], "source": [ "mesh2d_output_0 = mk.mesh2d_get()" ] }, { "cell_type": "markdown", "id": "6d8bc297", "metadata": {}, "source": [ "We have now set mesh2d and immediately got it again, without asking `meshkernel` to execute any operations in between.\n", "\n", "After we set the mesh2d, meshkernel calculated the face data and edge coordinates." ] }, { "cell_type": "code", "execution_count": 11, "id": "a4d8b8d9", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGiCAYAAAAba+fDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAy70lEQVR4nO3de3RU9b3//9fMhEwSIAkhkIsEAoJQERJEiEEtcIwGyqGmZx25/DyCFPWUhVYarSXnW0GPHqPWKnpMpVox2P6USxX8VhGlUeAgt3LJEdRSQC5BM+EimSEDTGBmf/9ABkcSyMQkEz55Ptbay9mf/d6fvPde4/BaM3vP2CzLsgQAAGAIe6QbAAAAaEqEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABglLDCTXFxsYYMGaKOHTuqa9euKigo0I4dOy663+LFi9WvXz/FxMRowIABWrZsWch2y7I0a9YspaWlKTY2Vnl5edq5c2d4RwIAAKAww82qVas0ffp0rV+/XitWrNCpU6d08803y+v11rvP2rVrNXHiRE2dOlVbt25VQUGBCgoKtH379mDNU089peeff15z587Vhg0b1L59e+Xn5+vkyZONPzIAANAm2b7PD2ceOnRIXbt21apVq/TDH/6wzprx48fL6/XqnXfeCY5de+21ys7O1ty5c2VZltLT03X//ffrgQcekCS53W6lpKSotLRUEyZMaGx7AACgDYr6Pju73W5JUlJSUr0169atU2FhYchYfn6+li5dKknas2ePXC6X8vLygtsTEhKUk5OjdevW1RlufD6ffD5fcD0QCOjrr79W586dZbPZvs8hAQCAFmJZlo4dO6b09HTZ7U13GXCjw00gENCMGTN03XXX6aqrrqq3zuVyKSUlJWQsJSVFLpcruP3sWH0131VcXKxHHnmksa0DAIBWpKKiQt26dWuy+RodbqZPn67t27drzZo1TdZMQxUVFYW8G+R2u9W9e3ddNq1Udmdci/cDAADCF/Ad15cv3qGOHTs26byNCjf33HOP3nnnHa1evfqiSSs1NVVVVVUhY1VVVUpNTQ1uPzuWlpYWUpOdnV3nnE6nU06n87xxuzOOcAMAwCWmqS8pCesDLsuydM8992jJkiX68MMP1bNnz4vuk5ubq7KyspCxFStWKDc3V5LUs2dPpaamhtR4PB5t2LAhWAMAANBQYb1zM336dL3++ut6++231bFjx+A1MQkJCYqNjZUkTZo0SZdddpmKi4slSffdd5+GDx+u3/72txozZowWLFigTZs26aWXXpJ0Jq3NmDFDjz32mPr06aOePXvqoYceUnp6ugoKCprwUAEAQFsQVrh58cUXJUkjRowIGX/11Vd1xx13SJL2798fcsXzsGHD9Prrr+vXv/61/uM//kN9+vTR0qVLQy5CfvDBB+X1enX33Xerurpa119/vZYvX66YmJhGHhYAAGirvtf33LQWHo9HCQkJypixiGtuAAC4RAR8x1UxZ5zcbrfi4+ObbF5+WwoAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARgk73KxevVpjx45Venq6bDabli5desH6O+64Qzab7bylf//+wZqHH374vO39+vUL+2AAAADCDjder1dZWVkqKSlpUP1zzz2nysrK4FJRUaGkpCTdeuutIXX9+/cPqVuzZk24rQEAACgq3B1Gjx6t0aNHN7g+ISFBCQkJwfWlS5fq6NGjmjJlSmgjUVFKTU0Ntx0AAIAQLX7NzSuvvKK8vDz16NEjZHznzp1KT09Xr169dNttt2n//v31zuHz+eTxeEIWAAAAqYXDzVdffaX33ntPd955Z8h4Tk6OSktLtXz5cr344ovas2ePbrjhBh07dqzOeYqLi4PvCCUkJCgjI6Ml2gcAAJeAFg038+fPV2JiogoKCkLGR48erVtvvVUDBw5Ufn6+li1bpurqai1atKjOeYqKiuR2u4NLRUVFC3QPAAAuBWFfc9NYlmVp3rx5uv322xUdHX3B2sTERF1xxRXatWtXndudTqecTmdztAkAAC5xLfbOzapVq7Rr1y5NnTr1orU1NTXavXu30tLSWqAzAABgkrDDTU1NjcrLy1VeXi5J2rNnj8rLy4MXABcVFWnSpEnn7ffKK68oJydHV1111XnbHnjgAa1atUp79+7V2rVr9ZOf/EQOh0MTJ04Mtz0AANDGhf2x1KZNmzRy5MjgemFhoSRp8uTJKi0tVWVl5Xl3Orndbr355pt67rnn6pzzwIEDmjhxoo4cOaIuXbro+uuv1/r169WlS5dw2wMAAG2czbIsK9JNfF8ej+fMXVMzFsnujIt0OwAAoAECvuOqmDNObrdb8fHxTTYvvy0FAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGiYp0A4gcX+U/VFv5D/kqd+rU4f3yH3crcMIjK3BadmcHtevcTTHdB6rDgDxFJXSNdLto4w6/+6y828uC6wnXTVTi9bdFsCO0Ba7XZ8pXsb3B9Zf97BVFJaQ0Y0doCMJNG1b1xn/IOnWyzm2B49XyHa+Wr2K73OsXK/G6iUrIHdfCHQJnnNi9KSTYAMCFEG7aOHtcopxpfdSuay9FJaTI7oyTAn6ddlfpxO5N8n35meQ/perVr8kK+JV43cRIt4w2JuA7riPvl0iSbO1i6g3kQHPr8pP/c9Eae1xCC3SCiyHctGGptz+tdsk9ZLPZ6tyekDtONdvLdOTdOZIsudcuUIeBNyuqY+cW7RNt29GP5sl/7JAcHbsort91Ova3pZFuCW1U3BW5kW4BDcQFxW1YdJfMeoPNWR2uulGxvYecWQn4dXLP5hboDDjjxL7/Vc3/vi9JSrp5muzRsRHuCMClgHCDi2qX3D342O+tjlwjaFMCp07q6+X/LclSXL8bFNd7aKRbAnCJINzgok4frQw+drRPjFwjaFOqV83X6WqX7DEdlZR3d6TbAXAJ4ZobXNDxXRt0/B/rJEm2qGjFXj4kwh2hLTh54HMd2/KuJKnTyJ/K0b5ThDsCpIN/fkS1VbvlP+6RvZ1Tjg6d5bysn9pfOUIxPQZGuj18C+EGkqSTFdsVOHFMkmT5T8t/7JBO7Nmqk3u3nimwO5R083T+kUGzs07X6sh7z0lWQDE9stRh4E2RbgmQJJ3Y/bfg44DvtAI+r04d2a+aTz5QTI+B6vzPDyiqQ1IEO8RZYX8stXr1ao0dO1bp6emy2WxaunTpBetXrlwpm8123uJyuULqSkpKlJmZqZiYGOXk5Gjjxo3htobv4ehHr+rQkv/SoSX/pcP/90kd/WjeN8HGJmf3AUqZ8F/qMODGSLeJNqD6f/6k018fkC3KqaT8eyLdDiB7TAfF9btBiSOmKHnsA0r+8YPqNHKqYntdI+nMTRkn930i1x8fkL/maGSbhaRGvHPj9XqVlZWln/70p/qXf/mXBu+3Y8cOxcfHB9e7dj33jbcLFy5UYWGh5s6dq5ycHM2ZM0f5+fnasWNHSB1anqNjZ8VmDlJUp/RIt4I2wFf5D3m+udU74fr/T+06pUW2IbR5nYZPVnRqb9kc7c7bFj/0J/JV7tShpY/L7zkkv+egDr83Rym3PhKBTvFtYYeb0aNHa/To0WH/oa5duyoxMbHObc8884zuuusuTZkyRZI0d+5cvfvuu5o3b55mzpwZ9t9C+NIm/Tb4OFB7Uqerv9LxnRvk+dtSVa9+TZ6/LVXyjx9UbGZ25JqE0Sz/KR1ZdubjqOiUyxU/pCDSLQFyXvaDC29P66OUW/9TX5X+XPKf0skvNstX+Q85065ooQ5Rlxa7Wyo7O1tpaWm66aab9PHHHwfHa2trtXnzZuXl5Z1rym5XXl6e1q1bV+dcPp9PHo8nZEHTsUfHKLprLyVeN1FpdzwnR4ckBU54dPDPD6v20N5ItwdDudcu1KnD+ySbXUmj7pXN7oh0S0CDtEvOUIf+I4PrJ3b97QLVaAnNHm7S0tI0d+5cvfnmm3rzzTeVkZGhESNGaMuWLZKkw4cPy+/3KyUl9IfGUlJSzrsu56zi4mIlJCQEl4yMjOY+jDarXWKqEoffcWbFf1rutQsj2g/MVHvwC7nX/1mSFD+kQM7U3hHuCAjPt++WOnWkIoKdQGqBu6X69u2rvn37BteHDRum3bt369lnn9Uf//jHRs1ZVFSkwsLC4LrH4yHgNKPYXoODj09WbItgJzBVzbYyKXBastklR5Sq1y6os+5kxachj8/WtUvqpvb9rm+RXoG62GPP/aZUwOeNYCeQInQr+NChQ7VmzRpJUnJyshwOh6qqqkJqqqqqlJqaWuf+TqdTTqez2fvEGfbouODjwMmaCHYCY1nWN/8NyLNuUYN28e3/RL79n0iSYvtcS7hBRAVOnLs8wu5sH8FOIEXoG4rLy8uVlnbmLojo6GgNHjxYZWVlwe2BQEBlZWXKzeVHylqDU0e/DD52xPKLtwDwXSe/CdqS1C7psgh2AqkR79zU1NRo165dwfU9e/aovLxcSUlJ6t69u4qKivTll1/qtddekyTNmTNHPXv2VP/+/XXy5En94Q9/0IcffqgPPvggOEdhYaEmT56sa665RkOHDtWcOXPk9XqDd08hsmrK3ws+dna7MoKdwFRJeXc36CcWqtf8/3J//IYkKeG6iUq8/rbmbg24qFNffynvpx8F12P5HbSICzvcbNq0SSNHnrsq/Oy1L5MnT1ZpaakqKyu1f//+4Pba2lrdf//9+vLLLxUXF6eBAwfqr3/9a8gc48eP16FDhzRr1iy5XC5lZ2dr+fLl511kjKZzbOsytUvqJmf3AfX+MrgV8Muz8S0d27IsONZx0I9aqkUAiCjPpv+r6NQ+iulW/+3gtVW7dXDJ47JO10qSYjIHyZnet956tAybZZ39sPvS5fF4ztw1NWOR7M64i+8AHX73WXm3l8nRsYtiMrMV3SVTjvYJkj3qzFeKH9qn47s2yO8+dy1U/LW3qtPwyRHsGm0d79ygJR186zGd2LleUYlpisnMUrvkHnLExks2u/w1X+vkvnKd+GKzZAUkSY74rkr9t98oqmPnCHd+6Qj4jqtizji53e6QL/r9vvhtqTbOf+yQvNtW6ELX9tuc7dVp+GTetQHQJp2urlRNeeUFa2J6Xq3Oo+8j2LQShJs2Kinv3xXXJ0cnKz5VbdVuna52KXDCI8t/WrboWDnaJyq6S6Ziel6t9v2u5+p/AG1Op5FTFXv5UNVW7lDtwT3yH3efeZ08fUp2Z5yiElKCvwrOR1GtCx9LAQCAiGiuj6Uicis4AABAcyHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGCTvcrF69WmPHjlV6erpsNpuWLl16wfq33npLN910k7p06aL4+Hjl5ubq/fffD6l5+OGHZbPZQpZ+/fqF2xoAAED44cbr9SorK0slJSUNql+9erVuuukmLVu2TJs3b9bIkSM1duxYbd26NaSuf//+qqysDC5r1qwJtzUAAABFhbvD6NGjNXr06AbXz5kzJ2T98ccf19tvv62//OUvGjRo0LlGoqKUmpraoDl9Pp98Pl9w3ePxNLgfAABgtha/5iYQCOjYsWNKSkoKGd+5c6fS09PVq1cv3Xbbbdq/f3+9cxQXFyshISG4ZGRkNHfbAADgEtHi4ebpp59WTU2Nxo0bFxzLyclRaWmpli9frhdffFF79uzRDTfcoGPHjtU5R1FRkdxud3CpqKhoqfYBAEArF/bHUt/H66+/rkceeURvv/22unbtGhz/9sdcAwcOVE5Ojnr06KFFixZp6tSp583jdDrldDpbpGcAAHBpabFws2DBAt15551avHix8vLyLlibmJioK664Qrt27Wqh7gAAgCla5GOpN954Q1OmTNEbb7yhMWPGXLS+pqZGu3fvVlpaWgt0BwAATBL2Ozc1NTUh76js2bNH5eXlSkpKUvfu3VVUVKQvv/xSr732mqQzH0VNnjxZzz33nHJycuRyuSRJsbGxSkhIkCQ98MADGjt2rHr06KGvvvpKs2fPlsPh0MSJE5viGAEAQBsS9js3mzZt0qBBg4K3cRcWFmrQoEGaNWuWJKmysjLkTqeXXnpJp0+f1vTp05WWlhZc7rvvvmDNgQMHNHHiRPXt21fjxo1T586dtX79enXp0uX7Hh8AAGhjbJZlWZFu4vvyeDxnbgmfsUh2Z1yk2wEAAA0Q8B1XxZxxcrvdio+Pb7J5+W0pAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABgl7HCzevVqjR07Vunp6bLZbFq6dOlF91m5cqWuvvpqOZ1O9e7dW6WlpefVlJSUKDMzUzExMcrJydHGjRvDbQ0AACD8cOP1epWVlaWSkpIG1e/Zs0djxozRyJEjVV5erhkzZujOO+/U+++/H6xZuHChCgsLNXv2bG3ZskVZWVnKz8/XwYMHw20PAAC0cTbLsqxG72yzacmSJSooKKi35le/+pXeffddbd++PTg2YcIEVVdXa/ny5ZKknJwcDRkyRC+88IIkKRAIKCMjQ/fee69mzpx53pw+n08+ny+47vF4lJGRoYwZi2R3xjX2cAAAQAsK+I6rYs44ud1uxcfHN9m8zX7Nzbp165SXlxcylp+fr3Xr1kmSamtrtXnz5pAau92uvLy8YM13FRcXKyEhIbhkZGQ03wEAAIBLSrOHG5fLpZSUlJCxlJQUeTwenThxQocPH5bf76+zxuVy1TlnUVGR3G53cKmoqGi2/gEAwKUlKtINNIbT6ZTT6Yx0GwAAoBVq9nCTmpqqqqqqkLGqqirFx8crNjZWDodDDoejzprU1NTmbg8AABim2T+Wys3NVVlZWcjYihUrlJubK0mKjo7W4MGDQ2oCgYDKysqCNQAAAA0VdripqalReXm5ysvLJZ251bu8vFz79++XdOZ6mEmTJgXrf/azn+mLL77Qgw8+qL///e/63e9+p0WLFukXv/hFsKawsFAvv/yy5s+fr88//1zTpk2T1+vVlClTvufhAQCAtibsj6U2bdqkkSNHBtcLCwslSZMnT1ZpaakqKyuDQUeSevbsqXfffVe/+MUv9Nxzz6lbt276wx/+oPz8/GDN+PHjdejQIc2aNUsul0vZ2dlavnz5eRcZAwAAXMz3+p6b1sLj8Zy5JZzvuQEA4JJxyX7PDQAAQEsi3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAURoVbkpKSpSZmamYmBjl5ORo48aN9daOGDFCNpvtvGXMmDHBmjvuuOO87aNGjWpMawAAoI2LCneHhQsXqrCwUHPnzlVOTo7mzJmj/Px87dixQ127dj2v/q233lJtbW1w/ciRI8rKytKtt94aUjdq1Ci9+uqrwXWn0xluawAAAOG/c/PMM8/orrvu0pQpU3TllVdq7ty5iouL07x58+qsT0pKUmpqanBZsWKF4uLizgs3TqczpK5Tp06NOyIAANCmhRVuamtrtXnzZuXl5Z2bwG5XXl6e1q1b16A5XnnlFU2YMEHt27cPGV+5cqW6du2qvn37atq0aTpy5Ei9c/h8Pnk8npAFAABACjPcHD58WH6/XykpKSHjKSkpcrlcF91/48aN2r59u+68886Q8VGjRum1115TWVmZnnzySa1atUqjR4+W3++vc57i4mIlJCQEl4yMjHAOAwAAGCzsa26+j1deeUUDBgzQ0KFDQ8YnTJgQfDxgwAANHDhQl19+uVauXKkbb7zxvHmKiopUWFgYXPd4PAQcAAAgKcx3bpKTk+VwOFRVVRUyXlVVpdTU1Avu6/V6tWDBAk2dOvWif6dXr15KTk7Wrl276tzudDoVHx8fsgAAAEhhhpvo6GgNHjxYZWVlwbFAIKCysjLl5uZecN/FixfL5/Pp3/7t3y76dw4cOKAjR44oLS0tnPYAAADCv1uqsLBQL7/8subPn6/PP/9c06ZNk9fr1ZQpUyRJkyZNUlFR0Xn7vfLKKyooKFDnzp1DxmtqavTLX/5S69ev1969e1VWVqZbbrlFvXv3Vn5+fiMPCwAAtFVhX3Mzfvx4HTp0SLNmzZLL5VJ2draWL18evMh4//79sttDM9OOHTu0Zs0affDBB+fN53A49Mknn2j+/Pmqrq5Wenq6br75Zj366KN81w0AAAibzbIsK9JNfF8ej+fMXVMzFsnujIt0OwAAoAECvuOqmDNObre7Sa+f5belAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKFGRbgCRd3znBnk//VC+yp3ye4/K7oxTu8Q0xV6Rq47Zo2V3xkW6RbQRVsCvU0cqVOvapVrXLvlcO3Xq4F5Zp32SpPZX3ajkMb+IcJdoSwK+4zqxd6t8+z9RrWu3Th39SgGfV7aoaDk6dJYzrY/aXzlCMT2vls1mi3S7+Abhpg0L1J7Q4b88rRO7NoSOH3fLd9wt31d/17HN76jLLb+S87J+EeoSbcnht5/U8X+sjXQbgCTJs3GJqv/nj7JO1563zao9odNfH9Dprw/I++lHcnbrr+Sx9ysqvmsEOsV3EW7aKCvg16GlT+jkns2SJHv7RHUcmK92yd0VOHlM3s9Wy/flZ/IfO6SDf35Yqbf9Ru2SMyLcNUxnWYGQdXtMR9ljO+r00a8i1BHaslNHvwwGG0eHzorJzFZ0am854hJknT4l31d/l/ezlbJqT8h34FNVvV6k1Nt/K0f7xMg2DsJNW1XzyQfBYNOuc3elTPwvOdp3Cm7vePU/6+iHr8jztyUKnKzRkfdfUOptT0aqXbQRzrQr1K5zN0Wn9FZ0am+1S0xVzba/6siyOZFuDW2STTGZgxQ/9F8Uk5klmy30MtUOA25UwrW3qmrRrDPv4rirdHRVqZJ/NCMy7SKIcNMGWQG/3B+/EVzv/M+FIcHmrMQRd+jEvv/VqYNfyHfgU53Ys0WxPa9uyVbRxiTkjot0C0BQ4g8nyRHb8YI1UQld1eWWB1X56s8lScf//j8K3PQz2dvFtESLqAd3S7VBvopP5a/5WpLkzLhKztTeddbZ7A7FDx4bXPd+trpF+gOA1uBiweas6K69FJXUTZJknfLp9NHK5mwLDUC4aYNOfLEp+Dj28msuWBvb69z2E3s2XaASANouuzM2+LiuC5DRsgg3bVDtoX3Bx87UKy5Y6+jQSY6OXSRJAW+1/MfdzdobAFxqLP8pnfr63EXv3DEVeYSbNuj01weCj6MSUy5a/+2aU9/aFwAgeT9bJcvnlSRFp1wuR4fzr2FEy2pUuCkpKVFmZqZiYmKUk5OjjRs31ltbWloqm80WssTEhF5oZVmWZs2apbS0NMXGxiovL087d+5sTGtogMA3/xNKkj02/qL19m997hw46b1AJQC0Lf7jbh1dWRpcTxg2PnLNICjscLNw4UIVFhZq9uzZ2rJli7KyspSfn6+DBw/Wu098fLwqKyuDy759+0K2P/XUU3r++ec1d+5cbdiwQe3bt1d+fr5OnjwZ/hHhogK1586rLSr6ovXfrrFqTzRLTwBwqbH8p3RoyeMKHK+WJMX2uVZxVwyLbFOQ1Ihw88wzz+iuu+7SlClTdOWVV2ru3LmKi4vTvHnz6t3HZrMpNTU1uKSknPuYw7IszZkzR7/+9a91yy23aODAgXrttdf01VdfaenSpY06KAAAmpNlBXRk2XPyHfhUkhSVmKbOfL9NqxFWuKmtrdXmzZuVl5d3bgK7XXl5eVq3bl29+9XU1KhHjx7KyMjQLbfcok8//TS4bc+ePXK5XCFzJiQkKCcnp945fT6fPB5PyIKGs0ef+1iwIVf1f7vGFh17gUoAMJ9lWfr6/RJ5P1spSXLEd1HKhMfkiOkQ2cYQFFa4OXz4sPx+f8g7L5KUkpIil8tV5z59+/bVvHnz9Pbbb+tPf/qTAoGAhg0bpgMHzlyYena/cOYsLi5WQkJCcMnI4GcBwmF3tg8+Dpy4eDAMnDh2bt+Y9heoBACzWZalrz/4nWr+931JkqNjslImPK6ohIvfnIGW0+x3S+Xm5mrSpEnKzs7W8OHD9dZbb6lLly76/e9/3+g5i4qK5Ha7g0tFRUUTdmy+s182JUmnq6suWv/tmnbf2hcA2hLLsvT1ihdVU/6epDO/N5Uy8XG165QW4c7wXWGFm+TkZDkcDlVVhf6DWFVVpdTU1AbN0a5dOw0aNEi7du2SpOB+4czpdDoVHx8fsqDhorv0CD72uf5xwVq/96j8xw5JkuxxiXLEJTRrbwDQGgWDzdZlkiRHh6Rvgk16hDtDXcIKN9HR0Ro8eLDKysqCY4FAQGVlZcrNzW3QHH6/X9u2bVNa2pmk27NnT6WmpobM6fF4tGHDhgbPifDE9BocfHzii80XrD2x+1vfZtzrwt9mDAAmqjvYFKtd0mUR7gz1CfuHMwsLCzV58mRdc801Gjp0qObMmSOv16spU6ZIkiZNmqTLLrtMxcXFkqT//M//1LXXXqvevXururpav/nNb7Rv3z7deeedks7cSTVjxgw99thj6tOnj3r27KmHHnpI6enpKigoaLojRVBMxlVytO8kv/eofPu3yefaVefvS1kBvzyb/xJcb/+DG1qyTQBoFb5eMfdcsGnfSSkTHifYtHJhh5vx48fr0KFDmjVrllwul7Kzs7V8+fLgBcH79++X3X7uDaGjR4/qrrvuksvlUqdOnTR48GCtXbtWV155ZbDmwQcflNfr1d13363q6mpdf/31Wr58+Xlf9oemYbM7lHDdRH39we8kSUfefUYpEx6Xo31iSF31qvk6dfALSZLzsisV+613fACgLTgTbN6V9E2wmVisdp259rC1s1mWZUW6ie/L4/GcuWtqxiLZnXGRbueSYAX8Orj4YZ3cu1XSmf9pO2Tlq13nDAVO1sj7+Sr5Dnwm6czdVSm3PRVyrQ7QHE5Vu1TzyYrQsUN7dGLXmW9Bb9clU7G9c0K2x/QYqNgeWS3WI9qOo6v/KM+6hd+s2ZQ4fFKDbqqITr2c35dqoIDvuCrmjJPb7W7S62fDfucGZrDZHepSUKTDf/mNTuz+m/zeo3KvXXBenaNjspJ//CuCDVqE33PwW/+YnO/Uob06dWhvyJjNbifcoFmc/YK+MyxVr5rfoP06/2iGOgzIu3ghmg3hpg2zO+PU9V9n6/jO9fJu/1C+yp3yH6+WPTpWUYlpiuubq47Zo0O+FwcAgNaOj6UAAEBENNfHUs3+JX4AAAAtiXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADBKo8JNSUmJMjMzFRMTo5ycHG3cuLHe2pdfflk33HCDOnXqpE6dOikvL++8+jvuuEM2my1kGTVqVGNaAwAAbVzY4WbhwoUqLCzU7NmztWXLFmVlZSk/P18HDx6ss37lypWaOHGiPvroI61bt04ZGRm6+eab9eWXX4bUjRo1SpWVlcHljTfeaNwRAQCANs1mWZYVzg45OTkaMmSIXnjhBUlSIBBQRkaG7r33Xs2cOfOi+/v9fnXq1EkvvPCCJk2aJOnMOzfV1dVaunRp+EcgyePxKCEhQRkzFsnujGvUHAAAoGUFfMdVMWec3G634uPjm2zesN65qa2t1ebNm5WXl3duArtdeXl5WrduXYPmOH78uE6dOqWkpKSQ8ZUrV6pr167q27evpk2bpiNHjtQ7h8/nk8fjCVkAAACkMMPN4cOH5ff7lZKSEjKekpIil8vVoDl+9atfKT09PSQgjRo1Sq+99prKysr05JNPatWqVRo9erT8fn+dcxQXFyshISG4ZGRkhHMYAADAYFEt+ceeeOIJLViwQCtXrlRMTExwfMKECcHHAwYM0MCBA3X55Zdr5cqVuvHGG8+bp6ioSIWFhcF1j8dDwAEAAJLCfOcmOTlZDodDVVVVIeNVVVVKTU294L5PP/20nnjiCX3wwQcaOHDgBWt79eql5ORk7dq1q87tTqdT8fHxIQsAAIAUZriJjo7W4MGDVVZWFhwLBAIqKytTbm5uvfs99dRTevTRR7V8+XJdc801F/07Bw4c0JEjR5SWlhZOewAAAOHfCl5YWKiXX35Z8+fP1+eff65p06bJ6/VqypQpkqRJkyapqKgoWP/kk0/qoYce0rx585SZmSmXyyWXy6WamhpJUk1NjX75y19q/fr12rt3r8rKynTLLbeod+/eys/Pb6LDBAAAbUXY19yMHz9ehw4d0qxZs+RyuZSdna3ly5cHLzLev3+/7PZzmenFF19UbW2t/vVf/zVkntmzZ+vhhx+Ww+HQJ598ovnz56u6ulrp6em6+eab9eijj8rpdH7PwwMAAG1N2N9z0xrxPTcAAFx6WsX33AAAALR2hBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGKVR4aakpESZmZmKiYlRTk6ONm7ceMH6xYsXq1+/foqJidGAAQO0bNmykO2WZWnWrFlKS0tTbGys8vLytHPnzsa0BgAA2riww83ChQtVWFio2bNna8uWLcrKylJ+fr4OHjxYZ/3atWs1ceJETZ06VVu3blVBQYEKCgq0ffv2YM1TTz2l559/XnPnztWGDRvUvn175efn6+TJk40/MgAA0CbZLMuywtkhJydHQ4YM0QsvvCBJCgQCysjI0L333quZM2eeVz9+/Hh5vV698847wbFrr71W2dnZmjt3rizLUnp6uu6//3498MADkiS3262UlBSVlpZqwoQJ583p8/nk8/mC6263W927d9dl00pld8aFczgAACBCAr7j+vLFO1RdXa2EhISmm9gKg8/nsxwOh7VkyZKQ8UmTJlk//vGP69wnIyPDevbZZ0PGZs2aZQ0cONCyLMvavXu3JcnaunVrSM0Pf/hD6+c//3mdc86ePduSxMLCwsLCwmLAsnv37nDiyEVFKQyHDx+W3+9XSkpKyHhKSor+/ve/17mPy+Wqs97lcgW3nx2rr+a7ioqKVFhYGFyvrq5Wjx49tH///qZNfm2Qx+NRRkaGKioqFB8fH+l2Lmmcy6bBeWw6nMumw7lsGmc/eUlKSmrSecMKN62F0+mU0+k8bzwhIYEnWROJj4/nXDYRzmXT4Dw2Hc5l0+FcNg27vWlv3g5rtuTkZDkcDlVVVYWMV1VVKTU1tc59UlNTL1h/9r/hzAkAAFCfsMJNdHS0Bg8erLKysuBYIBBQWVmZcnNz69wnNzc3pF6SVqxYEazv2bOnUlNTQ2o8Ho82bNhQ75wAAAD1CftjqcLCQk2ePFnXXHONhg4dqjlz5sjr9WrKlCmSpEmTJumyyy5TcXGxJOm+++7T8OHD9dvf/lZjxozRggULtGnTJr300kuSJJvNphkzZuixxx5Tnz591LNnTz300ENKT09XQUFBg3pyOp2aPXt2nR9VITycy6bDuWwanMemw7lsOpzLptFc5zHsW8El6YUXXtBvfvMbuVwuZWdn6/nnn1dOTo4kacSIEcrMzFRpaWmwfvHixfr1r3+tvXv3qk+fPnrqqaf0ox/9KLjdsizNnj1bL730kqqrq3X99dfrd7/7na644orvf4QAAKBNaVS4AQAAaK34bSkAAGAUwg0AADAK4QYAABiFcAMAAIxyyYSbkpISZWZmKiYmRjk5Odq4ceMF6xcvXqx+/fopJiZGAwYM0LJly1qo09YvnHNZWloqm80WssTExLRgt63T6tWrNXbsWKWnp8tms2np0qUX3WflypW6+uqr5XQ61bt375A7CtuycM/lypUrz3tO2my2en+upa0oLi7WkCFD1LFjR3Xt2lUFBQXasWPHRffjtfJ8jTmXvFbW7cUXX9TAgQOD3+Scm5ur995774L7NMVz8pIINwsXLlRhYaFmz56tLVu2KCsrS/n5+Tp48GCd9WvXrtXEiRM1depUbd26VQUFBSooKND27dtbuPPWJ9xzKZ35evHKysrgsm/fvhbsuHXyer3KyspSSUlJg+r37NmjMWPGaOTIkSovL9eMGTN055136v3332/mTlu/cM/lWTt27Ah5Xnbt2rWZOrw0rFq1StOnT9f69eu1YsUKnTp1SjfffLO8Xm+9+/BaWbfGnEuJ18q6dOvWTU888YQ2b96sTZs26Z/+6Z90yy236NNPP62zvsmek036M5zNZOjQodb06dOD636/30pPT7eKi4vrrB83bpw1ZsyYkLGcnBzr3//935u1z0tBuOfy1VdftRISElqou0uTJGvJkiUXrHnwwQet/v37h4yNHz/eys/Pb8bOLj0NOZcfffSRJck6evRoi/R0qTp48KAlyVq1alW9NbxWNkxDziWvlQ3XqVMn6w9/+EOd25rqOdnq37mpra3V5s2blZeXFxyz2+3Ky8vTunXr6txn3bp1IfWSlJ+fX299W9GYcylJNTU16tGjhzIyMi6YuFE/npNNLzs7W2lpabrpppv08ccfR7qdVsftdkvSBX9tmedlwzTkXEq8Vl6M3+/XggUL5PV66/15paZ6Trb6cHP48GH5/X6lpKSEjKekpNT7GbvL5Qqrvq1ozLns27ev5s2bp7ffflt/+tOfFAgENGzYMB04cKAlWjZGfc9Jj8ejEydORKirS1NaWprmzp2rN998U2+++aYyMjI0YsQIbdmyJdKttRqBQEAzZszQddddp6uuuqreOl4rL66h55LXyvpt27ZNHTp0kNPp1M9+9jMtWbJEV155ZZ21TfWcDPu3pdC25ObmhiTsYcOG6Qc/+IF+//vf69FHH41gZ2ir+vbtq759+wbXhw0bpt27d+vZZ5/VH//4xwh21npMnz5d27dv15o1ayLdyiWvoeeS18r69e3bV+Xl5XK73frzn/+syZMna9WqVfUGnKbQ6t+5SU5OlsPhUFVVVch4VVWVUlNT69wnNTU1rPq2ojHn8rvatWunQYMGadeuXc3RorHqe07Gx8crNjY2Ql2ZY+jQoTwnv3HPPffonXfe0UcffaRu3bpdsJbXygsL51x+F6+V50RHR6t3794aPHiwiouLlZWVpeeee67O2qZ6Trb6cBMdHa3BgwerrKwsOBYIBFRWVlbvZ3a5ubkh9ZK0YsWKeuvbisacy+/y+/3atm2b0tLSmqtNI/GcbF7l5eVt/jlpWZbuueceLVmyRB9++KF69ux50X14XtatMefyu3itrF8gEJDP56tzW5M9Jxt5sXOLWrBggeV0Oq3S0lLrs88+s+6++24rMTHRcrlclmVZ1u23327NnDkzWP/xxx9bUVFR1tNPP219/vnn1uzZs6127dpZ27Zti9QhtBrhnstHHnnEev/9963du3dbmzdvtiZMmGDFxMRYn376aaQOoVU4duyYtXXrVmvr1q2WJOuZZ56xtm7dau3bt8+yLMuaOXOmdfvttwfrv/jiCysuLs765S9/aX3++edWSUmJ5XA4rOXLl0fqEFqNcM/ls88+ay1dutTauXOntW3bNuu+++6z7Ha79de//jVSh9AqTJs2zUpISLBWrlxpVVZWBpfjx48Ha3itbJjGnEteK+s2c+ZMa9WqVdaePXusTz75xJo5c6Zls9msDz74wLKs5ntOXhLhxrIs67//+7+t7t27W9HR0dbQoUOt9evXB7cNHz7cmjx5ckj9okWLrCuuuMKKjo62+vfvb7377rst3HHrFc65nDFjRrA2JSXF+tGPfmRt2bIlAl23LmdvR/7ucvbcTZ482Ro+fPh5+2RnZ1vR0dFWr169rFdffbXF+26Nwj2XTz75pHX55ZdbMTExVlJSkjVixAjrww8/jEzzrUhd51BSyPOM18qGacy55LWybj/96U+tHj16WNHR0VaXLl2sG2+8MRhsLKv5npM2y7Ks8N7rAQAAaL1a/TU3AAAA4SDcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBR/h+Yb+dSM/TILQAAAABJRU5ErkJggg==", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "mesh2d_output_0.plot_faces(ax)\n", "\n", "# Draw face index at the face's center\n", "for face_index, (face_x, face_y) in enumerate(\n", " zip(mesh2d_output_0.face_x, mesh2d_output_0.face_y)\n", "):\n", " ax.text(face_x, face_y, face_index, ha=\"center\", va=\"center\", fontsize=22)" ] }, { "cell_type": "markdown", "id": "d338acf6", "metadata": {}, "source": [ "`meshkernel` also searches for the middle point of edges and adds them as parameters to the `Mesh2D` class." ] }, { "cell_type": "code", "execution_count": 12, "id": "f87ac27a", "metadata": {}, "outputs": [ { "data": { "image/png": "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/osvvrD69etnvfjii9bXX39tLVmyxLriiiusvXv3xuoQuo3dc/Vv//Zv1scff2wdOnTI2rVrlzVz5kwrKSnJ+uqrr2J1CN3m1KlT1p49e6w9e/ZYkqylS5dae/bssb755hvLsixr0aJF1n333Reu/9///V+rf//+1mOPPWZ9/fXXVnl5uRUfH29VVlbG6hC6jd1z9fLLL1sbN260Dhw4YO3du9d6+OGHrbi4OOuvf/1rrA6h28yfP99yOp1WVVWVVV9fH15Onz4druE165zOnKu++pq1aNEia/PmzVZtba315ZdfWosWLbIcDof1ySefWJZlzkz1+cBiWZb1n//5n9bw4cOthIQEa8KECda2bdvC991xxx1WcXFxRP2f//xn67rrrrMSEhKs0aNHWx9++GE3dxw7ds5VSUlJuDYtLc365S9/ae3evTsGXXe/8796+9Pl/PkpLi627rjjjgu2yc3NtRISEqyrr77aevPNN7u971iwe66ef/5565prrrGSkpKswYMHW3feeaf16aefxqb5btbWeZIUMSu8Zp3TmXPVV1+zfvOb31gjRoywEhISrCFDhlh33XVXOKxYljkz5bAsy4ruezgAAACXp09fwwIAAHoGAgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjPf/AIGlhG9egfE4AAAAAElFTkSuQmCC", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "ax.plot(mesh2d_output_0.edge_x, mesh2d_output_0.edge_y, \".\");" ] }, { "cell_type": "markdown", "id": "ff70a3ab", "metadata": {}, "source": [ "Until now everything *looked* structured, so let us add a few nodes to change that." ] }, { "cell_type": "code", "execution_count": 13, "id": "73f609b5", "metadata": {}, "outputs": [], "source": [ "node_index_0 = mk.mesh2d_insert_node(4.0, 1.5)\n", "node_index_1 = mk.mesh2d_insert_node(4.0, 2.5)" ] }, { "cell_type": "markdown", "id": "b881cfc5", "metadata": {}, "source": [ "We also have to connect our nodes, otherwise `meshkernel` will garbage collect them." ] }, { "cell_type": "code", "execution_count": 14, "id": "6b1f99c6", "metadata": {}, "outputs": [], "source": [ "edge_index_0 = mk.mesh2d_insert_edge(7, node_index_0)\n", "edge_index_1 = mk.mesh2d_insert_edge(node_index_0, node_index_1)\n", "edge_index_3 = mk.mesh2d_insert_edge(node_index_1, 11)" ] }, { "cell_type": "markdown", "id": "3f446957", "metadata": {}, "source": [ "Let us get the new state." ] }, { "cell_type": "code", "execution_count": 15, "id": "f542b38f", "metadata": {}, "outputs": [], "source": [ "mesh2d_output_1 = mk.mesh2d_get()" ] }, { "cell_type": "markdown", "id": "f3b677f8", "metadata": {}, "source": [ "If we plot the output, we can also see that `meshkernel` immediately found a new face." ] }, { "cell_type": "code", "execution_count": 16, "id": "a67c2dde", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "mesh2d_output_1.plot_faces(ax)\n", "\n", "# Draw face index at the face's center\n", "for face_index, (face_x, face_y) in enumerate(\n", " zip(mesh2d_output_1.face_x, mesh2d_output_1.face_y)\n", "):\n", " ax.text(face_x, face_y, face_index, ha=\"center\", va=\"center\", fontsize=22)" ] }, { "cell_type": "markdown", "id": "6e6cef40", "metadata": {}, "source": [ "We can also delete nodes." ] }, { "cell_type": "code", "execution_count": 17, "id": "64c0fbdd", "metadata": {}, "outputs": [], "source": [ "mk.mesh2d_delete_node(node_index_1)\n", "mesh2d_output_2 = mk.mesh2d_get()" ] }, { "cell_type": "markdown", "id": "82acc708", "metadata": {}, "source": [ "We are back to six faces, but one hanging edge remains." ] }, { "cell_type": "code", "execution_count": 18, "id": "ef64cb2c", "metadata": {}, "outputs": [ { "data": { "image/png": "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w4cbsWIAAGAavwJLx44dFR4ervLycp/l5eXliomJqdc+rrrqKg0YMED79u2TJO92/uzTbrcrKirKZwIAAKHLr8ASERGhgQMHqrCw0LuspqZGhYWFSk5Ortc+qqurtXPnTsXGxkqSunXrppiYGJ99ulwubdmypd77BAAAoa2FvxtkZmYqPT1dgwYN0uDBgzV//ny53W5lZGRIkiZOnKhrrrlG2dnZkqQnnnhCN998s3r06KHTp0/rz3/+s7788ktNnjxZkucOohkzZuipp55Sz5491a1bNz322GOKi4tTWlpa4/UUAAAELb8Dy7hx43TixAnNmTNHTqdTiYmJKigo8F40e+jQIYWF/XDg5uuvv9aUKVPkdDrVvn17DRw4UJs2bVKfPn28bWbNmiW32637779fp0+f1q233qqCgoILHjAHAACuTDbLsqxAF3G5XC6XHA6HKioqGvV6FrdbatPG83NlpdS6daPtGs2EMQxujF/wYwxRF3++v3mXEAAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeA0KLDk5OeratasiIyOVlJSkrVu3XrTta6+9pttuu03t27dX+/btlZKSckH7++67TzabzWcaOXJkQ0oDAAAhyO/AsmLFCmVmZmru3Lnavn27EhISlJqaquPHj9favqioSBMmTNAnn3yikpISxcfH64477tBXX33l027kyJE6duyYd3rnnXca1iMAABBy/A4s8+bN05QpU5SRkaE+ffooNzdXrVq10pIlS2pt//bbb+u3v/2tEhMT1bt3by1atEg1NTUqLCz0aWe32xUTE+Od2rdv37AeAQCAkONXYDl79qxKS0uVkpLyww7CwpSSkqKSkpJ67eObb77Rd999pw4dOvgsLyoqUufOndWrVy9NnTpVp06duug+qqqq5HK5fCYAABC6/AosJ0+eVHV1taKjo32WR0dHy+l01msff/jDHxQXF+cTekaOHKk33nhDhYWFeuaZZ1RcXKxRo0apurq61n1kZ2fL4XB4p/j4eH+6AQAAgkyL5vxlTz/9tJYvX66ioiJFRkZ6l48fP977c79+/dS/f39dd911Kioq0ogRIy7YT1ZWljIzM73zLpeL0AIAQAjz6whLx44dFR4ervLycp/l5eXliomJqXPb5557Tk8//bTWrVun/v3719m2e/fu6tixo/bt21frervdrqioKJ8JAACELr8CS0REhAYOHOhzwey5C2iTk5Mvut2zzz6rJ598UgUFBRo0aNAlf8+RI0d06tQpxcbG+lMeAAAIUX7fJZSZmanXXntNS5cu1e7duzV16lS53W5lZGRIkiZOnKisrCxv+2eeeUaPPfaYlixZoq5du8rpdMrpdKqyslKSVFlZqUceeUSbN2/WwYMHVVhYqDvvvFM9evRQampqI3UTAAAEM7+vYRk3bpxOnDihOXPmyOl0KjExUQUFBd4LcQ8dOqSwsB9y0MKFC3X27Fn94he/8NnP3Llz9fjjjys8PFyff/65li5dqtOnTysuLk533HGHnnzySdnt9svsHgAACAU2y7KsQBdxuVwulxwOhyoqKhr1eha3W2rTxvNzZaXUunWj7RrNhDEMboxf8GMMURd/vr95lxAAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgNCiw5OTnq2rWrIiMjlZSUpK1bt9bZftWqVerdu7ciIyPVr18/rV271me9ZVmaM2eOYmNj1bJlS6WkpGjv3r0NKQ0AAIQgvwPLihUrlJmZqblz52r79u1KSEhQamqqjh8/Xmv7TZs2acKECZo0aZJ27NihtLQ0paWladeuXd42zz77rF588UXl5uZqy5Ytat26tVJTU/Xtt982vGcAACBk2CzLsvzZICkpSTfddJNeeuklSVJNTY3i4+P10EMPafbs2Re0HzdunNxut9asWeNddvPNNysxMVG5ubmyLEtxcXF6+OGHNXPmTElSRUWFoqOjlZeXp/Hjx1+yJpfLJYfDoYqKCkVFRfnTnTq53VKbNp6fy8ul1q0bbddoJm63FB3t+ZkxDD6MX/D78RhWVjKG8OXP93cLf3Z89uxZlZaWKisry7ssLCxMKSkpKikpqXWbkpISZWZm+ixLTU1Vfn6+JOnAgQNyOp1KSUnxrnc4HEpKSlJJSUmtgaWqqkpVVVXeeZfL5U83GuTcBw7BizEMbowfcGXz65TQyZMnVV1drejz/uWIjo6W0+msdRun01ln+3P/9Wef2dnZcjgc3ik+Pt6fbtRb69aSf8efAAC1sSyOruDy+HWExRRZWVk+R21cLleThRbJcxgTAAAEjl+BpWPHjgoPD1d5ebnP8vLycsXExNS6TUxMTJ3tz/23vLxcsbGxPm0SExNr3afdbpfdbven9MvCXwUAAASWX6eEIiIiNHDgQBUWFnqX1dTUqLCwUMnJybVuk5yc7NNektavX+9t361bN8XExPi0cblc2rJly0X3CQAArix+nxLKzMxUenq6Bg0apMGDB2v+/Plyu93KyMiQJE2cOFHXXHONsrOzJUnTp0/X0KFD9fzzz2v06NFavny5tm3bpldffVWSZLPZNGPGDD311FPq2bOnunXrpscee0xxcXFKS0trvJ4CAICg5XdgGTdunE6cOKE5c+bI6XQqMTFRBQUF3otmDx06pLCwHw7cDBkyRMuWLdOjjz6qP/7xj+rZs6fy8/N1ww03eNvMmjVLbrdb999/v06fPq1bb71VBQUFioyMbIQuAgCAYOf3c1hM1FTPYQEAAE3Hn+9v3iUEAACMR2ABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIzn96P5TXTuYb0ulyvAlQAAgPo6971dn4fuh0RgOXPmjCQpPj4+wJUAAAB/nTlzRg6Ho842IfEuoZqaGh09elRt27aVzWZr1H27XC7Fx8fr8OHDIfmeolDvnxT6faR/wS/U+xjq/ZNCv49N1T/LsnTmzBnFxcX5vDi5NiFxhCUsLExdunRp0t8RFRUVkv8TnhPq/ZNCv4/0L/iFeh9DvX9S6PexKfp3qSMr53DRLQAAMB6BBQAAGI/Acgl2u11z586V3W4PdClNItT7J4V+H+lf8Av1PoZ6/6TQ76MJ/QuJi24BAEBo4wgLAAAwHoEFAAAYj8ACAACMR2ABAADGI7BIysnJUdeuXRUZGamkpCRt3bq1zvarVq1S7969FRkZqX79+mnt2rXNVGnD+NO/vLw82Ww2nykyMrIZq/XPhg0bNGbMGMXFxclmsyk/P/+S2xQVFenGG2+U3W5Xjx49lJeX1+R1Xg5/+1hUVHTBGNpsNjmdzuYp2E/Z2dm66aab1LZtW3Xu3FlpaWnas2fPJbcLls9hQ/oXTJ/DhQsXqn///t4HiiUnJ+sf//hHndsEy9id428fg2n8avP000/LZrNpxowZdbZr7nG84gPLihUrlJmZqblz52r79u1KSEhQamqqjh8/Xmv7TZs2acKECZo0aZJ27NihtLQ0paWladeuXc1cef342z/J8yTDY8eOeacvv/yyGSv2j9vtVkJCgnJycurV/sCBAxo9erSGDx+usrIyzZgxQ5MnT9aHH37YxJU2nL99PGfPnj0+49i5c+cmqvDyFBcXa9q0adq8ebPWr1+v7777TnfccYfcbvdFtwmmz2FD+icFz+ewS5cuevrpp1VaWqpt27bpZz/7me6880598cUXtbYPprE7x98+SsEzfuf77LPP9Morr6h///51tgvIOFpXuMGDB1vTpk3zzldXV1txcXFWdnZ2re3vvvtua/To0T7LkpKSrN/85jdNWmdD+du/119/3XI4HM1UXeOSZK1evbrONrNmzbL69u3rs2zcuHFWampqE1bWeOrTx08++cSSZH399dfNUlNjO378uCXJKi4uvmibYPsc/lh9+hfMn0PLsqz27dtbixYtqnVdMI/dj9XVx2AdvzNnzlg9e/a01q9fbw0dOtSaPn36RdsGYhyv6CMsZ8+eVWlpqVJSUrzLwsLClJKSopKSklq3KSkp8WkvSampqRdtH0gN6Z8kVVZW6tprr1V8fPwl/4oINsE0fpcrMTFRsbGxuv322/Xpp58Gupx6q6iokCR16NDhom2CeRzr0z8pOD+H1dXVWr58udxut5KTk2ttE8xjJ9Wvj1Jwjt+0adM0evToC8anNoEYxys6sJw8eVLV1dWKjo72WR4dHX3R8/1Op9Ov9oHUkP716tVLS5Ys0fvvv6+33npLNTU1GjJkiI4cOdIcJTe5i42fy+XSv//97wBV1bhiY2OVm5urd999V++++67i4+M1bNgwbd++PdClXVJNTY1mzJihW265RTfccMNF2wXT5/DH6tu/YPsc7ty5U23atJHdbtcDDzyg1atXq0+fPrW2Ddax86ePwTZ+krR8+XJt375d2dnZ9WofiHEMibc1o/EkJyf7/NUwZMgQ/cd//IdeeeUVPfnkkwGsDPXVq1cv9erVyzs/ZMgQ7d+/Xy+88ILefPPNAFZ2adOmTdOuXbu0cePGQJfSJOrbv2D7HPbq1UtlZWWqqKjQX//6V6Wnp6u4uPiiX+jByJ8+Btv4HT58WNOnT9f69euNvjj4ig4sHTt2VHh4uMrLy32Wl5eXKyYmptZtYmJi/GofSA3p3/muuuoqDRgwQPv27WuKEpvdxcYvKipKLVu2DFBVTW/w4MHGh4AHH3xQa9as0YYNG9SlS5c62wbT5/Acf/p3PtM/hxEREerRo4ckaeDAgfrss8+0YMECvfLKKxe0Dcaxk/zr4/lMH7/S0lIdP35cN954o3dZdXW1NmzYoJdeeklVVVUKDw/32SYQ43hFnxKKiIjQwIEDVVhY6F1WU1OjwsLCi56bTE5O9mkvSevXr6/zXGagNKR/56uurtbOnTsVGxvbVGU2q2Aav8ZUVlZm7BhalqUHH3xQq1ev1scff6xu3bpdcptgGseG9O98wfY5rKmpUVVVVa3rgmns6lJXH89n+viNGDFCO3fuVFlZmXcaNGiQ7rnnHpWVlV0QVqQAjWOTXc4bJJYvX27Z7XYrLy/P+t///V/r/vvvt9q1a2c5nU7Lsizr3nvvtWbPnu1t/+mnn1otWrSwnnvuOWv37t3W3LlzrauuusrauXNnoLpQJ3/796c//cn68MMPrf3791ulpaXW+PHjrcjISOuLL74IVBfqdObMGWvHjh3Wjh07LEnWvHnzrB07dlhffvmlZVmWNXv2bOvee+/1tv/nP/9ptWrVynrkkUes3bt3Wzk5OVZ4eLhVUFAQqC5ckr99fOGFF6z8/Hxr79691s6dO63p06dbYWFh1kcffRSoLtRp6tSplsPhsIqKiqxjx455p2+++cbbJpg/hw3pXzB9DmfPnm0VFxdbBw4csD7//HNr9uzZls1ms9atW2dZVnCP3Tn+9jGYxu9izr9LyIRxvOIDi2VZ1l/+8hfrJz/5iRUREWENHjzY2rx5s3fd0KFDrfT0dJ/2K1eutK6//norIiLC6tu3r/XBBx80c8X+8ad/M2bM8LaNjo62/vM//9Pavn17AKqun3O38J4/netTenq6NXTo0Au2SUxMtCIiIqzu3btbr7/+erPX7Q9/+/jMM89Y1113nRUZGWl16NDBGjZsmPXxxx8Hpvh6qK1vknzGJZg/hw3pXzB9Dn/9619b1157rRUREWF16tTJGjFihPeL3LKCe+zO8bePwTR+F3N+YDFhHG2WZVlNd/wGAADg8l3R17AAAIDgQGABAADGI7AAAADjEVgAAIDxCCwAAMB4BBYAAGA8AgsAADAegQUAABiPwAIAAIxHYAEAAMYjsAAAAOMRWAAAgPH+PzbZVR5E/UQqAAAAAElFTkSuQmCC", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "mesh2d_output_2.plot_edges(ax, color=\"blue\")" ] }, { "cell_type": "markdown", "id": "bfba291d", "metadata": {}, "source": [ "Quite often, hanging edges are unwanted.\n", "That is why `meshkernel` provides methods to deal with them.\n", "For once we can it can count hanging edges." ] }, { "cell_type": "code", "execution_count": 19, "id": "306a116a", "metadata": {}, "outputs": [], "source": [ "hanging_edges = mk.mesh2d_get_hanging_edges()\n", "assert hanging_edges.size == 1" ] }, { "cell_type": "markdown", "id": "ac05eb75", "metadata": {}, "source": [ "`meshkernel` can also find and delete them." ] }, { "cell_type": "code", "execution_count": 20, "id": "fdfcee68", "metadata": {}, "outputs": [], "source": [ "mk.mesh2d_delete_hanging_edges()\n", "mesh2d_output_3 = mk.mesh2d_get()" ] }, { "cell_type": "markdown", "id": "3d58d8bb", "metadata": {}, "source": [ "After we have deleted the hanging edges, we are back at the original state." ] }, { "cell_type": "code", "execution_count": 21, "id": "7d8f1b3a", "metadata": {}, "outputs": [ { "data": { "image/png": "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0NITevUZliFDhigyMlINDQ1B7Q0NDUpISGh3n4SEBFv14aIzc/V9t9xyiyZOnKhjx46FYog3tautq9jYWPXt27eHRnXzmDx5cq9aV4899pjef/99ffLJJxo2bNg1a3vrc9Zldubq+3rTc1ZUVJRGjRqlSZMmqaioSGlpaVq1alW7tT21pnp1YImKitKkSZNUUVERaGtra1NFRcVV37vLzMwMqpek7du3X7U+XHRmrr6vtbVVBw8eVGJiYqiGedPqreuqq9TW1vaKdWVZlh577DFt3bpVH3/8sVJSUq67T29dW52Zq+/rzc9ZbW1tam5ubvexHltTIb2k9yawYcMGy+l0WqWlpdb//M//WI8++qg1cOBAy+v1WpZlWQ8//LC1fPnyQP2nn35q9enTx3rllVesw4cPW4WFhdYtt9xiHTx4sKcOodvYnatf/vKX1ocffmgdP37cqqmpsebNm2dFR0dbn3/+eU8dQre5ePGideDAAevAgQOWJGvFihXWgQMHrC+//NKyLMtavny59fDDDwfq//jHP1r9+vWznnrqKevw4cNWcXGxFRkZaZWXl/fUIXQbu3P16quvWmVlZdbRo0etgwcPWo8//rgVERFh/eEPf+ipQ+g2S5YssVwul1VZWWnV19cHtj/96U+BGp6zLunMXPXW56zly5dbVVVVVl1dnfXZZ59Zy5cvtxwOh/XRRx9ZlmXOmur1gcWyLOvf//3frdtuu82KioqyJk+ebO3evTvw2NSpU63c3Nyg+k2bNll33HGHFRUVZY0bN8764IMPunnEPcfOXC1btixQGx8fb/3t3/6ttX///h4Ydfe7/NHb72+X5yc3N9eaOnXqFfukp6dbUVFR1siRI6233nqr28fdE+zO1UsvvWTdfvvtVnR0tDV48GBr2rRp1scff9wzg+9m7c2TpKC1wnPWJZ2Zq976nPWP//iP1vDhw62oqChr6NCh1v333x8IK5ZlzppyWJZlhfYcDgAAwI3p1dewAACAmwOBBQAAGI/AAgAAjEdgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADG+3/lJ7QjUFZE+AAAAABJRU5ErkJggg==", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "mesh2d_output_3.plot_edges(ax, color=\"blue\")" ] }, { "cell_type": "code", "execution_count": null, "id": "bf0e2560-1d1f-4f90-ac47-61ddc4c5bd71", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.11" } }, "nbformat": 4, "nbformat_minor": 5 }