Skip to content

Clarify handling of wind shear information #1147

@misi9170

Description

@misi9170

FLORIS has some implicit handling of wind shear that can lead to some confusion. As I see it, there are two issues here (which are actually separate, but both relate to using shear in FLORIS):

  1. The default wind shear when running FLORIS is not zero, which can lead to confusing results that don't appear to match the turbine power/thrust data (see example script below). This is not a "bug", but is perhaps a documentation problem.
  2. Turbine data is implicitly assumed to be generated with zero shear---that is, the power and thrust curves are exactly reproduced only when wind_shear is set as zero. Realistically, turbine power and thrust curves are likely generated with a nonzero shear exponent; it would be good for FLORIS to keep track of this and "correct" for it.

Demonstration

To observe these issues, run the following script:

from floris import FlorisModel

fmodel = FlorisModel("defaults")
fmodel.set(
    turbine_type=["nrel_5MW"],
    layout_x=[0.0],
    layout_y=[0.0],
    reference_wind_height=90.0  # Set the reference wind height to hub height
)

# Inspect the power curve for the NREL 5MW at 8 m/s wind speed
power_thrust_table = fmodel.core.farm.turbine_definitions[0]["power_thrust_table"]
print("Specified power at 8 m/s: {0:.2f} kW".format(
    power_thrust_table["power"][power_thrust_table["wind_speed"].index(8.0)]
))

# Use FLORIS to compute the wind speed at 8 m/s
fmodel.set(wind_speeds=[8.0], wind_directions=[0.0], turbulence_intensities=[0.06])
fmodel.run()
print("FLORIS computed power: {0:.2f} kW".format(
    fmodel.get_turbine_powers()[0,0]/1000.0
))

# Explicitly set the wind shear to zero and run again
fmodel.set(wind_shear=0.0)
fmodel.run()
print("FLORIS computed power with no shear: {0:.2f} kW".format(
    fmodel.get_turbine_powers()[0,0]/1000.0
))

which produces

Specified power at 8 m/s: 1771.17 kW
FLORIS computed power: 1753.95 kW
FLORIS computed power with no shear: 1771.17 kW

Clearly, the power specified for 8 m/s is only observed in FLORIS if wind_shear is set to 0. The "default" value of wind shear is 0.12 (this is the value specified on example input files, and also what appears if instantiating the FLORIS model in the "defaults" configuration as in the script above); this lowers the power of the turbine. However, it's not very clear to users that there is a nonzero default value for wind shear. Moreover, it's not clear that a turbine should produce the specified power when wind shear is zero---rather, it should produce the specified power when the wind shear matches the conditions under which the power and thrust coefficient curves were generated. FLORIS does not currently have a way of handling/encoding that information.

Proposed solution

  1. A simple solution to the first "problem" is to simply set the default value of wind shear to zero. This will at least provide more intuitive results, in my opinion. However, the results will immediately become non-intuitive again if we provide a non-zero reference wind shear, see point 2 below; in that case, it may be better for the default value of wind shear to be the reference wind shear defined for the turbine type.
  2. Along with ref_tilt and ref_air_density, we could/should require a field ref_shear to be specified on the turbine power_thrust_table. We could then "correct" for any value of shear that is not equal to the reference value.

Both these solutions may constitute breaking changes, so I'm not proposing immediate action. Just wanted to log the issues for now.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementAn improvement of an existing featureideas-listIdeas that would be nice to do but aren't scheduled. Lower priority than back-log.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions