Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Wake added turbulence not working in TurbOPark model #909

Closed
misi9170 opened this issue May 20, 2024 · 2 comments
Closed

[BUG] Wake added turbulence not working in TurbOPark model #909

misi9170 opened this issue May 20, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@misi9170
Copy link
Collaborator

This issue follows discussion #906 , where @prith-gs pointed out that the TurbOPark model is not correctly adding turbulence to the wake (even when running with the Crespo-Hernandez turbulence model). I believe the issue stems from this TODO item. Essentially, the area_overlap computed in the turbopark_solver is all zeros, so the subsequent lines that compute the wake added turbulence also produce zeros.

Steps to reproduce

import numpy as np
from floris import FlorisModel

fmodel = FlorisModel("inputs/turbopark.yaml")

fmodel.set(
    layout_x=[0, 1000],
    layout_y=[0, 0],
    wind_speeds=[9],
    wind_directions=[270],
)

fmodel.run()

print(fmodel.get_turbine_TIs())

produces

[[0.06 0.06]]

which is simply the ambient turbulence intensity at both turbines.

Expected output

According to the Crespo-Hernandez turbulence model, we'd expect that the turbulence intensity at the downstream turbine would be higher than the ambient turbulence intensity, i.e.

[[0.06 a]]

with a > 0.06.

Related

@misi9170 misi9170 added the bug Something isn't working label May 20, 2024
@Bartdoekemeijer
Copy link
Collaborator

I believe #907 may already solve this.

@misi9170
Copy link
Collaborator Author

misi9170 commented Jul 23, 2024

#906 has now been merged into the develop branch, and will be included in the main branch in the next FLORIS release.

With #906, users can now use the updated TurboPark implementation, which avoids this issue if the turbulence_model is specified as crespo_hernandez. That is, running the following code

import numpy as np
from floris import FlorisModel

fmodel = FlorisModel("inputs/turboparkgauss.yaml")

fmodel.set(
    layout_x=[0, 1000],
    layout_y=[0, 0],
    wind_speeds=[9],
    wind_directions=[270],
)

fmodel.run()

print(fmodel.get_turbine_TIs())

with inputs/turboparkgauss.yaml updated (to include the Crespo-Hernandez turbulence parameters) to


name: TurbOParkGauss
description: Three turbines using TurbOParkGauss model
floris_version: v4

logging:
  console:
    enable: false
    level: WARNING
  file:
    enable: false
    level: WARNING

solver:
  type: turbine_cubature_grid # turboparkgauss does not work with type: turbine_grid
  turbine_grid_points: 4      # 4 is sufficient in nearly all cases

farm:
  layout_x:
  - 0.0
  - 630.0
  - 1260.0
  layout_y:
  - 0.0
  - 0.0
  - 0.0
  turbine_type:
  - nrel_5MW

flow_field:
  air_density: 1.225
  reference_wind_height: 90.0
  turbulence_intensities:
  - 0.06
  wind_directions:
  - 270.0
  wind_shear: 0.12
  wind_speeds:
  - 8.0
  wind_veer: 0.0

wake:
  model_strings:
    combination_model: sosfs
    deflection_model: none
    turbulence_model: crespo_hernandez
    velocity_model: turboparkgauss

  enable_secondary_steering: false
  enable_yaw_added_recovery: false
  enable_transverse_velocities: false
  enable_active_wake_mixing: false

  wake_deflection_parameters:
    none:

  wake_velocity_parameters:
    turboparkgauss:
      A: 0.04
      include_mirror_wake: true

  wake_turbulence_parameters:
    none:
    crespo_hernandez:
      initial: 0.1
      constant: 0.5
      ai: 0.8
      downstream: -0.32

produces the expected result:

[[0.06       0.09064202]]

Note, however, that in this case, while the Crespo-Hernandez model is being used to calculate the output level of turbulence intensity, it is not being used within the TurboparkgaussVelocityDeficit model (velocity deficits will not be different from simply running turbulence_model: none).

Still, I believe this achieves the original request; as we will be supporting the TurboparkgaussVelocityDeficit over the TurboparkVelocityDeficit model going forward, I will close this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants