floris.core.turbine.unified_momentum_model#
Functions
|
Computes the axial induction of a yawed rotor given the yaw-aligned thrust coefficient and yaw angles using the yawed actuator disk model developed at MIT as described in Heck et al. 2023. |
|
Computes adjusted rotor wind speeds given the yaw-aligned thrust coefficient, yaw angles, and axial induction values using the yawed actuator disk model developed at MIT as described in Heck et al. 2023. |
|
Class decorator which adds a __call__ method to the class which performs fixed-point iteration. |
|
Class decorator which adds a __call__ method to the class which performs fixed-point iteration. |
Classes
|
|
|
|
|
Solves the iterative momentum equation for an actuator disk model. |
Solves the limiting case when v_4 << u_4. |
|
|
Stores the results of the Unified Momentum model solution. |
Turbine operation model as described by Heck et al. (2023). |
- floris.core.turbine.unified_momentum_model.UMM_rotor_axial_induction(Cts, yaw_angles)[source]#
Computes the axial induction of a yawed rotor given the yaw-aligned thrust coefficient and yaw angles using the yawed actuator disk model developed at MIT as described in Heck et al. 2023. Assumes the modified thrust coefficient, C_T', is invariant to yaw misalignment angle.
Uses form of C_T' from Eq. (19) of Calaf et al., 2010, https://doi.org/10.1063/1.3291077
- Return type:
ndarray
[tuple
[int
,...
],dtype
[float64
]]- Parameters:
Cts (ndarray[tuple[int, ...], dtype[float64]])
yaw_angles (ndarray[tuple[int, ...], dtype[float64]])
- Args
Cts (NDArrayFloat): Yaw-aligned thrust coefficient(s). yaw_angles (NDArrayFloat): Rotor yaw angle(s) in degrees.
Returns: NDArrayFloat: Axial induction factor(s) of the yawed rotor.
- floris.core.turbine.unified_momentum_model.UMM_rotor_velocity_yaw_correction(Cts, yaw_angles, axial_inductions, rotor_effective_velocities)[source]#
Computes adjusted rotor wind speeds given the yaw-aligned thrust coefficient, yaw angles, and axial induction values using the yawed actuator disk model developed at MIT as described in Heck et al. 2023. Assumes the modified thrust coefficient, C_T', is invariant to yaw misalignment angle.
- Return type:
ndarray
[tuple
[int
,...
],dtype
[float64
]]- Parameters:
Cts (ndarray[tuple[int, ...], dtype[float64]])
yaw_angles (ndarray[tuple[int, ...], dtype[float64]])
axial_inductions (ndarray[tuple[int, ...], dtype[float64]])
rotor_effective_velocities (ndarray[tuple[int, ...], dtype[float64]])
- Args
Cts (NDArrayFloat): Yaw-aligned thrust coefficient(s). yaw_angles (NDArrayFloat): Rotor yaw angle(s) in degrees. axial_induction (NDArrayFloat): Rotor axial induction(s); this should follow the MIT model yaw dependent derivation and probably gotten from UMM_rotor_axial_induction. rotor_effective_velocities (NDArrayFloat) rotor effective wind speed(s) at the rotor.
Returns: NDArrayFloat: corrected rotor effective wind speed(s) of the yawed rotor.
- class floris.core.turbine.unified_momentum_model.FixedPointIterationCompatible(*args, **kwargs)[source]#
- class floris.core.turbine.unified_momentum_model.FixedPointIterationResult(converged, niter, relax, max_resid, x)[source]#
- Parameters:
converged (bool)
niter (int)
relax (float)
max_resid (float)
x (Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes])
-
converged:
bool
#
-
niter:
int
#
-
relax:
float
#
-
max_resid:
float
#
-
x:
Union
[Buffer
,_SupportsArray
[dtype
[Any
]],_NestedSequence
[_SupportsArray
[dtype
[Any
]]],bool
,int
,float
,complex
,str
,bytes
,_NestedSequence
[bool
|int
|float
|complex
|str
|bytes
]]#
- floris.core.turbine.unified_momentum_model.fixedpointiteration(max_iter=100, tolerance=1e-06, relaxation=0.0)[source]#
Class decorator which adds a __call__ method to the class which performs fixed-point iteration.
- Return type:
- Parameters:
max_iter (int)
tolerance (float)
relaxation (float)
- Args:
max_iter (int): Maximum number of iterations (default: 100) tolerance (float): Convergence criteria (default: 1e-6) relaxation (float): Relaxation factor between 0 and 1 (default: 0.0)
The class must contain 2 mandatory methods and 3 optional method:
mandatory: initial_guess(self, *args, **kwargs) residual(self, x, *args, **kwargs)
optional: pre_process(self, *args, **kwargs) # Optional post_process(self, result:FixedPointIterationResult) # Optional callback(self, x) # Optional
- floris.core.turbine.unified_momentum_model.adaptivefixedpointiteration(max_iter=100, tolerance=1e-06, relaxations=[0.0])[source]#
Class decorator which adds a __call__ method to the class which performs fixed-point iteration. Same as fixedpointiteration, but takes a list of relaxation factors, and iterates over all of them in order until convergence is reached.
- Return type:
Callable
- Parameters:
max_iter (int)
tolerance (float)
relaxations (List[float])
- class floris.core.turbine.unified_momentum_model.UnifiedMomentumModelTurbine[source]#
Turbine operation model as described by Heck et al. (2023).
- power(velocities, air_density, yaw_angles, average_method='cubic-mean', cubature_weights=None, **kwargs)[source]#
- Return type:
None
- Parameters:
power_thrust_table (dict)
velocities (ndarray[tuple[int, ...], dtype[float64]])
air_density (float)
yaw_angles (ndarray[tuple[int, ...], dtype[float64]])
average_method (str)
cubature_weights (ndarray[tuple[int, ...], dtype[float64]] | None)
- thrust_coefficient(velocities, air_density, yaw_angles, average_method='cubic-mean', cubature_weights=None, **kwargs)[source]#
- Return type:
None
- Parameters:
power_thrust_table (dict)
velocities (ndarray[tuple[int, ...], dtype[float64]])
air_density (float)
yaw_angles (ndarray[tuple[int, ...], dtype[float64]])
average_method (str)
cubature_weights (ndarray[tuple[int, ...], dtype[float64]] | None)
- axial_induction(velocities, air_density, yaw_angles, average_method='cubic-mean', cubature_weights=None, **kwargs)[source]#
- Parameters:
power_thrust_table (dict)
velocities (ndarray[tuple[int, ...], dtype[float64]])
air_density (float)
yaw_angles (ndarray[tuple[int, ...], dtype[float64]])
average_method (str)
cubature_weights (ndarray[tuple[int, ...], dtype[float64]] | None)
- class floris.core.turbine.unified_momentum_model.MomentumSolution(Ctprime, yaw, an, u4, v4, x0, dp, dp_NL=0.0, niter=1, converged=True, beta=0.0)[source]#
Stores the results of the Unified Momentum model solution.
- Parameters:
Ctprime (float)
yaw (float)
an (float | ndarray[tuple[int, ...], dtype[float64]])
u4 (float | ndarray[tuple[int, ...], dtype[float64]])
v4 (float | ndarray[tuple[int, ...], dtype[float64]])
x0 (float | ndarray[tuple[int, ...], dtype[float64]])
dp (float | ndarray[tuple[int, ...], dtype[float64]])
dp_NL (float | ndarray[tuple[int, ...], dtype[float64]] | None)
niter (int | None)
converged (bool | None)
beta (float | None)
-
Ctprime:
float
#
-
yaw:
float
#
-
an:
Union
[float
,ndarray
[tuple
[int
,...
],dtype
[float64
]]]#
-
u4:
Union
[float
,ndarray
[tuple
[int
,...
],dtype
[float64
]]]#
-
v4:
Union
[float
,ndarray
[tuple
[int
,...
],dtype
[float64
]]]#
-
x0:
Union
[float
,ndarray
[tuple
[int
,...
],dtype
[float64
]]]#
-
dp:
Union
[float
,ndarray
[tuple
[int
,...
],dtype
[float64
]]]#
-
dp_NL:
Union
[float
,ndarray
[tuple
[int
,...
],dtype
[float64
]],None
] = 0.0#
-
niter:
Optional
[int
] = 1#
-
converged:
Optional
[bool
] = True#
-
beta:
Optional
[float
] = 0.0#
- property Ct#
Returns the thrust coefficient Ct.
- property Cp#
Returns the power coefficient Cp.
- class floris.core.turbine.unified_momentum_model.LimitedHeck[source]#
Solves the limiting case when v_4 << u_4. (Eq. 2.19, 2.20). Also takes Numpy array arguments.
- class floris.core.turbine.unified_momentum_model.Heck(v4_correction=1.0)[source]#
Solves the iterative momentum equation for an actuator disk model.
- Parameters:
v4_correction (float)
- residual(x, Ctprime, yaw)[source]#
Residual function of yawed-actuator disk model in Eq. 2.15.
- Return type:
ndarray
- Parameters:
x (ndarray)
Ctprime (float)
yaw (float)
- Args:
x (np.ndarray): (a, u4, v4) Ctprime (float): Rotor thrust coefficient. yaw (float): Rotor yaw angle (radians).
- Returns:
np.ndarray: residuals of induction and outlet velocities.