{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Solar components\n",
"\n",
"* File name: solar_components.ipynb\n",
"* Last edited: 2020-06-30\n",
"* Created by: Stefan Bruche (TU Berlin)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"\n",
"**Note:** \n",
" \n",
"The solar classes require the availability of the Python module *pvlib*. The module is not provided with the standard installation of *aristopy*. If you want to use the solar classes, consider installing the module in your current environment, e.g. via:\n",
" \n",
"```python\n",
">> pip install pvlib \n",
"```\n",
" \n",
"For further information and an installation guide, users are referred to the [pvlib documentation](https://pvlib-python.readthedocs.io/en/stable/).\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```python\n",
"import pandas as pd\n",
"import aristopy as ar\n",
"\n",
"# Get data from csv-file\n",
"data = pd.read_csv('testdata.csv', sep=';', decimal='.', index_col=[0])\n",
"\n",
"# Convert index to type DateTimeIndex and add required information about the time zone.\n",
"data.index = pd.to_datetime(\n",
" data.index, format=\"%d.%m.%Y %H:%M\").tz_localize(tz='UTC')\n",
"\n",
"# Create a SolarData class instance with global (GHI) and diffuse (DHI)\n",
"# horizontal irradiation data for the location Potsdam/Germany.\n",
"solar = ar.SolarData(ghi=data['GHI [W/m2]'], dhi=data['DHI [W/m2]'],\n",
" latitude=52.3822, longitude=13.0622, altitude=81)\n",
"\n",
"\n",
"# Photovoltaic\n",
"# ------------\n",
"# Calculate the direct normal irradiation (DNI) from GHI, DHI and the solar positions\n",
"df_solar = solar.get_irradiance_dataframe()\n",
"\n",
"# Append ambient temperature data (and wind speed if available)\n",
"df_solar['temp_air'] = data['T_amb [C]']\n",
"\n",
"# Create a PV System (consisting of a module and an inverter).\n",
"pv_system = ar.PVSystem(module='Canadian_Solar_Inc__CS6X_300P',\n",
" inverter='Canadian_Solar_Inc___CSI_60KTL_CT__480V_')\n",
"\n",
"# Calculate the feed-in of the PV system for specified conditions at a site \n",
"# (irradiation, temperature, collector tilt and azimuth).\n",
"pv_feed_in = pv_system.get_feedin(\n",
" weather=df_solar, location=solar.location,\n",
" surface_tilt=30, surface_azimuth=180, # South\n",
" modules_per_string=20, strings_per_inverter=10, scaling='peak_power') # [W/Wp]\n",
"\n",
"\n",
"# Solar thermal collector\n",
"# -----------------------\n",
"# Calculate the irradiance components on the solar-thermal collector array.\n",
"poa = solar.get_plane_of_array_irradiance(surface_tilt=45, surface_azimuth=180)\n",
"\n",
"# Set up a solar collector array (type: evacuated tube collectors).\n",
"solar_collector_data = ar.SolarThermalCollector(\n",
" optical_efficiency=0.80, thermal_loss_parameter_1=1.1,\n",
" thermal_loss_parameter_2=0.008, irradiance_data=poa['poa_global'],\n",
" t_ambient=data['T_amb [C]'], t_collector_in=60, t_collector_out=90)\n",
"\n",
"# Calculate heat output of the solar-thermal collector\n",
"solar_heat = solar_collector_data.get_collector_heat_output()\n",
"\n",
"\n",
"# Solar components in the model\n",
"# -----------------------------\n",
"# Create energy system instance\n",
"es = ar.EnergySystem()\n",
"\n",
"# Add a photovoltaic component (electricity source)\n",
"pv = ar.Source(\n",
" ensys=es, name='pv', outlet=ar.Flow('Elec', 'elec_sink'),\n",
" time_series_data=ar.Series('pv_feed_in', pv_feed_in), # [MW/MWp]\n",
" capacity=100, capex_per_capacity=700e3, opex_per_capacity=0.025*700e3, # [MWp]\n",
" user_expressions='Elec == CAP * pv_feed_in')\n",
"\n",
"# Add a Solar-thermal collector component (heat source)\n",
"solar_collector = ar.Source(\n",
" ensys=es, name='solar_collector', outlet=ar.Flow('Heat', 'heat_sink'),\n",
" basic_variable='Area', additional_vars=ar.Var('Area', has_time_set=False),\n",
" time_series_data=ar.Series('collector_feedin', solar_heat / 1e6), # [MW/m²]\n",
" user_expressions='Heat == collector_feedin * Area',\n",
" capacity=1e5, capex_per_capacity=300, opex_per_capacity=300*0.01) # [m²], [EUR/m²]\n",
"\n",
"# Add sinks for electricity and heat\n",
"elec_sink = ar.Sink(ensys=es, name='elec_sink', inlet=ar.Flow('Elec'))\n",
"heat_sink = ar.Sink(ensys=es, name='heat_sink', inlet=ar.Flow('Heat'))\n",
"\n",
"# Run the optimization\n",
"es.optimize()\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SolarData class\n",
"\n",
"Read the input data from a csv-file for one year in hourly resolution (8760 time steps) with pandas."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Import the required packages (jupyter magic only required for jupyter notebooks)\n",
"%reload_ext autoreload\n",
"%autoreload 2\n",
"%matplotlib inline\n",
"\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import aristopy as ar\n",
"\n",
"# Get data from csv-file\n",
"data = pd.read_csv('testdata.csv', sep=';', decimal='.', index_col=[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The index of the solar data needs be of type DateTimeIndex and must contain information about the time zone. The Data from the reference \"Deutscher Wetterdienst\" ([DWD](https://opendata.dwd.de/climate_environment/CDC/)) is provided with a UTC timestamp. The same is true for the Photovoltaic Geographical Information System ([PVGIS](http://re.jrc.ec.europa.eu/pvgis/)) data of the JRC. So, we convert the index to a datetime and localize it to the UTC time zone. Alternatively, we could use the pandas method ```date_range``` to create a new index with time zone information included."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"data.index = pd.to_datetime(\n",
" data.index, format=\"%d.%m.%Y %H:%M\").tz_localize(tz='UTC')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# print the time zone of the data index\n",
"data.index.tz"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
T_amb [C]
\n",
"
DHI [W/m2]
\n",
"
GHI [W/m2]
\n",
"
\n",
" \n",
" \n",
"
\n",
"
2018-01-01 00:00:00+00:00
\n",
"
11.3
\n",
"
0.0
\n",
"
0.0
\n",
"
\n",
"
\n",
"
2018-01-01 01:00:00+00:00
\n",
"
10.9
\n",
"
0.0
\n",
"
0.0
\n",
"
\n",
"
\n",
"
2018-01-01 02:00:00+00:00
\n",
"
11.1
\n",
"
0.0
\n",
"
0.0
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" T_amb [C] DHI [W/m2] GHI [W/m2]\n",
"2018-01-01 00:00:00+00:00 11.3 0.0 0.0\n",
"2018-01-01 01:00:00+00:00 10.9 0.0 0.0\n",
"2018-01-01 02:00:00+00:00 11.1 0.0 0.0"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# print first rows\n",
"data.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A SolarData class instance is created with provided specifications for the location and irradiance data. The global (GHI) and diffuse (DHI) horizontal irradiation time series are required input arguments. The direct normal (beam) irradiation (DNI) can also be specified or is internally calculated based on GHI, DHI, and solar positions. The selected location is Potsdam/Germany. \n",
"Later, the SolarData instance is used to calculate and return values for all irradiance time series ```get_irradiance_dataframe```, and the plane of array irradiance (POA) ```get_plane_of_array_irradiance```."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"solar = ar.SolarData(ghi=data['GHI [W/m2]'], dhi=data['DHI [W/m2]'],\n",
" latitude=52.3822, longitude=13.0622, altitude=81)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### PVSystem class\n",
"\n",
"First, we calculate the direct normal irradiation (DNI) from GHI, DHI, and solar positions of the respective location, and return the data in a pandas DataFrame. "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"df_solar = solar.get_irradiance_dataframe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If available, ambient temperature and wind speed data can be appended to the DataFrame. In this case, *pvlib* requires the column names: 'temp_air' and 'wind_speed'. This step is optional. Default values 20°C and 0 m/s are used, if no values are provided."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"df_solar['temp_air'] = data['T_amb [C]']"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
ghi
\n",
"
dhi
\n",
"
dni
\n",
"
temp_air
\n",
"
\n",
" \n",
" \n",
"
\n",
"
2018-01-01 07:00:00+00:00
\n",
"
0.000000
\n",
"
0.000000
\n",
"
-0.000000
\n",
"
8.7
\n",
"
\n",
"
\n",
"
2018-01-01 08:00:00+00:00
\n",
"
25.000000
\n",
"
22.222222
\n",
"
38.988546
\n",
"
7.8
\n",
"
\n",
"
\n",
"
2018-01-01 09:00:00+00:00
\n",
"
88.888889
\n",
"
58.333333
\n",
"
185.767900
\n",
"
7.7
\n",
"
\n",
"
\n",
"
2018-01-01 10:00:00+00:00
\n",
"
147.222222
\n",
"
80.555556
\n",
"
293.940748
\n",
"
8.0
\n",
"
\n",
"
\n",
"
2018-01-01 11:00:00+00:00
\n",
"
205.555556
\n",
"
72.222222
\n",
"
526.992007
\n",
"
8.4
\n",
"
\n",
"
\n",
"
2018-01-01 12:00:00+00:00
\n",
"
180.555556
\n",
"
97.222222
\n",
"
345.532381
\n",
"
9.1
\n",
"
\n",
"
\n",
"
2018-01-01 13:00:00+00:00
\n",
"
66.666667
\n",
"
61.111111
\n",
"
28.910901
\n",
"
8.6
\n",
"
\n",
"
\n",
"
2018-01-01 14:00:00+00:00
\n",
"
58.333333
\n",
"
44.444444
\n",
"
126.548503
\n",
"
7.9
\n",
"
\n",
"
\n",
"
2018-01-01 15:00:00+00:00
\n",
"
22.222222
\n",
"
19.444444
\n",
"
0.000000
\n",
"
7.3
\n",
"
\n",
"
\n",
"
2018-01-01 16:00:00+00:00
\n",
"
0.000000
\n",
"
0.000000
\n",
"
-0.000000
\n",
"
7.5
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ghi dhi dni temp_air\n",
"2018-01-01 07:00:00+00:00 0.000000 0.000000 -0.000000 8.7\n",
"2018-01-01 08:00:00+00:00 25.000000 22.222222 38.988546 7.8\n",
"2018-01-01 09:00:00+00:00 88.888889 58.333333 185.767900 7.7\n",
"2018-01-01 10:00:00+00:00 147.222222 80.555556 293.940748 8.0\n",
"2018-01-01 11:00:00+00:00 205.555556 72.222222 526.992007 8.4\n",
"2018-01-01 12:00:00+00:00 180.555556 97.222222 345.532381 9.1\n",
"2018-01-01 13:00:00+00:00 66.666667 61.111111 28.910901 8.6\n",
"2018-01-01 14:00:00+00:00 58.333333 44.444444 126.548503 7.9\n",
"2018-01-01 15:00:00+00:00 22.222222 19.444444 0.000000 7.3\n",
"2018-01-01 16:00:00+00:00 0.000000 0.000000 -0.000000 7.5"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Print data of the first day \n",
"df_solar.iloc[7:17]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The next step is to create an instance of class PVSystem by selecting a type module and inverter from the pvlib's database. The full database currently consists of more than 20,000 modules and 3,000 inverters. To see the database you can either go through the CSV-files in the \"data\" directory of your pvlib installation, or use the method ```retrieve_sam```."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Plot the PV feed-in (scaled to peak power)\n",
"pv_feed_in.plot()\n",
"plt.ylabel('Scaled PV Feed-in [W/Wp]')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SolarThermalCollector class\n",
"\n",
"The solar-thermal collector requires data for the plane of array irradiance (POA). The POA combines the direct normal (DNI) irradiance with sky diffuse and ground-reflected irradiance components and is returned as an OrderedDict or DataFrame via method ```get_plane_of_array_irradiance```. The method needs information about the array's orientation (tilt and azimuth) as input arguments. Additional keyword arguments (e.g., \"albedo\") can be specified via kwargs. "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"poa = solar.get_plane_of_array_irradiance(\n",
" surface_tilt=45, surface_azimuth=180)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
poa_global
\n",
"
poa_direct
\n",
"
poa_diffuse
\n",
"
poa_sky_diffuse
\n",
"
poa_ground_diffuse
\n",
"
\n",
" \n",
" \n",
"
\n",
"
2018-01-01 07:00:00+00:00
\n",
"
0.000000
\n",
"
-0.000000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
\n",
"
\n",
"
2018-01-01 08:00:00+00:00
\n",
"
41.916672
\n",
"
22.033527
\n",
"
19.883144
\n",
"
18.967853
\n",
"
0.915291
\n",
"
\n",
"
\n",
"
2018-01-01 09:00:00+00:00
\n",
"
186.436000
\n",
"
133.391016
\n",
"
53.044984
\n",
"
49.790614
\n",
"
3.254369
\n",
"
\n",
"
\n",
"
2018-01-01 10:00:00+00:00
\n",
"
315.071214
\n",
"
240.922697
\n",
"
74.148516
\n",
"
68.758468
\n",
"
5.390049
\n",
"
\n",
"
\n",
"
2018-01-01 11:00:00+00:00
\n",
"
523.571366
\n",
"
454.400115
\n",
"
69.171251
\n",
"
61.645523
\n",
"
7.525729
\n",
"
\n",
"
\n",
"
2018-01-01 12:00:00+00:00
\n",
"
380.848212
\n",
"
291.253417
\n",
"
89.594795
\n",
"
82.984357
\n",
"
6.610437
\n",
"
\n",
"
\n",
"
2018-01-01 13:00:00+00:00
\n",
"
76.660323
\n",
"
22.057950
\n",
"
54.602373
\n",
"
52.161596
\n",
"
2.440777
\n",
"
\n",
"
\n",
"
2018-01-01 14:00:00+00:00
\n",
"
119.564815
\n",
"
79.493429
\n",
"
40.071386
\n",
"
37.935706
\n",
"
2.135680
\n",
"
\n",
"
\n",
"
2018-01-01 15:00:00+00:00
\n",
"
17.410464
\n",
"
0.000000
\n",
"
17.410464
\n",
"
16.596871
\n",
"
0.813592
\n",
"
\n",
"
\n",
"
2018-01-01 16:00:00+00:00
\n",
"
0.000000
\n",
"
-0.000000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" poa_global poa_direct poa_diffuse \\\n",
"2018-01-01 07:00:00+00:00 0.000000 -0.000000 0.000000 \n",
"2018-01-01 08:00:00+00:00 41.916672 22.033527 19.883144 \n",
"2018-01-01 09:00:00+00:00 186.436000 133.391016 53.044984 \n",
"2018-01-01 10:00:00+00:00 315.071214 240.922697 74.148516 \n",
"2018-01-01 11:00:00+00:00 523.571366 454.400115 69.171251 \n",
"2018-01-01 12:00:00+00:00 380.848212 291.253417 89.594795 \n",
"2018-01-01 13:00:00+00:00 76.660323 22.057950 54.602373 \n",
"2018-01-01 14:00:00+00:00 119.564815 79.493429 40.071386 \n",
"2018-01-01 15:00:00+00:00 17.410464 0.000000 17.410464 \n",
"2018-01-01 16:00:00+00:00 0.000000 -0.000000 0.000000 \n",
"\n",
" poa_sky_diffuse poa_ground_diffuse \n",
"2018-01-01 07:00:00+00:00 0.000000 0.000000 \n",
"2018-01-01 08:00:00+00:00 18.967853 0.915291 \n",
"2018-01-01 09:00:00+00:00 49.790614 3.254369 \n",
"2018-01-01 10:00:00+00:00 68.758468 5.390049 \n",
"2018-01-01 11:00:00+00:00 61.645523 7.525729 \n",
"2018-01-01 12:00:00+00:00 82.984357 6.610437 \n",
"2018-01-01 13:00:00+00:00 52.161596 2.440777 \n",
"2018-01-01 14:00:00+00:00 37.935706 2.135680 \n",
"2018-01-01 15:00:00+00:00 16.596871 0.813592 \n",
"2018-01-01 16:00:00+00:00 0.000000 0.000000 "
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Print the components of POA data \n",
"poa.iloc[7:17]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Set up a solar collector array (type: evacuated tube collectors).\n",
"The internal procedure to calculate the collector thermal energy output is adopted from reference: \n",
"*V.Quaschning, 'Regenerative Energiesysteme', 10th edition, Hanser, 2019, p.131ff.* \n",
"Characteristic values for the parametrization of different collector types are also indicated in this reference."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"solar_collector_data = ar.SolarThermalCollector(\n",
" optical_efficiency=0.80, thermal_loss_parameter_1=1.1,\n",
" thermal_loss_parameter_2=0.008, irradiance_data=poa['poa_global'],\n",
" t_ambient=data['T_amb [C]'], t_collector_in=60, t_collector_out=90)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The thermal energy output of the solar collector is calculated and returned by method ```get_collector_heat_output```."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"solar_heat = solar_collector_data.get_collector_heat_output()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2018-01-01 07:00:00+00:00 0.000000\n",
"2018-01-01 08:00:00+00:00 0.000000\n",
"2018-01-01 09:00:00+00:00 38.884480\n",
"2018-01-01 10:00:00+00:00 142.444971\n",
"2018-01-01 11:00:00+00:00 310.112613\n",
"2018-01-01 12:00:00+00:00 197.446090\n",
"2018-01-01 13:00:00+00:00 0.000000\n",
"2018-01-01 14:00:00+00:00 0.000000\n",
"2018-01-01 15:00:00+00:00 0.000000\n",
"2018-01-01 16:00:00+00:00 0.000000\n",
"dtype: float64"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"solar_heat[7:17]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The data section above shows that despite present irradiation on the collector in the hours 1 pm to 3 pm, no useful thermal energy is released. That is explainable by the high share of heat losses at large temperature differences and a low total irradiance. The following figure shows that depending on the outside temperature, the collector efficiency can even drop to zero. Thus, no further thermal energy is extracted."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"