Source code for foxes.algorithms.downwind.models.set_amb_point_results
import foxes.variables as FV
from foxes.core import PointDataModel
[docs]
class SetAmbPointResults(PointDataModel):
"""
This model copies point results to ambient results.
Attributes
----------
pvars: list of str
The point variables to be treated
vars: list of str
The variables to be copied to output
:group: algorithms.downwind.models
"""
[docs]
def __init__(self):
"""
Constructor.
"""
super().__init__()
self.pvars = None
self.vars = None
[docs]
def initialize(self, algo, verbosity=0, force=False):
"""
Initializes the model.
Parameters
----------
algo: foxes.core.Algorithm
The calculation algorithm
verbosity: int
The verbosity level, 0 = silent
force: bool
Overwrite existing data
"""
self.pvars = algo.states.output_point_vars(algo)
self.vars = [v for v in self.pvars if v in FV.var2amb]
super().initialize(algo, verbosity, force)
[docs]
def output_point_vars(self, algo):
"""
The variables which are being modified by the model.
Parameters
----------
algo: foxes.core.Algorithm
The calculation algorithm
Returns
-------
output_vars: list of str
The output variable names
"""
return [FV.var2amb[v] for v in self.vars]
[docs]
def calculate(self, algo, mdata, fdata, pdata):
"""
The main model calculation.
This function is executed on a single chunk of data,
all computations should be based on numpy arrays.
Parameters
----------
algo: foxes.core.Algorithm
The calculation algorithm
mdata: foxes.core.Data
The model data
fdata: foxes.core.Data
The farm data
pdata: foxes.core.Data
The point data
Returns
-------
results: dict
The resulting data, keys: output variable str.
Values: numpy.ndarray with shape (n_states, n_points)
"""
for v in self.vars:
pdata[FV.var2amb[v]] = pdata[v].copy()
return {v: pdata[v] for v in self.output_point_vars(algo)}