ERCO WW2 Propeller Simulation

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).

Nikola, from Airshaper, scaning the ERCO propeller

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.

Raw blade scan mesh directly after import into Onshape (procedural hub model)

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.

A perspective on the mess cross section, where the high mesh detail hides distinct cross section boundaries from the eye

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.

AOA and planform surfaces forming intersecting boundary of leading and trailing edge curves, effectively defining chord values for all 8 profiles.

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.

Blade scan with overlay of radii of intended cross section

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.

2nd HAVF profile being fit to raw scan

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 seven primary HAVF profile fit to the 3d scan

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.


CAD Sharp “Measure Value” features in Onshape Feature Tree used as variables in custom design tables

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).

From Onshape outputs to HAVF in column for for airfoil 1 in Libre Office

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…

Placing chord lines for all 8 airfoils

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.

Eight ERCO propeller airfoils recreated using the HAVF format, in Onshape

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.

ERCO propeller model completely rebuilt with data only from geometry text file

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%).


ERCO propeller simulated in free-stream, by Airshaper

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.


ERCO propeller simulated in situ upon relevant airframe, by Airshaper

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.

Graph comparing thrust and torque of all three ERCO propeller simulations

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.