Newer
Older

Mads M. Pedersen
committed
import numpy as np
from abc import ABC, abstractmethod
class SuperpositionModel(ABC):
@abstractmethod

Mads M. Pedersen
committed
def calc_effective_WS(self, WS_xxx, deficit_jxxx):

Mads M. Pedersen
committed
"""Calculate effective wind speed
This method must be overridden by subclass
Parameters
----------

Mads M. Pedersen
committed
WS_xxx : array_like
Local wind speed. xxx optionally includes destination turbine/site, wind directions, wind speeds
deficit_jxxx : array_like
deficit caused by source turbines(j) on xxx (see above)

Mads M. Pedersen
committed
Returns
-------

Mads M. Pedersen
committed
WS_eff_xxx : array_like
Effective wind speed for xxx (see WS_xxx)

Mads M. Pedersen
committed
"""
class SquaredSum(SuperpositionModel):

Mads M. Pedersen
committed
def calc_effective_WS(self, WS_xxx, deficit_jxxx):
return WS_xxx - np.sqrt(np.sum(deficit_jxxx**2, 0))

Mads M. Pedersen
committed
class LinearSum(SuperpositionModel):

Mads M. Pedersen
committed
def calc_effective_WS(self, WS_xxx, deficit_jxxx):
return WS_xxx - np.sum(deficit_jxxx, 0)

Mads M. Pedersen
committed
class MaxSum(SuperpositionModel):

Mads M. Pedersen
committed
def calc_effective_WS(self, WS_xxx, deficit_jxxx):
return WS_xxx - np.max(deficit_jxxx, 0)