Discussion
Vortex lattice code
This thread will detail my work on a vortex lattice code intended for optimizing wings. For the final tool, I plan to couple it with XFOIL code subroutines to compute profile drag at each section, which will then be integrated using a striptheory approach. So the lift and induced drag will be computed via the 3D potential flow approach, and the profile drag will be summed up by a 2D analysis of each section.
The solution process will look like this:
1) Create the geometry using a separate spreadsheet with visual display of the wing as you create it. The spreadsheet will then automatically write the required geometry input files for the vortex lattice code.
2) Set up an input file for the code listing flight condition (specified alpha or specified CL, yaw angle, Reynolds number at the root); root airfoil, tip airfoil, and other airfoils between the root and tip; paneling discretization, and any runtime options.
3) Run the code. The following will happen:
i) First, airfoil shapes will be interpolated to each panel. These coordinates will be used when running XFOIL to get profile drag.
ii) From the computed airfoil geometry, create the mean camber line at each panel. The mean camber line is used for the vortex lattice geometry.
iii) Using the mean camber lines, input geometry, and paneling setup, create wing panels and compute information such as panel areas, collocation points, normal vectors, etc.
iv) Set up a vortex ring for each panel, where the leading edge of the vortex ring is along the quarterchord line of the panel and the collocation point is at the center of the 3/4chord line of the panel (halfchord line of the vortex ring).
v) Set up horseshoe vortices in the wake, whose leading edges line up with the trailing edges of the aftmost vortex rings on the wing. To satisfy the Kutta condition, the horseshoe vortices in the wake have the same circulation strength as the vortex rings they line up with.
vi) Solve for the unknown strengths of the vortex rings by satisfying the boundary condition of no throughflow at the collocation points.
vii) Get the velocity at the wing panels by summing up influences of all vortex rings and horseshoe vortices. Get pressure distribution from velocities by the Bernoulli equation.
viii) Find the lift coefficient, pitching moment coefficient, and induced drag coefficient by integrating the pressure differential on the surface.
ix) If a lift coefficient was specified and the computed lift coefficient is not the specified lift coefficient, adjust the angle of attack and start over at step vi).
x) Calculate Reynolds numbers for the airfoils at each section. Run each airfoil at the appropriate Reynolds number and angle of attack to compute the profile drag.
xi) Integrate the profile drag across the span to get the total profile drag.
xii) Write output files for spanwise variation of sectional lift, induced drag, profile drag, and any other output files deemed valuable.
You may ask, "Montag DP, why are you making a new vortex lattice code when there are already some good freely available ones, like AVL and XFLR5?" There are a few reasons. The main reason is that I want to eventually be able to wrap an optimizer around it to maximize the performance of sailplane wings. There are some other reasons too:
1) AVL doesn't do profile drag.
2) XFLR5 does profile drag, but I don't like how everything is behind a GUI. It's not good for running a lot of cases in a short amount of time.
3) By writing the code myself, I can make it so that it is easy to wrap an optimizer around it. I can also parallelize it to run faster.
4) It will be fun, and I can experiment with some other things like wake relaxation. Perhaps eventually the inviscid part of the analysis can be made unsteady and applied to aeroelastic problems or rotorcraft simulations.
So far all I've done is written the code to calculate the influence of arbitrary quadrilateral vortex rings on arbitrary points in space. The first picture below shows streamlines from a test I did. I will next have to add triangular vortex rings and horseshoe vortices before I can start writing the vortex lattice code.
Progress will probably be slow in the next couple months because I'm taking Quals at the end of October, so I won't be devoting much time to this before then.
