floris.core.turbine.operation_models#

Classes

AWCTurbine()

power_thrust_table is a dictionary (normally defined on the turbine input yaml) that contains the parameters necessary to evaluate power(), thrust(), and axial_induction().

BaseOperationModel()

Base class for turbine operation models.

CosineLossTurbine()

Static class defining an actuator disk turbine model that may be misaligned with the flow.

MixedOperationTurbine()

PeakShavingTurbine()

SimpleDeratingTurbine()

power_thrust_table is a dictionary (normally defined on the turbine input yaml) that contains the parameters necessary to evaluate power(), thrust(), and axial_induction().

SimpleTurbine()

Static class defining an actuator disk turbine model that is fully aligned with the flow.

class floris.core.turbine.operation_models.BaseOperationModel[source]#

Base class for turbine operation models. All turbine operation models must implement static power(), thrust_coefficient(), and axial_induction() methods, which are called by power() and thrust_coefficient() through the interface in the turbine.py module.

Args:

BaseClass (_type_): _description_

Raises:

NotImplementedError: _description_ NotImplementedError: _description_

abstract static power()[source]#
Return type:

None

abstract static thrust_coefficient()[source]#
Return type:

None

abstract static axial_induction()[source]#
Return type:

None

class floris.core.turbine.operation_models.SimpleTurbine[source]#

Static class defining an actuator disk turbine model that is fully aligned with the flow. No handling for yaw or tilt angles.

As with all turbine submodules, implements only static power() and thrust_coefficient() methods, which are called by power() and thrust_coefficient() on turbine.py, respectively. This class is not intended to be instantiated; it simply defines a library of static methods.

power(velocities, air_density, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • air_density (float)

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

thrust_coefficient(velocities, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

axial_induction(velocities, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

class floris.core.turbine.operation_models.CosineLossTurbine[source]#

Static class defining an actuator disk turbine model that may be misaligned with the flow. Nonzero tilt and yaw angles are handled via cosine relationships, with the power lost to yawing defined by the cosine of the yaw misalignment raised to the power of cosine_loss_exponent_yaw. This turbine submodel is the default, and matches the turbine model in FLORIS v3.

As with all turbine submodules, implements only static power() and thrust_coefficient() methods, which are called by power() and thrust_coefficient() on turbine.py, respectively. This class is not intended to be instantiated; it simply defines a library of static methods.

power(velocities, air_density, yaw_angles, tilt_angles, tilt_interp, average_method='cubic-mean', cubature_weights=None, correct_cp_ct_for_tilt=False, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • air_density (float)

  • yaw_angles (ndarray[Any, dtype[float64]])

  • tilt_angles (ndarray[Any, dtype[float64]])

  • tilt_interp (ndarray[Any, dtype[object_]])

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

  • correct_cp_ct_for_tilt (bool)

thrust_coefficient(velocities, yaw_angles, tilt_angles, tilt_interp, average_method='cubic-mean', cubature_weights=None, correct_cp_ct_for_tilt=False, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • yaw_angles (ndarray[Any, dtype[float64]])

  • tilt_angles (ndarray[Any, dtype[float64]])

  • tilt_interp (ndarray[Any, dtype[object_]])

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

  • correct_cp_ct_for_tilt (bool)

axial_induction(velocities, yaw_angles, tilt_angles, tilt_interp, average_method='cubic-mean', cubature_weights=None, correct_cp_ct_for_tilt=False, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • yaw_angles (ndarray[Any, dtype[float64]])

  • tilt_angles (ndarray[Any, dtype[float64]])

  • tilt_interp (ndarray[Any, dtype[object_]])

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

  • correct_cp_ct_for_tilt (bool)

class floris.core.turbine.operation_models.SimpleDeratingTurbine[source]#

power_thrust_table is a dictionary (normally defined on the turbine input yaml) that contains the parameters necessary to evaluate power(), thrust(), and axial_induction(). Any specific parameters for derating can be placed here. (they can be added to the turbine yaml). For this operation model to receive those arguements, they'll need to be added to the kwargs dictionaries in the respective functions on turbine.py. They won't affect the other operation models.

power(velocities, air_density, power_setpoints, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • air_density (float)

  • power_setpoints (ndarray[Any, dtype[float64]] | None)

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

thrust_coefficient(velocities, air_density, power_setpoints, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • air_density (float)

  • power_setpoints (ndarray[Any, dtype[float64]])

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

axial_induction(velocities, air_density, power_setpoints, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • air_density (float)

  • power_setpoints (ndarray[Any, dtype[float64]])

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

class floris.core.turbine.operation_models.MixedOperationTurbine[source]#
power(power_setpoints, **kwargs)[source]#
Parameters:
  • yaw_angles (ndarray[Any, dtype[float64]])

  • power_setpoints (ndarray[Any, dtype[float64]])

thrust_coefficient(power_setpoints, **kwargs)[source]#
Parameters:
  • yaw_angles (ndarray[Any, dtype[float64]])

  • power_setpoints (ndarray[Any, dtype[float64]])

axial_induction(power_setpoints, **kwargs)[source]#
Parameters:
  • yaw_angles (ndarray[Any, dtype[float64]])

  • power_setpoints (ndarray[Any, dtype[float64]])

class floris.core.turbine.operation_models.AWCTurbine[source]#

power_thrust_table is a dictionary (normally defined on the turbine input yaml) that contains the parameters necessary to evaluate power(), thrust(), and axial_induction().

Feel free to put any Helix tuning parameters into here (they can be added to the turbine yaml). Also, feel free to add any commanded inputs to power(), thrust_coefficient(), or axial_induction(). For this operation model to receive those arguments, they'll need to be added to the kwargs dictionaries in the respective functions on turbine.py. They won't affect the other operation models.

power(velocities, air_density, awc_modes, awc_amplitudes, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • air_density (float)

  • awc_modes (str)

  • awc_amplitudes (ndarray[Any, dtype[float64]] | None)

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

thrust_coefficient(velocities, awc_modes, awc_amplitudes, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • awc_modes (str)

  • awc_amplitudes (ndarray[Any, dtype[float64]] | None)

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

axial_induction(velocities, awc_modes, awc_amplitudes, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • awc_modes (str)

  • awc_amplitudes (ndarray[Any, dtype[float64]])

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

class floris.core.turbine.operation_models.PeakShavingTurbine[source]#
power(velocities, turbulence_intensities, air_density, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • turbulence_intensities (ndarray[Any, dtype[float64]])

  • air_density (float)

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

thrust_coefficient(velocities, turbulence_intensities, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • turbulence_intensities (ndarray[Any, dtype[float64]])

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)

axial_induction(velocities, turbulence_intensities, average_method='cubic-mean', cubature_weights=None, **_)[source]#
Parameters:
  • power_thrust_table (dict)

  • velocities (ndarray[Any, dtype[float64]])

  • turbulence_intensities (ndarray[Any, dtype[float64]])

  • average_method (str)

  • cubature_weights (ndarray[Any, dtype[float64]] | None)