Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- Be respectful, on topic and if you see a problem, Flag it.
If you would like to contact our Community Manager personally, feel free to send a private message or an email.
New Custom Feature: HAVF Profiles - Standard Airfoil Profiles
We are releasing an exciting new Custom Feature!
Introducing HAVF Profiles, built in collaboration with Austin Holbrook and Greg Brown. This feature comes loaded with an extensive library of airfoil profiles, guaranteeing continuity at the leading edge and providing control over the core variables of the profile, such as chord length or angle of incidence.
We hope this feature will enhance your toolset when creating airfoils, not only with the preconfigured library of vectors but also with the tools to create custom libraries and vector profiles. Our user testing found greater surface quality and faster development times. We think the feature is robust, but let us know your thoughts in the comments.
You can find the custom feature here: https://cad.onshape.com/documents/33795c7f9b39612da14ee99a/v/5f0353863c39e4e7468cf450/e/7d0549e4402995ffee27b9c5
This project stemmed from a collaboration with RCTestFlight, as Daniel and Austin collaborate using Onshape. Find their propeller design competition here: https://youtu.be/oTpa0WVHspA
The feature will construct a profile using two Bezier splines, with guaranteed surface continuity at the leading edge. The custom feature comes with a library of profiles, but you can also create a custom profile using a vector approximation of the airfoils in this format:
1.00000000 0.00060380 0.79245558 0.01982307 0.20893634 0.09200306 0.28069787 0.01922811 0.31444604 0.07222109 0.00000000 0.05201070 0.00000000 0.00000000 0.00000000 -0.03961872 0.61853657 0.02424800 0.14054043 -0.03827816 0.56753783 0.00663705 0.93859584 -0.00533977 1.00000000 -0.00060620
Included in the custom feature is a segment of the Holbrook Aerospace Profile library; you can find an expanded library of airfoils on the Holbrook Aerospace website. [https://holbrookaerospace.com/product/album-2/]. If you wish to implement more vectors into your library, we have added the database Feature Studio tab, havfDatabaseExample.fs. As the airfoil profiles we included in the feature are proprietary the core library is hidden, you can add a second database or switch to your own set of vector profiles.
We are eager to see what you build with the new tool. Please add your comments so we can consider any future enhancements.
This is not an official Onshape feature, and maintenance is not guaranteed.
Comments
A few thoughts:
I wonder if there is a better approach to fitting a curve to the coordinate tables? If the goal is also to have any given profile blend smoothly into another, perhaps it would be better to space the CVs out in a consistent pattern along the chord length (X), and fit their Y positions so that the curves result in a good least squares fit to the coordinates? This would greatly improve the parameterization of the curves.
Learn more about the Gospel of Christ ( Here )
CADSharp - We make custom features and integrated Onshape apps! cadsharp.com/featurescripts 💎
The tradition of spacing the x coordinates depending on the airfoil surface curvature and pitch relative to the chord at the location comes from the approximation made for classic airfoil software and makes sense there. Especially in the LE area it probably still does. Since there is a minimum control point density required for accuracy in the critical zones, equal spacing might result in much more control points in the less curved areas.
Note that I said “consistent” spacing, not equal spacing. I don’t know what the right answer is, but more density at the leading edge would make sense. There might even be a nice logarithmic spacing which is the most efficient. The first two CVs are going to need to be at the same X=0, but after that, the space between them will want to get gradually larger.
Many of the approximations I’ve seen end up with weird increased curvature at the trailing edge. I only know so much about airfoil design, but I assume that is an artifact, not the intended result. The NACA shapes have continuous mathematical definitions. I don’t know how to convert that directly to a Bézier, but at least the equations can be used to check the results.
https://en.wikipedia.org/wiki/NACA_airfoil
"I think the increased thickness factor of the AG03 foil on the far side of the loft is making most of the inconsistency. Your idea about spacing has some good points, especially for simpler foils like this. But I could solve more complex airfoils without crossing some X control points. For the sake of a low entropy library, I made all foils in this library have the same number of control points. I chose the current amount of inputs after a couple of weeks of trying to make them at different levels of detail, finding that this resolution was the minimum that I could make accurate fits for all airfoils with. I do think every foil has an ideal number of control points. It would be cool to see how that plays out in another version of the library, especially with spaced X inputs. I have a couple of ideas on how you could do that while still prioritizing accuracy."
The AG03 airfoil definitely has a nasty loop of CVs, but in very limited review of a few other profiles, zig-zags seemed to be common as well.
Technically, a single span Bézier is infinitely mathematically continuous, but that doesn't mean that it's always a smooth, fair curve. A degree-3 Bézier can create a cusp which is C^infinity, but only G^0 at the cusp. Onshape won't let you create cusps or self-intersecting loops, but mathematically, these degenerate cases exist.
With the degree of curves that you're creating, you won't see cusps or loops in the curve from a loop of CVs like you have, but you will get uneven parameterization. Notice how the isoparametric curves are bunched up where the CVs are looping.
When you're using the same curve at both end of surface, the parameterization doesn't matter so much, but watch what happens when you use different curves at the tip (see below). The isoparametric curves (which are straight lines in this case) fan out-or-in very differently depending on the parameterization of the tip curve. In this case, I'm using a boundary surface for the cleanest surface. If you use a loft instead of boundary it might do a better job of evening out the parameterization, but overall boundary would be a much better choice for downstream surfacing work.
Ans2): If you wanted to space out the X coordinates as evenly as possible, there are many ways that you could add that to the fitting function. There are often a few solution to an airfoil, especially for the more simple airfoils like the clarkY, n2412, etc (or ag03 in this case). I heavily disfavored reducing the control points count, because it reduced accuracy even with the simpler airfoils, and it added entropy to the library to have fewer coordinates for some airfoils, which I did not want. (Mostly for purposes related to the optimization utility of the library). I guess the question then is, if you add a spacing weight into the mix, how much do you prefer spacing to accuracy? I think the two best options would be to either A) Use the current library, and make X boundary conditions for all the X variables, each within their own range, and try to find better solution with those additional boundary conditions Add a spacing weight to the fitness function, and remove it near the end of a fitting optimization, pushing your solutions towards the most evenly spaced during almost the entire fitting optimization, until the last second when you prioritize accuracy.
That's just what I am thinking off the top of my head. Of course there are more options. But, what I think should be noted, is that some airfoils are just weird. There is no requirement for smoothness in the original coordinate database. Sometimes airfoils are just harder to find solutions to than others. Some airfoils that naturally have a lot of curvature are hard to fit. Some airfoils with low amount of coordinates can be hard to fit accurately to their original analog shape. Sometimes an airfoil coordinate file will appear normal, and have a very very very small disjoint in Y or X. With a library as large as 1600 airfoils, you will see all sorts of cases come up. Sometimes I think people underestimate how long some of these foils have been around, and how much of a game of telephone has been going on over the decades. So already, there is lots being lost, or redone differently, making all airfoils into splines. In some sense we are continuing the game of telephone here, but also making a new standard that won't require as much telephone in the future (hopefully). Once an airfoil is defined as a spline there is no more questions where the line lies, as there is between coordinates.
But, if there were a need, I do think there would be utility in making more solutions. But I think that might be an easy way to wade into deep waters. If you find a solution that is spaced more evenly, but is 10% less accurate, how do you decide which solution to keep? It's a big question. But the likely answer is that there is always a better solution. Perhaps when that becomes more apparent I will release an updated book of HAVF airfoil solutions. But! do not underestimate the solve time!!! I am not the best coder, but it did take me a while to run the compute for this library.
I think the best solution for now is the custom inputs. Having an airfoil be so adjustable and durable, means you can spend time making an airfoil. You are no longer adjusting a single profile on a single version of a single part. You can save the HAVF vector and use it forever. So there is much more incentive to make the adjustments you want. I will make more instructions about how to do that soon.
I'd be lying if I don't dream of having this all be simpler to do. Making a qualify hub interface or wing transitions is always a big job. Especially when you are about to go to tooling. If you'd think you get rid of most of the manual surfacing work by combing the existing library a certain way, that would certainly save me even more time. In your professional opinion, do you think this type of solution combing could decrease the surface modeling time by 90%? Do you think additional control points would need to be added to ensure no overlapping X control points for higher curvature foils? If more time could be saved, and you can get higher quality surfaces, I think there is a huge incentive to go back and take a second look. But the pessimist in my thinks that there is going to always be a large amount of manual surface work to do.
I think I have said about all I can. But I may actually not be the best person to ask. I have a lot of experience making the format, and dealing with the issues it creates, but I have been using it for a while now, and I may be used to the problems it causes. On last thing I would say, is that the HAVF format give a lot of power to the input. It's just raw splines and not safety rails. So if there is a bad input, you can totally make a bad airfoil, and cause yourself lot's of problems. I tried to exclude that as much as possible from the library in the book of course.
Of the airfoils that have overlapping X values, I would say a very small percentage of them have the discontinuous curvature. I have only found 2 in the last 9 or so months that I published. The library is not perfect, and neither is the format, but its very functional and useful. Like I have said before, I definitely have an interest in making more libraries, and this is undoubtedly utility in that pursuit, but I just don't have time right now.
I've seen this before in much more known contexts. Even if the numbers are correct to some number of decimal places to some perfect surface, they are rounded or truncated and fitting exactly to sampled points often produces bad surfaces.
I'm not an aeronautical engineer, but I've spent a lot of time trying to reconstruct really good surfaces from sampled data. In this case, if I were trying to develop a good algorithm, I would play with how to space out the CVs, the acceptable error band, and the number of CVs. In a perfect world, you'd also have some sort of "fairness" metric that you're optimizing for as well. Tons of research papers have been written on this topic, and there are a lot of different approaches.
I see a lot of people trying to work with airfoils or doing boat hulls using some level of incomplete information. Even when you have what seems like really good info, it can be really challenging without some sort of smoothing/fitting going on.
It seems like 7 or possibly a little higher would be better. When I've tried matching sampled curves with a curve that is too low of a degree, if I can get it to resolve, weird CV distribution often results. The minute I increase the degree to something that can manage the underlying constraints, the CV placement can be much more rational.
Let's assume you have a perfect mathematical definition of the airfoil, but you need to convert it to single span Béziers. In order to match an arbitrary perfect curve with G3 continuity at each end, you need at least a degree 7 curve (unless the perfect curve happens to be something more simple). If the middle of the airfoil has any complexity to it, you might need more than degree 7, or consider multi-span with lower degree (e.g. 5). One could argue that you don't need G3, but given the importance of the leading and trailing edges, I would assume that G3 matching would be a good idea.
https://www.youtube.com/watch?v=XH7auwT6p4Y