Source code for foxes.input.farm_layout.from_json
import json
import numpy as np
from copy import deepcopy
from foxes.core import Turbine
from foxes.config import get_input_path
[docs]
def add_from_json(
farm, file_path, set_farm_name=True, verbosity=1, **turbine_parameters
):
"""
Add turbimes from a json file.
Parameters
----------
farm: foxes.WindFarm
The wind farm
file_path: str
Path to the file
set_farm_name: bool
Flag for inferring wind farm name from data
verbosity: int
The verbosity level, 0 = silent
turbine_parameters: dict, optional
Parameters forwarded to `foxes.core.Turbine`
:group: input.farm_layout
"""
fpath = get_input_path(file_path)
if verbosity:
print("Reading file", fpath)
with open(fpath) as f:
dict = json.load(f)
keys = list(dict.keys())
if len(keys) != 1:
raise KeyError("Only one wind farm supported by foxes at the moment.")
farm_name = keys[0]
fdict = dict[farm_name]
if set_farm_name:
farm.name = farm_name
for wt_name, wdict in fdict.items():
pars = deepcopy(turbine_parameters)
if "D" in wdict:
pars["D"] = wdict["D"]
if "H" in wdict:
pars["H"] = wdict["H"]
if "turbine_models" in wdict:
pars["turbine_models"] = wdict["turbine_models"] + pars.get(
"turbine_models", []
)
wdict = fdict[wt_name]
farm.add_turbine(
Turbine(
xy=np.array([wdict["UTMX"], wdict["UTMY"]]),
index=wdict.get("id", None),
name=wt_name,
**pars,
),
verbosity=verbosity,
)