Skip to content

Instantly share code, notes, and snippets.

@rafalszulejko
Last active May 19, 2022 16:21
Show Gist options
  • Save rafalszulejko/2c9ff645b448d60d857975a8f7965045 to your computer and use it in GitHub Desktop.
Save rafalszulejko/2c9ff645b448d60d857975a8f7965045 to your computer and use it in GitHub Desktop.
wing-optimization2.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/rafalszulejko/2c9ff645b448d60d857975a8f7965045/wing-optimization2.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "JmBIYs_R_npz",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "62967e9f-4013-46bd-91e2-282081c78b62"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Collecting similaritymeasures\n",
" Downloading similaritymeasures-0.4.4.tar.gz (395 kB)\n",
"\u001b[?25l\r\u001b[K |▉ | 10 kB 20.2 MB/s eta 0:00:01\r\u001b[K |█▋ | 20 kB 22.1 MB/s eta 0:00:01\r\u001b[K |██▌ | 30 kB 23.8 MB/s eta 0:00:01\r\u001b[K |███▎ | 40 kB 24.2 MB/s eta 0:00:01\r\u001b[K |████▏ | 51 kB 17.3 MB/s eta 0:00:01\r\u001b[K |█████ | 61 kB 19.6 MB/s eta 0:00:01\r\u001b[K |█████▉ | 71 kB 19.4 MB/s eta 0:00:01\r\u001b[K |██████▋ | 81 kB 20.7 MB/s eta 0:00:01\r\u001b[K |███████▌ | 92 kB 22.4 MB/s eta 0:00:01\r\u001b[K |████████▎ | 102 kB 18.4 MB/s eta 0:00:01\r\u001b[K |█████████▏ | 112 kB 18.4 MB/s eta 0:00:01\r\u001b[K |██████████ | 122 kB 18.4 MB/s eta 0:00:01\r\u001b[K |██████████▉ | 133 kB 18.4 MB/s eta 0:00:01\r\u001b[K |███████████▋ | 143 kB 18.4 MB/s eta 0:00:01\r\u001b[K |████████████▍ | 153 kB 18.4 MB/s eta 0:00:01\r\u001b[K |█████████████▎ | 163 kB 18.4 MB/s eta 0:00:01\r\u001b[K |██████████████ | 174 kB 18.4 MB/s eta 0:00:01\r\u001b[K |███████████████ | 184 kB 18.4 MB/s eta 0:00:01\r\u001b[K |███████████████▊ | 194 kB 18.4 MB/s eta 0:00:01\r\u001b[K |████████████████▋ | 204 kB 18.4 MB/s eta 0:00:01\r\u001b[K |█████████████████▍ | 215 kB 18.4 MB/s eta 0:00:01\r\u001b[K |██████████████████▎ | 225 kB 18.4 MB/s eta 0:00:01\r\u001b[K |███████████████████ | 235 kB 18.4 MB/s eta 0:00:01\r\u001b[K |████████████████████ | 245 kB 18.4 MB/s eta 0:00:01\r\u001b[K |████████████████████▊ | 256 kB 18.4 MB/s eta 0:00:01\r\u001b[K |█████████████████████▋ | 266 kB 18.4 MB/s eta 0:00:01\r\u001b[K |██████████████████████▍ | 276 kB 18.4 MB/s eta 0:00:01\r\u001b[K |███████████████████████▏ | 286 kB 18.4 MB/s eta 0:00:01\r\u001b[K |████████████████████████ | 296 kB 18.4 MB/s eta 0:00:01\r\u001b[K |████████████████████████▉ | 307 kB 18.4 MB/s eta 0:00:01\r\u001b[K |█████████████████████████▊ | 317 kB 18.4 MB/s eta 0:00:01\r\u001b[K |██████████████████████████▌ | 327 kB 18.4 MB/s eta 0:00:01\r\u001b[K |███████████████████████████▍ | 337 kB 18.4 MB/s eta 0:00:01\r\u001b[K |████████████████████████████▏ | 348 kB 18.4 MB/s eta 0:00:01\r\u001b[K |█████████████████████████████ | 358 kB 18.4 MB/s eta 0:00:01\r\u001b[K |█████████████████████████████▉ | 368 kB 18.4 MB/s eta 0:00:01\r\u001b[K |██████████████████████████████▊ | 378 kB 18.4 MB/s eta 0:00:01\r\u001b[K |███████████████████████████████▌| 389 kB 18.4 MB/s eta 0:00:01\r\u001b[K |████████████████████████████████| 395 kB 18.4 MB/s \n",
"\u001b[?25hRequirement already satisfied: numpy>=1.14.0 in /usr/local/lib/python3.7/dist-packages (from similaritymeasures) (1.21.6)\n",
"Requirement already satisfied: scipy>=0.19.0 in /usr/local/lib/python3.7/dist-packages (from similaritymeasures) (1.4.1)\n",
"Building wheels for collected packages: similaritymeasures\n",
" Building wheel for similaritymeasures (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Created wheel for similaritymeasures: filename=similaritymeasures-0.4.4-py3-none-any.whl size=14557 sha256=cdeb7211ec052817bd9390a3e44c64e6007a3d57d00158170f47a5790a0d5e34\n",
" Stored in directory: /root/.cache/pip/wheels/a9/3a/35/009cc44db92a3500424a89baac7e77c219a44209c67f867a1e\n",
"Successfully built similaritymeasures\n",
"Installing collected packages: similaritymeasures\n",
"Successfully installed similaritymeasures-0.4.4\n"
]
}
],
"source": [
"\n",
"import matplotlib.pyplot as plt\n",
"from scipy import interpolate\n",
"import numpy as np\n",
"from math import cos, pi\n",
"from os import listdir, mkdir, getcwd, path\n",
"from google.colab import drive\n",
"airfoils_location = '/content/airfoils'\n",
"import ipywidgets as widgets\n",
"from ipywidgets import interact, interact_manual\n",
"import requests\n",
"from zipfile import ZipFile\n",
"import pandas as pd\n",
"%pip install similaritymeasures\n",
"import similaritymeasures\n",
"import torch"
]
},
{
"cell_type": "code",
"source": [
"if (not path.exists(airfoils_location)) or len(listdir(airfoils_location)) == 0:\n",
" zip_url = 'https://drive.google.com/uc?export=download&id=1jEUgAES6Qpslqe4ayWEVVxrr8AyEunil'\n",
" r = requests.get(zip_url, allow_redirects=True)\n",
" open('airfoils.zip', 'wb').write(r.content)\n",
" mkdir('/content/airfoils')\n",
" with ZipFile('airfoils.zip', 'r') as zipObj:\n",
" zipObj.extractall('/content/airfoils/')"
],
"metadata": {
"id": "SQ9kPqgcgAxv"
},
"execution_count": 2,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Generator quality analysis\n",
"\n",
"Quality analysis of the generated airfoils can be split into two main parts:\n",
"\n",
"1. Minimizing error of generated nodes on the airfoils' surfaces,\n",
"2. Maximizing similarity of generated profile to original airfoil\n",
"\n",
"I am going to start with point 2 as it does not require training."
],
"metadata": {
"id": "BzqRIGebRtWd"
}
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"id": "N1DTYtiM_np3",
"outputId": "7b9d7438-4597-4bc8-8f9b-51dc1d6b4c4c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 283
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f3d894f56d0>]"
]
},
"metadata": {},
"execution_count": 3
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"af_pts = np.loadtxt(f'{airfoils_location}/fxs02196.dat', skiprows=1).T\n",
"\n",
"plt.plot(af_pts[0], af_pts[1])"
]
},
{
"cell_type": "markdown",
"source": [
"The distribution I used last time was Chebyshev nodes."
],
"metadata": {
"id": "VPUD-Z36EGnF"
}
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"id": "08Tb7dTR_np0"
},
"outputs": [],
"source": [
"def chebyshevs(n):\n",
" return np.flip([0.5*(cos(pi*(2*k-1)/(2*n))+1) for k in range(1, n+1)])\n",
"\n",
"def getXYnodes(af_ptsx, af_ptsy, nodes, include_edges=True):\n",
" LE_index = np.argmin(af_ptsx)\n",
" if include_edges:\n",
" return np.concatenate([[1], np.flip(nodes), [0], nodes, [1]]), np.concatenate([[0], \n",
" np.flip(interpolate.interp1d(af_ptsx[0:LE_index], af_ptsy[0:LE_index], kind='linear')(nodes)), \n",
" [0], \n",
" interpolate.interp1d(af_ptsx[LE_index:], af_ptsy[LE_index:], kind='linear')(nodes), [0]])\n",
" else:\n",
" return np.concatenate([np.flip(nodes), nodes]), np.concatenate([\n",
" np.flip(interpolate.interp1d(af_ptsx[0:LE_index], af_ptsy[0:LE_index], kind='linear')(nodes)), \n",
" interpolate.interp1d(af_ptsx[LE_index:], af_ptsy[LE_index:], kind='linear')(nodes)])\n",
"\n",
"def interpolateAirfoilWithNodes(af_ptsx, af_ptsy, nodes):\n",
" LE_index = np.argmin(af_ptsx)\n",
" xx, yy = getXYnodes(af_ptsx, af_ptsy, nodes);\n",
" tck, u = interpolate.splprep([xx, yy], s=0)\n",
" unew = np.arange(0, 1.01, 0.01) #dlaczego 1.01 jest lepsze niż u[-1]???\n",
" out = interpolate.splev(unew, tck)\n",
" return out, u"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"id": "twGKlkxB_np4",
"outputId": "16b7e322-0565-4a2a-e37f-ce63d605b603",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 558
}
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f3d87130c90>"
]
},
"metadata": {},
"execution_count": 9
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1728x576 with 2 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAABXUAAAILCAYAAACn5H9mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXycZb3///cntJCEEqgsNtAmw1EUKKVFwuL5CeUAIoobKosdFPRgiBw8wpFNo4Ct8eBPjgtQCkUQkRGLtSwiHtnBHqg0xSKrgmmTLmkopUVKm0rN9f3juieZTGZNZp/X8/HIYzL3Ntcs9z2f+dyf+7rMOScAAAAAAAAAQHmoKXYDAAAAAAAAAACZI6kLAAAAAAAAAGWEpC4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZIakLAAAAAAAAAGWEpC4AVBkzO8bMVmex/KNmdnY+21RMZubM7N3B/9eb2bfy8BhhM7s/19vNBzM7y8wWj2H935nZmblsUykxs1DwmRlXoMcb/HwWct0U21xpZsfncpv5lo9jWKUfFyXJzP7bzM7Pw3a/Ymbfy/V2UzzeLWb2nRTz9zSzl8ysLg+P/ZSZTc31dstdqv3HzK4ws9sK3aZSZGZfNrM+M9tsZrsXuz0AgNJDUhcAyoyZ3WZmvWb2dzP7a6UnFgrJOdfmnJuTh+1GnHMnZLLsWJOqhZTox7dz7sPOuZ8VsA37mVl/KSUBzOx0M3vRzN4ys7+Z2VEplm00s5uCffrNILn0bTPbuZBtRuGUQ0LYzPaU9HlJN8RMOy74fG4xs0fMrDnF+qFgmS3BOrEnAm6UFDazvfL3DLJyqaRbnHNbJcnMTjWzJ4K2P5puZTObZWbdwf5+l5m9I2b2VZJm56fZI9qRMnldDRK9BuV4IkqSzGy8pB9IOsE5N8E5t6HYbQIAlB6SugBQfv5bUsg51yDp45K+Y2aHJlqwUNWEo1HKbStnVfi6zpW0tNiNiDKzD0r6nqQvSNpF0tGSupIs+w5JT0qqk/R+59wukj4oaTdJ7ypIg4HEzpJ0X0yicw9JiyR9S9I7JHVKWpBi/dsl/UnS7pLaJS0MEsVyzvVL+p180riozGwnSWdKij0p9LqkH0m6MoP1p8onvj8n6Z2Stki6LmaReyT9m5lNylWbUfmC7/F3SqqV9HyRmwMAKGEkdQGgzDjnnnfObYveDf7eJQ11rWBml5jZOkk/NbO6oHplo5m9IOmwVNs3sw8GlVVvmNm1kixu/heDKsSNZvb72GotMzvBzP4SrHudmT0WrUgLKlD/z8x+aGYbJF1hZjuZ2VVm1hNcYnh97CWwZvZRM1tuZpuCyqmDk7TZgu2+GlQwP2tmBwXzbgm2+0BQCflYsgqz2CqfmNfya8F2e83sCzHLpmx73HaHVd+avyy+zcxeDp7b3OA5HCDpeknvN3+55aZ0j5XkPY9O+4aZvRZUKoVjHn9XM7vVzNYHFWbfNLOEMYGZ/djMVgWv6zILqk7N7ERJ35B0WtDWZ4Lpg1WIZlYTbLs7eA1vNbNdg3nRbgzODJ7Xa2bWnqgNyZjZ6ZI2SXoozXKHm9mTwWvda2bXmtmO6d6PYN4OwWv/mpl1STopTbO+LWm2c26Jc27AObfGObcmybL/JelNSWc451ZKknNulXPuq865P8csd3yitgXtS7o/Bj5iZl1B+78fvCc7mtnrZjYtZjt7ma9M3NPM9jCze4PHe93M/hD3+ZhhZn82v58vMLPamO0k3GeDz+fCuPflx2Z2daIXJvjMXpjicb5kZq8E7bvHzPaOmTeqY5h5CY8jSbzL/OX1fzezuy2mQtPMjgye/yYze8bMjgmmd0g6StK1wX5zrfnK7GuC+ePNV3x+P7hfZ74S/R2pthvM29WGqr7XmNl3zGyHYN5ZZrY4+CxvNLMVZvbhFM/tw5Iei7n/KUnPO+d+FSRlr5A03cz2j1/RzN4j6X2SLnfObXXO/VrSs5I+HbPYo0qxL1mS404w7wozu8P88eRNM3vezFpi5h9iZk8H8xbIJ8aSOULSJufcYJdEzrkHnXN3SFqbYr2osKTfOOced85tlk96f8rMdgm21S9pmaQPJXmeOTlGmllr0JaLg8/Vb4LpB5g/Jm8KXqePx6yT8XdjsPyvzGxdsF89bjHdSgTbmmtmvw229Ucze1fM/JT7ZAK1wT7/ZvBeTo/ZVsLnlOg1MLOfS2qS9Jtg2sXBsh8P1t0UbOuAmO2vNLOLzB973gr2qXea71roTTN70MwmJnmNkh47La47HEscb0S/x38u6S/BopvM7OFguVT7xQ7mv/P/FrRzmZlNCebtH7zPr5uP0U6NWe8jZvZCsM4aM7swzXsDACglzjn++OOPP/7K7E++EmiLfEL3aUkTgunHSNouXym4k3wF4JWS/iBfXTVF0nOSVifZ7h7ySabPSBov6YJge2cH8z8h6RVJB0gaJ+mbkp6IWffv8j/+x0n6qqS3Y9Y9K9jWV4L5dZJ+KF/J9A75qsbfSPrvYPlDJL0q/6N7B/lqqpWSdkrQ7g/J/3DeTf7H4gGSGoN5twTP6ejgNfmxpMUx6zpJ745Z9jtxr+Xs4LX4SPCaTwzmJ217gvadleAx7w3a2yRpvaQTEy2b7rGSvOfRaT8Ips2U9Jak9wbr3Crp7mBbIUl/lfTvSdp6hny13ThJX5O0TlJtMO8KSbfFtfXRmPf8i/Kfl3+RNEG+0u/nwbxQ8DrcGLR5uqRtkg7IcB9oCNo9OVE74pY9VNKRwXMISXpR0vkZvh9tkl6S33feIemRYPlxCR5nB0n/kL+c+xVJqyVdK6kuSbuWSPp2mueZqm1J98eYdR8J2t0UvF7R9+Y6Sd+LWfar8skpyV8NcL385368fBLSgnkrJT0lae9guy9Kaku3z0pqlt9/dol5rXolHZnkead6nGMlvSafONxJ0jWSHs/BMSzpcSRB+x6VtEbSQZJ2lvRrBZ9BSftI2iB/zKiRr77eIGnP+H0k5vk8G/z/r5L+JumPMfOeyXC7d8pXje4saa/g9TsnZr9+W9KXgtf+y/JJS0vy/NZLOizm/o8lzYtb5jlJn06w7smSXoybdq2ka2Luv0/S6yk+9+mOO/3B67CD/Od1STBvR0ndwfs+PvgcvK3guJ7gcf5D0m+TzDtb0qNp9s+7JV0SN22zpENj7l8t6QdJ1s/ZMVIx31/B/fHBtr8RvC7Hyu8b741ZPul3Y5K27hIs+yNJy+Mee4Okw4P3LCLpl5nskwke54rgPYsuf6GkFRo6HqV7Tt+J295KScfH3H+P/PfhB4PtXRxsc8eY5ZfIV8ruI39Me1r++FYr6WH5ExaJ2p7q2DkYa8S3VYm/x6Pv/7iYdVLtFxfJnzx5r/zxa3qw7M6SVslfPTIueB6vSTowWK9X0lHB/xMlvS/VZ54//vjjj7/S+qNSFwDKkHPuXPkfV0fJ/wjcFjN7QP4HxzbnL509VVKHc+5159wq+R+YyXxEvhproXPubfkfbuti5rfJJxNfdM5tl/Rd+aq95ph1FwXzro5bV5LWOueuCeb3S2qVdEHQtjeD7Z0eLNsq6Qbn3B+dc/90vp/WbfLJuXhvB6/H/vI/oF50zvXGzP+t85VU2+QvBX5/tIIljbflqy7fds7dJ/9j/b1mZmnanokrnXObnHM98om3GYkWyvCx4t/zqG8F0x6T9FtJp5qv3Dtd0tedc286XyH6P/KXD4/gnLvNObfBObfdOfc/8j8435vhcwzLJzO6nK9i+7qk0214FxHfdr6a7xlJz8j/EM3EHEk3uZgKu2Scc8ucr5zdHjzfG+QT3bGSvR+nSvqR8xW0r8v/aE/mnRpKJB0VbOMQ+cRhIrvL/6BOJ1nbUu2PUd8LPjc98vvzZ4PpP5P02eDzJfn3/+fB/29LapTUHHz2/+CcczHbvNo5tzZ4PX4T056k+6xzrls+MXJysOyxkrY455akeN7JHics6Wbn3NPBPv11+X06pLEdw9IdR+L93Dn3nHPuLfkKzej+dYZ81wX3OV+t/YB8dwUfSbKdJyXtZ34gpKMl3SRpHzObIP85jVbMJt2umb0z2P75zrm3nHOvyp8Mij1OdDvnbnTO/VP+/W+U/8wmspt8sixqgqQ34pZ5Q/71ipfJsm9K2jXJY2dy3FkcvA7/lP/cRo8bR8rvgz8KPrsLlbp7lvjnma1Mn+tuSdbP5zHyyKB9Vzrn/uGce1j+BNFnY5bJ+LvROXdz8J2xTUOV2rHv4Z3OuaeC/Sqiof013T6ZyLKY5X8gn0w9MsPnlM5pwfN+INj+VfJJ1H+NWeYa51yf81dZ/EH+JMufnK+8vlP+uJ5IumNnKsm+xwel2S/OlvRN59xfnPeM8/3wflTSSufcT4P1/iR/EuqUmDYfaGYNzrmNzrmnM2wvAKAEkNQFgDIVJE0Wy1cqfjlm1vrgh0fU3vJVGlHdKTY7bNngx0jsus2SfhxcWrhJvu9Bk69mSbRufMItdlt7SqqXtCxme/8bTI8+1tei84L5U4LHGSb4YXetfP+qr5rZfDNrSPS4wQ/n1xNtJ4ENwQ/UqC3yPyjTtT0TsT9qo9tNJJPHin/PJWljkGyK6pZ/znvIJz264+btk+jBzV8C/2Jw2ewm+UTMHqmf2qC9EzxOtK/AqExfh9g2zZB0vHzSKi0ze09wSew6M/u7fCIv/jkka0c2+0/0h/g1zrle59xr8gmJZMm8DfIJgHSStS3V/hgV3/a9Jck598dgW8eYv4T+3fLV4JL0ffnKtfvNd91waRbtSbXP/kJDyZdZwf3RPO9hn6tgn96g5MehjI5hGRxH4sW/tuPlP1fNkk6Jex0+oCTvdZDA6ZRP4B4tn8R9QtL/p+FJ3VTbbQ4evzdm3g3yFbtRg6+nc25L8G+y/W2jhicmN8tXx8dqUOKEaCbL7qKRydBBGRx34j8btUEidG9Ja+ISaan22fjnma1Mn+umJOvn5RgZs+1VzrmBuO0nPD6k+m4MLu2/Mri0/+/y1axS6vck4TE0wT6ZSOzyA/KxxN4ZPqd04o8fA8HjxW6jL+b/rQnuJ3sP0h07U0n0PT5Mmv1iinyVf7xmSUfEHTfCkqL9PH9a/juq23wXHO/Pos0AgCIjqQsA5W+chg+qFF8V0isf7Ec1pdjWsGWDKr7YdVfJX867W8xfnXPuiWDdyXHrTtZwsW17Tf7H0dSYbe3qnIv+WFolX2Ec+1j1zrnbEzXcOXe1c+5QSQfKX155Uczs2Oc0Qf5y7kz6S0wmXdvHIv79y+SxElUCTTSznWPuN8k/59fkK3Oa4+aN6Pc16K/vYvlq1YnOud3kEzHR6s50FUhrEzzOdg3/gTwax8hfmtoT9D94oaRPm1myCqN58l0o7Of8AIPfUPo+HaMy3n+ccxvlkw+xr0uq1+hBSSdbkv6MM5Bqf4yKb3vs5/5n8tWfn5O0MJpQCKrxvuac+xf5wRj/y8yOy7A9qfbZX8knkSfLV+ymS+omM+xzFXzOd5f/DI/lGJbuOBIv/rV9W37/WiVfxRv7GDs756IDbyX6TDwmX718iHxl6WPy3UEcLunxmLYn2+4q+aroPWLmNTjnpo58qIz8Wf75Rz2vmArR4DV/lxIP4vS8pH+xoF/ZwPS4ZQ+QrzodIYPjTiq98lXOscum+s6Lf57Zin9d/kW+evKvMcskfa7K7TEy/nO1VtKUuONL/LE+0+/GWfJdlxwvn0gMRVfLoF3p9slEYpevkY8l1ir9c0q0byV6XWKPH9H2JOv7PGNpjp1b5E/QRsUPnpfy+zSD/WKVEg+wuUrSY3HHjQnOuS8HbV7qnPuE/AmguyTdkenzBQAUH0ldACgj5gczOt3MJgSVMx+Sr3xLNVDUHZK+bmYTg2TKV1Is+1tJU83sU0HV039q+A+P64NtTQ3as6uZnRKz7jQz+2Sw7n9o5I+WQUF1zI2SfmhmewXb2yd4TgrmtZnZEebtbGYnxSUKoq/LYcFy4+X7yuuXv5Qx6iNm9gHzg2PNke9/MV2lUFIZtH0s+iRNDto61sf6tvlBsY6SvwTzV85frnyHpA4z28X8Zef/peGjv0ftIp9gWC9pnJldpuFVaX2SQimSkrdLusDM9g0SBt+VtCCu+jkh8wPHJPuRO1/+x+uM4O96+c9fstdkF/n+njcHValfTrJcIndI+k8zm2x+cJx0lVc/lfSVYF+dKN9/5L1Jlv2B/Ov5MxsarGsfM/uBJRkUME6q/THqomDfnyLfb+6CmHm3ySdXz5DvZ1nBdj5qZu8Okh1vSPqnhu9PyaTcZ51z6+X7k/2ppBXOuRcz2GYit0v6gpnNMLOd5D9Xf3S+a41RH8MyOI7EO8PMDjSzevm+txcG+9dtkj5mZh8KjtO1wec5epKrT74P1ViPSfq8pBecc/9Q0O+u/Ou0Plgm6Xad7ybifkn/Y2YN5gfgepeZxXczkqn7NLyLkjslHWRmnzY/YN1lkv7snHtJGhy87FFJcs79VdJySZcHbTxZ0sHyl3xHzZT0uySPne64k8qTwbr/aX7QuU/JJ8aTeUrSbmY2WKUZfW3lT5jWBM9hfMz8lWZ2VnA3Iv+eHGU+0T1b0iLnu8lRsJ1DJT2Q5PFHfYxMIP5zFa3Gvzh4LY6R9DFJv4xZJtPvxl3kTxpskE9MfjeLdqXbJxM5NGb584PHXpLBc0q0b8VPu0PSSWZ2XPC+fi3Y/hMaozTHzuWSZgWfrxM1sgugdNLtFz+RNMfM9guOvweb79LlXknvMbPPBa/Z+OBYd0AQH4TNbFfnu6L4uzI71gMASgRJXQAoL04+IbVa/rLRq+T7ULwnxTrflr/UcIX8j/6fJ1swuFz8FPnB1TZI2k/S/8XMv1N+II9fmr8E8zn5UdJj1/3/g3UPlL+kOLa/33iXyF+quCTY3oMK+odzznXKD+pzbfBcX5Ef7CeRBvmE0sbguW6Qvwwy6heSLpe/tPRQ+STWWCVt+xg9LF/9tc7MXhvDY62Tfz3Wyice2qIJGPnE/luSuiQtln99bk6wjd/Ld/XwV/nXtV/DL5v9VXC7wRJXyd4s/3l7XP7z16/UJxViTVGSH9nOuS3OuXXRP/lLoPtjkl/xLpSvNHtT/nOyIMlyidwo/zo8I98n7KI0y8+Rr7T8q/zgXn+S1JHkebwu34/j25L+aGZvyp+geUP+/U4p1f4Y4275wb+WyydXbopZf1XwnJx8v5FR+8l/xjbLJ8muc849kkF7MtlnfyFf7TfaKl055x6U78P21/JVgO9S0HfsWI5hSn8cifdz+cGO1sn3+fmfwWOskq9q/IZ8AmaVfMVvNO7+saTPmNlGM4v2cf6EfL+e0arcF+T3l+j9TLb7efnBo14InsNCZda9RyK3yif86oLHXi9/mXZHsO0jNLy/3imKeZ2DeS3BsldK+kx0/wwSnR+RrxRPJN1xJ6kgIf4p+c/d6/L9pybdZ4Plb9Hw74TPyV8dMU++b+yt8p8LBcnP3eUTjHLOPS/fT3NEfkCtXSSdG7Otj8kPtpbsypCxHCPj3STfN+omM7sreG4fk/98vyY/OOLnY74HpMy/G2+Vfy/WyH++UvWFPUy6fTKJu+Xfu43y78ennO+jNt1zGvYaBNP+W9I3g2kXOuf+EjzPa4JtfEzSx4Jtj1WqY+dXg8eKdn9wV8ItJJduv/iBfML6fvnk7E3yg3S+KekE+X1yrfzxKjogm+Rf35XB8bAtaBsAoExER+MEACCnzFdvrpYUziQhlMd23CJptXMu2WBVFSeoXrrNORff/UXZMLOfyFcW/77YbalkZnaz/ACGVbN/IDNm9l1JrzrnfpTBssslHef8wEzplv2KpCnOuYtz0MwxM7M95U9qHOKSDFAVs+wHJP2Hcy6jgbnM7I+S/t0599zYW5pb1fjdCABApRmXfhEAADJjvkuAP8pXNl0k39dbxhU9QJRz7uxit6HSmVlIvqox2UjuqGLOuW9kseyMLJa9ZnQtyo+ggnj/DJddLH91Q6bbPmK07QIAAEiH7hcAALn0fvnRl6OXNH4yXeUTgMIzsznyXQ983zm3otjtAQAAAJAdul8AAAAAAAAAgDJCpS4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZIakLAAAAAAAAAGWEpC4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZIakLAAAAAAAAAGWEpC4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZIakLAAAAAAAAAGWEpC4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZIakLAAAAAAAAAGWEpC4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZIakLAAAAAAAAAGWEpC4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZIakLAAAAAAAAAGWEpC4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZIakLAAAAAAAAAGWEpC4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZIakLAAAAAAAAAGWEpC4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZIakLAAAAAAAAAGWEpC4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZIakLAAAAAAAAAGWEpC4AAAAAAAAAlBGSugAAAAAAAABQRkjqAgAAAAAAAEAZGVfsBuTSHnvs4UKhULGbAQAAUFWWLVv2mnNuz2K3A/lFrA0AAFBYqeLsikrqhkIhdXZ2FrsZAAAAVcXMuovdBuQfsTYAAEBhpYqz6X4BAAAAAAAAAMoISV0AAAAAAAAAKCMkdQEAAAAAAACgjFRUn7oAAKB43n77ba1evVr9/f3FbgrypLa2VpMnT9b48eOL3RQAAICqQqxd2UYTZ5PUBQAAObF69WrtsssuCoVCMrNiNwc55pzThg0btHr1au27777Fbg4AAEBVIdauXKONs+l+AQAA5ER/f7923313gswKZWbafffdqQ4BAAAoAmLtyjXaOJukLgAAyBmCzMrG+wsAAFA8xGKVazTvLUldAAAAAAAAACgjJHUBAEDx9PZKM2dK69blZHNXX321DjjgAIXDYd1zzz268sorJUlXXHGFrrrqqlFvNxQK6bXXXku5zHe/+91Rbx8AAADIOWLtikZSFwAAFM+cOdLixdLs2TnZ3HXXXacHHnhAkUhEH//4x3XppZfmZLuZINAEAABASSHWrmgkdQEAQOHV1Ulm0rx50sCAvzXz00epra1NXV1d+vCHP6wf/vCHuuWWW3TeeeeNWO5vf/ubTjzxRB166KE66qij9NJLL41YZsOGDTrhhBM0depUnX322XLODc775Cc/qUMPPVRTp07V/PnzJUmXXnqptm7dqhkzZigcDiddDgAAAMg7Yu2qQFIXAAAUXleXNGuWVF/v79fXS+GwtGLFqDd5/fXXa++999YjjzyiCy64IOlyra2tuuaaa7Rs2TJdddVVOvfcc0cs8+1vf1sf+MAH9Pzzz+vkk09WT0/P4Lybb75Zy5YtU2dnp66++mpt2LBBV155perq6rR8+XJFIpGkywEAAAB5R6xdFcYVuwEAAKAKNTZKDQ1Sf79UW+tvGxqkSZPy+rCbN2/WE088oVNOOWVw2rZt20Ys9/jjj2vRokWSpJNOOkkTJ04cnHf11VfrzjvvlCStWrVKL7/8snbfffcR28h0OQAAACCniLWrAkldAABQHH19Ulub1NoqzZ/vB3LIs4GBAe22225avnz5qNZ/9NFH9eCDD+rJJ59UfX29jjnmGPX39496OQAAACAviLUrHt0vAACA4li0SJo7V5o+3d8GZ+vzqaGhQfvuu69+9atfSZKcc3rmmWdGLHf00UfrF7/4hSTpd7/7nTZu3ChJeuONNzRx4kTV19frpZde0pIlSwbXGT9+vN5+++20ywEAAAB5R6xd8UjqAiiM3l5p5kxp3bpitwRAlYtEIrrppps0ffp0TZ06VXffffeIZS6//HI9/vjjmjp1qhYtWqSmpiZJ0oknnqjt27frgAMO0KWXXqojjzxycJ3W1lYdfPDBCofDKZcDACCnensV2X+2QlO2q6ZGCoWkoMvJhCIRv0wmywJAtoi1C8diR5grdy0tLa6zs7PYzQCQyLnnSjfcIJ1zjnTddaPbRm+vdPrp0oIFee8LCED2XnzxRR1wwAHFbgbyLNH7bGbLnHMtRWoSCoRYGyisSERqb5d6eqSmJqmjw49zNGK5429W60OnaYt2HpxWX++vto5fPhLxV2Jv2aKRyx5LrA2UMmLtypdtnE2lLoD8qquTzKR586SBAX9r5qdna84cafFiafbs3LcTAAAAKBHR5Gt3t+Scv21tjauqDeLs9oeOHZbQlXzStr195Hbb24cndIctmyTWprIXAEoTSV0A6Y2l64SuLmnWLF8CIPnbcFhasSLzbeQyMQwAAAAUQcLkaJI4O2XyNSqIs3vUlPDxenoymyZJPd0DCWPtjJLLAICiIKkLIL2xVMg2NkoNDVJ/v1Rb628bGrK7pCsXiWEAAACgSJImRz/3u4RxdtLka+z0IM5u0qqEyzYlyPUmmiZJTfUbEsbaGSWXAQBFQVIXQHK5qpDt65Pa2qQlS/xtthW/uUgMx2LQNgAAABRQ0uToQ8cmjLOTJl/jp/f1qeP4h1VfOzBscn2974M3XkfHUO522LLv/03CWDuj5HKMSEQKTd6uGhtQaMp2KnoBII9I6gJILlcVsosWSXPnStOn+9tFi7Jvy1gTw7HomxcAAAAFlDQ5Gu06IS7OTpp8jU/ULlqk8ANf0Pyf1Ki52eeFm5sTD5Im+Wnz52vksg33Joy1M04uK6Yaec04OdWoe/U4umoAgDwiqQuUiGwGIMhq2bkbFapdp5oal/3ABrmukB2LXCSG6ZsXAAAAudLbq8j+sxWasj1tXJ40OapVCePspMnXBIna6PIrV/oQd+XK5MslXTZJrJ1xcllS+xndiauRz+hO3hgAwKiR1AVKQDYDEGS97Pn16t42Sc5Z2oENEiaLc1khW2z0zQuUlGKPpn3FFVfoqquukmrJUQEAACAASURBVCRddtllevDBBwvbgDQmTJgw6nVvueUWrV27dvD+2WefrRdeeCEXzQIABCKf+51a//I1da8elzYuT5gc3aFfHcc/nDTOziZRmy/ZJJd7LMmAbUmmA8gvYu3UKiHWJqkL5FkmB9JsBiDIeNm6OrWfsVJbtu+U0XaTJos/nfisfbG/IEallCqPgSpXaqNpz549W8cff3xxHjwP4gPNn/zkJzrwwAOL2CIAqCDB1V/tDx2rLdp52KxksXbC5OjPahV+4AtjuxKtADJNLjc1WVbTpTL9TQGUAWLt/CqVWJukLpBHmR5IsxmAIONlu7rUo+aMt5tNYrnUviCyUkmVx0AZy8do2m+99ZZOOukkTZ8+XQcddJAWLFggSQqFQrr44os1bdo0HX744XrllVdGrHvWWWdp4cKFg8tffvnlet/73qdp06bppZdeGtz+F7/4RR1++OE65JBDdPfddydsx/e//30ddthhOvjgg3X55ZdLki699FLNnTt3cJlo5cLmzZt13HHHDT5Wom0++uij+uhHPzp4/7zzztMtt9wiyQfIhx12mA466CC1trbKOaeFCxeqs7NT4XBYM2bM0NatW3XMMceos7NTknT77bdr2rRpOuigg3TJJZcMbnfChAlqb2/X9OnTdeSRR6qvry/j1x4Aqkpw9ddgf7hxksXrpVB5m08dHb76OFb9Dv0Ju2qQyvw3BVDiiLWrI9YmqQvkUaYH0mwGIMh42cZGNU14PePtZpNYHs0XRMmchc9F37wAxizb0bQz8b//+7/ae++99cwzz+i5557TiSeeODhv11131bPPPqvzzjtP559/ftpt7bHHHnr66af15S9/efCysY6ODh177LF66qmn9Mgjj+iiiy7SW2+9NWy9+++/Xy+//LKeeuopLV++XMuWLdPjjz+u0047TXfcccfgcnfccYdOO+001dbW6s4779TTTz+tRx55RF/72tfknMv4OZ933nlaunSpnnvuOW3dulX33nuvPvOZz6ilpUWRSETLly9XXUy/4WvXrtUll1yihx9+WMuXL9fSpUt11113SfKB9JFHHqlnnnlGRx99tG688caM2wEAVSW4+qtJqxLOThavV7pw2Fcfj6hGTpK8zkfSCYBHrF0dsTZJXWAUMk1QZnogzWYAgqyW3f9W1Y/bltGy2SSWs/2C4Cw8gHjZHHMyNW3aND3wwAO65JJL9Ic//EG77rrr4LzPfvazg7dPPvlk2m196lOfkiQdeuihWrlypSQfRF555ZWaMWOGjjnmGPX396sn7sB3//336/7779chhxyi973vfXrppZf08ssv65BDDtGrr76qtWvX6plnntHEiRM1ZcoUOef0jW98QwcffLCOP/54rVmzJquz9o888oiOOOIITZs2TQ8//LCef/75lMsvXbpUxxxzjPbcc0+NGzdO4XBYjz/+uCRpxx13HKxSiH3eAFBNMi5E6OtTx/EPq752YNjkZLF2tcimGjkfSScAHrF2dcTa48a8BaDKRBOU0bPK0QSlNDJoaWry8+PFH0ij67W3+yCmqckHg4mCoKyWXXqBFMls2Y6O4c9LSp0AzuR5RaU6C1/Wl5319kqnny4tWEC/vECWsjnmZOo973mPnn76ad1333365je/qeOOO06XXXaZJMlsqD+/2P+T2Wkn3x/5DjvsoO3bt0uSnHP69a9/rfe+971J13PO6etf/7rOOeecEfNOOeUULVy4UOvWrdNpp50mSYpEIlq/fr2WLVum8ePHKxQKqb9/+KWr48aN08DAUNIgOr+/v1/nnnuuOjs7NWXKFF1xxRUj1s3G+PHjB1+b2OcNANUimzhfixYpLGUca2OktL8piLWBUSPWro5Ym0pdIEvZXCaUTVVtwrPavb3SzJljGgk302WzGdk2m+clja6ytyS6akhnzhxp8WJp9uxitwQoO9kcczK1du1a1dfX64wzztBFF12kp59+enBetM+vBQsW6P3vf/+otv+hD31I11xzzeAlW3/6058SLnPzzTdr8+bNkqQ1a9bo1VdflSSddtpp+uUvf6mFCxfqlFNOkSS98cYb2muv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dCIiapR4Rxx5A3bqeomQkOqVExGR7+NnAxFRzZnNQGqqNjJXKW2bmsrRWEREjRnnWydvwE5dL8ERBEREVBE/G4iIaofTaujs0CUiatR4Rxx5A3bqegmOICAioor42UBEREREVPt4Rxx5A39PN4CqzmzmH+pEROSInw1ERERERLUrOVmbQ7f8FAy8I44aGo7UJSIiIiIiIiIisuMdceQNOFKXiIiIiIiIiIioHN4RRw0dR+oSEREREREREREReRF26nqLvDwgPh44dszTLSEiIm+UlwdLtwUw3VAKgwEwmQCLxdONIiJqIJi1iYioJvg5Qh7ATl1vsXAhsH07sGCBp1tCREReyHL3x0j48U/IOeIPESAnR1v8gR27RERg1iYioprh5wh5ADt1G7rAQG1W7pQUwGbTtkpp5URERJdj/xxJ2jQURWjm8FRREZCU5KF2ERE1BMzaRERUE/bPEUvKaZhsh2BIeQUmZYWlyVRPt4waAXbqNnRZWcDkyYDRqD02GrWZurOzPdsuIiLyDvbPkVyEuHw6N7ee20NE1JAwaxMRUU1kZcHS/xUk4HXkwASBATkwIaHJW7wjjuocO3UbunbtgKAgoLgYCAjQtkFBQNu2nm4ZERF5A/vnSAgOu3w6xHVfLxFR48CsTURENdGuHZL2THS+I+6cgXfEUZ1jp643OH4cSEwE0tO1LSfeJiKi6jh+HMk3fwljgM2h2GgEkpM91CYiooaCWZuIiGogt6Cl63LeEUd1TImIp9tQa+Li4iQjI8PTzSAiImqQLBZtDt3cXG2EbnKydpcxUU0ppXaJSJyn20F1i1mbiIjImcmkLUJcUWgoYLXWd2vI11SWszlSl4iIqJEwm7VgabNpW3boEhERERHVTHLypanZy/COOKoP7NQlIiIiIiIiIiK6AmYzkJqqjcxVStumpnIABdU9f083gIiIiIiIiIiIyFuZzezEpfrHkbpEREREREREREREXoSdukREROTEYtEWfTAYtK3F4ukWERERERERURl26hIREZEDiwVISNBW8RXRtgkJ7NglIu/DC1RERETkq9ipS0RERA6SkoCiIseyoiKtnIjIW/ACFRERNUS84Ei1hZ26RERE5CA3t3rlREQNES9QERFRQ8MLjlSbaqVTVyk1Qin1o1LqoFJqnovnmyql1tif/0YpZbKXm5RS55RSmfavV8u9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kw4dOrg8l/I52F0+f+WVV2TatGkiInL8+HHp2bOnXLx4UURE5s+fL0lJSSIicvHiRcnPzxcR95n622+/lZ9//llERPbs2SPXX3+9iIicOHFCbrjhBvnll19ERGTKlCnyxRdfiIjI+PHjZfny5SIismnTJrnrrruczuPkyZPSsmVLKSwsFBH37727dlV2jvHx8bJz506X7x8R1S/mbPc5myN1r0BSknZVoDxfvEpQUFCA7du3480338Tq1av18q+++gqDBg3C6NGjERERgYsXL+Kxxx5D7969ER0djddee01//bBhw9CzZ09ERUVh/fr1bo81e/ZsREZGYtiwYcjP1xbBOHToEEaMGIFevXph0KBB2L9/P/773/9iw4YNeOyxxxAbG4tvvvkGvXr1AgDs3r0bSink2pdM7tixI4qKipCfn4877rgDvXv3Ru/evfGf//wHAFBYWIjp06ejT58+6NGjh96+5cuXY9y4cRgxYgQ6d+6MOXPmuGzzzp07MWDAAMTExKBPnz44e/Ysli9fro8MBYDbbrtNv+LbvHlz/OlPf0JMTAyee+453HnnnQ7v6W233QYA+Oyzz9C/f3/D85O1AAAgAElEQVT07NkTd955JwoKCgAA8+bNQ0REBKKjo/HnP//ZqT3r16/HxIkT0bRpU4SFhaFTp07YsWOHQx0RwZdffonx48cDAKZOnapf2V6/fj2mTp0KABg/fjw2bdoEEYFSCoWFhSgtLcW5c+dw1VVXISgoCEopfeRHSUkJSkpKoJQCACil8NtvvwEAzpw5g+uvvx4AEBQUpLelsLBQr++O0WjEkCFDAABXXXUVevbsqV+lr8yuXbtw/Phx3HLLLS6f/+mnn/DLL79g0KBBlbbXaDTC31+7lbq4uNhlezdt2oSOHTsiNDTUoVxE8O6772LSpEn6MVy9jz/88AP69u2rHys+Ph5p9vm5b7nlFv34/fr1q9K5E5FnuF3YKQRAXh4QH88FVYnIAbM2s7b2t7o2OjosLAyRkZEO+7vppptw7bXXOrWlKhlx1apVmDhxolN5xRzsLp/v27cPQ4cOBQBcd911aNGiBTIyMgAA//znP/H4448DAAwGA1q3bg3Afabu0aOH/n1kZCTOnTuH8+fPIysrC507d0abNm0AADfffLM+6rf88YcMGeLy53vt2rUYOXIkjEZjpe+9u3ZVdo5E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\n"
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"f, (ax1, ax2) = plt.subplots(1, 2, sharey=True, figsize=(24,8))\n",
"f.suptitle('3rd degree spline interpolation, 4 and 6 Chebyshev nodes between (0,0) and (1,0) on top and bottom surfaces')\n",
"\n",
"\n",
"nodes = chebyshevs(4)\n",
"XX, YY = getXYnodes(af_pts[0], af_pts[1], nodes)\n",
"(out, u) = interpolateAirfoilWithNodes(af_pts[0], af_pts[1], nodes)\n",
"# ax1.plot(XX, YY, 'bo', af_pts[0], af_pts[1], '#D0D0D0', out[0], out[1], 'b')\n",
"ax1.plot(af_pts[0], af_pts[1], 'r*', out[0], out[1], 'bo')\n",
"area = similaritymeasures.area_between_two_curves(af_pts.T, np.vstack([out[0], out[1]]).T)\n",
"ax1.annotate(f'Area between curves:{area}\\nfile data points:{len(af_pts[0])}\\nspline points:{len(out[0])}', [0.1, 0])\n",
"ax1.legend(['file data', 'spline evaluation'])\n",
"\n",
"nodes = chebyshevs(6)\n",
"XX, YY = getXYnodes(af_pts[0], af_pts[1], nodes)\n",
"(out, u) = interpolateAirfoilWithNodes(af_pts[0], af_pts[1], nodes)\n",
"ax2.plot(af_pts[0], af_pts[1], 'r*', out[0], out[1], 'bo')\n",
"area = similaritymeasures.area_between_two_curves(af_pts.T, np.vstack([out[0], out[1]]).T)\n",
"ax2.annotate(f'Area between curves:{area}\\nfile data points:{len(af_pts[0])}\\nspline points:{len(out[0])}', [0.1, 0])\n",
"ax2.legend(['file data', 'spline evaluation'])"
]
}
],
"metadata": {
"interpreter": {
"hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1"
},
"kernelspec": {
"display_name": "Python 3.8.10 64-bit",
"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.8.10"
},
"orig_nbformat": 4,
"colab": {
"name": "wing-optimization2.ipynb",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment