Source code for foxes.models.wake_models.axisymmetric

import numpy as np
from abc import abstractmethod

from foxes.models.wake_models.dist_sliced import DistSlicedWakeModel


[docs] class AxisymmetricWakeModel(DistSlicedWakeModel): """ Abstract base class for wake models that depend on (x, r) separately. The ability to evaluate multiple r values per x is used by the `PartialAxiwake` partial wakes model. :group: models.wake_models """
[docs] @abstractmethod def calc_wakes_x_r( self, algo, mdata, fdata, tdata, downwind_index, x, r, ): """ Calculate wake deltas. Parameters ---------- algo: foxes.core.Algorithm The calculation algorithm mdata: foxes.core.MData The model data fdata: foxes.core.FData The farm data tdata: foxes.core.TData The target point data downwind_index: int The index in the downwind order x: numpy.ndarray The x values, shape: (n_states, n_targets) r: numpy.ndarray The radial values for each x value, shape: (n_states, n_targets, n_yz_per_target) Returns ------- wdeltas: dict The wake deltas. Key: variable name str, value: numpy.ndarray, shape: (n_st_sel, n_r_per_x) st_sel: numpy.ndarray of bool The state-target selection, for which the wake is non-zero, shape: (n_states, n_targets) """ pass
[docs] def calc_wakes_x_yz( self, algo, mdata, fdata, tdata, downwind_index, x, yz, ): """ Calculate wake deltas. Parameters ---------- algo: foxes.core.Algorithm The calculation algorithm mdata: foxes.core.MData The model data fdata: foxes.core.FData The farm data tdata: foxes.core.TData The target point data downwind_index: int The index in the downwind order x: numpy.ndarray The x values, shape: (n_states, n_targets) yz: numpy.ndarray The yz values for each x value, shape: (n_states, n_targets, n_yz_per_target, 2) Returns ------- wdeltas: dict The wake deltas. Key: variable name str, value: numpy.ndarray, shape: (n_st_sel, n_yz_per_target) st_sel: numpy.ndarray of bool The state-target selection, for which the wake is non-zero, shape: (n_states, n_targets) """ r = np.linalg.norm(yz, axis=-1) return self.calc_wakes_x_r(algo, mdata, fdata, tdata, downwind_index, x, r)