Elliptical wing

688 views
Skip to first unread message

deenri...@gmail.com

unread,
Oct 13, 2023, 12:24:38 AM10/13/23
to OpenVSP
Forgive me if this has been asked, but is there a way to create elliptical wings programmatically. I know I could use blending to do it manually, but I want to perform a tradestudy. 

If there isn't, what would be the path to create a user defined component that incorporates the ellipse equation x/a^2+y/b^2=1 ?

Thanks
- Daniel

deenri...@gmail.com

unread,
Oct 13, 2023, 3:50:06 PM10/13/23
to OpenVSP
I've managed to create a vspscript (instead of a component) that creates elliptical wings. here for anyone that wants to use it!
EllipticalWing.vspscript

Tim Swait

unread,
Oct 21, 2023, 4:03:22 PM10/21/23
to OpenVSP
Thank you, that's really useful!

marco

unread,
Oct 21, 2023, 6:00:05 PM10/21/23
to OpenVSP
oh yeah! downloaded! and thanks.
dunno if i'll ever use it but i am sure it will teach me something.

Tim Swait

unread,
Oct 25, 2023, 1:14:01 PM10/25/23
to OpenVSP
I've converted it to run with the Python API. It needs to be fed a blank file to start with (as I still can't seem to get the creating a new file to work with the Python API) so I've attached that also. If it's in the same directory then it should work.

I was also interested to see the effect of how elliptical do you need to be, how stepped a section still gives a good L/D? So I ran for a case that should give a CL of 1 and ran a loop to run a VLM simulation with an increasing number of points defining the 'ellipse' from 2 (straight tapered wing) up to 22 (pretty good approximation). I was hoping to hoping that the CL would show a smooth curve tending to 1 and an increasing L/D tending to 18. Unfortunately it's very erratic, as you can see from this graph, there's odd random outliers and little clear trend.
Screenshot from 2023-10-25 17-54-57.pngScreenshot from 2023-10-25 17-57-09.png
The one with 18 points is particularly bad. I've attached the file for that also. Running it through the GUI also gives very off results as you can see in the spanwise load distribution. I don't really know what's going on here.  If anyone has any ideas then please let me know. The mesh doesn't look bad or really significantly different to the ones that give reasonable results.
Screenshot from 2023-10-25 18-10-28.png
blank.vsp3
EllipticalWing.py
elliptical.vsp3

deenri...@gmail.com

unread,
Oct 25, 2023, 1:26:31 PM10/25/23
to OpenVSP
Awesome stuff. 
Ok, so I don't think iterating on num_points is the correct variable since these numerical solvers are sensitive to mesh resolution/spacing. If anything I think it would be better to fix the num_points. In my experiments I had good resolution at around 50 points. Then you can sweep the exponent, n, to change the shape of the superellipse between ellipse (n=2) at square wing (n=inf). Does that make sense?

If you do this, then the other thing to watch out for is ensuring that each wing has equal area. I added a bisection method in the attached script to converge on area by iterating on mean chord with fixed span. (I'm not sure if VSP has this functionality built in somewhere). Let me know if this makes sense. 
EllipticalWing.vspscript

Tim Swait

unread,
Nov 1, 2023, 12:09:19 PM11/1/23
to OpenVSP
Thanks, yes, that makes sense. I've been playing some more on this. However I'm finding that some examples analyse well and give good results, but some just go a bit crazy at the tips (or even just at one tip, which doesn't really make sense to me as it's symmetric and has no sideslip!).

I've attached a couple of examples. elliptical2.2 solves nicely and gives a good result. However for elliptical2.8, as you can see below, one tip (but not the other) is going crazy.
Maybe setting the tip chord so small is causing it a problem? Does anyone have any other ideas on how to better model the tips?
Screenshot from 2023-11-01 16-03-06.pngScreenshot from 2023-11-01 16-03-38.png
elliptical2.8.vsp3
elliptical2.2.vsp3

Brandon Litherland

unread,
Nov 1, 2023, 3:23:57 PM11/1/23
to OpenVSP
Tim,

Take a look at the computational mesh in Viewer and check if everything is symmetrical. This goes for cycling the agglomeration levels as well with +/- keys (use - and =).
An elliptical wing is tricky with the rapidly decreasing chord at the tips.  Andy Hahn did an elliptical wing way, way back that used many cross-sections.  Honestly, I haven't really tried it yet but this would be a good test of modeling a wing with a Prop blade and using the Blade curves to define the shape.  You'll likely need to toy around with the thickness to keep the tip reasonable without causing a large wiggle across the wing.  A few more control points toward the tip ought to do the trick.

Lan Ding

unread,
Nov 3, 2023, 3:50:10 AM11/3/23
to OpenVSP
Hi Brandon, a quick question. I setup a propeller model in vsp and use the aero to run the simulation. The trust and torque results do not fit what we had in CFD. I couldn't find a proper setup for wake nodes and time step to get steady results. Could you help me with this?It's a quite simple case and it drives my nuts. I can append the model if you need. 

Brandon Litherland

unread,
Nov 7, 2023, 2:29:28 PM11/7/23
to OpenVSP
Lan Ding,

I think you're talking about a spinning propeller run in VSPAERO rather than an elliptical wing which is the subject of this thread.  Please create a new post for your question.

Lan Ding

unread,
Nov 7, 2023, 10:24:14 PM11/7/23
to OpenVSP
Ok.

Tim Swait

unread,
Nov 13, 2023, 1:05:15 PM11/13/23
to OpenVSP
I've been working some more on this and have now got something that seems to give reliable results (code attached).
The biggest problem seems to be what you set the tip chord to. In the original script this was set to 1% of the root chord, but this was often giving the crazy results at the tips that I mentioned earlier. Increasing this to 5% of the root chord prevented those crazy results and now I'm getting a smooth load distribution that drops to 0 at the tips. I also tried 2%, that was better than 1%, but in some circumstances could still give some nasties.
Also I went with Daniel's advice and added an iterative loop to find that chord which gave the required area, although I did it slightly differently, using the error between the actual wing area and the desired wing area to work out the factor to change the chord by, which I think converges on the correct area more rapidly (although I probably should have been changing by the square root of the area, thinking about it now!).
Anyway, it now gives something like a smoothish trend when changing the n value. Varying the n from 0.8 to 3.8 where n=1 is a straight tapered wing, n=2 is elliptical, less than one is elliptical the wrong way, like this (n=0.8):
 
image.png
and greater than 2 is getting closed to a square wing like this (n=23.8):
Screenshot from 2023-11-13 18-03-48.png
you get the graphs  below of CL and L/D. The efficiency improves as you increase n towards 2. I'm a bit surprised that it doesn't drop away more steeply above 2. I did try a wing with completely square tips, and this gave an L/D of 17.65, so I guess it shows that even a bit of rounding toward elliptical helps. This has satisfied my curiosity on this for the time being anyway, I don't think I'll play any more with it. I think it shows a nice example of scripting VSP with Python to run a batch of analyses though, hopefully of interest to someone. 
Thank you to Daniel for writing the original script for generating the elliptical wing.
CL.pngL2D.png
EllipticalWing.py

deenri...@gmail.com

unread,
Nov 15, 2023, 11:50:03 AM11/15/23
to OpenVSP
Hey Tim, 

Great work. I was also doing similar investigations, but I was able to show a more pronounced LD maximum around n=2. However, I did notice that the final results were very sensitive to things like mesh resolution, wing section discretization, tip chord, and even slight differences in area. All this to say, that this is a hard problem to capture correctly since the differences in CDi we are trying to resolve are on the order 2-3%. 

I think wind tunnel tests may be needed to validate the setup for at least one of the wings. Great work though!
- Daniel

Ernesto Rolim

unread,
Jul 25, 2024, 12:28:58 PM7/25/24
to OpenVSP
Hello everybody!
Sorry for my bad English, I'm using Google Translate.
This is my first post on the forum and I hope I'm doing it correctly.
I'm not an aeronautical or aerospace engineer, my degree is in Electronic Engineering, but I like the subject, that's why I'm here!
Trying to learn this excellent SW, I used this elliptical wing to start my studies. I achieved a symmetric distribution of cl*c/cref just by changing the "Num U" value of the last wing section (tip) from 6 to 3.
It worked for all the files I tested: elliptical.vsp3, elliptical2.8.vsp3 and elliptical2.2.vsp3.
See the results.

elliptical2.2.png

AoA from -10° to 19°. For testing only.
elliptical2.2_Load_Dist.png

Rear View
elliptical2.2_Rear_View.png

elliptical2.8_Load_Dist.png

Hope this helps!
Ernesto

Tim Swait

unread,
Jul 26, 2024, 5:23:00 AM7/26/24
to OpenVSP
Interesting, so coarsening the mesh at the tip actually worked better than a finer one? That's a bit counter-intutive, I guess though that with the fine mesh then the tip elements are just so ridiculously small that they're actually causing the numerical instability (dividing by almost zero being equal to almost infinity). I actually solved the problem also by making the elements bigger, by increasing the tip chord from 1% to 5% of the root, probably has a similar effect, i.e. making those tip elements just a little bit bigger.

Knowing more about this now than I did a year ago, I suspect the reason I didn't see a clearer trend towards n= 2 being optimal is because I wasn't properly managing my reference condition. I was comparing all the wings at the same arbitrary angle of attack. But to do this properly you'd need to find out what at what angle the optimal L/D occurs and compare each wing at their best AoA. Or possibly at least fix the CL, so you're comparing each at the same lift condition, rather than the same alpha. I don't have time to look at this now though.
Reply all
Reply to author
Forward
0 new messages