HARP_Opt Cavitation Constraint

Hi Danny:

I hope you’re well. I have a query relating to the cavitation constraint within HARP_Opt, and was hoping you might be able to shed some light on this! For your information, my design comprises a VS-VP, 20m diameter, 3-bladed rotor.

Firstly, I am slightly confused by the ‘OmgMax’ input parameter. Having examined the ‘Main’ source code file, it is my understanding that HARP_Opt extracts the optimal TSR from the WT_Perf output file, and will subsequently set the optimal rotor speed across each flow speed. On this basis, I would have assumed that the ‘OmgMax’ value might only be engaged, say, in the case of a wind turbine, where the rotor speed might need to be limited from a noise perspective.

However, it would appear that, when I vary the value of ‘OmgMax’, it will impact the rotational speeds achieved across all flow speeds. Instead, I would have expected the optimal rotor speed to be used, corresponding with the optimal TSR, and for this tobe curtailed once ‘OmgMax’ is reached, as mentioned above. I have included some of these results as follows:

OmgMax = 11.5 => Maximum Rotational Speed = 11.5RPM@1.9m/s
OmgMax = 15.0 => Maximum Rotational Speed = 15.0RPM@1.9m/s
OmgMax = 20.0 => Maximum Rotational Speed = 20.0RPM@2.1m/s

Do you have any idea why this might be occurring? Ideally, I would prefer for HARP_Opt to calculate the optimal TSR, such that I would not need to enter a value for ‘OmgMax’, as I have no reason to limit the maximum rotational speed. To this end, should I simply enter an unrealistically high value for ‘OmgMax’, say 100, in order to achieve this?

Secondly, I’m slightly unsure as to how the cavitation check is performed within HARP_Opt. I understand the condition required to avoid its occurence, such that the local pressure needs to be higher than the fluid vapour pressure; however, is it a case that if a blade section fails the cavitation check, then the operating angle of attack, or rotational speed, of the blade will be modified until it satisfies the constraint, resulting in the rotor operating at a lower efficiency? Or, will HARP_Opt actually disregard designs that do not meet the condition?

Again, when the hydrokinetic turbine function is engaged, the actual rotor speeds seem to be dependent on the value specified for ‘OmgMax’, as follows:

OmgMax = 11.5 => Maximum Rotational Speed = 11.5RPM@1.9m/s
OmgMax = 15.0 => Maximum Rotational Speed = 14.9RPM@2.4m/s
OmgMax = 20.0 => Maximum Rotational Speed = 11.9RPM@2.5m/s

I was slightly surprised that when ‘OmgMax’ was changed from, say, 15 to 20RPM, the actual maximum rotational speed was reduced from 14.9 to 11.9. Instead, I would have expected there to be a single rotational speed that would avoid cavitation, regardless of the value specified for’OmgMax’, i.e., assuming cavitation occurs in both the 15.0 and 20.0RPM scenarios, I would expect the actual maximum rotational speed to be curtailed to the same value in each case, representing a critical value below which cavitation does not occur.

Perhaps I’m misinterpreting something here?

I’m sorry to hit you with all this information, Danny, but any clarifications you might be able to provide would be greatly appreciated. As always, I’m greatly enjoying using the program! If you’d like to see any of my input files, then I can certainly forward these to you!

Many thanks once again Danny,

All the best,


Hi Peter,

You can set an artificially large value for OmgMax (as you suggested) to increase the range of flow speeds for which the turbine operates at optimal TSR.

Reducing loading on the rotor (operating at lower efficiency) and limiting the maximum tip speed (by setting appropriate bounds for OmgMax) are both effective ways to avoid cavitation. When cavitation is detected, HARP_Opt will use a “death penalty” for that corresponding set of design variables. This is a simple way to “throw away” blade designs that experience cavitation, but this way of handling constraints can actually slow down convergence of the optimization algorithm. For future versions of HARP_Opt we’ve been investigating different ways to handle constraints more efficiently.

There are multiple blade designs that can have identical performance (for example, with integrated quantities like annual energy production), so I do not have any suspicions that there is a bug related to this inquiry yet. Did you run the genetic algorithm multiple times to see if you get similar results? I don’t think there will be such a thing as a “critical value (for the RPM) below which cavitation does not occur”, because cavitation also depends on other variables (twist, chord, airfoil shape). When you vary OmgMax, how does the resulting AEP value change?

Hope this helps,
Danny Sale
University of Washington

Hi Danny,

Many thanks for your reply, which clarified quite a few issues for me! As requested, the corresponding AEP values for each of the OmgMax constraints are as follows:

1. Cavitation Constraint Disengaged
OmgMax = 11.5 => Maximum Rotational Speed = 11.5RPM@1.9m/s => AEP = 1,084,774kWh
OmgMax = 15.0 => Maximum Rotational Speed = 15.0RPM@1.9m/s => AEP = 1,105,799kWh
OmgMax = 20.0 => Maximum Rotational Speed = 20.0RPM@2.1m/s => AEP = 1,108,887kWh

2. Cavitation Constraint Engaged (Safety Factor = 1.2)
OmgMax = 11.5 => Maximum Rotational Speed = 11.5RPM@1.9m/s => AEP = 1,077,179kWh
OmgMax = 15.0 => Maximum Rotational Speed = 14.9RPM@2.4m/s => AEP = 1,078,805kWh
OmgMax = 20.0 => Maximum Rotational Speed = 11.9RPM@2.5m/s => AEP = 926,629kWh

To answer your question, I ran the model two or three times in each case, and arrived at pretty much the same values each time. As suggested, I also ran a simulation in which I set the Omgmax value to 100, yielding the following results:

OmgMax = 100.0 => Maximum Rotational Speed = 21.4RPM@2.1m/s => AEP = 1,117,445kWh

This result was roughly as expected, with HARP_Opt limiting the maximum rotational speed to what I would imagine is the optimal TSR value, resulting in a higher AEP value than the constrained simulations above. Referring to the main results posted above, my primary queries would be:

1. When the cavitation constraint is engaged, why increasing the OmgMax value from 15.0 to 20.0RPM results in the maximum rotational speed decreasing from 14.9RPM to 11.9RPM, as opposed to staying roughly the same. This results in an operational TSR which is further away from the optimal value, which is reflected in the decreased AEP.

2. When the cavitation constraint is not engaged, why the maximum rotational speed for the 11.5 and 15.0RPM OmgMax constraints are both reached at 1.9m/s, as opposed to following a more linear progression, e.g., say 11.5RPM achieved at 1.9m/s and 15.0 achieved at 2.3m/s, or something like that.

Again, perhaps I’m missing something here to do with the manner in which HARP_Opt applies the cavitation constraint, e.g., influence of other variables such as twist, chord and airfoil shape, as you mentioned. Apologies if this is the case!

Many thanks for your help Danny, once again,


Hi Peter,

I’m a bit uncertain, but I suspect that when you increase the size of your solution space (by increasing the bounds on rotor speed), the GA is less effective because it takes either more time or larger populations to converge. When you increase OmgMax, I bet a larger percentage of each population violates the cavitation constraint…which implies the “death penalty” described above. If there is an excessive amount of constraint violations within each generation, the GA will probably converge prematurely. In summary, I would try setting tighter bounds on the rotor speed to avoid cavitation and its negative effects on efficiency.

All the best,

Thanks Danny, that makes sense! I’ll try doing as you suggested.

Many thanks, once again,