This article covers the process of a simulating a wooden World War 2 propeller manufactured by ERCO. The projects starts with a 3D scan published by Airshaper (a popular online CFD provider).

The project did not initially start out with the goal of simulation. Originally, the project started simply as a CAD modelling exercise in Onshape using the new Holbrook Airfoil Vector Format (HAVF) profile tool released in 2024. Not only would it be interesting to sharpen our Onshape modelling skills, but it would also be a good test to see if the HAVF profile tool could handle custom airfoils from a propeller made 70 years ago. The goals of the project slowly expanded from modelling, into a full on simulation project, and the tinkering here will lead to some exciting new tools we will have to offer to anyone looking to simulate their propellers quickly.

Seeing as the propeller was designed around the same time that NACA was being founded, I was interested in what the geometry would be like. I was certain that I would not find any of the profiles inside the HAVF library. After all, what would a propeller anyone designed today look like if they suddenly lost 90% of their airfoil library? I have seen many propeller designs before, but never one so old. I was curious what kind of secrets it was hiding.
Now… I am not aware of specifics on how ERCO designed their propellers. But I suspect I wouldn’t be far off if I guessed that these were hand carved from blueprints, tested, and mass produced on tracer lathes once lines were frozen. That kind of iterative physical testing required a lot of patience and labor. But also, it is a completely different approach when compared to today’s digital design tools, such as, airfoil simulators and other CFD tools. It must have been many times more expensive to manually process prototypes. In some-ways it is superior to what we commonly use now for design. There is no better way to be sure of the end result, then using the best simulation of all to test your design (reality).
In the interest of perhaps having some insight into those questions and suspicions, I went overkill tracing the 3D scan in the CAD model. Whereas usually I would only use about 5 cross sections for a propeller like this, here I used 8 (7 profiles evenly space along the blade, with an 8th to help capture the arced tip profile). If there was a weird transition at some radius, I was going to catch it. In any case, we could squeeze every airfoil cross section out of this old propeller to document it, and record it a modern HAVF format. We can squabble about the exact position we will take the airfoil cross sections from later. But, for now, we need to decide how we will find the HAVF solution for those foil sections.
Even through the HAVF profile tool already exists in Onshape, it’s not intended for reverse engineering airfoils from 3D scan data like this. It works well for pasting airfoils from my book, or public HAVF airfoil sample library into Onshape. But when you are reverse engineering a design as old as this, you can be confident that you aren’t going to find traditional airfoil within the blade that you can look up anywhere.
For cases where the HAVF inputs are unknown, we can find those solutions manually. All you really need to do is to be able to move spline control points manually inside a CAD environment with the geometry you are trying to fit. On my YouTube channel, I show how you can use Onshape to make almost any airfoil into HAVF format. But that process is two-dimensional, and works best with XY data, or images. This is a 3D scan. The scan is actually pretty hard to fit with the 2D fitting process. When looking at the cross section of the airfoils, the 3D file mesh looks like a mess, and doesn’t easily fit any curves. This led me to fit the airfoils to the model in 3D, in the Onshape GUI, where I could inspect the shape fit from every angle, and lessen the visual confusion from the mesh.

The first step is to make a good planform and AOA distribution map from the scan. Once you have a “fine” profile for the planform, and AOA, you can be sure that it will be worth it to fit airfoils to the profile. Now I can place the leading edge and trailing edge points of the chord lines exactly on this 3D line where the AOA and planform profiles intersect. So, if I want to remodel the entire propeller using the HAVF coordinates found here, I can do it, and know I will end up with a similar high quality model, with all the “same” fine lines that the original design had. If I were to fit each airfoil solely on its cross sectional data alone, without taking the whole model into consideration at once, I would find that there would be many variations of the chord being slightly larger and shorter at different radii, and the model would be shrunk, expanded, and stretched in area’s where it should obviously should be smoothly changing shape. Being particular like this is not as necessary when you are using 3-5 profiles. But when you have 8, it is always worth the time to do this. The more profiles there are, the easier it is to end up with a non-fine surface.

This meticulous process helps in other ways as well. The scan is not perfect, and it is not always clear where the leading or trailing edge of the airfoil is. But, we know that the real model of the propeller has a fine level of curvature. So, by creating a planform and AOA distribution with similar fineness, it can help us infer at some of the lower quality parts of the scan, what the correct lines may be. Freezing the Planform and AOA profiles constrains the chord dimensions. Using the CAD this way, we get solutions for chord values that will loft nicely into a new model, without the need to go back and make adjustments later on for surface quality, or “fineness”.
The only foundational thing to do at this point is to pick the radii for the cross sections. Because the tip is essentially an arc and comes to a single point, you won’t be able to get an airfoil out of the largest radius. The trick is just to judge the largest radius where you can get a good airfoil profile from the scan. There is no perfect answer to this, but the goal is to get the largest percent of the total radius encompassed. This tip airfoil is considered the 8th airfoil. The 7th airfoil goes exactly where the tip begin to transition from the main blade, to the arced tip. The next important cross section is the root, containing the 1st airfoil. This turned out to be very interesting, because the style of this era was to loft from a circular profile near the hub. We do not need to start there, since its not productive to spend time reverse engineering a circle. Also, including a circle in the simulation may prevent our code from finding good solution. Circles are notoriously bad airfoils. But, just a few dozen millimetres away from that circular root profile, the blade starts to form a distinct, albeit very rotund airfoil shape. As the whole point of this exercise at the beginning was to capture the shape, I started there. That would be a big gamble later on, when I decided to actually try and simulate the propeller. If that root section had no converged results in a 2D profile simulation, then I might have to adjust the root position outward to a larger radius to get converged airfoil simulations. And if I wanted to maintain evenly spaced profiles, that would mean refitting every airfoil in the blade with the exception of the tip foils. But with the tip and root radii chosen, I evenly spaced the other 5 airfoils throughout the blade like so.

With will all the radii, chords, and AOA fixed at this point, I could start fitting the airfoil shapes, knowing that I would be able to take the chord measurements, and the coordinate point data, and transform all that back onto a unit-less 0-1 scale, in proper HAVF format, for use in simulation.

As seen above, the original scan is a little messy. Airshaper’s tools work pretty well to repair mesh geometry to a point where is is suitable for CFD. The process we will use is to create a CAD model, composed of lofts built from HAVF format airfoils. This way we can directly import the geometry into our simulation with the HAVF arrays, chords, and angle of attack, which are enough to completely constrain a geometric model of the propeller.

The next part of the process is to fit the data. All the coordinates are in Onshape, but we need to get them out. For that, there is a handy custom tool called “Measure Value” from CAD Sharp. It will allow us to turn precise point to point measurements into variables we can include in a custom design table.

This part did require a lot of clicking, and it can be handled more intelligently by creating a template, but it’s sufficient for a one time approach. Also, because Onshape doesn’t allow parts in assemblies with only sketches, I didn’t want to include a bunch of dummy solids in the model just to be able to insert a sketch template. Some of my inexperience with the platform may be showing here but, the result is a lot of variables in the feature tree, and a lot of variables in our design table that we can export and use.


Custom Design tables can be copied as excel data, or exported as CSV. So it’s easy to use Excel or Libre Office to create the coordinate system we required, that the measured values cannot (they cannot measure negative values, only lengths).

Repeating this for every one of the eights sections results in 8 positions, each with their own radius, chord, AOA, and HAVF airfoil defined. This is enough to accurately recreate the blade in almost any CAD program, and also simulate it in our own software. Now any software capable of reading this data from the text file, will be able to recreate very accurately the blade geometry, in code, CAD, etc etc…
The size of the data below, in 2.9 kilobytes including the labels for the data as well as the numberic portions. Note, this is not mesh data. This data is capable of reproducing high quality CAD, parasolid, STEP surfaces models, as well as mesh models, because it is actual spline/vector data. The original size of the mesh scan data from Airshaper was 21 megabytes, and even the STEP file is 1.8 megabytes. The size of the data we need to define the geometry is 635 times smaller than even the STEP file.
#ERCO Blade Geometry #radius: 0.420000 0.575000 0.730000 0.885000 1.040000 1.195000 1.350000 1.395000 #chords: 0.199399 0.233546 0.225999 0.206708 0.177925 0.143361 0.103252 0.083430 #angles: 30.886000 27.691000 22.529000 19.397000 16.848000 14.539000 13.306000 13.058000 #BladeGeo: RootRadius Tip Radius BladeCount #BladeGeo: 0.420000 1.395000 2.000000 #airfoil_1: 1.000000 0.007523 0.914418 0.314249 0.594271 0.346100 0.464797 0.529847 0.308026 0.223216 0.000000 0.428071 0.000000 0.000000 0.000000 -0.069163 0.182799 -0.273131 0.241521 -0.216726 0.288457 -0.331080 1.026289 -0.282203 1.000000 -0.007523 #airfoil_2: 1.000000 0.006423 0.816345 0.101839 0.654231 0.136380 0.436496 0.175263 0.242702 0.179806 0.000000 0.089588 0.000000 0.000000 0.000000 -0.056738 0.008242 -0.115883 0.386759 -0.086343 0.682838 -0.098118 0.888279 -0.025057 1.000000 -0.004282 #airfoil_3: 1.000000 0.004425 0.929053 0.036668 0.567144 0.102222 0.398913 0.114319 0.132709 0.085894 0.000000 0.051337 0.000000 0.000000 0.000000 -0.027575 0.001699 -0.040805 0.281731 -0.022792 0.526763 -0.066133 0.827132 -0.022566 1.000000 -0.004425 #airfoil_4: 1.000000 0.007257 0.878757 0.041934 0.606909 0.061434 0.424875 0.068299 0.235109 0.081574 0.000000 0.038528 0.000000 0.000000 0.000000 -0.031798 0.000876 -0.050579 0.000876 -0.050579 0.365458 0.000000 0.876483 -0.013163 1.000000 -0.007257 #airfoil_5: 1.000000 0.004215 0.885907 0.032205 0.712637 0.061689 0.487048 0.073059 0.232413 0.052612 0.000000 0.044811 0.000000 0.000000 0.000000 -0.024645 0.020008 -0.041186 0.370409 -0.035588 0.627298 -0.048852 0.917370 -0.023021 1.000000 -0.004215 #airfoil_6: 1.000000 0.004360 0.831328 0.027267 0.662530 0.067647 0.383103 0.052511 0.073625 0.049986 0.000000 0.018966 0.000000 0.000000 0.000000 -0.024079 0.128591 -0.063657 0.529251 -0.028055 0.762139 -0.018617 0.858923 -0.045256 1.000000 -0.004360 #airfoil_7: 1.000000 0.004843 0.756867 0.050207 0.587969 0.058982 0.363509 0.069219 0.076870 0.065916 0.000000 0.013298 0.000000 0.000000 0.000000 -0.038885 0.160859 -0.041452 0.394956 -0.047815 0.537888 0.000000 0.812130 -0.052241 1.000000 -0.004843 #airfoil_8: 1.000000 0.005645 0.783495 0.053338 0.562004 0.062148 0.349610 0.063203 0.064521 0.047992 0.000000 0.015210 0.000000 0.000000 0.000000 -0.009469 0.081218 -0.065552 0.387079 -0.027364 0.541664 -0.032350 0.751912 -0.043138 1.000000 -0.005645
To show how easy it is to create a propeller model now, we can use the HAVF profile tool in Onshape, with this data to make a new model, separate from the existing model we have already created, fit to the scan. All that we need to do to start is draw the main chord lines for for all 8 airfoil positions, with chords and AOA as described in the file. Like so…

Now all we have to do is add the “HAVF Profile” feature to our model, so we can click it in the upper tool menu. This way we can build one airfoil at a time using the HAVF inputs we found. To use the feature, just open it, click the chord line you want, select the option to create a custom foil, and paste in the HAVF array. We will use the option here to stick with stock HAVF trailing edge thickness, since the array already holds the appropriate thicknesses data we measured from the scan. Repeating this process for all 8 airfoils should result in a model as seen below.

A visual inspection of the blade shows great similarity to the existing model we have already, expect this model feature tree is incredibly minimal, and efficient. But, the model is also proof of what the data really is; pure geometry. With exception of the hub, all you see below was pasted in from a small text file. Yet the geometry is there is the same fidelity. So, it’s evident what we have created is a great way to transfer very specific models between code and CAD. You can open this model for yourself here, as well as the original model created from the scan here.

So now that we have the geometry defined, we can consider running a simulation. Certainly other methods of geometry definition have their pros and cons, but most will take a decent amount of time for any experienced person to construct into a useful simulation. But that is where the convenience comes in with our solution. After many years constructing an algorithm which can completely optimized blade designs in a stable loop of geometry and simulation, one single propeller simulation isn’t too much of an ask. Using our geometry, default properties for air, and RPM of 1900, and a normal airspeed of 130mph, we are able to duplicate the conditions of the Airshaper simulation, and compile all the information we need for a simple lifting line simulation. The first step will be to obtain relevant lift and drag data for all airfoils from mach and Re relevant to the simulation. This is all automated, so what all the relevant data appears after we press run.
Lift Curve Slope and Drag Polar for all 8 ERCO airfoil profiles
Next we have the option to use a custom lifting line method, or stock Qprop. Using stock Qprop, we get the result below directly. The total compute time required for the result is 2 minutes and 37 seconds, on a consumer grade 12th gen i5 from 2021, all on a single thread. With paralleled processing, it would be very possible to easily cut that time in half, and get simulation time for even complex 8 profile blades like this completed in less than a minute.
Qprop Output
# ERCO Propeller 130mph # # rho = 1.2250 kg/m^3 # mu = 0.17800E-04 kg/m-s # a = 340.00 m/s # # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # # V(m/s) rpm Dbeta T(N) Q(N-m) Pshaft(W) Volts Amps effmot effprop adv CT CP DV(m/s) eff Pelec Pprop cl_avg cd_avg # 58.110 1915. 0.000 2084. 728.2 0.1460E+061033.200 148.7159 0.9504 0.8293 0.20772 0.7112E-02 0.1781E-02 4.6064 0.7882 0.1537E+06 0.1211E+06 0.2871 0.1212E-01 # # radius chord beta Cl Cd Re Mach effi effp Wa(m/s) Aswirl adv_wake 0.4395 0.2064 30.656 -0.0205 0.13490 1499599 0.310 1.0029 -0.5914 57.99 -0.7556E-01 0.2071 0.4785 0.2181 30.048 0.0299 0.21555 1683613 0.330 0.9955 -0.2635 58.30 0.1145 0.2087 0.5175 0.2266 29.241 0.1360 0.11000 1854876 0.350 0.9786 0.2226 59.07 0.5312 0.2123 0.5565 0.2320 28.237 0.2555 0.02507 2008826 0.370 0.9587 0.8019 60.04 1.002 0.2167 0.5955 0.2343 27.037 0.3326 -0.00586 2141144 0.391 0.9449 1.0448 60.79 1.299 0.2198 0.6345 0.2339 25.699 0.3722 -0.01774 2250984 0.411 0.9369 1.1341 61.27 1.442 0.2217 0.6735 0.2315 24.332 0.3879 -0.01353 2341606 0.432 0.9327 1.0992 61.57 1.485 0.2227 0.7125 0.2278 23.049 0.3934 0.00017 2417783 0.454 0.9302 0.9988 61.77 1.485 0.2233 0.7515 0.2237 21.954 0.4013 0.00577 2485479 0.475 0.9273 0.9608 61.99 1.492 0.2240 0.7905 0.2193 21.066 0.4147 0.00547 2546844 0.496 0.9235 0.9628 62.27 1.519 0.2249 0.8295 0.2145 20.324 0.4272 0.00568 2599776 0.518 0.9197 0.9613 62.54 1.542 0.2259 0.8685 0.2091 19.665 0.4311 0.00550 2641754 0.540 0.9174 0.9616 62.73 1.534 0.2264 0.9075 0.2032 19.030 0.4165 0.00524 2670062 0.562 0.9183 0.9608 62.72 1.464 0.2262 0.9465 0.1965 18.392 0.3817 0.00493 2683137 0.584 0.9231 0.9584 62.47 1.327 0.2250 0.9855 0.1891 17.749 0.3333 0.00422 2680570 0.606 0.9307 0.9577 62.04 1.147 0.2232 1.0245 0.1812 17.105 0.2789 0.00339 2662113 0.628 0.9401 0.9576 61.51 0.9517 0.2210 1.0635 0.1728 16.460 0.2276 0.00305 2627779 0.650 0.9495 0.9517 60.96 0.7698 0.2188 1.1025 0.1640 15.830 0.1864 0.00304 2579573 0.672 0.9574 0.9398 60.52 0.6257 0.2170 1.1415 0.1551 15.240 0.1608 0.00318 2521340 0.695 0.9621 0.9255 60.25 0.5377 0.2159 1.1805 0.1465 14.713 0.1560 0.00363 2457537 0.717 0.9620 0.9110 60.27 0.5233 0.2159 1.2195 0.1383 14.274 0.1758 0.00450 2392174 0.739 0.9555 0.9009 60.66 0.5988 0.2174 1.2585 0.1299 13.920 0.2148 0.00330 2315694 0.762 0.9429 0.9372 61.43 0.7566 0.2203 1.2975 0.1203 13.630 0.2628 0.00359 2207030 0.784 0.9252 0.9433 62.55 0.9817 0.2245 1.3365 0.1082 13.385 0.3077 0.01548 2042492 0.806 0.9015 0.8170 64.11 1.289 0.2304 1.3755 0.0927 13.163 0.3140 0.02667 1796860 0.829 0.8601 0.7271 67.03 1.867 0.2415
When it comes to the results, this simulations from Airshaper and Holbrook Aerospace are in the same ballpark. I was surprised the results were so similar, especially when you consider that the Airshaper simulations are dealing with a little rough surface geometry from the scan, and the simulations we are performing have no mesh data, only HAVF airfoils.
The Holbrook Aero. results tell a story that the normal airspeed may be a little too high for the blade at 1900 rpm. The root is beginning to show a negative lift coefficient. Still, the estimated blade efficiency is 82.9%, and the thrust is 2084 [N], with a torque of 728 [Nm]
The simulation that is most like ours is of course the Airshaper version without the complete airplane fuselage which something that is just not possible with our much simpler approach. That Airshaper sim reports a thrust of 2292 [N], and a torque of 1091 [nm]. The thrust result ins 9% higher than our own, and the torque is much larger ( by ~30%).

The simulation involving the aircraft fuselage predicts even more thrust and torque (and not by a small margin). The thrust has increased by about 30% again to 2935 [N] and the torque has increased slightly again to 1211 [Nm]. Why this is happening I am not sure, but it is not unheard of for nacelles and cowlings to cause large changes in performance. Certainly, it’s not hard to imagine that encapsulating a large radial engine directly behind the propeller would cause some changes. Positive impacts on performance are of course best taken with a grain of salt, but, then again, this propeller was designed to work with ( and was likely tested ) with airframes like this. Perhaps the energy required to rotate the massive hub, and thick wooden blade sections close to the root is reduced when the normal flow is so massively disturbed by a nacelle/cowling.

Comparing the three results isn’t completely kosher, since two of the simulations are using a rougher mesh, and one in using HAVF inputs. Only two of the sims are using a propeller simulated and in free stream, and one sim is considering the cowling effects. So none of the simulations are actually simulating the same thing. Still it is comforting that the torques of the CFD simulations are within 10% of each other, and the thrust of the free-stream simulations are within 10% of each other as well. A good next thing to test would be another CFD simulation, this time using a the mesh, created from the Onshape CAD export.

In summary, the quick simulation provides good results considering the short time required for compute. If you are in the design phase, simpler tools like this, that provide you with quicker answer, maybe be more helpful at first in achieving large performance gains without heavily investing in compute. Even in later stages of design, quick method like lifting line can help validate many many points in the flight envelope, without needing massive resources, especially when supported with relatively few CFD simulations.
In hindsight, geometry ingestion via manual CAD programs can be sluggish. So we will be finishing in the coming months two new ingest processes for exported CAD models (STEP AND STL), and also raw scanning data, and we might be able to announce some of the partners we have to explore these capabilities soon.
Our new HAVF airfoil drawing tool provides an API structure that can accommodate most any process. So, the coming year should be an interesting year for the site. Who knows what you might be able to do here with just our book, a empty notepad, and some ideas.
All in all, I have a new respect for what people were able to do, making propeller this good without any computers. Reaching anywhere near 80% propeller efficiency with simple wood materials, draw knifes, and tracers lathes is impressive. Especially when you consider that the cowling eat up 30% of the blade’s radius.
I have had fun with this experiment, so I have to thank Mr. Remmerie at Airshaper for making and sharing it. It’s easy to be fond of classic propellers like these. Now that we have such a good model for it, perhaps it will be a good benchmark for any tool / services we can add to the site. There is only one proper way to find out.

