{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "\"\"\"\n", " This example shows how to use the Mesh class in order to generate a \n", " geometry similar to those that may define a lifting surface planform.\n", "\n", " Y ^ B This geometry is positioned in space with two chords\n", " | +---+ simulating the root and tip chords, using points\n", " | / | A and B to store their respective leading edge\n", " | / | b coordinates.\n", " |/ | \n", " +-------+----> With the parameters n and m, the grid density in the \n", " A c X chordwise and spanwise directions will be defined.\n", "\"\"\"\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.cm as cm\n", "\n", "from vlm import Mesh" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Geometry definition" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Parameters\n", "c = 1 # root chord length\n", "b = 10 # panel span length\n", "n = 2 # number of panels chordwise\n", "m = 3 # number of panels spanwise\n", "\n", "# Wing\n", "A = np.array([0, 0]) # root chord leading edge coordinates\n", "B = np.array([c/2, b]) # tip chord leading edge coordinates\n", "\n", "leading_edges_coord = [A, B]\n", "chord_lengths = [c, c/2]\n", "\n", "mesh = Mesh(leading_edges_coord, chord_lengths, n, m)\n", "\n", "Points = mesh.points()\n", "Panels = mesh.panels()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Printing and plotting" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Point | Coordinates \n", "------------------------\n", " 0 | [0 0]\n", " 1 | [0.17 3.33]\n", " 2 | [0.33 6.67]\n", " 3 | [ 0.5 10. ]\n", " 4 | [0.5 0. ]\n", " 5 | [0.58 3.33]\n", " 6 | [0.67 6.67]\n", " 7 | [ 0.75 10. ]\n", " 8 | [1. 0.]\n", " 9 | [1. 3.33]\n", " 10 | [1. 6.67]\n", " 11 | [ 1. 10.]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", " Panel | Chrd % | Span | Points coordinates\n", "------------------------------------------------\n", " 0 | 25.0 | 3.33 | [0.5 0. ] [0 0] [0.17 3.33] [0.58 3.33]\n", " 1 | 25.0 | 3.33 | [0.58 3.33] [0.17 3.33] [0.33 6.67] [0.67 6.67]\n", " 2 | 25.0 | 3.33 | [0.67 6.67] [0.33 6.67] [ 0.5 10. ] [ 0.75 10. ]\n", " 3 | 75.0 | 3.33 | [1. 0.] [0.5 0. ] [0.58 3.33] [1. 3.33]\n", " 4 | 75.0 | 3.33 | [1. 3.33] [0.58 3.33] [0.67 6.67] [1. 6.67]\n", " 5 | 75.0 | 3.33 | [1. 6.67] [0.67 6.67] [ 0.75 10. ] [ 1. 10.]\n" ] } ], "source": [ "# Points of the mesh\n", "print('\\n Point | Coordinates ')\n", "print('------------------------')\n", "for p, i in zip(Points, range(len(Points))):\n", " print(' %2s |' % i, np.round(p, 2))\n", "\n", "# Mesh\n", "plt.style.use('ggplot')\n", "colors = plt.cm.Blues(np.linspace(0, 1, len(Panels) + 5))\n", "\n", "for p, i in zip(Panels, range(len(Panels))):\n", " col = colors[i + 4]\n", " \n", " x = [p.P1[0], p.P2[0], p.P3[0], p.P4[0]]\n", " y = [p.P1[1], p.P2[1], p.P3[1], p.P4[1]]\n", " \n", " plt.fill(x, y, c=col, alpha=0.65)\n", " plt.plot(x, y, c='w', lw=2)\n", " centre = (p.P1 + p.P3) / 2\n", " plt.text(centre[0], centre[1], i, color='k', fontsize=20)\n", "\n", "for p in Points:\n", " plt.plot(p[0], p[1], 'bo')\n", "plt.show()\n", "\n", "# Panels distribution\n", "print('\\n Panel | Chrd % | Span | Points coordinates')\n", "print('------------------------------------------------')\n", "for p, i in zip(Panels, range(len(Panels))):\n", " print(' %3s | %4.1f | %6.2f | '\n", " % (i, 100*p.chordwise_position, p.span),\n", " np.round(p.P1, 2), np.round(p.P2, 2),\n", " np.round(p.P3, 2), np.round(p.P4, 2))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }