{ "cells": [ { "cell_type": "markdown", "id": "fe710ce2", "metadata": {}, "source": [ "# Mesh1d basics\n", "\n", "\n", "This tutorial will show how to deal with 1d meshes and how they can interact with 2d meshes." ] }, { "cell_type": "markdown", "id": "0058ec44", "metadata": {}, "source": [ "At the very beginning, the necessary libraries have to be imported." ] }, { "cell_type": "code", "execution_count": 1, "id": "c8e51490", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "from meshkernel import Mesh1d, GeometryList, MakeGridParameters, MeshKernel" ] }, { "cell_type": "markdown", "id": "d4dc1d17", "metadata": {}, "source": [ "First, let us describe our 1d mesh with six points of a sinusoidal function." ] }, { "cell_type": "code", "execution_count": 2, "id": "ab9f98bc", "metadata": {}, "outputs": [], "source": [ "node_x = np.linspace(0, 2 * np.pi, 8)\n", "node_y = np.sin(node_x)" ] }, { "cell_type": "markdown", "id": "f6b6267d", "metadata": {}, "source": [ "We want a continuous line, which is why we just connect each point with the following one." ] }, { "cell_type": "code", "execution_count": 3, "id": "205b31b9", "metadata": {}, "outputs": [], "source": [ "edge_nodes = np.zeros(node_x.size * 2, np.int32)\n", "edge_index = 0\n", "for node_index in range(node_x.size - 1):\n", " edge_nodes[edge_index] = node_index\n", " edge_index += 1\n", " edge_nodes[edge_index] = node_index + 1\n", " edge_index += 1" ] }, { "cell_type": "markdown", "id": "c21c3da6", "metadata": {}, "source": [ "Then, we can create our `Mesh1d` instance." ] }, { "cell_type": "code", "execution_count": 4, "id": "326d6825", "metadata": {}, "outputs": [], "source": [ "mesh1d_input = Mesh1d(node_x, node_y, edge_nodes)" ] }, { "cell_type": "markdown", "id": "84ebf506", "metadata": {}, "source": [ "We create a meshkernel instance" ] }, { "cell_type": "code", "execution_count": 5, "id": "d7d2e094", "metadata": {}, "outputs": [], "source": [ "mk = MeshKernel()" ] }, { "cell_type": "markdown", "id": "3c9bf7be", "metadata": {}, "source": [ "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": 6, "id": "7394971e", "metadata": {}, "outputs": [], "source": [ "make_grid_parameters = MakeGridParameters()\n", "make_grid_parameters.num_columns = 7\n", "make_grid_parameters.num_rows = 3\n", "make_grid_parameters.angle = 0.0\n", "make_grid_parameters.origin_x = -0.1\n", "make_grid_parameters.origin_y = -1.5\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": "1a064dba", "metadata": {}, "source": [ "We convert the curvilinear grid to an unstructured `mesh2d` and get it from MeshKernel" ] }, { "cell_type": "code", "execution_count": 7, "id": "741a1118", "metadata": {}, "outputs": [], "source": [ "mk.curvilinear_convert_to_mesh2d()\n", "mesh2d_input = mk.mesh2d_get()" ] }, { "cell_type": "markdown", "id": "1a46af64", "metadata": {}, "source": [ "Set mesh1d" ] }, { "cell_type": "code", "execution_count": 8, "id": "dce60979", "metadata": {}, "outputs": [], "source": [ "mk.mesh1d_set(mesh1d_input)" ] }, { "cell_type": "markdown", "id": "1e063d81", "metadata": {}, "source": [ "This is how our meshes currently look like:" ] }, { "cell_type": "code", "execution_count": 9, "id": "42dd9174", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8H0lEQVR4nO3de5xN9eL/8fc2zAyDcZ9LjUupXGLcIqpDmVySQ50jlXIJfYkTRkQXxMmgVJKS66iO0uXQFQ2VLkcJTaUQ5USYkWTGjMwws39/fH5mzMltmLU/e+39ej4e+2HNtvfs99pN9nvW+qzPx+P1er0CAABwiVK2AwAAABQH5QUAALgK5QUAALgK5QUAALgK5QUAALgK5QUAALgK5QUAALgK5QUAALhKadsBSlp+fr727NmjChUqyOPx2I4DAADOgtfr1aFDhxQbG6tSpU5/bCXgysuePXsUFxdnOwYAADgHu3bt0oUXXnjaxwRcealQoYIks/MVK1a0nAYAAJyNzMxMxcXFFXyOn07AlZfjp4oqVqxIeQEAwGXOZsgHA3YBAICrUF4AAICrUF4AAICrUF4AAICrUF4AAICrUF4AAICrUF4AAICrUF4AAICrUF4AAICrOFpePv74Y3Xt2lWxsbHyeDxatmzZaR//0UcfyePx/OmWlpbmZEwAAOAijpaX7OxsxcfHa9asWcV63tatW7V3796CW40aNRxKCAAA3MbRtY06d+6szp07F/t5NWrUUKVKlUo+UAnIzs62HQEAAKsiIiKsvr5fLszYpEkT5eTk6PLLL9eECRN01VVXnfKxOTk5ysnJKfg6MzPT0Wzly5d39PsDAODvvF6v1df3qwG7MTExmj17tt544w298cYbiouLU7t27bRx48ZTPicpKUmRkZEFt7i4OEeyZWdnn9VKlwAABDqPx2P1TITH66P65PF4tHTpUnXv3r1Yz2vbtq1q1qypF1988aR/f7IjL3FxccrIyFDFihXPJ3IR2dnZBUdd0tPTrR8y87Xs7GxFRUVJCs79l3gPgn3/Jd4D9j+4918q+h5kZWWV6HuQmZmpyMjIs/r89svTRidq2bKlPv3001P+fVhYmMLCwnyYyJzrC8Yf2uOCff8l3oNg33+J94D9D+79t82vThudTGpqqmJiYmzHAAAAfsLRIy9ZWVnavn17wdc7duxQamqqqlSpopo1a2rs2LHavXu3XnjhBUnSU089pTp16qhhw4Y6cuSI5s2bpw8++EDvv/++kzEBAICLOFpe1q9fr2uvvbbg68TERElSnz59lJycrL1792rnzp0Ff5+bm6uRI0dq9+7dKleunBo3bqxVq1YV+R4AACC4OVpe2rVrd9rLqZKTk4t8PXr0aI0ePdrJSAAAwOX8fswLAADAiSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVSgvAADAVRwtLx9//LG6du2q2NhYeTweLVu27IzP+eijj9SsWTOFhYWpbt26Sk5OdjIiAABwGUfLS3Z2tuLj4zVr1qyzevyOHTvUpUsXXXvttUpNTdXw4cM1YMAArVy50smYAADARUo7+c07d+6szp07n/XjZ8+erTp16mj69OmSpPr16+vTTz/Vk08+qY4dOzoVEwAAuIhfjXlZu3atEhISitzXsWNHrV279pTPycnJUWZmZpEbAAAIXH5VXtLS0hQVFVXkvqioKGVmZuqPP/446XOSkpIUGRlZcIuLi/NFVAAAYIlflZdzMXbsWGVkZBTcdu3aZTsSAABwkKNjXoorOjpa6enpRe5LT09XxYoVVbZs2ZM+JywsTGFhYb6IhwCXlyelpEibN0vt20sNG0ohIbZTAQD+l1+Vl9atW+u9994rcl9KSopat25tKRGCwebN0qJF0osvSnv2mMJSurTUq5c0d65UyvXHJwEgsDj6z3JWVpZSU1OVmpoqyVwKnZqaqp07d0oyp3x69+5d8PhBgwbpp59+0ujRo7VlyxY9++yzevXVVzVixAgnYyII/f679Nxz0pVXSg0aSFOnmuJSpYp0/fXS0aPSggXS8OGS12s7LQDgRI6Wl/Xr16tp06Zq2rSpJCkxMVFNmzbV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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "mesh1d_input.plot_edges(ax, color=\"blue\")\n", "mesh2d_input.plot_edges(ax, color=\"black\")" ] }, { "cell_type": "markdown", "id": "fffe1b35", "metadata": {}, "source": [ "Typically if we have 1d and 2d meshes we want to create contacts between them.\n", "All contacts methods expect a node mask, which determines which 1d nodes should be connected.\n", "In our case we want to consider all nodes." ] }, { "cell_type": "code", "execution_count": 10, "id": "2483c592", "metadata": {}, "outputs": [], "source": [ "node_mask = np.full(mesh1d_input.node_x.size, True)" ] }, { "cell_type": "markdown", "id": "1782bc61", "metadata": {}, "source": [ "We call the `contacts_compute_multiple` method in order to create the contacts." ] }, { "cell_type": "code", "execution_count": 11, "id": "73870f3c", "metadata": {}, "outputs": [], "source": [ "mk.contacts_compute_multiple(node_mask)" ] }, { "cell_type": "markdown", "id": "bd853a2e", "metadata": {}, "source": [ "Then, we retrieve the state from the `MeshKernel` instance." ] }, { "cell_type": "code", "execution_count": 12, "id": "966c4bf8", "metadata": {}, "outputs": [], "source": [ "mesh1d_output_0 = mk.mesh1d_get()\n", "mesh2d_output_0 = mk.mesh2d_get()\n", "contacts_output_0 = mk.contacts_get()" ] }, { "cell_type": "markdown", "id": "d9826f7e", "metadata": {}, "source": [ "We see that there are now contacts between the 1d nodes and the 2d faces." ] }, { "cell_type": "code", "execution_count": 13, "id": "c008a6b1", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABH1UlEQVR4nO3deVhU9f4H8PewDYKA4sKiuGvuuJVXs7Qkl8y0xazsuttPr+aCadKipuVWbpllLoFmXs1Ky9xF0+y6G6mllmbu4A4yKiCc3x8fByQBWebMd87M+/U883AYZ+Z8zkDNm+9q0jRNAxEREZFBuKkugIiIiKggGF6IiIjIUBheiIiIyFAYXoiIiMhQGF6IiIjIUBheiIiIyFAYXoiIiMhQGF6IiIjIUDxUF2BrGRkZOHfuHPz8/GAymVSXQ0RERPmgaRquX7+O0NBQuLnl3bbidOHl3LlzCAsLU10GERERFcLp06dRvnz5PB/jdOHFz88PgFy8v7+/4mqIiIgoP5KSkhAWFpb5OZ4Xpwsv1q4if39/hhciIiKDyc+QDw7YJSIiIkNheCEiIiJDYXghIiIiQ2F4ISIiIkNheCEiIiJDYXghIiIiQ2F4ISIiIkNheCEiIiJDYXghIiIiQ9E1vGzbtg0dO3ZEaGgoTCYTVq5cmefjf/zxR5hMpntu8fHxepZJREREBqJreLFYLAgPD8fs2bML9LyjR4/i/PnzmbeyZcvqVCEREREZja57G7Vv3x7t27cv8PPKli2LEiVK2L4gG7BYLKpLICIiUsrX11fp+R1yY8YGDRogJSUFdevWxdixY/Hwww/n+tiUlBSkpKRkfp+UlKRrbcWLF9f19YmIiBydpmlKz+9QA3ZDQkIwZ84cfPPNN/jmm28QFhaGVq1aYf/+/bk+Z+LEiQgICMi8hYWF6VKbxWLJ106XREREzs5kMintiTBpdopPJpMJK1asQOfOnQv0vJYtW6JChQr44osvcvz3nFpewsLCkJiYCH9//6KUnI3FYslsdUlISFDeZGZvFosFQUFBAFzz+gG+B65+/QDfA16/a18/kP09SE5Otul7kJSUhICAgHx9fjtkt9HdHnroIWzfvj3XfzebzTCbzXasSPr6XPGX1srVrx/ge+Dq1w/wPeD1u/b1q+ZQ3UY5iYuLQ0hIiOoyiIiIyEHo2vKSnJyMY8eOZX5/4sQJxMXFITAwEBUqVEBUVBTOnj2LRYsWAQBmzJiBypUro06dOrh16xbmz5+PzZs3Y8OGDXqWSURERAaia3jZu3cvHnvssczvIyMjAQA9evRATEwMzp8/j1OnTmX+e2pqKoYPH46zZ8/Cx8cH9evXx6ZNm7K9BhEREbk2XcNLq1at8pxOFRMTk+37kSNHYuTIkXqWRERERAbn8GNeiIiIiO7G8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhsLwQkRERIbC8EJERESGwvBCREREhqJreNm2bRs6duyI0NBQmEwmrFy58r7P+fHHH9GoUSOYzWZUq1YNMTExepZIREREBqNreLFYLAgPD8fs2bPz9fgTJ06gQ4cOeOyxxxAXF4ehQ4eib9++WL9+vZ5lEhERkYF46Pni7du3R/v27fP9+Dlz5qBy5cqYOnUqAKBWrVrYvn07pk+fjrZt2+pVJhERERmIruGloHbs2IGIiIhs97Vt2xZDhw7N9TkpKSlISUnJ/D4pKUmv8tSbMgW4ehUYPx7wcKgfnX2sXg2sWweULy+3sDD5Wq4cYDarrs52bt4ErlwBLl/O+WtaGjB9uuoqiYiUcahPwPj4eAQFBWW7LygoCElJSbh58yaKFSt2z3MmTpyId999114lqnP8OPDmm0B6OrBjB/Df/wIhIaqrsq9t24CPP87538qUyQoz/ww31oCTw++PrlJSsoeOvALJ3Y+5eTPv1/X0BKZNA0wm+1wHEZGDcajwUhhRUVGIjIzM/D4pKQlhYWEKK9JJ1arAkiVAnz7A1q1Aw4YSYB57THVl9vPEE4C7O3DmTNbt9Gng1i3g4kW57d+f+/NLlco74JQv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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "mesh1d_output_0.plot_edges(ax, color=\"blue\")\n", "mesh2d_output_0.plot_edges(ax, color=\"black\")\n", "contacts_output_0.plot_edges(ax, mesh1d_output_0, mesh2d_output_0, color=\"red\")" ] } ], "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 }