{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example for ERA5 weather data download\n", "\n", "This example shows you how to download ERA5 weather data from the [Climate Data Store (CDS)](https://cds.climate.copernicus.eu) and store it locally. Furthermore, it shows how to convert the weather data to the format needed by the `pvlib` and `windpowerlib`.\n", "\n", "In order to download ERA5 weather data you need an account at the [CDS](https://cds.climate.copernicus.eu).\n", "Furthermore, you need to install the cdsapi package. See [here](https://cds.climate.copernicus.eu/api-how-to) for installation details. \n", "\n", "When downloading the data using the API your request gets queued and may take a while to be completed. All actual calls of the data download are therefore commented to avoid unintended download. Instead, an example netcdf file is provided.\n", "\n", "* [Download data for single coordinate](#single_loc)\n", "* [Download data for a region](#region)\n", "* [Convert data into pvlib and windpowerlib format](#convert)\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from feedinlib import era5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Download data for single coordinate \n", "\n", "To download data for a single location you have to specify latitude and longitude of the desired location. Data will be retrieved for the nearest weather data point to that location." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "latitude = 52.47\n", "longitude = 13.30" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Besides a location you have to specify a time period for which you would like to download the data as well as the weather variables you need. The feedinlib provides predefined sets of variables that are needed to use the pvlib and windpowerlib. These can be applied by setting the `variable` parameter to \"pvlib\" or \"windpowerlib\", as shown below. If you want to download data for both libraries you can set `variable` to \"feedinlib\".\n", "\n", "Concerning the start and end date, keep in mind that all timestamps in the `feedinlib` are in UTC. So if you later on want to convert the data to a different time zone, the data may not cover the whole period you intended to download. To avoid this set your start date to one day before the start of your required period if you are East of the zero meridian or your end date to one day after your required period ends if you are West of the zero meridian." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# set start and end date (end date will be included \n", "# in the time period for which data is downloaded)\n", "start_date, end_date = '2017-01-01', '2017-12-31'\n", "# set variable set to download\n", "variable = \"pvlib\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want to store the downloaded data, which is recommended as download may take a while, you may provide a filename (including path) to save data to." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "target_file = 'ERA5_pvlib_2017.nc'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can retrieve the data:\n", "\n", "```python\n", "# get windpowerlib data for specified location\n", "ds = era5.get_era5_data_from_datespan_and_position(\n", " variable=variable,\n", " start_date=start_date, end_date=end_date, \n", " latitude=latitude, longitude=longitude,\n", " target_file=target_file)\n", "```\n", "\n", "```bash\n", "2020-01-12 20:53:56,465 INFO Welcome to the CDS\n", "2020-01-12 20:53:56,469 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/reanalysis-era5-single-levels\n", "2020-01-12 20:53:57,023 INFO Request is queued\n", "2020-01-12 20:53:58,085 INFO Request is running\n", "2020-01-12 21:48:24,341 INFO Request is completed\n", "2020-01-12 21:48:24,344 INFO Downloading request for 5 variables to ERA5_pvlib_2017.nc\n", "2020-01-12 21:48:24,346 INFO Downloading http://136.156.132.153/cache-compute-0002/cache/data7/adaptor.mars.internal-1578858837.3774962-24514-9-8081d664-0a1e-48b9-951c-bc9b8e2caa44.nc to ERA5_pvlib_2017.nc (121.9K)\n", "2020-01-12 21:48:24,653 INFO Download rate 400.6K/s\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Download data for a region\n", "\n", "When wanting to download weather data for a region instead of providing a single value for each latitude and longitude you have to provide latitude and longitude as lists in the following form:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "latitude = [52.3, 52.7] # [latitude south, latitude north]\n", "longitude = [13.1, 13.6] # [longitude west, longitude east]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "target_file = 'ERA5_example_data.nc'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```python\n", "# get pvlib data for specified area\n", "ds_berlin = era5.get_era5_data_from_datespan_and_position(\n", " variable=variable,\n", " start_date=start_date, end_date=end_date, \n", " latitude=latitude, longitude=longitude,\n", " target_file=target_file)\n", "```\n", "\n", "```bash\n", "2020-01-12 22:55:35,301 INFO Download rate 1.6M/s \n", "2020-01-12 22:03:08,085 INFO Welcome to the CDS\n", "2020-01-12 22:03:08,086 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/reanalysis-era5-single-levels\n", "2020-01-12 22:03:08,756 INFO Request is queued\n", "2020-01-12 22:03:09,809 INFO Request is running\n", "2020-01-12 22:55:34,863 INFO Request is completed\n", "2020-01-12 22:55:34,864 INFO Downloading request for 5 variables to ERA5_example_data.nc\n", "2020-01-12 22:55:34,864 INFO Downloading http://136.156.132.235/cache-compute-0006/cache/data5/adaptor.mars.internal-1578862989.052999-21409-23-831562a8-e0b2-4b19-8463-e14931a3f630.nc to ERA5_example_data.nc (720.7K)\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want weather data for the whole world, you may leave latitude and longitude unspecified. \n", "\n", "```python\n", "# get feedinlib data (includes pvlib and windpowerlib data)\n", "# for the whole world\n", "ds = era5.get_era5_data_from_datespan_and_position(\n", " variable=\"feedinlib\",\n", " start_date=start_date, end_date=end_date,\n", " target_file=target_file)\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Convert data into pvlib and windpowerlib format\n", "\n", "In order to use the weather data for your feed-in calculations using the pvlib and windpowerlib it has to be converted into the required format. This section shows you how this is done. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "era5_netcdf_filename = 'ERA5_example_data.nc'" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.Dataset>\n",
       "Dimensions:    (latitude: 2, longitude: 3, time: 8760)\n",
       "Coordinates:\n",
       "  * longitude  (longitude) float32 13.1 13.35 13.6\n",
       "  * latitude   (latitude) float32 52.6 52.35\n",
       "  * time       (time) datetime64[ns] 2017-01-01 ... 2017-12-31T23:00:00\n",
       "Data variables:\n",
       "    u100       (time, latitude, longitude) float32 ...\n",
       "    v100       (time, latitude, longitude) float32 ...\n",
       "    fsr        (time, latitude, longitude) float32 ...\n",
       "    sp         (time, latitude, longitude) float32 ...\n",
       "    fdir       (time, latitude, longitude) float32 ...\n",
       "    ssrd       (time, latitude, longitude) float32 ...\n",
       "    t2m        (time, latitude, longitude) float32 ...\n",
       "    u10        (time, latitude, longitude) float32 ...\n",
       "    v10        (time, latitude, longitude) float32 ...\n",
       "Attributes:\n",
       "    Conventions:  CF-1.6\n",
       "    history:      2020-01-15 08:23:42 GMT by grib_to_netcdf-2.15.0: /opt/ecmw...
" ], "text/plain": [ "\n", "Dimensions: (latitude: 2, longitude: 3, time: 8760)\n", "Coordinates:\n", " * longitude (longitude) float32 13.1 13.35 13.6\n", " * latitude (latitude) float32 52.6 52.35\n", " * time (time) datetime64[ns] 2017-01-01 ... 2017-12-31T23:00:00\n", "Data variables:\n", " u100 (time, latitude, longitude) float32 ...\n", " v100 (time, latitude, longitude) float32 ...\n", " fsr (time, latitude, longitude) float32 ...\n", " sp (time, latitude, longitude) float32 ...\n", " fdir (time, latitude, longitude) float32 ...\n", " ssrd (time, latitude, longitude) float32 ...\n", " t2m (time, latitude, longitude) float32 ...\n", " u10 (time, latitude, longitude) float32 ...\n", " v10 (time, latitude, longitude) float32 ...\n", "Attributes:\n", " Conventions: CF-1.6\n", " history: 2020-01-15 08:23:42 GMT by grib_to_netcdf-2.15.0: /opt/ecmw..." ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# reimport downloaded data\n", "\n", "import xarray as xr\n", "\n", "ds = xr.open_dataset(era5_netcdf_filename)\n", "ds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's first plot the downloaded weather data points on a map." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# get all weather data points in dataset\n", "from shapely.geometry import Point\n", "import geopandas as gpd\n", "\n", "points = []\n", "for x in ds.longitude:\n", " for y in ds.latitude:\n", " points.append(Point(x, y))\n", "points_df = gpd.GeoDataFrame({'geometry': points})\n", "\n", "# read provided shape file\n", "region_shape = gpd.read_file('berlin_shape.geojson')\n", "\n", "# plot weather data points on map\n", "base = region_shape.plot(color='white', edgecolor='black')\n", "points_df.plot(ax=base, marker='o', color='red', markersize=5);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's convert the weather data to the pvlib format." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the `area` parameter you can specify wether you want to retrieve weather dataframes for a single location, a region within the downloaded region or the whole downloaded region.\n", "In case `area` is not a single location, the index of the resulting dataframe will be a multiindex with levels (time, latitude, longitude). Be aware that in order to use it for pvlib or windpowerlib calculations you need to select a **single location**." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
wind_speedtemp_airghidhi
time
2016-12-31 23:30:00+00:004.1215852.1189270.00.0
2017-01-01 00:30:00+00:004.1636272.0076600.00.0
2017-01-01 01:30:00+00:004.1007291.9317930.00.0
2017-01-01 02:30:00+00:004.0796371.8083190.00.0
2017-01-01 03:30:00+00:004.1231121.7485050.00.0
\n", "
" ], "text/plain": [ " wind_speed temp_air ghi dhi\n", "time \n", "2016-12-31 23:30:00+00:00 4.121585 2.118927 0.0 0.0\n", "2017-01-01 00:30:00+00:00 4.163627 2.007660 0.0 0.0\n", "2017-01-01 01:30:00+00:00 4.100729 1.931793 0.0 0.0\n", "2017-01-01 02:30:00+00:00 4.079637 1.808319 0.0 0.0\n", "2017-01-01 03:30:00+00:00 4.123112 1.748505 0.0 0.0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# for single location (as list of longitude and latitude)\n", "single_location = [13.2, 52.4]\n", "pvlib_df = era5.weather_df_from_era5(\n", " era5_netcdf_filename=era5_netcdf_filename,\n", " lib='pvlib',\n", " area=single_location)\n", "pvlib_df.head()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
wind_speedtemp_airghidhi
timelatitudelongitude
2016-12-31 23:30:00+00:0052.34999813.104.1215852.1189270.00.0
13.354.1016371.9870910.00.0
13.604.1695531.7587890.00.0
52.59999813.104.1523512.7452700.00.0
13.354.2284672.4893190.00.0
\n", "
" ], "text/plain": [ " wind_speed temp_air ghi dhi\n", "time latitude longitude \n", "2016-12-31 23:30:00+00:00 52.349998 13.10 4.121585 2.118927 0.0 0.0\n", " 13.35 4.101637 1.987091 0.0 0.0\n", " 13.60 4.169553 1.758789 0.0 0.0\n", " 52.599998 13.10 4.152351 2.745270 0.0 0.0\n", " 13.35 4.228467 2.489319 0.0 0.0" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# for whole region\n", "era5.weather_df_from_era5(\n", " era5_netcdf_filename=era5_netcdf_filename,\n", " lib='pvlib').head()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
wind_speedtemp_airghidhi
timelatitudelongitude
2016-12-31 23:30:00+00:0052.59999813.354.2284672.4893190.00.0
13.604.3265972.2346800.00.0
2017-01-01 00:30:00+00:0052.59999813.354.3502662.4616700.00.0
13.604.4824462.2224430.00.0
2017-01-01 01:30:00+00:0052.59999813.354.3231962.4822390.00.0
\n", "
" ], "text/plain": [ " wind_speed temp_air ghi dhi\n", "time latitude longitude \n", "2016-12-31 23:30:00+00:00 52.599998 13.35 4.228467 2.489319 0.0 0.0\n", " 13.60 4.326597 2.234680 0.0 0.0\n", "2017-01-01 00:30:00+00:00 52.599998 13.35 4.350266 2.461670 0.0 0.0\n", " 13.60 4.482446 2.222443 0.0 0.0\n", "2017-01-01 01:30:00+00:00 52.599998 13.35 4.323196 2.482239 0.0 0.0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# specify rectangular area\n", "area = [(13.2, 13.7), (52.4, 52.8)]\n", "era5.weather_df_from_era5(\n", " era5_netcdf_filename=era5_netcdf_filename,\n", " lib='pvlib',\n", " area=area).head()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
wind_speedtemp_airghidhi
timelatitudelongitude
2016-12-31 23:30:00+00:0052.34999813.104.1215852.1189270.00.0
13.354.1016371.9870910.00.0
52.59999813.354.2284672.4893190.00.0
2017-01-01 00:30:00+00:0052.34999813.104.1636272.0076600.00.0
13.354.1891841.8822630.00.0
\n", "
" ], "text/plain": [ " wind_speed temp_air ghi dhi\n", "time latitude longitude \n", "2016-12-31 23:30:00+00:00 52.349998 13.10 4.121585 2.118927 0.0 0.0\n", " 13.35 4.101637 1.987091 0.0 0.0\n", " 52.599998 13.35 4.228467 2.489319 0.0 0.0\n", "2017-01-01 00:30:00+00:00 52.349998 13.10 4.163627 2.007660 0.0 0.0\n", " 13.35 4.189184 1.882263 0.0 0.0" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# specify area giving a Polygon\n", "from shapely.geometry import Polygon\n", "lat_point_list = [52.3, 52.3, 52.65]\n", "lon_point_list = [13.0, 13.4, 13.4]\n", "area = Polygon(zip(lon_point_list, lat_point_list))\n", "era5.weather_df_from_era5(\n", " era5_netcdf_filename=era5_netcdf_filename,\n", " lib='pvlib',\n", " area=area).head()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# export to csv\n", "pvlib_df.to_csv('pvlib_df_ERA5.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The conversion to the windpowerlib format is analog to the pvlib conversion." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
variablewind_speedpressuretemperatureroughness_length
height10100020
time
2016-12-31 23:00:00+00:004.1215857.630205101724.648438275.2689210.700549
2017-01-01 00:00:00+00:004.1636277.771536101651.937500275.1576540.700506
2017-01-01 01:00:00+00:004.1007297.626108101596.093750275.0817870.700445
2017-01-01 02:00:00+00:004.0796377.683256101518.140625274.9583130.700402
2017-01-01 03:00:00+00:004.1231127.773755101432.914062274.8984990.700367
\n", "
" ], "text/plain": [ "variable wind_speed pressure temperature \\\n", "height 10 100 0 2 \n", "time \n", "2016-12-31 23:00:00+00:00 4.121585 7.630205 101724.648438 275.268921 \n", "2017-01-01 00:00:00+00:00 4.163627 7.771536 101651.937500 275.157654 \n", "2017-01-01 01:00:00+00:00 4.100729 7.626108 101596.093750 275.081787 \n", "2017-01-01 02:00:00+00:00 4.079637 7.683256 101518.140625 274.958313 \n", "2017-01-01 03:00:00+00:00 4.123112 7.773755 101432.914062 274.898499 \n", "\n", "variable roughness_length \n", "height 0 \n", "time \n", "2016-12-31 23:00:00+00:00 0.700549 \n", "2017-01-01 00:00:00+00:00 0.700506 \n", "2017-01-01 01:00:00+00:00 0.700445 \n", "2017-01-01 02:00:00+00:00 0.700402 \n", "2017-01-01 03:00:00+00:00 0.700367 " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# for whole region\n", "windpowerlib_df = era5.weather_df_from_era5(\n", " era5_netcdf_filename=era5_netcdf_filename,\n", " lib='windpowerlib',\n", " area=single_location)\n", "windpowerlib_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Furthermore, it is possible to specify a start and end date to retrieve data for. They must be provided as something that can be converted to a timestamp, i.e. '2013-07-02'." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
wind_speedtemp_airghidhi
time
2017-07-01 00:30:00+00:003.30981914.2040410.0000000.000000
2017-07-01 01:30:00+00:003.46238013.8349000.0000000.000000
2017-07-01 02:30:00+00:003.37148213.8323360.0394100.039410
2017-07-01 03:30:00+00:003.31481313.98602316.39538216.229132
2017-07-01 04:30:00+00:003.45997714.59115672.00566165.997398
\n", "
" ], "text/plain": [ " wind_speed temp_air ghi dhi\n", "time \n", "2017-07-01 00:30:00+00:00 3.309819 14.204041 0.000000 0.000000\n", "2017-07-01 01:30:00+00:00 3.462380 13.834900 0.000000 0.000000\n", "2017-07-01 02:30:00+00:00 3.371482 13.832336 0.039410 0.039410\n", "2017-07-01 03:30:00+00:00 3.314813 13.986023 16.395382 16.229132\n", "2017-07-01 04:30:00+00:00 3.459977 14.591156 72.005661 65.997398" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# get weather data in pvlib format for July\n", "start = '2017-07-01'\n", "end = '2017-07-31'\n", "era5.weather_df_from_era5(\n", " era5_netcdf_filename=era5_netcdf_filename,\n", " lib='pvlib', \n", " area=single_location, \n", " start=start, \n", " end=end).head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following shows you in short how to use the weather data for feed-in calculations and mainly serves as a test wether the conversion works correctly. More detailed explanation on feed-in calculations using the feedinlib can be found in the notebooks `run_pvlib_model.ipynb` and `run_windpowerlib_turbine_model.ipynb`." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/birgit/virtualenvs/feedinlib_openmod/lib/python3.6/site-packages/pvlib/pvsystem.py:1685: RuntimeWarning: effective_irradiance inputs appear to be in suns. Units changed in v0.7 from suns to W/m2\n", " RuntimeWarning)\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from feedinlib import Photovoltaic\n", "system_data = {\n", " 'module_name': 'Advent_Solar_Ventura_210___2008_', \n", " 'inverter_name': 'ABB__MICRO_0_25_I_OUTD_US_208__208V_',\n", " 'azimuth': 180,\n", " 'tilt': 30,\n", " 'albedo': 0.2}\n", "pv_system = Photovoltaic(**system_data)\n", "feedin = pv_system.feedin(\n", " weather=pvlib_df,\n", " location=(52.4, 13.2))\n", "feedin.plot()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/birgit/virtualenvs/feedinlib_openmod/lib/python3.6/site-packages/pandas/core/arrays/datetimes.py:1269: UserWarning: Converting to PeriodArray/Index representation will drop timezone information.\n", " UserWarning,\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from feedinlib import WindPowerPlant\n", "turbine_data = {\n", " 'turbine_type': 'E-101/3050',\n", " 'hub_height': 135\n", " }\n", "wind_turbine = WindPowerPlant(**turbine_data)\n", "feedin = wind_turbine.feedin(\n", " weather=windpowerlib_df)\n", "feedin.plot()" ] }, { "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.6.9" } }, "nbformat": 4, "nbformat_minor": 2 }