diff --git a/data/turbine_cascade/README.md b/data/turbine_cascade/README.md new file mode 100644 index 0000000000000000000000000000000000000000..90c9a77fe1e9ce5a458a73381f028f4c34d60f2c --- /dev/null +++ b/data/turbine_cascade/README.md @@ -0,0 +1 @@ +This dataset is containing profile points of a turbine airfoil. The points are on a 2D diff --git a/data/turbine_cascade/profilepoints.txt b/data/turbine_cascade/profilepoints.txt new file mode 100644 index 0000000000000000000000000000000000000000..dec469ee99bc53ab7ddb2807e8b43302f9f8a7e1 --- /dev/null +++ b/data/turbine_cascade/profilepoints.txt @@ -0,0 +1,271 @@ +0.0589828110 -0.0311948525 0.00 +0.0589230693 -0.0312344106 0.00 +0.0588610401 -0.0312692543 0.00 +0.0587967483 -0.0312994586 0.00 +0.0587306720 -0.0313243276 0.00 +0.0586625790 -0.0313439231 0.00 +0.0585910141 -0.0313584834 0.00 +0.0585143095 -0.0313676742 0.00 +0.0584326014 -0.0313704862 0.00 +0.0583461865 -0.0313657768 0.00 +0.0582555761 -0.0313522551 0.00 +0.0581615496 -0.0313284657 0.00 +0.0580652494 -0.0312928245 0.00 +0.0579683600 -0.0312437698 0.00 +0.0578731770 -0.0311796656 0.00 +0.0577822662 -0.0310991920 0.00 +0.0576974240 -0.0310025386 0.00 +0.0576203297 -0.0308908423 0.00 +0.0575494663 -0.0307660798 0.00 +0.0574711874 -0.0306162162 0.00 +0.0573867954 -0.0304561595 0.00 +0.0572801692 -0.0302574178 0.00 +0.0571121959 -0.0299493972 0.00 +0.0568876509 -0.0295405073 0.00 +0.0566246288 -0.0290647755 0.00 +0.0562992452 -0.0284817396 0.00 +0.0559273218 -0.0278224223 0.00 +0.0555122570 -0.0270953804 0.00 +0.0550570277 -0.0263083042 0.00 +0.0545642509 -0.0254681144 0.00 +0.0540362517 -0.0245810603 0.00 +0.0534751142 -0.0236527974 0.00 +0.0528827175 -0.0226884472 0.00 +0.0522607786 -0.0216926693 0.00 +0.0516108698 -0.0206696970 0.00 +0.0509344480 -0.0196233916 0.00 +0.0502328716 -0.0185572791 0.00 +0.0495074149 -0.0174745818 0.00 +0.0487592812 -0.0163782494 0.00 +0.0479896130 -0.0152709846 0.00 +0.0471995021 -0.0141552678 0.00 +0.0463900055 -0.0130333719 0.00 +0.0455544885 -0.0119131263 0.00 +0.0446689047 -0.0108167139 0.00 +0.0437255481 -0.0097557897 0.00 +0.0427285169 -0.0087332654 0.00 +0.0416802110 -0.0077533021 0.00 +0.0405834177 -0.0068196656 0.00 +0.0394411751 -0.0059357935 0.00 +0.0382567630 -0.0051047806 0.00 +0.0370335994 -0.0043294576 0.00 +0.0357791529 -0.0036053832 0.00 +0.0345005929 -0.0029268333 0.00 +0.0332004395 -0.0022949524 0.00 +0.0318813010 -0.0017107155 0.00 +0.0305459331 -0.0011749512 0.00 +0.0291972244 -0.0006883107 0.00 +0.0278382093 -0.0002512578 0.00 +0.0264720462 0.0001359569 0.00 +0.0251020307 0.0004733035 0.00 +0.0237315736 0.0007609923 0.00 +0.0223642068 0.0009994884 0.00 +0.0210035785 0.0011895300 0.00 +0.0196534426 0.0013321438 0.00 +0.0183176588 0.0014286581 0.00 +0.0170001935 0.0014807209 0.00 +0.0157051156 0.0014903159 0.00 +0.0144365994 0.0014597754 0.00 +0.0131989294 0.0013917983 0.00 +0.0119965080 0.0012894658 0.00 +0.0108338718 0.0011562463 0.00 +0.0097157122 0.0009960265 0.00 +0.0086468947 0.0008131045 0.00 +0.0076325117 0.0006122095 0.00 +0.0066779130 0.0003985494 0.00 +0.0057888047 0.0001776881 0.00 +0.0049713350 -0.0000444319 0.00 +0.0042320042 -0.0002608031 0.00 +0.0035781180 -0.0004644908 0.00 +0.0030406666 -0.0006419421 0.00 +0.0025744663 -0.0008058605 0.00 +0.0022148644 -0.0009383509 0.00 +0.0019712296 -0.0010277899 0.00 +0.0017687859 -0.0010992716 0.00 +0.0015765741 -0.0011630263 0.00 +0.0014071378 -0.0012043640 0.00 +0.0012432927 -0.0012199200 0.00 +0.0010877613 -0.0012130026 0.00 +0.0009431850 -0.0011886896 0.00 +0.0008106392 -0.0011503165 0.00 +0.0006904777 -0.0011005321 0.00 +0.0005826521 -0.0010420053 0.00 +0.0004868390 -0.0009771845 0.00 +0.0004025230 -0.0009080538 0.00 +0.0003272732 -0.0008342998 0.00 +0.0002594151 -0.0007549020 0.00 +0.0001982010 -0.0006698991 0.00 +0.0001443479 -0.0005791280 0.00 +0.0000978844 -0.0004822721 0.00 +0.0000593009 -0.0003792202 0.00 +0.0000292512 -0.0002692786 0.00 +0.0000088656 -0.0001510058 0.00 +0.0000001364 -0.0000218593 0.00 +0.0000066324 0.0001223612 0.00 +0.0000343728 0.0002829146 0.00 +0.0000878871 0.0004495219 0.00 +0.0001687193 0.0006163644 0.00 +0.0002746717 0.0008002255 0.00 +0.0003873645 0.0009913744 0.00 +0.0005204783 0.0012058767 0.00 +0.0007001432 0.0014832766 0.00 +0.0009176333 0.0018096979 0.00 +0.0011604103 0.0021630702 0.00 +0.0014359927 0.0025498013 0.00 +0.0017319030 0.0029460347 0.00 +0.0020427417 0.0033426148 0.00 +0.0023627162 0.0037322469 0.00 +0.0026856421 0.0041081834 0.00 +0.0030045355 0.0044635932 0.00 +0.0033177664 0.0047982630 0.00 +0.0036293342 0.0051178775 0.00 +0.0039427236 0.0054268517 0.00 +0.0042611568 0.0057286849 0.00 +0.0045880147 0.0060264893 0.00 +0.0049272656 0.0063233867 0.00 +0.0052840213 0.0066229019 0.00 +0.0056654424 0.0069294608 0.00 +0.0060658496 0.0072368612 0.00 +0.0064752103 0.0075366428 0.00 +0.0068926504 0.0078279785 0.00 +0.0073192367 0.0081114191 0.00 +0.0077546165 0.0083864827 0.00 +0.0081984338 0.0086527225 0.00 +0.0086503363 0.0089097342 0.00 +0.0091099669 0.0091571300 0.00 +0.0095769680 0.0093945641 0.00 +0.0100509848 0.0096217078 0.00 +0.0105316527 0.0098382575 0.00 +0.0110186128 0.0100439369 0.00 +0.0115115007 0.0102384885 0.00 +0.0120099491 0.0104216704 0.00 +0.0125135923 0.0105932719 0.00 +0.0130220605 0.0107530879 0.00 +0.0135349802 0.0109009389 0.00 +0.0140519826 0.0110366617 0.00 +0.0145726912 0.0111601049 0.00 +0.0150967283 0.0112711416 0.00 +0.0156237216 0.0113696506 0.00 +0.0161532891 0.0114555366 0.00 +0.0166850513 0.0115287098 0.00 +0.0172186311 0.0115891024 0.00 +0.0177536447 0.0116366587 0.00 +0.0182897094 0.0116713342 0.00 +0.0188264460 0.0116931073 0.00 +0.0193634690 0.0117019615 0.00 +0.0199003934 0.0116978994 0.00 +0.0204368387 0.0116809404 0.00 +0.0209724181 0.0116511135 0.00 +0.0215067448 0.0116084650 0.00 +0.0220394372 0.0115530590 0.00 +0.0225701062 0.0114849668 0.00 +0.0230983639 0.0114042875 0.00 +0.0236238252 0.0113111234 0.00 +0.0241460985 0.0112056048 0.00 +0.0246648268 0.0110878656 0.00 +0.0251797958 0.0109580169 0.00 +0.0256908149 0.0108161684 0.00 +0.0261976900 0.0106624204 0.00 +0.0267002306 0.0104968851 0.00 +0.0271982319 0.0103196681 0.00 +0.0276914898 0.0101308659 0.00 +0.0281797801 0.0099305315 0.00 +0.0286629595 0.0097189355 0.00 +0.0291408549 0.0094962411 0.00 +0.0296131222 0.0092622655 0.00 +0.0300793392 0.0090167363 0.00 +0.0305395608 0.0087602861 0.00 +0.0309947982 0.0084951113 0.00 +0.0314451218 0.0082216022 0.00 +0.0318915697 0.0079416139 0.00 +0.0323347274 0.0076561621 0.00 +0.0327744667 0.0073650839 0.00 +0.0332105982 0.0070681325 0.00 +0.0336430851 0.0067653115 0.00 +0.0340719253 0.0064566563 0.00 +0.0344970973 0.0061421700 0.00 +0.0349185715 0.0058218505 0.00 +0.0353363266 0.0054956861 0.00 +0.0357503369 0.0051636592 0.00 +0.0361605779 0.0048257522 0.00 +0.0365670339 0.0044819368 0.00 +0.0369696866 0.0041321806 0.00 +0.0373685207 0.0037764455 0.00 +0.0377635262 0.0034146770 0.00 +0.0381546931 0.0030468155 0.00 +0.0385420179 0.0026727929 0.00 +0.0389255040 0.0022925221 0.00 +0.0393051535 0.0019059010 0.00 +0.0396809591 0.0015127984 0.00 +0.0400521669 0.0011139023 0.00 +0.0404190918 0.0007089277 0.00 +0.0407836479 0.0002957113 0.00 +0.0411480397 -0.0001289238 0.00 +0.0415110701 -0.0005647579 0.00 +0.0418719376 -0.0010113593 0.00 +0.0422303132 -0.0014680581 0.00 +0.0425885560 -0.0019322439 0.00 +0.0429469604 -0.0024030946 0.00 +0.0433061364 -0.0028796647 0.00 +0.0436661204 -0.0033615334 0.00 +0.0440267050 -0.0038485408 0.00 +0.0443877269 -0.0043405607 0.00 +0.0447490553 -0.0048375075 0.00 +0.0451105890 -0.0053393332 0.00 +0.0454722544 -0.0058460272 0.00 +0.0458340048 -0.0063576157 0.00 +0.0461958188 -0.0068741628 0.00 +0.0465577006 -0.0073957709 0.00 +0.0469196791 -0.0079225829 0.00 +0.0472818089 -0.0084547846 0.00 +0.0476441706 -0.0089926080 0.00 +0.0480068722 -0.0095363351 0.00 +0.0483700502 -0.0100863033 0.00 +0.0487338727 -0.0106429113 0.00 +0.0490985412 -0.0112066268 0.00 +0.0494642946 -0.0117779960 0.00 +0.0498314131 -0.0123576539 0.00 +0.0502002239 -0.0129463392 0.00 +0.0505711084 -0.0135449114 0.00 +0.0509444737 -0.0141543125 0.00 +0.0513200017 -0.0147743243 0.00 +0.0516966637 -0.0154035254 0.00 +0.0520734787 -0.0160405088 0.00 +0.0524495323 -0.0166839119 0.00 +0.0528239611 -0.0173323947 0.00 +0.0531959467 -0.0179846295 0.00 +0.0535647060 -0.0186392839 0.00 +0.0539294774 -0.0192949979 0.00 +0.0542895194 -0.0199503793 0.00 +0.0546441020 -0.0206039877 0.00 +0.0549924955 -0.0212543127 0.00 +0.0553339684 -0.0218997663 0.00 +0.0556677805 -0.0225386690 0.00 +0.0559931719 -0.0231692247 0.00 +0.0563093576 -0.0237895074 0.00 +0.0566155192 -0.0243974408 0.00 +0.0569107949 -0.0249907759 0.00 +0.0571942689 -0.0255670649 0.00 +0.0574649580 -0.0261236316 0.00 +0.0577217973 -0.0266575388 0.00 +0.0579636229 -0.0271655504 0.00 +0.0581891505 -0.0276440892 0.00 +0.0583969598 -0.0280891804 0.00 +0.0585854002 -0.0284964137 0.00 +0.0587528461 -0.0288607500 0.00 +0.0588918301 -0.0291659420 0.00 +0.0590106475 -0.0294294984 0.00 +0.0591039933 -0.0296340168 0.00 +0.0591810389 -0.0297982270 0.00 +0.0592514594 -0.0299518502 0.00 +0.0593145044 -0.0301071549 0.00 +0.0593543790 -0.0302475711 0.00 +0.0593688346 -0.0305157278 0.00 +0.0593502899 -0.0306371252 0.00 +0.0593208499 -0.0307430361 0.00 +0.0592842856 -0.0308343072 0.00 +0.0592424500 -0.0309137032 0.00 +0.0591964924 -0.0309834762 0.00 +0.0591471972 -0.0310454258 0.00 +0.0590950036 -0.0311007950 0.00 +0.0590401588 -0.0311504222 0.00 diff --git a/examples/read_turbine_profilepoints.ipynb b/examples/read_turbine_profilepoints.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..2148eab9449e36baa062a00ee9765da57e7fc205 --- /dev/null +++ b/examples/read_turbine_profilepoints.ipynb @@ -0,0 +1,88 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "outputs": [], + "source": [ + "from ntrfc.turbo.pointcloud_methods import calc_concavehull\n", + "import pkg_resources\n", + "import numpy as np\n", + "\n", + "\n", + "profilepoints_file = pkg_resources.resource_filename(\"ntrfc\",\"../data/turbine_cascade/profilepoints.txt\")\n", + "\n", + "alpha = 0.01\n", + "\n", + "points = np.loadtxt(profilepoints_file)[:, :2]\n", + "xs,ys = calc_concavehull(points[::,0],points[::,1], alpha)\n" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 7, + "outputs": [ + { + "data": { + "text/plain": "<Figure size 640x480 with 1 Axes>", + "image/png": "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ZAvOFfj4+EAqlaKwsLDJ+4WFhVCpVJfdR6VSXXX7v7+25JhthTnulz0z5/36O9xkZmZi+/btbb71BjDv/XJ2dkZERAQGDRqEzz77DDKZDJ999plpL8DCzHG/9u/fj6KiIoSGhkImk0EmkyEzMxOPPfYYwsLCzHIdlmKpf7/Cw8Ph4+ODtLS06y/aisxxv3x8fCCTydCtW7cm20RFRbV6FBUDzhUoFApER0dj586dje8ZjUbs3LkTsbGxl90nNja2yfYAsH379sbtO3bsCJVK1WQbtVqNw4cPX/GYbYU57pc9M9f9+jvcpKamYseOHfD29jbPBViYJb+/jEYjNBrN9RdtRea4X3fffTdOnz6NkydPNr4CAwPxxBNP4I8//jDfxViApb6/cnJyUFpaioCAANMUbiXmuF8KhQIDBgxAcnJyk21SUlLQoUOH1hVqsu7KdmjdunWiUqkU165dK547d05csGCB6OHhIRYUFIiiKIp33323+PTTTzduf+DAAVEmk4lvvfWWmJiYKC5duvSyw8Q9PDzEX375RTx9+rQ4efJkuxombur7VVpaKp44cULcunWrCEBct26deOLECTE/P9/i12dqpr5fWq1WnDRpkhgcHCyePHmyydBUjUZjlWs0JVPfr+rqanHJkiViXFycmJGRIR47dkycM2eOqFQqxYSEBKtcoymZ4+/j/2dPo6hMfb+qqqrExx9/XIyLixMvXLgg7tixQ+zXr5/YuXNnsb6+3irXaErm+P7auHGjKJfLxdWrV4upqani+++/L0qlUnH//v2tqpEBpxnvv/++GBoaKioUCnHgwIHioUOHGj8bPny4OHv27Cbb//DDD2KXLl1EhUIhdu/eXdy6dWuTz41Go/j888+L/v7+olKpFEeNGiUmJydb4lIswtT364svvhABXPJaunSpBa7G/Ex5v/4eSn+51+7duy10ReZlyvtVV1cnTp06VQwMDBQVCoUYEBAgTpo0STxy5IilLsfsTP338f+zp4Ajiqa9X7W1teKYMWNEX19fUS6Xix06dBDnz5/fGADsgTm+vz777DMxIiJCdHBwEHv37i1u2rSp1fUJoiiKrWv7ISIiIrJN7INDREREdocBh4iIiOwOAw4RERHZHQYcIiIisjsMOERERGR3GHCIiIjI7jDgEBERkd1hwCEiIiK7w4BDREREdocBh4iIiOwOAw4RERHZHQYcIiIisjv/B4znXEqezuEzAAAAAElFTkSuQmCC\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.figure()\n", + "plt.plot(xs,ys)\n", + "plt.show()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/examples/read_profilepoints.ipynb b/examples/read_v2500_profilepoints.ipynb similarity index 95% rename from examples/read_profilepoints.ipynb rename to examples/read_v2500_profilepoints.ipynb index c617822ad7a63fb181022476c372fb81216463d9..362f411358e1a21d062f8c91d2e5194b730f57ee 100644 --- a/examples/read_profilepoints.ipynb +++ b/examples/read_v2500_profilepoints.ipynb @@ -2,8 +2,20 @@ "cells": [ { "cell_type": "code", - "execution_count": 13, - "outputs": [], + "execution_count": 18, + "outputs": [ + { + "ename": "TypeError", + "evalue": "calc_concavehull() missing 1 required positional argument: 'alpha'", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mTypeError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[18], line 10\u001B[0m\n\u001B[1;32m 6\u001B[0m profilepoints_file \u001B[38;5;241m=\u001B[39m pkg_resources\u001B[38;5;241m.\u001B[39mresource_filename(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mntrfc\u001B[39m\u001B[38;5;124m\"\u001B[39m,\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m../data/v2500_compressorcascade/profilepoints.txt\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[1;32m 9\u001B[0m points \u001B[38;5;241m=\u001B[39m np\u001B[38;5;241m.\u001B[39mloadtxt(profilepoints_file)[:, :\u001B[38;5;241m2\u001B[39m]\n\u001B[0;32m---> 10\u001B[0m xs,ys \u001B[38;5;241m=\u001B[39m \u001B[43mcalc_concavehull\u001B[49m\u001B[43m(\u001B[49m\u001B[43mpoints\u001B[49m\u001B[43m[\u001B[49m\u001B[43m:\u001B[49m\u001B[43m:\u001B[49m\u001B[43m,\u001B[49m\u001B[38;5;241;43m0\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43mpoints\u001B[49m\u001B[43m[\u001B[49m\u001B[43m:\u001B[49m\u001B[43m:\u001B[49m\u001B[43m,\u001B[49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n", + "\u001B[0;31mTypeError\u001B[0m: calc_concavehull() missing 1 required positional argument: 'alpha'" + ] + } + ], "source": [ "from ntrfc.turbo.pointcloud_methods import calc_concavehull\n", "import pkg_resources\n", @@ -12,10 +24,9 @@ "\n", "profilepoints_file = pkg_resources.resource_filename(\"ntrfc\",\"../data/v2500_compressorcascade/profilepoints.txt\")\n", "\n", - "alpha = 10\n", "\n", "points = np.loadtxt(profilepoints_file)[:, :2]\n", - "xs,ys = calc_concavehull(points[::,0],points[::,1],alpha)\n" + "xs,ys = calc_concavehull(points[::,0],points[::,1])\n" ], "metadata": { "collapsed": false,