{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Blade Element Momentum (BEM) Tutorial for Rotor Optimization\n", "\n", "In this tutorial, we will use the blade element momentum (BEM) solver to optimize an arbitrary rotor geometry, specifically the rotor chord and twist.\n", "We will minmize the rotor torque subject to a thrust constraint. The design variables will be blade chord and twist parameters (B-spline control points). For this tutorial, the flow will be axial, i.e., the free stream velocity is perpendicular to the rotor disk.\n", "\n", "As always we fist import all sub-modules and start the `CSDL` recorder." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import csdl_alpha as csdl\n", "from BladeAD.utils.var_groups import RotorAnalysisInputs, RotorMeshParameters\n", "from BladeAD.utils.parameterization import BsplineParameterization\n", "from BladeAD.core.airfoil.zero_d_airfoil_model import ZeroDAirfoilModel, ZeroDAirfoilPolarParameters\n", "from BladeAD.core.BEM.bem_model import BEMModel\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "\n", "# Start CSDL recorder\n", "recorder = csdl.Recorder(inline=True)\n", "recorder.start()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The discretization is the same as in the previous tutorial, except that `num_nodes` is only 1 (we're only considering one oprating point), and `num_azimuthal` is also only 1 since we will set up the problem with axial flow, i.e., the flow is axisymmetric. Therefore, the inflow (and rotor loading) will not vary azimuthally." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Discretization\n", "num_nodes = 1 \n", "num_radial = 35\n", "num_azimuthal = 1 \n", "\n", "num_blades = 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use the same simple 1-D airfoil model as in the previous tutorial and omit the plot of the airfoil polar here." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Simple 1D airfoil model\n", "# Specify polar parameters\n", "polar_parameters = ZeroDAirfoilPolarParameters(\n", " alpha_stall_minus=-10.,\n", " alpha_stall_plus=15.,\n", " Cl_stall_minus=-1.,\n", " Cl_stall_plus=1.5,\n", " Cd_stall_minus=0.02,\n", " Cd_stall_plus=0.06,\n", " Cl_0=0.5,\n", " Cd_0=0.008,\n", " Cl_alpha=5.1566,\n", ")\n", "# Create airfoil model\n", "airfoil_model = ZeroDAirfoilModel(\n", " polar_parameters=polar_parameters,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We start by setting up the inputs in the same way as in th previous tutorial. Since we consider axial flow, the `thrust_vector` is set up accordingly, meaning in the $[1, 0, 0]$ direction. The `thrust_origin` is unchanged." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Set up rotor analysis inputs\n", "# 1) thrust (unit) vector and origin (origin is the rotor hub location and only needed for computing moments)\n", "thrust_vector=csdl.Variable(name=\"thrust_vector\", value=np.array([1., 0., 0.])) # Thrust vector in the negative z-direction (up)\n", "thrust_origin=csdl.Variable(name=\"thrust_origin\", value=np.array([0. ,0., 0.]))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Blade Parameterization\n", "Unlike in the previous tutorial, we do not directly provide the blade chord and twist profile. This is because the goal of this tutorial is to optimize the blade geometry (i.e., chord and twist) and directly prescribing the dense chord and twist profile as optimization design variables introduces `num_radialx2` design variables. This can not only increase optimization time but also lead to non-smooth (i.e., jagged) chord and twist profiles.\n", "\n", "To reduce the number of design variables, we **parameterize the blade chord and twist profile using B-splines**. B-splines are piece-wise polynomials that are frequently used in computer-aided design (CAD) to smoothly represent geometries. \n", "In this case, we use B-spline curves to represent the blade chord and twist profile. A B-spline curve is expressed in terms of a parametric coordinate $u$\n", "that is typically normalized between (0, 1).\n", "\n", "$$\n", "b(u) = \\sum_{i=0}^m B_{i}(u)c_{i}, \n", "$$\n", "where $B_i$ is the i-th basis function and $c_i$ is the i-th *control point*. \n", "These *control points* are the design variables that the optimizer updates to find the optimal design. In this tutorial we use 5 control points each for the chord and twist profile. We initialze the twist and chord control points as `CSDL` variables with linearly varying distributions from root to top.\n", "The `set_as_design_variable` method is used to register the control points as design variables. \n", "\n", "Next, we instantiate a `BsplineParameterization` object, and pass in \n", "1. `num_radial`: the number of radial stations (blade elements). This specifies the size of the dense distribution of points.\n", "2. `num_cp`: the number of control points\n", "3. `order`: the order of the B-spline (degree + 1)\n", "\n", "We evaluate the dense distributions (i.e., `chord_profile` and `twist_profile`) by calling the `evaluate` method and passing in the control points. \n", "Lastly, we visualize the inital chord and twist profiles, including the net of control points. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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ZcOGDYqiKEqHDh2UJUuWKIqiKHFxcQqgHDhwQFEURbnzzjuVSZMmVfs51557PaNGjVK6d+9+07oHDBigPPXUUzr77r//fmX06NHa14Dy+uuva1/n5eUpgPZetmzZogDKxYsXda4TGhqq9OrVS2ffa6+9pgQFBSkVFRXafYsWLVJsbGyU8vJy7fv+85//XLfma7/Xp06dUgIDA5U+ffooiqIonp6eyrvvvqvznr59+yrPPvusoihVv4eV9W/evFl7/h9//KEA2t/JmTNnKj169NC55ty5c5XAwEClpKTkurVWutHveG1yibTYtRRm1tDvKZi6V30Oz38wKOVw7Bf4aih8NRyOrZEJj4UQrdfV00tdjIdvRujOLdrE63WHhoayfft2ysvL2bp1K2FhYYSFhREZGUlKSgqxsbHX7UadPHkyK1eupGfPnrz88svs3Lmz1p+vKEqNzjtx4gQDBw7U2Tdw4EBOnDihs6979+7ar62trbGzs6vRYIXevXtX+byQkBCded0GDhxIXl4eSUlJ1779unJycrCxscHKyoqgoCDc3d354YcfyM3NJSUlpUb3dK2r77Fy6a8b3eP9999PYWEh7dq146mnnmLNmjW17lKuLQl2LU3lc3gT1sIz26Hnw2BsBknR8NNEWNALts+D/Ex9VyqEEE3P3kudZeBq9yxp8lAHMHjwYC5dusT+/fvZtm2bTrDbunUrnp6eBAQEVPveUaNGkZCQwPPPP09KSgpDhw6t8UCMSoGBgZw9e7beKx1UMjU11Xmt0WioqKi46fusra0b5POvZWtry8GDBzl69Cj5+fls27aNwMDAel3z6nusDJ43ukdvb29OnjzJZ599hqWlJc8++yyDBw9usO95dSTYtWQe3eDuz9T58EJfUSc8zkmEzbPgk06w5hlI2gs1/FebEEI0ezlJsOZp3X1rnq46oKIJODg40L17dxYuXIipqSkdO3Zk8ODBHDhwgHXr1l33+bpKrq6uTJgwge+//5758+ezZIkaWM3MzAB1fd0beeihh8jLy+Ozzz6r9njl1CSdOnVix44dOsd27NhB586da3Kbtaqp8vOioqJ0WhR37NiBra0tXl41D+BGRkZ06NCBdu3a6awlb2dnh6enZ73v6VpmZmbV3p+lpSV33nknCxYsIDIykqioKI4cOVLnz7kZCXatga07DHkNnj8Gdy0C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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 2) Rotor geometry \n", "# Chord and twist profiles parameterized as B-splines\n", "# B-spline control points (design variables)\n", "num_cp = 5\n", "chord_profile_cps = csdl.Variable(name=\"chord_profile_cps\", value=np.linspace(0.25, 0.05, num_cp)) # in meters\n", "twist_profile_cps = csdl.Variable(name=\"twist_profile_cps\", value=np.linspace(np.deg2rad(50), np.deg2rad(20), num_cp)) # Twist in RADIANS\n", "# set control points as design variables\n", "chord_profile_cps.set_as_design_variable(lower=0.01, upper=0.35, scaler=5)\n", "twist_profile_cps.set_as_design_variable(lower=np.deg2rad(5), upper=np.deg2rad(85), scaler=2)\n", "\n", "# Create B-spline parameterization\n", "profile_parameterization = BsplineParameterization(\n", " num_radial=num_radial,\n", " num_cp=num_cp,\n", " order=4, # Cubic B-spline\n", ")\n", "# Evaluate radial profiles\n", "chord_profile = profile_parameterization.evaluate_radial_profile(chord_profile_cps)\n", "twist_profile = profile_parameterization.evaluate_radial_profile(twist_profile_cps)\n", "\n", "# Visualize the chord and twist profiles\n", "norm_rad = np.linspace(0, 1, num_radial)\n", "plt.figure(1)\n", "fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)\n", "\n", "# Plot chord profile\n", "ax1.set_ylabel('Chord (m)')\n", "ax1.scatter(np.linspace(0, 1, num_cp), chord_profile_cps.value, color='tab:blue', marker='x', label='Chord Control Points')\n", "ax1.plot(norm_rad, chord_profile.value, label='Chord')\n", "ax1.legend()\n", "\n", "# Plot twist profile\n", "ax2.set_xlabel('Normalized Radius')\n", "ax2.set_ylabel('Twist (deg)')\n", "ax2.scatter(np.linspace(0, 1, num_cp), np.rad2deg(twist_profile_cps.value), color='tab:orange', marker='x', label='Twist Control Points')\n", "ax2.plot(norm_rad, np.rad2deg(twist_profile.value), label='Twist', color='tab:orange')\n", "ax2.legend()\n", "fig.suptitle('Inital Blade Design')\n", "\n", "\n", "\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The rest of the inputs is simlar to the previous tutorial. The radius is set to 1.2 m. We set the mesh velocity only in the $u$ direction (i.e., axial flight) and set the RPM to 1500. \n", "The last step is to assemble the mesh parameters and rotor analysis inputs.\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Radius of the rotor\n", "radius = csdl.Variable(name=\"radius\", value=1.2)\n", "\n", "\n", "# 3) Mesh velocity: vector of shape (num_nodes, 3) where each row is the \n", "# free streamvelocity vector (u, v, w) at the rotor center\n", "mesh_vel_np = np.zeros((num_nodes, 3))\n", "mesh_vel_np[:, 0] = 50 # Free stream velocity in the x-direction\n", "mesh_velocity = csdl.Variable(value=mesh_vel_np)\n", "# Rotor speed in RPM\n", "rpm = csdl.Variable(value=1500 * np.ones((num_nodes,)))\n", "\n", "# 4) Assemble inputs\n", "# mesh parameters\n", "bem_mesh_parameters = RotorMeshParameters(\n", " thrust_vector=thrust_vector,\n", " thrust_origin=thrust_origin,\n", " chord_profile=chord_profile,\n", " twist_profile=twist_profile, \n", " radius=radius,\n", " num_radial=num_radial,\n", " num_azimuthal=num_azimuthal,\n", " num_blades=num_blades,\n", " norm_hub_radius=0.2,\n", ")\n", "# rotor analysis inputs\n", "inputs = RotorAnalysisInputs(\n", " rpm=rpm,\n", " mesh_parameters=bem_mesh_parameters,\n", " mesh_velocity=mesh_velocity,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setting Optimization Objective and Constraint\n", "\n", "After evaluating the BEM model, we access the outputs data class to set the objective and constraint. In this tutorial, we will minimiz the aerodynamic torque subject to a thrust constraint. We do so by using the following methods\n", "- `set_as_objective()`\n", "- `set_as_constraint()`\n", "\n", "In essence, we are looking for most aerodynamically efficient design. It is tempting to choose aerodynamic efficiency as the objective (and maximize it). **However, this is a bad idea because the optimizer will likely find an unphysical design with an efficiency of greater than 1!** In addition, **scaling is very important in design optimization**. From the forward run, the baseline design outputs about 2200 N of thrust and the torque is about 850 N-m. We scale the thrust and torque accordingly. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "nonlinear solver: bracketed_search converged in 41 iterations.\n", "Scalar Outputs before optimization:\n", "Total thrust: [2192.79165298]\n", "Total torque: [848.33655833]\n", "Efficiency: [0.82277164]\n", "Thrust coefficient: [0.08631204]\n", "Torque coefficient: [0.01391333]\n", "\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/mariusruh/Desktop/packages/lsdo/CSDL_alpha/csdl_alpha/src/operations/tensor/expand.py:184: UserWarning: \"action\" will have no effect when expanding a scalar.\n", " warnings.warn('\"action\" will have no effect when expanding a scalar.')\n", "/Users/mariusruh/Desktop/packages/lsdo/CSDL_alpha/csdl_alpha/src/operations/division.py:19: RuntimeWarning: divide by zero encountered in divide\n", " return x/y\n" ] } ], "source": [ "# Instantiate and run BEM model\n", "bem_model = BEMModel(\n", " num_nodes=num_nodes,\n", " airfoil_model=airfoil_model,\n", " integration_scheme='trapezoidal',\n", ")\n", "bem_outputs = bem_model.evaluate(inputs=inputs)\n", "\n", "# Set objective (minimize torque) and constraints (thrust)\n", "torque = bem_outputs.total_torque\n", "torque.set_as_objective(scaler=5e-3)\n", "\n", "thrust = bem_outputs.total_thrust\n", "thrust.set_as_constraint(equals=2000, scaler=1e-3)\n", "\n", "# Print scalar outputs\n", "print(\"Scalar Outputs before optimization:\")\n", "print(f\"Total thrust: {bem_outputs.total_thrust.value}\")\n", "print(f\"Total torque: {bem_outputs.total_torque.value}\")\n", "print(f\"Efficiency: {bem_outputs.efficiency.value}\")\n", "print(f\"Thrust coefficient: {bem_outputs.thrust_coefficient.value}\")\n", "print(f\"Torque coefficient: {bem_outputs.torque_coefficient.value}\")\n", "print(\"\\n\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solving the optimization problem\n", "\n", "To solve the optimization problem, we first instantiate a `CSDL` `PySimulator` object in import the [`modopt` library](https://modopt.readthedocs.io/en/latest/src/getting_started.html). \n", "We instantiate a `CSDLAlphaProblem` object as well as an optimizer (`SLSQP`) object, to which we pass the problem as well as options for the optimizer. Calling `optimizer.solve()` will run the optimization problem and `optimizer.print_results()` will give information about the optimal solution (if it was obtained)." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/mariusruh/Desktop/packages/lsdo/CSDL_alpha/csdl_alpha/src/operations/division.py:19: RuntimeWarning: divide by zero encountered in divide\n", " return x/y\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "nonlinear solver: bracketed_search converged in 41 iterations.\n", "\n", "\tSolution from Scipy SLSQP:\n", "\t----------------------------------------------------------------------------------------------------\n", "\tProblem : blade_optimization\n", "\tSolver : scipy-slsqp\n", "\tSuccess : True\n", "\tMessage : Optimization terminated successfully\n", "\tStatus : 0\n", "\tTotal time : 1.5829620361328125\n", "\tObjective : 3.7796296892017778\n", "\tGradient norm : 6.0781372814696555\n", "\tTotal function evals : 27\n", "\tTotal gradient evals : 27\n", "\tMajor iterations : 27\n", "\tTotal callbacks : 109\n", "\tReused callbacks : 0\n", "\tobj callbacks : 27\n", "\tgrad callbacks : 27\n", "\thess callbacks : 0\n", "\tcon callbacks : 28\n", "\tjac callbacks : 27\n", "\t----------------------------------------------------------------------------------------------------\n", "Scalar Outputs after optimization:\n", "Thrust coefficient: [0.0787233]\n", "Torque coefficient: [0.01239773]\n", "Total thrust: [1999.99668045]\n", "Total torque: [755.92593784]\n", "Efficiency: [0.84217075]\n", "\n", "\n" ] } ], "source": [ "# set up optimization \n", "# csdl simulator\n", "sim = csdl.experimental.PySimulator(\n", " recorder=recorder,\n", ")\n", "\n", "# Import modopt (if installed)\n", "try:\n", " import modopt\n", "except ImportError:\n", " raise ImportError(\"Please install modopt to run this example (see https://modopt.readthedocs.io/en/latest/src/getting_started.html)\")\n", "\n", "from modopt import CSDLAlphaProblem\n", "\n", "# Setup your optimization problem\n", "prob = CSDLAlphaProblem(problem_name='blade_optimization', simulator=sim)\n", "\n", "# Setup your preferred optimizer (here, SLSQP) with the Problem object \n", "# Pass in the options for your chosen optimizer\n", "optimizer = modopt.SLSQP(prob, solver_options={'maxiter': 200, 'ftol': 1e-5})\n", "\n", "# Solve your optimization problem\n", "optimizer.solve()\n", "optimizer.print_results()\n", "\n", "# Print scalar outputs\n", "print(\"Scalar Outputs after optimization:\")\n", "print(f\"Thrust coefficient: {bem_outputs.thrust_coefficient.value}\")\n", "print(f\"Torque coefficient: {bem_outputs.torque_coefficient.value}\")\n", "print(f\"Total thrust: {bem_outputs.total_thrust.value}\")\n", "print(f\"Total torque: {bem_outputs.total_torque.value}\")\n", "print(f\"Efficiency: {bem_outputs.efficiency.value}\")\n", "print(\"\\n\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lastly, we plot the optimized blade design." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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ttClSxdef/31Mrlmvuzs7BJ/duPGjbRp04asrCx++uknzpw5w6pVq3BwcOCjjz4qxSqL5lHupTDbt28nOjqarVu3kpqaSq9evYocvFxdXSvsIB6DBrtq1aphYmJCbGys3vbY2Fg8PDwe+NnZs2fz+eef888//xAYGPjAY2vXrk21atW4cOFCofstLCywt7fXewkhhKg4DLlO79ixY1GpVBw8eJCBAwdSr149GjVqxMSJE9m/f7/esTdv3mTAgAFYW1vj5+fHX3/9pbd/586dtGrVCgsLC6pXr87kyZPJzb2zBF1QUBDjxo1jwoQJVKtWjR49egCwefNm6tWrh5WVFV26dCEiIuKBNaenpzNixAh69+7NX3/9Rbdu3fD19aV169bMnj2bJUuWFKumN954g3fffRdnZ2c8PDyYNm2abr+Pjw8AAwYMQKVS6d7nd6l+9913+Pr66hpoIiMjeeqpp7C1tcXe3p7nnnuuQE4oChcXFzw8PGjRogWzZ88mNjaWAwcOALB27VoaNWqEhYUFPj4+zJkzR++z93bFqlQqvvvuu0K/dxEREXTp0gUAJycnVCoVw4cPB+D3338nICAAKysrXFxc6NatG2lpacW+l+IwaLAzNzenefPmek3V+QMh2rZte9/PffHFF/zf//0fW7ZsoUWLFg+9zrVr17h169YjT/onhBDCOBlqnd74+Hi2bNnC66+/jo2NTYH9jo6Oeu+nT5/Oc889x/Hjx+nduzdDhgwhPj4egOvXr9O7d29atmxJWFgYixYt4vvvv+fTTz/VO8fKlSsxNzdn7969LF68mKtXr/L000/Tt29fjh07xiuvvMLkyZMfWPfWrVu5efMm7777bqH78+suTk02NjYcOHCAL774gk8++YRt27YB2m5NgOXLlxMdHa17D3DhwgXWrl3LunXrOHbsGBqNhqeeeor4+Hh27tzJtm3buHTpEoMGDXrg/TxM/jxx+c/2P/fcczz//POcOHGCadOm8dFHH7FixYoHnuN+3zsvLy/Wrl0LwNmzZ4mOjubrr78mOjqawYMH8/LLL3PmzBlCQkJ4+umnKfMFvxQDW716tWJhYaGsWLFCOX36tDJq1CjF0dFRiYmJURRFUV566SVl8uTJuuM///xzxdzcXPn999+V6Oho3SslJUVRFEVJSUlR3n77bSU0NFS5fPmysn37duWxxx5T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dyngFeUBO58EgpcDP3wqPQ8o92fYOf0Wdttgt2TJEhw+fBgnT55E374NzaDu7u6oqqrC/fv3tVrtCgsL4e7urvNYKpUKKpXK0EUmIiKirsLKEejjCPQZ2Xzdw6K6cXcbhb36z4piKfA13vabKOl7FxhppNsFOyEEli5dioSEBKSkpKB///5a60eNGoVevXrh2LFjeOmllwAAWVlZuHHjBoKCgjqjyERERNSdWDkCfUdJU2Py7d26oJf7LXB+b8P6GZ90+vBx3S7YRURE4Msvv8Q//vEPqNVq+bk5e3t7WFlZwd7eHgsWLEBkZCScnJxgZ2eHpUuXIigoqE1vxBIRERHp1Pj2rp0n8G2M9vqEhZ3eYtftunH++OOPUVxcjKeeegoeHh7y9Pe//13e5k9/+hOef/55vPTSS5gwYQLc3d1x4MCBTiw1ERERmYymYwHPPyp91r9QUXyr04rW7fuxMwT2Y0dEREQ6Ff8ExE5pCHW63op19AHmJXXYCxT65JJu12JHRERE1GlUtlI/dU1flLDvK807+kjr29v58SPqds/YEREREXUaS3up82FdI0/Y95Va6jp45Al9MNgRERER6cPSvuXg1kn919VjsNOh/rFDDi1GREREna0+j7TltQgGOx1KS0sBgKNPEBERUZdRWloKe/vWb/HyrVgdNBoNfv75Z6jVaigUCoOco37Ysps3b/LN2y6A9dG1sD66FtZH18L66FqMUR9CCJSWlsLT0xNmZq2/98oWOx3MzMy0hikzJDs7O/5idiGsj66F9dG1sD66FtZH12Lo+vi1lrp67O6EiIiIyEQw2BERERGZCAa7TqJSqRAVFQWVStXZRSGwProa1kfXwvroWlgfXUtXqw++PEFERERkIthiR0RERGQiGOyIiIiITASDHREREZGJYLAjIiIiMhEMdga0fft2+Pj4wNLSEmPGjMF//vOfVrfft28fBg0aBEtLSwwbNgxJSUlGKmnPoE997Nq1C+PHj4ejoyMcHR0REhLyq/VH+tH396NefHw8FAoFpk+fbtgC9jD61sf9+/cREREBDw8PqFQq+Pv7829WB9K3Pv785z8jICAAVlZW8PLywptvvomKigojlda0nTx5ElOnToWnpycUCgUOHjz4q/ukpKRg5MiRUKlUGDBgAGJjYw1eTpkgg4iPjxdKpVJ89tln4tKlS+K1114T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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Visualize the optimized chord and twist profiles\n", "%matplotlib inline\n", "plt.figure(2)\n", "fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)\n", "\n", "# Plot chord profile\n", "ax1.set_ylabel('Chord (m)')\n", "ax1.scatter(np.linspace(0, 1, num_cp), chord_profile_cps.value, color='tab:blue', marker='x', label='Chord Control Points')\n", "ax1.plot(norm_rad, chord_profile.value, label='Chord')\n", "ax1.legend()\n", "\n", "# Plot twist profile\n", "ax2.set_xlabel('Normalized Radius')\n", "ax2.set_ylabel('Twist (deg)')\n", "ax2.scatter(np.linspace(0, 1, num_cp), np.rad2deg(twist_profile_cps.value), color='tab:orange', marker='x', label='Twist Control Points')\n", "ax2.plot(norm_rad, np.rad2deg(twist_profile.value), label='Twist', color='tab:orange')\n", "ax2.legend()\n", "fig.suptitle('Optimized Blade Design')\n", "\n", "\n", "fig.tight_layout()\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "caddee", "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.9.21" } }, "nbformat": 4, "nbformat_minor": 2 }