Masters Project: Difference between revisions
No edit summary |
No edit summary |
||
| (4 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
This project focussed on the development and deployment of an optimisation toolchain for maximising the performance of an airborne wind energy system. Airborne wind energy system have the potential to access stronger and more consistent high-altitude wind resources while requiring significantly less material than conventional wind turbines. The toolchain aims to optimise the performance of the aerofoil by maximising the lift generated to maximise the power the system can generate. | This project focussed on the development and deployment of an optimisation toolchain for maximising the performance of an airborne wind energy system. Airborne wind energy system have the potential to access stronger and more consistent high-altitude wind resources while requiring significantly less material than conventional wind turbines. The toolchain aims to optimise the performance of the aerofoil by maximising the lift generated to maximise the power the system can generate. | ||
Through this work I developed some of the following skills: | |||
* Simulation-driven design | |||
* Computational Fluid Dynamics | |||
* High performance computing and Linux | |||
* Data Analysis | |||
* Critical evaluatation of model assumptions | |||
* Report writing and communicating technical concepts | |||
=== Background === | === Background === | ||
Airborne wind energy uses a tethered aircraft to create electricity while avoiding the large material costs of conventional wind turbines. Drag powered kites which are the focus of this study having a tethered kite with onboard generators, the kite aerofoil allows it to fly crosswind at high speeds increasing the relative wind speed at the turbines. There are several companies working on designs, most are in concept stages with a few that have built some prototypes such as Makani which are now defunct and Kitekraft. | Airborne wind energy uses a tethered aircraft to create electricity while avoiding the large material costs of conventional wind turbines. Drag powered kites which are the focus of this study having a tethered kite with onboard generators, the kite aerofoil allows it to fly crosswind at high speeds increasing the relative wind speed at the turbines. There are several companies working on designs, most are in concept stages with a few that have built some prototypes such as Makani which are now defunct and Kitekraft. | ||
The understanding on the topic for many years was that the power generated by the system is proportional to the coefficient of lift cubed divided by the equivalent coefficient of drag squared, so by optimising the glide ratio which is the ratio of the two coefficients, you would maximise power. Recent research done by Bauer in TU Munich who was working closely with the company kitekraft showed that when the drag forces of other parts of the system, in particular the tether drag is included the previous research | The understanding on the topic for many years was that the power generated by the system is proportional to the coefficient of lift cubed divided by the equivalent coefficient of drag squared, | ||
<math display="block">P \propto \frac{C_L^3}{C_D^2}</math> | |||
so by optimising the glide ratio which is the ratio of the two coefficients, you would maximise power. | |||
<math display="block"> E =\frac{C_L}{C_D}</math> | |||
<br> | |||
<math display="block">P \propto E C_L</math> | |||
Recent research done by Bauer in TU Munich who was working closely with the company kitekraft showed that when the drag forces of other parts of the system, in particular the tether drag is included the glide ratio of the aerofoil is less important as previous research suggested. In the case where the tether drag is dominant the power generated is proportional to the coefficient of lift of the aerofoil squared and should be optimised for as the drag component of the aerofoil has little effect. There have been very limited studies on the optimisation of aerofoils for airborne wind energy with even fewer optimising multi element high lift aerofoils aiming to maximise the <math display="inline">C_L</math> which is the focus of my project. | |||
This project built on work done a previous masters project and code developed by TU Munich and Kitekraft. The toolchain uses octave to run the optimisation with the CFD analysis using simplefoam in OpenFOAM. My work focused on incorporating geometric design parameterisation, so allowing the toolchain to create its own aerofoil geometry that it can modify to optimise its performance. Then to update the toolchain to allow it to be run on high performance computing using that to optimise the performance of a multi element aerofoil for use in an airborne wind energy system. | This project built on work done a previous masters project and code developed by TU Munich and Kitekraft. The toolchain uses octave to run the optimisation with the CFD analysis using simplefoam in OpenFOAM. My work focused on incorporating geometric design parameterisation, so allowing the toolchain to create its own aerofoil geometry that it can modify to optimise its performance. Then to update the toolchain to allow it to be run on high performance computing using that to optimise the performance of a multi element aerofoil for use in an airborne wind energy system. | ||
=== Toolchain | === Toolchain === | ||
[[File: | The optimisation algorithm used is the covariance matrix adaptation evolution strategy (CMA-ES) implemented in Octave by Nikolaus Hansen. It creates a set of parameters to be evaluated by the objective function, it passes these parameters along with some static inputs to the objective function. | ||
The main update to the toolchain was the creation of a new objective function that implemented geometry parameterisation. It uses Bezier Parsec parameterisation to create the airfoil geometry. This works by creating a thickness and camber curve from 2 Bezier curves each. The control points of the Bezier curves are calculated from a set of geometry related input parameters such as thickness, the inside angle of the trailing edge and the radius of the leading edge. The curves are processed to turn them into the coordinates of the airfoil and then saved as an STL file to be used in OpenFoam. The objective function runs some checks on the geometry to ensure the elements are not intersecting or the parameterisation created impossible geometry. | [[File:overviewFlowChart.png|300px|centre]] | ||
The objective function takes a set of input parameters from the optimiser and returns their performance. The main update to the toolchain was the creation of a new objective function that implemented geometry parameterisation. It uses Bezier Parsec parameterisation to create the airfoil geometry. This works by creating a thickness and camber curve from 2 Bezier curves each. The control points of the Bezier curves are calculated from a set of geometry related input parameters such as thickness, the inside angle of the trailing edge and the radius of the leading edge. The curves are processed to turn them into the coordinates of the airfoil and then saved as an STL file to be used in OpenFoam. The objective function runs some checks on the geometry to ensure the elements are not intersecting or the parameterisation created impossible geometry. | |||
==== Interactive Bezier Parsec Aerofoil Generator ==== | |||
<div id="aerofoil-tool"></div> | |||
The objective then runs the CFD analysis in Openfoam and returns the coefficient of lift calculated. The CFD simulation uses a tool called SnappyHexMesh that creates a mesh with automatic refinement around the aerofoils, including creating surface layers on the aerofoil to ensure the simulation correctly models the boundary layer. The model uses the SimpleFOAM soliving utility, it is a steady state, incompressible flow solver using the SIMPLE (Semi-Implicit Method for Pressure Linked Equations) algorithm. The k-ω SST turbulence model is also used with the solver. | |||
[[File:Mesh.png|500px|centre]] | |||
Through the irish centre for high end computing, access was obtained to the national supercomputer which is currently hosted on the meluxina supercomputer in Luxembourg. Some updates to the toolchain had to be made to allow it to be run on the supercomputer such as changing the utilities used to create the STL files. | |||
To take advantage of the 256 threads on each compute node, the toolchain was updated to allow it to run 32 instances of the objective function simultaneously. It does this by using a wrapper function to create multiple instances of the objective function for each generation of the optisation. Each instance of the objective function has 8 threads that it can use to run the CFD solver in parallel. The CFD domain is split into 8 subdomains that can be meshed and solved on their own thread. | |||
[[File:Parallelisation.png|500px|centre]] | [[File:Parallelisation.png|500px|centre]] | ||
=== Results === | === Results === | ||
[[File:4882velocity.png| | I ran multiple optimisation runs with various sets of input parameters available to the toolchain. | ||
The first optimisation that I ran was optimising the flap angle and position with a fixed main angle of attack. The optimiser trended towards geometry that created unsteady flow behind the flap that the solver was unable to converge on invalidating the results. This was overcome by adding penalties to the objective function for when the geometry does not converge. This allowed the optimiser to converge on this geometry with a lift coefficient of 2.2. | |||
[[File:FlapA.png|500px|centre]] | |||
[[File:InputsFlapA.png|500px|centre]] | |||
The main element angle of attack was added as an additional degree of freedom to the problem. The toolchain originally converged on a geometry with the flap in front of the main element and with a lower <math>C_L</math>. This shows that CMAES is susceptible to selecting the wrong initial basin in its search and can struggle to switch. By increasing the optimisers population size and more careful constraints the optimiser created the geometry shown which has a much higher <math>C_L</math> of 2.6. | |||
[[File:MainAflapAP.png|500px|centre]] | |||
I ran the toolchain to optimise the shape of the main aerofoil and the flap angle and position. It resulted in a design with a coefficient of lift of 3.3 and a relatively high coefficient of drag of 0.16. It has arranged the elements in a similar way to the previous optimisation but it has created the very blunt trailing edge which helps develop the wake. In some optimisations I ran for the glide ratio it instead created an extremely sharp trailing edge. | |||
[[File:4882velocity.png|500px|centre]] | |||
The flow at the top of the leading edge is very fast at more than 2.5 times the freestream velocity, it also has a bump in the camber line on the main element where the flow detaches from the element on the top surface. The gap is between the two elements is slightly bigger than the previous optimisation resulting in a thicker flow over the flap. | |||
When the parameterisation of the main element shape was included in the optimisation, it created a very blunt trailing edge by increasing the gap between the trailing edge of the thickness curve and the 𝑋 axis. This parameter is not intended as a method of creating a blunt trailing edge but to prevent zero thickness on the trailing edge which can cause issues in some applications. A better method would be to incorporate some additional parameterisation system on the trailing edge as it is clear it has a significant impact on the performance of the geometry. The current optimisation is restricted to a flat surface on the trailing edge but the optimal design may actually have a more rounded profile or complex profile which is not possible with Bezier Parsec Parameterisation. | |||
When the trailing edge thickness was decreased it created unsteady flow. This indicates that the thicker trailing edge may also be allowing the aerofoil to create a high coefficient of lift while avoiding creating an unsteady flow. It does this by having a sharp edge at the end of the upper surface that causes keeps the flow from detaching until it reaches this corner. The earlier detaching of flow with the thin trailing edge results in a more horizontal wake This wake then isn’t able to keep the flow from the gap between the elements pressed along the flap. This then causes that flow to separate from the flap creating the instability. This shows that the more downward wake of the thick trailing edge main element helps ensure that the flow through the gap remains attached to the flap, allowing the flap to be at a more aggressive angle while avoiding unstable flow, increasing the coefficient of lift. | |||
Latest revision as of 10:31, 23 September 2026
This project focussed on the development and deployment of an optimisation toolchain for maximising the performance of an airborne wind energy system. Airborne wind energy system have the potential to access stronger and more consistent high-altitude wind resources while requiring significantly less material than conventional wind turbines. The toolchain aims to optimise the performance of the aerofoil by maximising the lift generated to maximise the power the system can generate.
Through this work I developed some of the following skills:
- Simulation-driven design
- Computational Fluid Dynamics
- High performance computing and Linux
- Data Analysis
- Critical evaluatation of model assumptions
- Report writing and communicating technical concepts
Background
Airborne wind energy uses a tethered aircraft to create electricity while avoiding the large material costs of conventional wind turbines. Drag powered kites which are the focus of this study having a tethered kite with onboard generators, the kite aerofoil allows it to fly crosswind at high speeds increasing the relative wind speed at the turbines. There are several companies working on designs, most are in concept stages with a few that have built some prototypes such as Makani which are now defunct and Kitekraft.
The understanding on the topic for many years was that the power generated by the system is proportional to the coefficient of lift cubed divided by the equivalent coefficient of drag squared,
so by optimising the glide ratio which is the ratio of the two coefficients, you would maximise power.
Recent research done by Bauer in TU Munich who was working closely with the company kitekraft showed that when the drag forces of other parts of the system, in particular the tether drag is included the glide ratio of the aerofoil is less important as previous research suggested. In the case where the tether drag is dominant the power generated is proportional to the coefficient of lift of the aerofoil squared and should be optimised for as the drag component of the aerofoil has little effect. There have been very limited studies on the optimisation of aerofoils for airborne wind energy with even fewer optimising multi element high lift aerofoils aiming to maximise the which is the focus of my project.
This project built on work done a previous masters project and code developed by TU Munich and Kitekraft. The toolchain uses octave to run the optimisation with the CFD analysis using simplefoam in OpenFOAM. My work focused on incorporating geometric design parameterisation, so allowing the toolchain to create its own aerofoil geometry that it can modify to optimise its performance. Then to update the toolchain to allow it to be run on high performance computing using that to optimise the performance of a multi element aerofoil for use in an airborne wind energy system.
Toolchain
The optimisation algorithm used is the covariance matrix adaptation evolution strategy (CMA-ES) implemented in Octave by Nikolaus Hansen. It creates a set of parameters to be evaluated by the objective function, it passes these parameters along with some static inputs to the objective function.

The objective function takes a set of input parameters from the optimiser and returns their performance. The main update to the toolchain was the creation of a new objective function that implemented geometry parameterisation. It uses Bezier Parsec parameterisation to create the airfoil geometry. This works by creating a thickness and camber curve from 2 Bezier curves each. The control points of the Bezier curves are calculated from a set of geometry related input parameters such as thickness, the inside angle of the trailing edge and the radius of the leading edge. The curves are processed to turn them into the coordinates of the airfoil and then saved as an STL file to be used in OpenFoam. The objective function runs some checks on the geometry to ensure the elements are not intersecting or the parameterisation created impossible geometry.
Interactive Bezier Parsec Aerofoil Generator
The objective then runs the CFD analysis in Openfoam and returns the coefficient of lift calculated. The CFD simulation uses a tool called SnappyHexMesh that creates a mesh with automatic refinement around the aerofoils, including creating surface layers on the aerofoil to ensure the simulation correctly models the boundary layer. The model uses the SimpleFOAM soliving utility, it is a steady state, incompressible flow solver using the SIMPLE (Semi-Implicit Method for Pressure Linked Equations) algorithm. The k-ω SST turbulence model is also used with the solver.

Through the irish centre for high end computing, access was obtained to the national supercomputer which is currently hosted on the meluxina supercomputer in Luxembourg. Some updates to the toolchain had to be made to allow it to be run on the supercomputer such as changing the utilities used to create the STL files.
To take advantage of the 256 threads on each compute node, the toolchain was updated to allow it to run 32 instances of the objective function simultaneously. It does this by using a wrapper function to create multiple instances of the objective function for each generation of the optisation. Each instance of the objective function has 8 threads that it can use to run the CFD solver in parallel. The CFD domain is split into 8 subdomains that can be meshed and solved on their own thread.

Results
I ran multiple optimisation runs with various sets of input parameters available to the toolchain.
The first optimisation that I ran was optimising the flap angle and position with a fixed main angle of attack. The optimiser trended towards geometry that created unsteady flow behind the flap that the solver was unable to converge on invalidating the results. This was overcome by adding penalties to the objective function for when the geometry does not converge. This allowed the optimiser to converge on this geometry with a lift coefficient of 2.2.


The main element angle of attack was added as an additional degree of freedom to the problem. The toolchain originally converged on a geometry with the flap in front of the main element and with a lower . This shows that CMAES is susceptible to selecting the wrong initial basin in its search and can struggle to switch. By increasing the optimisers population size and more careful constraints the optimiser created the geometry shown which has a much higher of 2.6.

I ran the toolchain to optimise the shape of the main aerofoil and the flap angle and position. It resulted in a design with a coefficient of lift of 3.3 and a relatively high coefficient of drag of 0.16. It has arranged the elements in a similar way to the previous optimisation but it has created the very blunt trailing edge which helps develop the wake. In some optimisations I ran for the glide ratio it instead created an extremely sharp trailing edge.

The flow at the top of the leading edge is very fast at more than 2.5 times the freestream velocity, it also has a bump in the camber line on the main element where the flow detaches from the element on the top surface. The gap is between the two elements is slightly bigger than the previous optimisation resulting in a thicker flow over the flap.
When the parameterisation of the main element shape was included in the optimisation, it created a very blunt trailing edge by increasing the gap between the trailing edge of the thickness curve and the 𝑋 axis. This parameter is not intended as a method of creating a blunt trailing edge but to prevent zero thickness on the trailing edge which can cause issues in some applications. A better method would be to incorporate some additional parameterisation system on the trailing edge as it is clear it has a significant impact on the performance of the geometry. The current optimisation is restricted to a flat surface on the trailing edge but the optimal design may actually have a more rounded profile or complex profile which is not possible with Bezier Parsec Parameterisation.
When the trailing edge thickness was decreased it created unsteady flow. This indicates that the thicker trailing edge may also be allowing the aerofoil to create a high coefficient of lift while avoiding creating an unsteady flow. It does this by having a sharp edge at the end of the upper surface that causes keeps the flow from detaching until it reaches this corner. The earlier detaching of flow with the thin trailing edge results in a more horizontal wake This wake then isn’t able to keep the flow from the gap between the elements pressed along the flap. This then causes that flow to separate from the flap creating the instability. This shows that the more downward wake of the thick trailing edge main element helps ensure that the flow through the gap remains attached to the flap, allowing the flap to be at a more aggressive angle while avoiding unstable flow, increasing the coefficient of lift.