From 4abbeb9053b7bda4fac0a1975ac497a1a0567c11 Mon Sep 17 00:00:00 2001 From: madsmpedersen Date: Tue, 25 Aug 2020 10:31:19 +0200 Subject: [PATCH 1/8] Delete Icon --- "plant/documents/Icon\r" | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 "plant/documents/Icon\r" diff --git "a/plant/documents/Icon\r" "b/plant/documents/Icon\r" deleted file mode 100644 index e69de29..0000000 From 261a3f8e2232a5f38a14ef09627d3b6ba0f94912 Mon Sep 17 00:00:00 2001 From: madsmpedersen Date: Tue, 25 Aug 2020 10:32:48 +0200 Subject: [PATCH 2/8] Delete Icon --- "plant/schemata/Icon\r" | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 "plant/schemata/Icon\r" diff --git "a/plant/schemata/Icon\r" "b/plant/schemata/Icon\r" deleted file mode 100644 index e69de29..0000000 From ef64bb145c2b4aa6e36aee1a06ab14315dce43e6 Mon Sep 17 00:00:00 2001 From: madsmpedersen Date: Tue, 25 Aug 2020 10:33:02 +0200 Subject: [PATCH 3/8] Delete Icon --- "plant/documents/IEA37_CS_1+2/Icon\r" | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 "plant/documents/IEA37_CS_1+2/Icon\r" diff --git "a/plant/documents/IEA37_CS_1+2/Icon\r" "b/plant/documents/IEA37_CS_1+2/Icon\r" deleted file mode 100644 index e69de29..0000000 From 6afe7f5c1df1ad016e261712081becb2d5196684 Mon Sep 17 00:00:00 2001 From: mmpe Date: Fri, 4 Sep 2020 09:39:24 +0200 Subject: [PATCH 4/8] update --- .../plant_old/plant_energy_resource_mikf.yaml | 392 +++++++++--------- 1 file changed, 196 insertions(+), 196 deletions(-) diff --git a/plant/plant_old/plant_energy_resource_mikf.yaml b/plant/plant_old/plant_energy_resource_mikf.yaml index 4174fca..7e2f555 100644 --- a/plant/plant_old/plant_energy_resource_mikf.yaml +++ b/plant/plant_old/plant_energy_resource_mikf.yaml @@ -7,16 +7,15 @@ properties: type: object required: - sectors - - oneOf: - - uniform_resource - - non_uniform_resource + - uniform_resource properties: sectors: - description: >- + type: object + description: > if only n_sec is given the wind direction sectors are assumed evenly distributed from north in negative mathematical orbital direction if n_sec = 1 no sector information is available as for e.g. timeseries required: - - n_sec + - n_sec properties: n_sec: type: integer @@ -26,196 +25,197 @@ properties: items: type: number # length of n_sec uniform_resource: - required: - - probability - - ti - - oneOf: - - wind_speed - - allOf: - - a - - k - properties: - probability: - type: array # length of n_sec - items: - type: number - ti: - type: array # length of n_sec or 1 - items: - type: number - wind_speed: - type: number - a: - type: array # length of n_sec - items: - type: number - k: - type: array # length of n_sec - items: - type: number - additionalProperties: - shear: - required: - - alpha - - h_ref - properties: - alpha: - type: number - properties: - h_ref: - type: number - non_uniform_resource: type: object required: - - n_loc - - oneOf: - - regular_coordinates - - irregular_coordinates - - oneOf: - - grid_resource - - double_weibull - - time_series - - mast - additionalProperties: - - elevation - properties: - n_loc: - type: integer - description: >- - number of locations - regular_coordinates: - type: object - description: >- - x, y and z are all arrays of unique numbers. Locations are obtained with a mesh grid. - required: - - x - - y - properties: - x: - type: array - items: - type: number - y: - type: array - items: - type: number - additionalProperties: - z: - type: array - items: - type: number - irregular_coordinates: - type: object - description: >- - x, y and z are all arrays of equal length where an index corresponds to a location. - required: - - x - - y - properties: - x: - type: array - items: - type: number - y: - type: array - items: - type: number - additionalProperties: - z: - type: array - items: - type: number - grid_resource: - required: - - f - - oneOf: - - ws_mean - - allOf: - - a - - k - properties: - f: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - ws_mean: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - a: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - k: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - additionalProperties: - flow_inc: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - meso_rgh: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - obst_spd: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - orog_spd: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - power_density: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - rix: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - rgh_change: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - rgh_spd: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number - ti: - type: array # length of n_loc - items: - type: array # length of n_sec - items: - type: number -# wind_speeds: -# required: -# - wind_speed -# - wind_direction -# - probability -# \ No newline at end of file + - ti + - probability +# - oneOf: +# - wind_speed +# - allOf: +# - a +# - k +# properties: +# probability: +# type: array # length of n_sec +# items: +# type: number +# ti: +# type: array # length of n_sec or 1 +# items: +# type: number +# wind_speed: +# type: number +# a: +# type: array # length of n_sec +# items: +# type: number +# k: +# type: array # length of n_sec +# items: +# type: number +# additionalProperties: +# shear: +# required: +# - alpha +# - h_ref +# properties: +# alpha: +# type: number +# properties: +# h_ref: +# type: number +# - non_uniform_resource: +# type: object +# required: +# - n_loc +# - oneOf: +# - regular_coordinates +# - irregular_coordinates +# - oneOf: +# - grid_resource +# - double_weibull +# - time_series +# - mast +# additionalProperties: +# - elevation +# properties: +# n_loc: +# type: integer +# description: >- +# number of locations +# regular_coordinates: +# type: object +# description: >- +# x, y and z are all arrays of unique numbers. Locations are obtained with a mesh grid. +# required: +# - x +# - y +# properties: +# x: +# type: array +# items: +# type: number +# y: +# type: array +# items: +# type: number +# additionalProperties: +# z: +# type: array +# items: +# type: number +# irregular_coordinates: +# type: object +# description: >- +# x, y and z are all arrays of equal length where an index corresponds to a location. +# required: +# - x +# - y +# properties: +# x: +# type: array +# items: +# type: number +# y: +# type: array +# items: +# type: number +# additionalProperties: +# z: +# type: array +# items: +# type: number +# grid_resource: +# required: +# - f +# - oneOf: +# - ws_mean +# - allOf: +# - a +# - k +# properties: +# f: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# ws_mean: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# a: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# k: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# additionalProperties: +# flow_inc: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# meso_rgh: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# obst_spd: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# orog_spd: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# power_density: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# rix: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# rgh_change: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# rgh_spd: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# ti: +# type: array # length of n_loc +# items: +# type: array # length of n_sec +# items: +# type: number +# # wind_speeds: +# # required: +# # - wind_speed +# # - wind_direction +# # - probability +# # \ No newline at end of file From 383e3ab0e7883a0f7a80ed9c352ab7434e0eb021 Mon Sep 17 00:00:00 2001 From: mmpe Date: Fri, 4 Sep 2020 09:43:02 +0200 Subject: [PATCH 5/8] add plant/Plant_AEP.ipynb --- plant/Plant_AEP.ipynb | 99 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 plant/Plant_AEP.ipynb diff --git a/plant/Plant_AEP.ipynb b/plant/Plant_AEP.ipynb new file mode 100644 index 0000000..24154d8 --- /dev/null +++ b/plant/Plant_AEP.ipynb @@ -0,0 +1,99 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## AEP calculation\n", + "\n", + "\n", + "$$AEP = \\sum_{wt=0}^{N}\\sum_{wd_{ref}=0}^{360}\\sum_{ws = cut{\\text -}in}^{cut{\\text -}out} Power \\cdot Weight$$\n", + "\n", + "$$Power = PowerCurve_{wt}\\left(LocalWind,\\theta_{yaw}\\right)\\cdot \\frac{\\rho}{\\rho_{ref}}$$\n", + "\n", + "$$\\begin{align}LocalWind = WS \\cdot SpeedUp - WakeDeficits\\end{align}$$\n", + "\n", + "$$ Weight=\\begin{cases}\n", + " P, & \\text{if $P$ is provided}.\\\\\n", + " f \\cdot Weibull(A,k,ws), & \\text{otherwise}.\n", + " \\end{cases}$$\n", + "\n", + "Where \n", + "\n", + "- $wt$: wind turbine\n", + "- $wd$: reference wind direction\n", + "- $ws$: reference wind speed\n", + "- $\\theta_{yaw}$: yaw missalignment of the wind turbine\n", + "- $PowerCurve_{wt}$: the wind-speed and yaw-misalignment dependent power curve of the wind turbine\n", + "- $WakeDeficits$: Deficits from other wind turbines\n", + "\n", + "\n", + "Required data variables:\n", + "\n", + "- $P$: Probability of flow case\n", + "\n", + "or\n", + "\n", + "- $f$: Sector probability\n", + "- $A$: Weibull scale parameter\n", + "- $k$: Weibull shape parameter\n", + "\n", + "Optional data variables:\n", + "\n", + "- $WS$: Wind speed, defaults to reference wind speed, $ws$\n", + "- $SpeedUp$: Speed up factor, defaults to 1\n", + "- $\\rho$: Air density, defaults to reference density, $\\rho_{ref}$\n", + "\n", + "\n", + "These required and optional data varaibles may be constant or dependent on any of\n", + "- $ws$ \n", + "- $wd$\n", + "- $position$ in terms of\n", + " - gridded 2D position, (x,y)\n", + " - gridded 3D position, (x,y,z)\n", + " - wt position" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.2" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From ef64cc7417e23b87e4be2f2d4807c1895850616b Mon Sep 17 00:00:00 2001 From: mmpe Date: Fri, 4 Sep 2020 09:53:46 +0200 Subject: [PATCH 6/8] update Plant_AEP.ipynb --- plant/Plant_AEP.ipynb | 75 ++++++++++++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 19 deletions(-) diff --git a/plant/Plant_AEP.ipynb b/plant/Plant_AEP.ipynb index 24154d8..3b23061 100644 --- a/plant/Plant_AEP.ipynb +++ b/plant/Plant_AEP.ipynb @@ -4,20 +4,44 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## AEP calculation\n", - "\n", - "\n", - "$$AEP = \\sum_{wt=0}^{N}\\sum_{wd_{ref}=0}^{360}\\sum_{ws = cut{\\text -}in}^{cut{\\text -}out} Power \\cdot Weight$$\n", - "\n", - "$$Power = PowerCurve_{wt}\\left(LocalWind,\\theta_{yaw}\\right)\\cdot \\frac{\\rho}{\\rho_{ref}}$$\n", - "\n", - "$$\\begin{align}LocalWind = WS \\cdot SpeedUp - WakeDeficits\\end{align}$$\n", - "\n", + "## AEP calculation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$AEP = \\sum_{wt=0}^{N}\\sum_{wd_{ref}=0}^{360}\\sum_{ws = cut{\\text -}in}^{cut{\\text -}out} Power \\cdot Weight$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$Power = PowerCurve_{wt}\\left(LocalWind,\\theta_{yaw}\\right)\\cdot \\frac{\\rho}{\\rho_{ref}}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\\begin{align}LocalWind = WS \\cdot SpeedUp - WakeDeficits\\end{align}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "$$ Weight=\\begin{cases}\n", " P, & \\text{if $P$ is provided}.\\\\\n", " f \\cdot Weibull(A,k,ws), & \\text{otherwise}.\n", - " \\end{cases}$$\n", - "\n", + " \\end{cases}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "Where \n", "\n", "- $wt$: wind turbine\n", @@ -25,9 +49,13 @@ "- $ws$: reference wind speed\n", "- $\\theta_{yaw}$: yaw missalignment of the wind turbine\n", "- $PowerCurve_{wt}$: the wind-speed and yaw-misalignment dependent power curve of the wind turbine\n", - "- $WakeDeficits$: Deficits from other wind turbines\n", - "\n", - "\n", + "- $WakeDeficits$: Deficits from other wind turbines" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "Required data variables:\n", "\n", "- $P$: Probability of flow case\n", @@ -36,15 +64,24 @@ "\n", "- $f$: Sector probability\n", "- $A$: Weibull scale parameter\n", - "- $k$: Weibull shape parameter\n", - "\n", + "- $k$: Weibull shape parameter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "Optional data variables:\n", "\n", "- $WS$: Wind speed, defaults to reference wind speed, $ws$\n", "- $SpeedUp$: Speed up factor, defaults to 1\n", - "- $\\rho$: Air density, defaults to reference density, $\\rho_{ref}$\n", - "\n", - "\n", + "- $\\rho$: Air density, defaults to reference density, $\\rho_{ref}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "These required and optional data varaibles may be constant or dependent on any of\n", "- $ws$ \n", "- $wd$\n", From 1b2108970e7fb0467b25c042a3012f15b2e5e1cb Mon Sep 17 00:00:00 2001 From: mmpe Date: Fri, 4 Sep 2020 11:49:14 +0200 Subject: [PATCH 7/8] add make_example_data.py and examples2pywake.py --- plant/examples/__init__.py | 0 plant/examples/example_data/__init__.py | 0 .../example_data/make_example_data.py | 72 +++++++++++++++++++ plant/examples/examples2pywake.py | 58 +++++++++++++++ 4 files changed, 130 insertions(+) create mode 100644 plant/examples/__init__.py create mode 100644 plant/examples/example_data/__init__.py create mode 100644 plant/examples/example_data/make_example_data.py create mode 100644 plant/examples/examples2pywake.py diff --git a/plant/examples/__init__.py b/plant/examples/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plant/examples/example_data/__init__.py b/plant/examples/example_data/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plant/examples/example_data/make_example_data.py b/plant/examples/example_data/make_example_data.py new file mode 100644 index 0000000..9fcf8d4 --- /dev/null +++ b/plant/examples/example_data/make_example_data.py @@ -0,0 +1,72 @@ +import xarray as xr +import numpy as np +import yaml +from pathlib import Path +import matplotlib.pyplot as plt + + +def xr2yml(ds, filename=None): + def fmt(v): + if isinstance(v, dict): + return {k: fmt(v) for k, v in v.items() if fmt(v) != {}} + elif isinstance(v, tuple): + return list(v) + else: + return v + yml = yaml.dump(fmt(ds.to_dict())) + if filename: + Path(filename).write_text(yml) + return yml + + +if __name__ == '__main__': + + # uniform site (https://github.com/byuflowlab/iea37-wflo-casestudies/blob/master/cs1-2/iea37-windrose.yaml) + f = [.025, .024, .029, .036, .063, .065, .100, .122, .063, .038, .039, .083, .213, .046, .032, .022] + WS = 9.8 + ds = xr.Dataset( + data_vars={'WS': WS, 'P': ('wd', f)}, + coords={'wd': np.linspace(0, 360, len(f), endpoint=False)}) + ds.to_netcdf("UniformSite.nc") + xr2yml(ds, "UniformSite.yml") + + # WeibullSite + f = [3.597152, 3.948682, 5.167395, 7.000154, 8.364547, 6.43485, + 8.643194, 11.77051, 15.15757, 14.73792, 10.01205, 5.165975] + A = [9.176929, 9.782334, 9.531809, 9.909545, 10.04269, 9.593921, + 9.584007, 10.51499, 11.39895, 11.68746, 11.63732, 10.08803] + k = [2.392578, 2.447266, 2.412109, 2.591797, 2.755859, 2.595703, + 2.583984, 2.548828, 2.470703, 2.607422, 2.626953, 2.326172] + ds = xr.Dataset( + data_vars={'Sector_frequency': ('wd', f), 'Weibull_A': ('wd', A), 'Weibull_k': ('wd', k)}, + coords={'wd': np.linspace(0, 360, len(f), endpoint=False)}) + ds.to_netcdf("UniformWeibullSite.nc") + xr2yml(ds, "UniformWeibullSite.yml") + + # NonGridded site. 16 WT with speedup = 1+.01*wt_index + f = [.025, .024, .029, .036, .063, .065, .100, .122, .063, .038, .039, .083, .213, .046, .032, .022] + wt_index = np.arange(16) + ds = xr.Dataset( + data_vars={'Speedup': ('i', 1 + .01 * wt_index), 'P': ('wd', f)}, + coords={'wd': np.linspace(0, 360, len(f), endpoint=False), + 'i': wt_index}) + if 0: + ds.SpeedUp.plot() + plt.show() + ds.to_netcdf("NonGriddedSite.nc") + xr2yml(ds, "NonGriddedSite.yml") + + # GriddedSite. + f = [.025, .024, .029, .036, .063, .065, .100, .122, .063, .038, .039, .083, .213, .046, .032, .022] + x = y = np.arange(-2000, 2500, 500) + X, Y = np.meshgrid(x, y) + + ds = xr.Dataset( + data_vars={'Speedup': (['x', 'y'], 1 + 0.1 * x / x.max() + 0.1 * np.cos(Y / y.max())), 'P': ('wd', f)}, + coords={'wd': np.linspace(0, 360, len(f), endpoint=False), + 'x': x, + 'y': y}) + ds.Speedup.plot(x='x') + plt.show() + ds.to_netcdf("GriddedSite.nc") + xr2yml(ds, "GriddedSite.yml") diff --git a/plant/examples/examples2pywake.py b/plant/examples/examples2pywake.py new file mode 100644 index 0000000..9e2f525 --- /dev/null +++ b/plant/examples/examples2pywake.py @@ -0,0 +1,58 @@ +import os +import xarray as xr +from py_wake.site.xrsite import XRSite +import matplotlib.pyplot as plt +import yaml +import numpy as np + + +def yml2xr(file): + pass + + +if __name__ == '__main__': + example_data_path = os.path.dirname(__file__) + "/example_data/" + + def load(f): + yml_site = XRSite(xr.open_dataset(example_data_path + f + ".nc")) + with open(example_data_path + f + '.yml') as fid: + xr_site = XRSite(xr.Dataset.from_dict(yaml.safe_load(fid))) + assert yml_site.ds.equals(xr_site.ds) + return yml_site + + # UniformSite + site = load('UniformSite') + plt.figure() + site.plot_wd_distribution(ws_bins=4) + plt.title('UniformSite') + + # UniformWeibullSite + f = 'UniformWeibullSite' + site = load(f) + plt.figure() + site.plot_wd_distribution(ws_bins=4) + plt.title(f) + plt.figure() + site.plot_ws_distribution() + plt.title(f) + + # NonGriddedSite + f = 'NonGriddedSite' + site = load(f) + x = y = np.arange(16) # dummy positions + lw = site.local_wind(x, y, wd=0, ws=10) + plt.figure() + plt.title(f) + lw.WS.plot() + + # GriddedSite + f = 'GriddedSite' + site = load(f) + x = y = np.arange(-2000, 2500, 500) + X, Y = np.meshgrid(x, y) + lw = site.local_wind(X.flatten(), Y.flatten(), wd=0, ws=10) + plt.figure() + plt.title(f) + plt.contourf(X, Y, np.reshape(lw.WS, X.shape)) + + plt.show() From 2312523ee3b10f19a76ae445f32e371584515abc Mon Sep 17 00:00:00 2001 From: mmpe Date: Fri, 4 Sep 2020 11:56:06 +0200 Subject: [PATCH 8/8] add example files --- plant/examples/example_data/GriddedSite.nc | Bin 0 -> 9168 bytes plant/examples/example_data/GriddedSite.yml | 158 ++++++++++++++++++ plant/examples/example_data/NonGriddedSite.nc | Bin 0 -> 9009 bytes .../examples/example_data/NonGriddedSite.yml | 85 ++++++++++ plant/examples/example_data/UniformSite.nc | Bin 0 -> 9145 bytes .../example_data/UniformWeibullSite.nc | Bin 0 -> 9066 bytes .../example_data/UniformWeibullSite.yml | 68 ++++++++ plant/examples/example_data/uniformSite.yml | 47 ++++++ 8 files changed, 358 insertions(+) create mode 100644 plant/examples/example_data/GriddedSite.nc create mode 100644 plant/examples/example_data/GriddedSite.yml create mode 100644 plant/examples/example_data/NonGriddedSite.nc create mode 100644 plant/examples/example_data/NonGriddedSite.yml create mode 100644 plant/examples/example_data/UniformSite.nc create mode 100644 plant/examples/example_data/UniformWeibullSite.nc create mode 100644 plant/examples/example_data/UniformWeibullSite.yml create mode 100644 plant/examples/example_data/uniformSite.yml diff --git a/plant/examples/example_data/GriddedSite.nc b/plant/examples/example_data/GriddedSite.nc new file mode 100644 index 0000000000000000000000000000000000000000..92e8026e5e7dbc9eb467d88b9df0d8179288a5ed GIT binary patch literal 9168 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 literal 0 HcmV?d00001 diff --git a/plant/examples/example_data/NonGriddedSite.yml b/plant/examples/example_data/NonGriddedSite.yml new file mode 100644 index 0000000..9a9feb4 --- /dev/null +++ b/plant/examples/example_data/NonGriddedSite.yml @@ -0,0 +1,85 @@ +coords: + i: + data: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + dims: + - i + wd: + data: + - 0.0 + - 22.5 + - 45.0 + - 67.5 + - 90.0 + - 112.5 + - 135.0 + - 157.5 + - 180.0 + - 202.5 + - 225.0 + - 247.5 + - 270.0 + - 292.5 + - 315.0 + - 337.5 + dims: + - wd +data_vars: + P: + data: + - 0.025 + - 0.024 + - 0.029 + - 0.036 + - 0.063 + - 0.065 + - 0.1 + - 0.122 + - 0.063 + - 0.038 + - 0.039 + - 0.083 + - 0.213 + - 0.046 + - 0.032 + - 0.022 + dims: + - wd + Speedup: + data: + - 1.0 + - 1.01 + - 1.02 + - 1.03 + - 1.04 + - 1.05 + - 1.06 + - 1.07 + - 1.08 + - 1.09 + - 1.1 + - 1.11 + - 1.12 + - 1.13 + - 1.1400000000000001 + - 1.15 + dims: + - i +dims: + i: 16 + wd: 16 diff --git a/plant/examples/example_data/UniformSite.nc b/plant/examples/example_data/UniformSite.nc new file mode 100644 index 0000000000000000000000000000000000000000..bda8396b023ee3c5abdd4244cb05b35ef6e1ca88 GIT binary patch literal 9145 zcmeHKT}TvB6h1Sqwya}WS*i3eWN+o7vD$+yqwJ5Gy1Tie5rMAliWBR)?XLPzl)dyr z^bpZML1Yp^h4ce$6cv;&K|wDS5eYp9^;Ah<_uL<|a-z&2=pLOt=iYPfnRCB8%zWoS zgV$f+D0Kje-3~S=q^9_p;*u?6Gh!_KUBa-?!3J-us!gb?s6WTX!$g|zwL=93LkejX z4>cC<=Bx6Sp`qAl2(i?T@MV?xmaQbE1LP?1eM&LbHejRz3&BqQIs=|isy`V^Wz1Nb z%r7Mu)+kaB#!_jsKjB`tHWABgjrO=*&h<{$+TLhSmAleeS>ddP1tc8!?GJ8B2ZNr5 zrrbizpsK23M=zC+yEPXE;;l7$YnsvJHT%pci6|tY3>TfoixP04g~*=B%0=W@iox61 z;tPZugMrTG#&8=z35h_UR*(ztrzmW#$S_l9afd{(;3q9z*F>hUr>@xtS{H6zfm{ks zpsvM-vACp`Tp~|fubI}#e?%vsc)Wf+YWBqvh?CwukkJ$UnXj(FNXm?K$74>NOJz08 z9S4Ao+sF6QhpB*UlY%R%$|=GE7wZPa04sLogKH`WVD{6nX&68AeC$ieCdsptC2LTG z?-w2_az2PpJ`|Dj>GYfNczYy15X0HoYr=V}b3z}$$K6oMEUVw^dy{ugokS_CW%{Hs zxog|)%#jmDiLHHM`PDN<&FkQy{KexBBSyOS@Y|in4dd17ygf%fj|>t_GF~t~Uwr?xrTeULt5H+e>^o+B zQ{!-TEgcX0nVtyoaXZuc7Czs_^w?JJ?_oM*GOfp%ewSc+BFS_^is`X5)5QZ!gA|E? zL_i`S5s(P{9|%lyp<>*xU=+v(QG~YUM#!)gXyPR53R?!&+~_{%M#DT(a3h;F;SOQw zymKSgs_-fRCaZSTAoI>EqIa_)zok|vo6juKHSi69Iuun4m}|6S^f?2vURCA@z;3n3Vtm$Xsh6D=<`nJW9?z&2`~086!EzW9BC~qdDM|z6^b{QF;VItQv~`0V@~X z$^5ck?I!j^*z;rvr*8H6eXYKL$H#k~<>Y{I+tElSl8$AF^>Y!u(R8cA!v)8;TKz*; zX3<-Tr%dGODZex>Y^fyz5&?<8-$0<=6Ktk0aeNsP5ifM{UK3w-@jVpt;?u`g0o+?8 kEU6^|5&?;TL_i`S5s(N-1SA3y0f~S_Kq4R!_}38l0{K3Hi~s-t literal 0 HcmV?d00001 diff --git a/plant/examples/example_data/UniformWeibullSite.nc b/plant/examples/example_data/UniformWeibullSite.nc new file mode 100644 index 0000000000000000000000000000000000000000..34686028abc5ace03d294402b74d43a441e07739 GIT binary patch literal 9066 zcmeHNeN0kWOld=_ngZU=5p{Mh){e{g4hQNO687QW$-m#Zs^o5Erw> z@0mDFG{m@>pczXDE+!H*_z^KIbARZ9i;K!Mnf|fq9}9_zL5T+MdH3EiI?%Xmiy`+U zeZP0lJ@@1M?s@0_ak{_8AI#6aITuhY7BGTMe-)1fE*&nW5pB`mDqdE=h8lm9!FtwE zs`slVZYHM5##{p^XkycM(VN4}1ALTO--Ke+P0%W$wP(80(Rf;WtXE654;(cxOM3}* z1VB|FdjZjA3;cjqR32ae<`R5SjC>ln;eIW#t2dd9dbf$4uSE+hJ}#B72g)DTUCqB$ zQHrrgQP?hpsX(;|JzVR&8!Y++1Uz}*Sx|+~_=b{U07fg?Gh0;szSmNSs47keB0#JD z1Q1T=tmw403QZL-)A=mmtMf)8w0$G}A>D#if2ckXj)WS*(TLAm7XYgZ`xG$gqr%>L z{Wx$GZdHuxkAc+#fakY{@?(K$Sj)7>;vRpZGZDijs1J;8Cv7bb#P`#C4CZY9EJB(s1(@xKijjZ3VCaw4@;EJQoTa2(4Y|kHP^V9d98%#6=${?7#fri` zL6gvn?Pu%7rnB|p8qL<5aWN{{dZwi*xInx~lnh7)BmfX>N z4)XNeeG`qL^(49{9@_U}IcXmGPCeS_CbQ1IBhv$$$?ntVJ1Wd&ju)>XO4ra;AW@b0V+oML-Zs$0~?Z4-3)x^dhGLWTwZs+YV!+kq> zyM^K8F0PL=BpnPP#qex5!^t$mp$zW_DUt!nfMh^2AQ@Oy3|#M0+2krImDx&J7%VN7 z-SzyPe_fmMDb{6%f}@dZGdosy^7kM96=z?*2ygus=-(3luSGsl