├── .github
└── workflows
│ └── build-gh-pages.yaml
├── .gitignore
├── LICENSE
├── README.md
├── Tutorial 0 - Overview.ipynb
├── Tutorial 1 - TMY Weather Data.ipynb
├── Tutorial 2 - POA Irradiance.ipynb
├── Tutorial 3 - Array Power.ipynb
├── Tutorial A - Single Diode Model.ipynb
├── Tutorial B - pvfree.ipynb
├── Tutorial C - Modeling Module's Performance Advanced.ipynb
├── Tutorial D - pySAM Modeling the Bifacial Tracker Field at NREL.ipynb
├── _config.yml
├── _toc.yml
├── data
├── Row2Prism.json
└── SRRL_WeatherFile_SAM_60_2020.csv
├── images
├── pvfree_table.png
├── readme_foldercontents.PNG
├── readme_step2.PNG
├── t1_DHI.PNG
├── t1_DNI.PNG
├── t1_GHI.PNG
├── t2_POA.PNG
├── t2_solarpanel_directions.PNG
├── t4_PANOverview.PNG
├── t4_PVEducation_IVCurve.PNG
├── t4_SingleDiodeEquation.PNG
├── t4_SingleDiodeParameterBehavior_to_TemperatureandIrradiance.PNG
├── t4_solarArrayHouse.PNG
├── tracker-animation-backtrack-compressed.gif
├── tracker-animation-truetrack-compressed.gif
├── tutorial_0_abhishek.PNG
├── tutorial_0_kevin.PNG
├── tutorial_0_mark.PNG
├── tutorial_0_silvana.PNG
├── tutorial_1_DNIDHIGHI.PNG
├── tutorial_1_NREL_DNI_Insolationmap_Year.PNG
├── tutorial_1_NREL_GHI_Insolationmap_June.PNG
├── tutorial_1_NREL_GHI_Insolationmap_Year.PNG
├── tutorial_1_NSRDB_example.PNG
├── tutorial_1_SRRL.PNG
├── tutorial_1_overview.PNG
├── tutorial_1_tmy3_example.PNG
├── tutorial_2_overview.PNG
├── tutorial_3_overview.PNG
├── tutorial_4_overview.PNG
├── tutorial_banner.PNG
└── tutorial_overview.PNG
└── requirements.txt
/.github/workflows/build-gh-pages.yaml:
--------------------------------------------------------------------------------
1 | name: deploy-book
2 |
3 | # Only run this when the main branch changes
4 | on:
5 | push:
6 | branches:
7 | - main
8 |
9 | # This job installs dependencies, build the book, and pushes it to `gh-pages`
10 | jobs:
11 | deploy-book:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v2
15 |
16 | # Install dependencies
17 | - name: Set up Python 3.7
18 | uses: actions/setup-python@v1
19 | with:
20 | python-version: 3.7
21 |
22 | - name: Install dependencies
23 | run: |
24 | pip install -r requirements.txt
25 | pip install jupyter-book
26 |
27 | # Build the book
28 | - name: Build the book
29 | run: |
30 | jupyter-book build .
31 |
32 | # Push the book's HTML to github-pages
33 | - name: GitHub Pages action
34 | uses: peaceiris/actions-gh-pages@v3.6.1
35 | with:
36 | github_token: ${{ secrets.GITHUB_TOKEN }}
37 | publish_dir: ./_build/html
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .ipynb_checkpoints
2 | *.py
3 | *.html
4 |
5 | _build/
6 | venv/
7 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 3-Clause License
2 |
3 | Copyright (c) 2021, Mark Mikofski
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | 1. Redistributions of source code must retain the above copyright notice, this
10 | list of conditions and the following disclaimer.
11 |
12 | 2. Redistributions in binary form must reproduce the above copyright notice,
13 | this list of conditions and the following disclaimer in the documentation
14 | and/or other materials provided with the distribution.
15 |
16 | 3. Neither the name of the copyright holder nor the names of its
17 | contributors may be used to endorse or promote products derived from
18 | this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # pyData 2021 Global - Solar Modeling Tutorial
4 | This tutorial focuses on PV computing packages, Python, data wrangling with Pandas, and data viz
5 |
6 | ## Tutorial Summary:
7 | * **Tutorial 0**: Introduction to the tutorial, the lesson plan, and resources (~30 minutes)
8 | * **Tutorial 1**: Access TMY weather data and visualize monthly irradiance data (~30 minutes)
9 | * **Tutorial 2**: Calculate solar position, plane-of-array irradiance, and
10 | visualize average daily insolation (30 minutes)
11 | * **Tutorial 3**: Estimate module temperature from ambient (~20 minutes)
12 | * **Tutorial 4**: Use POA irradiance and module temperature to model output power
13 | from a single module (~20 minutes)
14 | * **Tutorial 5**: Combine modules to form strings, calculate inverter efficiency
15 | and total array output (~independent study)
16 | * **Tutorials Appendices**: More tutorials on a variety of fun topics (~independent study)
17 |
18 | ## Tutorial Setup
19 | These tutorials are designed to run on [Jupyter](https://jupyter.org), a
20 | browser based interactive notebook that allows you to run the tutorial in the
21 | cloud without any additional setup. On the day of the tutorial, you can log
22 | into the tutorial [here](https://pvsc-python-tutorial.eastus.cloudapp.azure.com/).
23 |
24 | ### THIS IS A 2-STEP PROCESS
25 |
26 | - **STEP 1**: click [this](https://pvsc-python-tutorial.eastus.cloudapp.azure.com/) --> https://pvsc-python-tutorial.eastus.cloudapp.azure.com/
27 | - **STEP 2**: click [this](https://pvsc-python-tutorial.eastus.cloudapp.azure.com/hub/user-redirect/git-pull?repo=https://github.com/PVSC-Python-Tutorials/pyData-2021-Solar-PV-Modeling&branch=main) --> https://pvsc-python-tutorial.eastus.cloudapp.azure.com/hub/user-redirect/git-pull?repo=https://github.com/PVSC-Python-Tutorials/pyData-2021-Solar-PV-Modeling&branch=main
28 |
29 | The first time you visit the tutorial, you will need to create an account. Use
30 | any username and password you like.
31 |
32 | 
33 |
34 | The first time you log into the tutorial, you will only see the scratch and shared-data folders.
35 |
36 | 
37 |
38 | After you log in, you need to download the tutorial from this GitHub repository by following this
39 | [link (step 2)](https://pvsc-python-tutorial.eastus.cloudapp.azure.com/hub/user-redirect/git-pull?repo=https://github.com/PVSC-Python-Tutorials/pyData-2021-Solar-PV-Modeling&branch=main):
40 |
41 | You only need to download the repository once, but you can always use either link to start the tutorial during the conference.
42 | From now on you will see the pyData-2021-Solar-PV-Modeling tutorial folder in the list.
43 |
44 | 
45 |
46 | Click the folder to open, and you'll see the full list. Click `Tutorial 0 - Overview.ipynb` to get started.
47 |
48 | 
49 |
50 | Sometimes, if you are idle too long, the tutorial dies. Just click the [link to the tutorial](https://pvsc-python-tutorial.eastus.cloudapp.azure.com/) again to reconnect.
51 |
52 | https://pvsc-python-tutorial.eastus.cloudapp.azure.com/
53 |
54 | ### Jupyter Book docs
55 |
56 | The full tutorial is now also hosted as a beautiful [Jupyter book](https://jupyterbook.org/intro.html). This book has navigation, search, and can even run code cells interactively. Check it out!
57 |
58 | https://pv-tutorials.github.io/pyData-2021-Solar-PV-Modeling/index.html
59 |
60 | ### My Binder
61 |
62 | After the conference the tutorials will remain available here on GitHub, and you can run
63 | the tutorial anytime in [Binder](https://mybinder.org) by clicking the
64 | following link:
65 |
66 | [](https://mybinder.org/v2/gh/PV-Tutorials/pyData-2021-Solar-PV-Modeling/main)
67 |
68 | ### Locally
69 |
70 | You can also run the tutorial locally with
71 | [miniconda](https://docs.conda.io/en/latest/miniconda.html) by following thes
72 | steps:
73 |
74 | 1. Install [miniconda](https://docs.conda.io/en/latest/miniconda.html).
75 |
76 | 1. Clone the repository:
77 |
78 | ```
79 | git clone https://github.com/PV-Tutorials/pyData-2021-Solar-PV-Modeling.git
80 | ```
81 |
82 | 1. Create the environment and install the requirements. The repository includes
83 | a `requirements.txt` file that contains a list the packages needed to run
84 | this tutorial. To install them using conda run:
85 |
86 | ```
87 | conda create -n pvtutorials jupyter -c pvlib --file requirements.txt
88 | conda activate pvtutorials
89 | ```
90 |
91 | 1. Start a Jupyter session:
92 |
93 | ```
94 | jupyter notebook
95 | ```
96 |
97 | 1. Use the file explorer in Jupyter lab to browse to `PV-Tutorial`
98 | and start the first Tutorial.
99 |
100 |
101 | ### Licensing
102 |
103 | This work is licensed under a Creative Commons Attribution 4.0 International License.
104 |
--------------------------------------------------------------------------------
/Tutorial 0 - Overview.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {
6 | "slideshow": {
7 | "slide_type": "slide"
8 | }
9 | },
10 | "source": [
11 | "\n",
12 | "\n",
13 | "\n",
14 | "# Welcome! \n",
15 | "\n",
16 | "Welcome to the pyData Global 2021 Tutorial: Data and tools to model PV Systems\n",
17 | "\n",
18 | "Modeling tools for all aspects of photovoltaic systems are rapidly growing, and there are solutions for many of the things you might want to simulate. Python is becoming one of the scientific languages of choice, and many open-source tools are available for PV modeling. This tutorial will focus on teaching attendees PV modeling in python through the use of PVlib. \n",
19 | "\n",
20 | "In this interactive tutorial we will go from getting acquainted with some common data used or measured in pv systems (i.e. weather), to modeling the AC energy output of a single-axis tracker system. This includes learning and simulating sun position, plane of array irradiances, temperature models, single-diode models and more. \n",
21 | "\n",
22 | "We will review common vocabulary around python and ``data aggregation`` by hour, week, month, and visualization. \n",
23 | "\n",
24 | "The tutorial will present hands-on examples in python, enabled via jupyter notebooks and a Jupyterhub (remote hosted server for jupyter notebooks and python language) so you, the attendee, don’t have to install anything, and can follow along while we go over the theory and code! In case it's not obvious, a computer is required. \n",
25 | "\n",
26 | "The tutorial will wrap up with an overview of other available open-source tools for other aspects of modeling PV systems. \n"
27 | ]
28 | },
29 | {
30 | "cell_type": "markdown",
31 | "metadata": {},
32 | "source": [
33 | "## More on your teachers:\n",
34 | "\n",
35 | "The three of us have ample experience in data, coding, and PV field performance modeling, so we look forward to all of your questions.\n",
36 | "\n",
37 | "| | |\n",
38 | "| --- | :--- |\n",
39 | "|  |
Silvana Ayala Pelaez
I am a research scientist at NREL, focusing mostly on bifacial PV system's performance, and circular economy. Python is my daily bread and butter for data analysis and building tools. Silvana has made substantial contributions to the NREL [bifacialvf pvmismatch](https://github.com/NREL/bifacialvf) and [bifacial radiance](https://bifacial-radiance.readthedocs.io/en/latest/) software packages. |\n",
40 | "|  |
Kevin Anderson
I am a research scientist at NREL doing cool stuff! I have contributed to work on slope aware backtracking, clipping loss errors in hourly yield estimates, and am a maintainer for [pvlib python](https://pvlib-python.readthedocs.io/en/latest/) and a frequent contributor to [RdTools](https://rdtools.readthedocs.io/en/latest/). |\n",
41 | "|  |
Mark Mikofski
I am a principal solar engineer at DNV and product manager for SolarFarmer. I research, analyze, and predict PV system performance, degradation, and reliability. I have contributed to a few Python projects like [pvlib python](https://pvlib-python.readthedocs.io/en/latest/), [PVMismatch](https://sunpower.github.io/PVMismatch/), and [SciPy](https://scipy.org/) |\n",
42 | "|  |
Abhishek Parikh
I am Abhi, a solar analyst at DNV. Like many, I love python and try not to miss any opportunity to deploy it’s terrific power in handling the data challenges renewables analytics offer. I want to promote and be a part of collaborations between the amazing worlds of data science and renewables. |\n"
43 | ]
44 | },
45 | {
46 | "cell_type": "markdown",
47 | "metadata": {
48 | "slideshow": {
49 | "slide_type": "slide"
50 | }
51 | },
52 | "source": [
53 | "## Learning Objectives\n",
54 | "\n",
55 | "0. Why Model PV? \n",
56 | "1.\tAccess weather data (TMY3), understand irradiance data, and visualize it monthly.\n",
57 | "2.\tCalculate sun position, plane of array irradiance, and aggregate irradiance data into average daily insolation by month and year.\n",
58 | "3.\tCalculate module temperature from ambient data. \n",
59 | "4.\tUse POA and module temperature to forecast a module's performance. \n",
60 | "5. Other Tools\n",
61 | "\n",
62 | "## Overview\n",
63 | "The sketch below from [the Sandia PV Performance Modeling Collaborative (PVPMC)](https://pvpmc.sandia.gov/) outlines the topics we will cover in this tutorial:\n",
64 | "\n",
65 | ""
66 | ]
67 | },
68 | {
69 | "cell_type": "markdown",
70 | "metadata": {
71 | "slideshow": {
72 | "slide_type": "subslide"
73 | }
74 | },
75 | "source": [
76 | "### Why learn this? \n",
77 | "\n",
78 | "PV-lib is a library of algorithms and routines that you might encounter the need to use if you're doing anything PV-modeling related. It is managed by members of the PV research community, who make sure the formulas and code are not only sleek but accurate. \n",
79 | "\n",
80 | "* You want to know the sun position? No need to code from zero the SPA (Solar Position algorithm), it's in PVlib. \n",
81 | "\n",
82 | "* You want to reproduce the Sandia-King model to calculate module performance? It's there, also. \n",
83 | "\n",
84 | "* You can find the most well-known [models](https://pvpmc.sandia.gov/), as well as recently accepted values and approaches in published PV literature.\n",
85 | "\n",
86 | "* We hope adding this tool to your skillset will empower you to do better, faster research with an already solid foundation. Don't reinvent the wheel!"
87 | ]
88 | },
89 | {
90 | "cell_type": "markdown",
91 | "metadata": {
92 | "slideshow": {
93 | "slide_type": "slide"
94 | }
95 | },
96 | "source": [
97 | "## How to use this tutorial?\n",
98 | "\n",
99 | "This tutorial is a [Jupyter](https://jupyter.org) notebook. Jupyter is a browser based interactive tool that combines text, images, equations, and code that can be shared with others. Please see the setup section in the [README](./README.md) to learn more about how to get started."
100 | ]
101 | },
102 | {
103 | "cell_type": "markdown",
104 | "metadata": {
105 | "slideshow": {
106 | "slide_type": "slide"
107 | }
108 | },
109 | "source": [
110 | "## Useful links\n",
111 | "\n",
112 | "1. References\n",
113 | " * [PVlib Documentation](https://pvlib-python.readthedocs.io/en/stable/)\n",
114 | " * [Github Code Repository](https://github.com/pvlib/pvlib-python)\n",
115 | "2. Ask for help:\n",
116 | " * [Use the pvlib-python tag on StackOverflow](https://stackoverflow.com/questions/tagged/pvlib-python)\n",
117 | " * [Google Group - Discussions and more!](https://groups.google.com/g/pvlib-python)\n",
118 | " * [Open an Issue on the Github Repository](https://github.com/pyvlib/pvlib-python/issues)"
119 | ]
120 | },
121 | {
122 | "cell_type": "markdown",
123 | "metadata": {
124 | "slideshow": {
125 | "slide_type": "slide"
126 | }
127 | },
128 | "source": [
129 | "## Tutorial Structure\n",
130 | "\n",
131 | "This tutorial is made up of multiple Jupyter Notebooks. These notebooks mix\n",
132 | "code, text, visualization, and exercises.\n",
133 | "\n",
134 | "If you haven't used JupyterLab before, it's similar to the Jupyter Notebook. If\n",
135 | "you haven't used the Notebook, the quick intro is\n",
136 | "\n",
137 | "1. There are two modes: ``command`` and ``edit``\n",
138 | "\n",
139 | "1. From ``command`` mode, press `Enter` to edit a cell (like this markdown cell)\n",
140 | "\n",
141 | "1. From ``edit`` mode, press `Esc` to change to command mode\n",
142 | "1. Press `shift+enter` to execute a cell and move to the next cell.\n",
143 | "1. The toolbar has commands for executing, converting, and creating cells.\n",
144 | "\n",
145 | "The layout of the tutorial will be as follows:\n",
146 | "\n"
147 | ]
148 | },
149 | {
150 | "cell_type": "code",
151 | "execution_count": null,
152 | "metadata": {},
153 | "outputs": [],
154 | "source": [
155 | "# if running on google colab, uncomment the next line and execute this cell to install the dependencies and prevent \"ModuleNotFoundError\" in later cells:\n",
156 | "# !pip install -r https://raw.githubusercontent.com/PVSC-Python-Tutorials/pyData-2021-Solar-PV-Modeling/main/requirements.txt"
157 | ]
158 | },
159 | {
160 | "cell_type": "markdown",
161 | "metadata": {
162 | "slideshow": {
163 | "slide_type": "slide"
164 | }
165 | },
166 | "source": [
167 | "## Exercise: Print Hello, world!\n",
168 | "\n",
169 | "Each notebook will have exercises for you to solve. You'll be given a blank or\n",
170 | "partially completed cell, followed by a hidden cell with a solution. For\n",
171 | "example.\n",
172 | "\n",
173 | "Print the text \"Hello, world!\".\n"
174 | ]
175 | },
176 | {
177 | "cell_type": "code",
178 | "execution_count": 1,
179 | "metadata": {
180 | "slideshow": {
181 | "slide_type": "subslide"
182 | }
183 | },
184 | "outputs": [
185 | {
186 | "name": "stdout",
187 | "output_type": "stream",
188 | "text": [
189 | "Hello, world!\n"
190 | ]
191 | }
192 | ],
193 | "source": [
194 | "# Your code here\n",
195 | "print(\"Hello, world!\")"
196 | ]
197 | },
198 | {
199 | "cell_type": "markdown",
200 | "metadata": {},
201 | "source": [
202 | "## Exercise 1: Modify to print something else:"
203 | ]
204 | },
205 | {
206 | "cell_type": "code",
207 | "execution_count": null,
208 | "metadata": {},
209 | "outputs": [],
210 | "source": [
211 | "my_string = # Add your text here. Remember to put it inside of single quotes or double quotes ( \" \" or '' )\n",
212 | "print(my_string)"
213 | ]
214 | },
215 | {
216 | "cell_type": "markdown",
217 | "metadata": {},
218 | "source": [
219 | "## Let's go over some Python Concepts\n",
220 | "\n",
221 | "(A lot of this examples were shamely taken from https://jckantor.github.io/CBE30338/01.01-Getting-Started-with-Python-and-Jupyter-Notebooks.html :$)\n",
222 | "\n",
223 | "\n",
224 | "## Basic Arithmetic Operations\n",
225 | "\n",
226 | "Basic arithmetic operations are built into the Python langauge. Here are some examples. In particular, note that exponentiation is done with the ** operator."
227 | ]
228 | },
229 | {
230 | "cell_type": "code",
231 | "execution_count": 3,
232 | "metadata": {
233 | "slideshow": {
234 | "slide_type": "subslide"
235 | }
236 | },
237 | "outputs": [
238 | {
239 | "name": "stdout",
240 | "output_type": "stream",
241 | "text": [
242 | "5\n",
243 | "8\n",
244 | "0.6666666666666666\n"
245 | ]
246 | }
247 | ],
248 | "source": [
249 | "a = 2\n",
250 | "b = 3\n",
251 | "print(a + b)\n",
252 | "print(a ** b)\n",
253 | "print(a / b)"
254 | ]
255 | },
256 | {
257 | "cell_type": "markdown",
258 | "metadata": {},
259 | "source": [
260 | "## Python Libraries\n",
261 | "\n",
262 | "The Python language has only very basic operations. Most math functions are in various math libraries. The numpy library is convenient library. This next cell shows how to import numpy with the prefix np, then use it to call a common mathematical functions."
263 | ]
264 | },
265 | {
266 | "cell_type": "code",
267 | "execution_count": 7,
268 | "metadata": {},
269 | "outputs": [
270 | {
271 | "name": "stdout",
272 | "output_type": "stream",
273 | "text": [
274 | "3.141592653589793\n",
275 | "2.718281828459045\n",
276 | "0.7071067811865476\n",
277 | "0.7071067811865476\n",
278 | "0.9999999999999999\n"
279 | ]
280 | }
281 | ],
282 | "source": [
283 | "import numpy as np\n",
284 | "\n",
285 | "# mathematical constants\n",
286 | "print(np.pi)\n",
287 | "print(np.e)\n",
288 | "\n",
289 | "# trignometric functions\n",
290 | "angle = np.pi/4\n",
291 | "print(np.sin(angle))\n",
292 | "print(np.cos(angle))\n",
293 | "print(np.tan(angle))"
294 | ]
295 | },
296 | {
297 | "cell_type": "markdown",
298 | "metadata": {},
299 | "source": [
300 | "Lists are a versatile way of organizing your data in Python. Here are some examples, more can be found on this Khan Academy video."
301 | ]
302 | },
303 | {
304 | "cell_type": "code",
305 | "execution_count": 6,
306 | "metadata": {},
307 | "outputs": [
308 | {
309 | "data": {
310 | "text/plain": [
311 | "[1, 2, 3, 4]"
312 | ]
313 | },
314 | "execution_count": 6,
315 | "metadata": {},
316 | "output_type": "execute_result"
317 | }
318 | ],
319 | "source": [
320 | "xList = [1, 2, 3, 4]\n",
321 | "xList"
322 | ]
323 | },
324 | {
325 | "cell_type": "markdown",
326 | "metadata": {},
327 | "source": [
328 | "## Concatenation\n",
329 | "\n",
330 | "Concatentation is the operation of joining one list to another."
331 | ]
332 | },
333 | {
334 | "cell_type": "code",
335 | "execution_count": 5,
336 | "metadata": {},
337 | "outputs": [
338 | {
339 | "data": {
340 | "text/plain": [
341 | "[1, 2, 3, 4, 5, 6, 7, 8]"
342 | ]
343 | },
344 | "execution_count": 5,
345 | "metadata": {},
346 | "output_type": "execute_result"
347 | }
348 | ],
349 | "source": [
350 | "x = [1, 2, 3, 4];\n",
351 | "y = [5, 6, 7, 8];\n",
352 | "\n",
353 | "x + y"
354 | ]
355 | },
356 | {
357 | "cell_type": "code",
358 | "execution_count": 8,
359 | "metadata": {},
360 | "outputs": [
361 | {
362 | "data": {
363 | "text/plain": [
364 | "10"
365 | ]
366 | },
367 | "execution_count": 8,
368 | "metadata": {},
369 | "output_type": "execute_result"
370 | }
371 | ],
372 | "source": [
373 | "np.sum(x)"
374 | ]
375 | },
376 | {
377 | "cell_type": "markdown",
378 | "metadata": {},
379 | "source": [
380 | "## Loops"
381 | ]
382 | },
383 | {
384 | "cell_type": "code",
385 | "execution_count": 9,
386 | "metadata": {},
387 | "outputs": [
388 | {
389 | "name": "stdout",
390 | "output_type": "stream",
391 | "text": [
392 | "sin(1) = 0.84147\n",
393 | "sin(2) = 0.90930\n",
394 | "sin(3) = 0.14112\n",
395 | "sin(4) = -0.75680\n"
396 | ]
397 | }
398 | ],
399 | "source": [
400 | "for x in xList:\n",
401 | " print(\"sin({0}) = {1:8.5f}\".format(x,np.sin(x)))"
402 | ]
403 | },
404 | {
405 | "cell_type": "markdown",
406 | "metadata": {},
407 | "source": [
408 | "## Working with Dictionaries\n",
409 | "\n",
410 | "Dictionaries are useful for storing and retrieving data as key-value pairs. For example, here is a short dictionary of molar masses. The keys are molecular formulas, and the values are the corresponding molar masses.\n"
411 | ]
412 | },
413 | {
414 | "cell_type": "code",
415 | "execution_count": 10,
416 | "metadata": {},
417 | "outputs": [
418 | {
419 | "data": {
420 | "text/plain": [
421 | "{'Arizona': 16.04, 'California': 30.02, 'Texas': 18.0, 'Colorado': 44.01}"
422 | ]
423 | },
424 | "execution_count": 10,
425 | "metadata": {},
426 | "output_type": "execute_result"
427 | }
428 | ],
429 | "source": [
430 | "States_SolarInstallations2020 = {'Arizona': 16.04, 'California': 30.02, 'Texas':18.00, 'Colorado': 44.01} # GW\n",
431 | "States_SolarInstallations2020"
432 | ]
433 | },
434 | {
435 | "cell_type": "markdown",
436 | "metadata": {},
437 | "source": [
438 | "We can a value to an existing dictionary.\n"
439 | ]
440 | },
441 | {
442 | "cell_type": "code",
443 | "execution_count": 11,
444 | "metadata": {},
445 | "outputs": [],
446 | "source": [
447 | "States_SolarInstallations2020['New Mexico'] = 22.4\n"
448 | ]
449 | },
450 | {
451 | "cell_type": "markdown",
452 | "metadata": {},
453 | "source": [
454 | "## Plotting\n",
455 | "\n",
456 | "Importing the matplotlib.pyplot library gives IPython notebooks plotting functionality very similar to Matlab's. Here are some examples using functions from the"
457 | ]
458 | },
459 | {
460 | "cell_type": "code",
461 | "execution_count": 2,
462 | "metadata": {},
463 | "outputs": [
464 | {
465 | "data": {
466 | "image/png": "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\n",
467 | "text/plain": [
468 | "
"
469 | ]
470 | },
471 | "metadata": {
472 | "needs_background": "light"
473 | },
474 | "output_type": "display_data"
475 | }
476 | ],
477 | "source": [
478 | "%matplotlib inline\n",
479 | "\n",
480 | "import matplotlib.pyplot as plt\n",
481 | "import numpy as np\n",
482 | "\n",
483 | "x = np.linspace(0,10)\n",
484 | "y = np.sin(x)\n",
485 | "z = np.cos(x)\n",
486 | "\n",
487 | "plt.plot(x,y,'b',x,z,'r')\n",
488 | "plt.xlabel('Radians');\n",
489 | "plt.ylabel('Value');\n",
490 | "plt.title('Plotting Demonstration')\n",
491 | "plt.legend(['Sin','Cos'])\n",
492 | "plt.grid()"
493 | ]
494 | },
495 | {
496 | "cell_type": "markdown",
497 | "metadata": {
498 | "slideshow": {
499 | "slide_type": "skip"
500 | }
501 | },
502 | "source": [
503 | "## Going Deeper\n",
504 | "\n",
505 | "We've designed the notebooks above to cover the basics of pvlib from beginning\n",
506 | "to end. To help you go deeper, we've also create a list of notebooks that\n",
507 | "demonstrate real-world applications of pvlib in a variety of use cases. These\n",
508 | "need not be explored in any particular sequence, instead they are meant to\n",
509 | "provide a sampling of what pvlib can be used for.\n",
510 | "\n",
511 | "### PVLIB and Weather/Climate Model Data\n",
512 | "\n",
513 | "Check out the pvlib python [examples gallery](https://pvlib-python.readthedocs.io/en/stable/auto_examples/index.html).\n",
514 | "Start with [Sun path diagram](https://pvlib-python.readthedocs.io/en/stable/auto_examples/plot_sunpath_diagrams.html),\n",
515 | "then feel free to explore the rest of the notebooks.\n",
516 | "\n",
517 | "### Open PV Tools\n",
518 | "\n",
519 | "There is a curated list of [open source PV tools](https://openpvtools.readthedocs.io/) from [\"Review of Open Source Tools for PV Modeling\" by Will Holmgren, _et al._ at IEEE 7th World Conference on PV Energy Conversion 2018](http://dx.doi.org/10.1109/PVSC.2018.8548231)."
520 | ]
521 | },
522 | {
523 | "cell_type": "markdown",
524 | "metadata": {},
525 | "source": [
526 | "[](http://creativecommons.org/licenses/by/4.0/)\n",
527 | "\n",
528 | "This work is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/)."
529 | ]
530 | }
531 | ],
532 | "metadata": {
533 | "kernelspec": {
534 | "display_name": "Python 3",
535 | "language": "python",
536 | "name": "python3"
537 | },
538 | "language_info": {
539 | "codemirror_mode": {
540 | "name": "ipython",
541 | "version": 3
542 | },
543 | "file_extension": ".py",
544 | "mimetype": "text/x-python",
545 | "name": "python",
546 | "nbconvert_exporter": "python",
547 | "pygments_lexer": "ipython3",
548 | "version": "3.7.3"
549 | }
550 | },
551 | "nbformat": 4,
552 | "nbformat_minor": 4
553 | }
554 |
--------------------------------------------------------------------------------
/Tutorial 2 - POA Irradiance.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "\n",
8 | "\n",
9 | "\n",
10 | "# Tutorial 2 - POA Irradiance\n",
11 | "\n",
12 | "This notebook shows how to use pvlib to transform the three irradiance components (GHI, DHI, and DNI) into POA irradiance, the main driver of a PV system.\n",
13 | "\n",
14 | "\n"
15 | ]
16 | },
17 | {
18 | "cell_type": "markdown",
19 | "metadata": {},
20 | "source": [
21 | "## PV Concepts\n",
22 | "- Plane of Array Irradiance\n",
23 | "- Angle of Incidence\n",
24 | "- Time delta for solar position\n",
25 | "- GHI vs POA for fixed tilt system and tracked systems\n",
26 | "\n",
27 | "## Python Concepts\n",
28 | "- pandas Timedelta\n",
29 | "- making a new dataframe from existing columns\n",
30 | "- resampling\n",
31 | "- bar ploting"
32 | ]
33 | },
34 | {
35 | "cell_type": "markdown",
36 | "metadata": {},
37 | "source": [
38 | "## What is transposition?\n",
39 | "\n",
40 | "The amount of sunlight collected by a PV panel depends on how well the panel orientation matches incoming sunlight. For example, a rooftop array facing West will produce hardly any energy in the morning when the sun is in the East because the panel can only \"see\" the dim part of the sky away from the sun. \n",
41 | "\n",
42 | "\n",
43 | "\n",
44 | "\n",
45 | "As the sun comes into view and moves towards the center of the panel's field of view, the panel will collect more and more irradiance. This concept is what defines plane-of-array irradiance -- the amount of sunlight available to be collected at a given panel orientation. Like the three \"basic\" irradiance components, POA irradiance is measured in watts per square meter."
46 | ]
47 | },
48 | {
49 | "cell_type": "markdown",
50 | "metadata": {},
51 | "source": [
52 | "\n",
53 | "\n",
54 | "Each irradiance component is considered separately when modeling POA irradiance. For example, calculating the component of direct irradiance (DNI) that is incident on a panel is solved with straightforward geometry based on the angle of incidence. Finding the POA component of diffuse irradiance (DHI) is more complex and can vary based on atmospheric conditions. Many models, ranging from simple models with lots of assumptions to strongly empirical models, have been published to transpose DHI into the diffuse POA component. A third component of POA irradiance is light that reflects off the ground before being collected by the PV panel. Functions to calculate each of these components are provided by pvlib.\n",
55 | "\n",
56 | "\n",
57 | ""
58 | ]
59 | },
60 | {
61 | "cell_type": "markdown",
62 | "metadata": {},
63 | "source": [
64 | "## How is array orientation defined?\n",
65 | "\n",
66 | "Two parameters define the panel orientation, one that measures the cardinal direction (North, East, South, West), and one that measures how high in the sky the panel faces:\n",
67 | "\n",
68 | "- tilt; measured in degrees from horizontal. A flat panel is at tilt=0 and a panel standing on its edge has tilt=90.\n",
69 | "- azimuth; measured in degrees from North. The direction along the horizon the panel is facing. N=0, E=90, S=180, W=270.\n",
70 | "\n",
71 | "A fixed array has fixed tilt and azimuth, but a tracker array constantly changes its orientation to best match the sun's position. So depending on the system configuration, tilt and azimuth may or may not be time series values.\n",
72 | "\n",
73 | "## Modeling POA from GHI, DHI, and DNI\n",
74 | "\n",
75 | "As mentioned earlier, pvlib makes it easy to calculate POA irradiance. First, let's load in the example TMY dataset from the previous tutorial:"
76 | ]
77 | },
78 | {
79 | "cell_type": "code",
80 | "execution_count": null,
81 | "metadata": {},
82 | "outputs": [],
83 | "source": [
84 | "# if running on google colab, uncomment the next line and execute this cell to install the dependencies and prevent \"ModuleNotFoundError\" in later cells:\n",
85 | "# !pip install -r https://raw.githubusercontent.com/PV-Tutorials/pyData-2021-Solar-PV-Modeling/main/requirements.txt"
86 | ]
87 | },
88 | {
89 | "cell_type": "code",
90 | "execution_count": 1,
91 | "metadata": {},
92 | "outputs": [
93 | {
94 | "name": "stdout",
95 | "output_type": "stream",
96 | "text": [
97 | "0.8.1\n"
98 | ]
99 | }
100 | ],
101 | "source": [
102 | "import pvlib\n",
103 | "import pandas as pd # for data wrangling\n",
104 | "import matplotlib.pyplot as plt # for visualization\n",
105 | "import pathlib # for finding the example dataset\n",
106 | "\n",
107 | "print(pvlib.__version__)\n",
108 | "\n",
109 | "DATA_DIR = pathlib.Path(pvlib.__file__).parent / 'data'\n",
110 | "df_tmy, metadata = pvlib.iotools.read_tmy3(DATA_DIR / '723170TYA.CSV', coerce_year=1990)\n",
111 | "\n",
112 | "# make a Location object corresponding to this TMY\n",
113 | "location = pvlib.location.Location(latitude=metadata['latitude'],\n",
114 | " longitude=metadata['longitude'])"
115 | ]
116 | },
117 | {
118 | "cell_type": "code",
119 | "execution_count": 2,
120 | "metadata": {},
121 | "outputs": [
122 | {
123 | "name": "stdout",
124 | "output_type": "stream",
125 | "text": [
126 | "We are looking at data from \"GREENSBORO PIEDMONT TRIAD INT\" , NC\n"
127 | ]
128 | }
129 | ],
130 | "source": [
131 | "print(\"We are looking at data from \", metadata['Name'], \",\", metadata['State'])"
132 | ]
133 | },
134 | {
135 | "cell_type": "markdown",
136 | "metadata": {},
137 | "source": [
138 | "Because part of the transposition process requires knowing where the sun is in the sky, let's use pvlib to calculate solar position. There is a gotcha here! TMY data represents the average weather conditions across each hour, meaning we need to calculate solar position in the middle of each hour. pvlib calculates solar position for the exact timestamps you specify, so we need to adjust the times by half an interval (30 minutes):"
139 | ]
140 | },
141 | {
142 | "cell_type": "code",
143 | "execution_count": 3,
144 | "metadata": {},
145 | "outputs": [
146 | {
147 | "data": {
148 | "text/html": [
149 | "
\n",
150 | "\n",
163 | "
\n",
164 | " \n",
165 | "
\n",
166 | "
\n",
167 | "
apparent_zenith
\n",
168 | "
zenith
\n",
169 | "
apparent_elevation
\n",
170 | "
elevation
\n",
171 | "
azimuth
\n",
172 | "
equation_of_time
\n",
173 | "
\n",
174 | " \n",
175 | " \n",
176 | "
\n",
177 | "
1990-01-01 01:00:00-05:00
\n",
178 | "
166.841893
\n",
179 | "
166.841893
\n",
180 | "
-76.841893
\n",
181 | "
-76.841893
\n",
182 | "
6.889661
\n",
183 | "
-3.395097
\n",
184 | "
\n",
185 | "
\n",
186 | "
1990-01-01 02:00:00-05:00
\n",
187 | "
160.512529
\n",
188 | "
160.512529
\n",
189 | "
-70.512529
\n",
190 | "
-70.512529
\n",
191 | "
52.424214
\n",
192 | "
-3.414863
\n",
193 | "
\n",
194 | "
\n",
195 | "
1990-01-01 03:00:00-05:00
\n",
196 | "
149.674856
\n",
197 | "
149.674856
\n",
198 | "
-59.674856
\n",
199 | "
-59.674856
\n",
200 | "
73.251821
\n",
201 | "
-3.434619
\n",
202 | "
\n",
203 | "
\n",
204 | "
1990-01-01 04:00:00-05:00
\n",
205 | "
137.777090
\n",
206 | "
137.777090
\n",
207 | "
-47.777090
\n",
208 | "
-47.777090
\n",
209 | "
85.208599
\n",
210 | "
-3.454365
\n",
211 | "
\n",
212 | "
\n",
213 | "
1990-01-01 05:00:00-05:00
\n",
214 | "
125.672180
\n",
215 | "
125.672180
\n",
216 | "
-35.672180
\n",
217 | "
-35.672180
\n",
218 | "
94.134730
\n",
219 | "
-3.474102
\n",
220 | "
\n",
221 | " \n",
222 | "
\n",
223 | "
"
224 | ],
225 | "text/plain": [
226 | " apparent_zenith zenith apparent_elevation \\\n",
227 | "1990-01-01 01:00:00-05:00 166.841893 166.841893 -76.841893 \n",
228 | "1990-01-01 02:00:00-05:00 160.512529 160.512529 -70.512529 \n",
229 | "1990-01-01 03:00:00-05:00 149.674856 149.674856 -59.674856 \n",
230 | "1990-01-01 04:00:00-05:00 137.777090 137.777090 -47.777090 \n",
231 | "1990-01-01 05:00:00-05:00 125.672180 125.672180 -35.672180 \n",
232 | "\n",
233 | " elevation azimuth equation_of_time \n",
234 | "1990-01-01 01:00:00-05:00 -76.841893 6.889661 -3.395097 \n",
235 | "1990-01-01 02:00:00-05:00 -70.512529 52.424214 -3.414863 \n",
236 | "1990-01-01 03:00:00-05:00 -59.674856 73.251821 -3.434619 \n",
237 | "1990-01-01 04:00:00-05:00 -47.777090 85.208599 -3.454365 \n",
238 | "1990-01-01 05:00:00-05:00 -35.672180 94.134730 -3.474102 "
239 | ]
240 | },
241 | "execution_count": 3,
242 | "metadata": {},
243 | "output_type": "execute_result"
244 | }
245 | ],
246 | "source": [
247 | "# Note: TMY datasets are right-labeled hourly intervals, e.g. the\n",
248 | "# 10AM to 11AM interval is labeled 11. We should calculate solar position in\n",
249 | "# the middle of the interval (10:30), so we subtract 30 minutes:\n",
250 | "times = df_tmy.index - pd.Timedelta('30min')\n",
251 | "solar_position = location.get_solarposition(times)\n",
252 | "# but remember to shift the index back to line up with the TMY data:\n",
253 | "solar_position.index += pd.Timedelta('30min')\n",
254 | "\n",
255 | "solar_position.head()"
256 | ]
257 | },
258 | {
259 | "cell_type": "markdown",
260 | "metadata": {},
261 | "source": [
262 | "The two values needed here are the solar zenith (how close the sun is to overhead) and azimuth (what direction along the horizon the sun is, like panel azimuth). The difference between `apparent_zenith` and `zenith` is that `apparent_zenith` includes the effect of atmospheric refraction.\n",
263 | "\n",
264 | "Now that we have a time series of solar position that matches our irradiance data, let's run a transposition model using the convenient wrapper function [`pvlib.irradiance.get_total_irradiance`](https://pvlib-python.readthedocs.io/en/latest/generated/pvlib.irradiance.get_total_irradiance.html). The more complex transposition models like Perez and Hay Davies require additional weather inputs, so for simplicity we'll just use the basic `isotropic` model here, which is the default if nothing is passed for `model` keyword argument. As an example, we'll model a fixed array tilted south at 20 degrees."
265 | ]
266 | },
267 | {
268 | "cell_type": "markdown",
269 | "metadata": {},
270 | "source": [
271 | "## Fixed Tilt POA"
272 | ]
273 | },
274 | {
275 | "cell_type": "code",
276 | "execution_count": 4,
277 | "metadata": {},
278 | "outputs": [],
279 | "source": [
280 | "df_poa = pvlib.irradiance.get_total_irradiance(\n",
281 | " surface_tilt=20, # tilted 20 degrees from horizontal\n",
282 | " surface_azimuth=180, # facing South\n",
283 | " dni=df_tmy['DNI'],\n",
284 | " ghi=df_tmy['GHI'],\n",
285 | " dhi=df_tmy['DHI'],\n",
286 | " solar_zenith=solar_position['apparent_zenith'],\n",
287 | " solar_azimuth=solar_position['azimuth'],\n",
288 | " model='isotropic')"
289 | ]
290 | },
291 | {
292 | "cell_type": "markdown",
293 | "metadata": {},
294 | "source": [
295 | "`get_total_irradiance` returns a DataFrame containing each of the POA components mentioned earlier (direct, diffuse, and ground), along with the total in-plane irradiance. "
296 | ]
297 | },
298 | {
299 | "cell_type": "code",
300 | "execution_count": 5,
301 | "metadata": {},
302 | "outputs": [
303 | {
304 | "data": {
305 | "text/plain": [
306 | "Index(['poa_global', 'poa_direct', 'poa_diffuse', 'poa_sky_diffuse',\n",
307 | " 'poa_ground_diffuse'],\n",
308 | " dtype='object')"
309 | ]
310 | },
311 | "execution_count": 5,
312 | "metadata": {},
313 | "output_type": "execute_result"
314 | }
315 | ],
316 | "source": [
317 | "df_poa.keys()"
318 | ]
319 | },
320 | {
321 | "cell_type": "markdown",
322 | "metadata": {},
323 | "source": [
324 | "### What angle should you tilt your modules at?"
325 | ]
326 | },
327 | {
328 | "cell_type": "markdown",
329 | "metadata": {},
330 | "source": [
331 | "[PVEducation Solar Radiation on a Tilted Surface](https://www.pveducation.org/pvcdrom/properties-of-sunlight/solar-radiation-on-a-tilted-surface)"
332 | ]
333 | },
334 | {
335 | "cell_type": "markdown",
336 | "metadata": {},
337 | "source": [
338 | "The total POA irradiance is called `poa_global` and is the one we'll focus on. Like the previous tutorial, let's visualize monthly irradiance to summarize the difference between the insolation received by a flat panel (GHI) and that of a tilted panel (POA):"
339 | ]
340 | },
341 | {
342 | "cell_type": "code",
343 | "execution_count": 6,
344 | "metadata": {},
345 | "outputs": [
346 | {
347 | "data": {
348 | "image/png": "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\n",
349 | "text/plain": [
350 | ""
351 | ]
352 | },
353 | "metadata": {
354 | "needs_background": "light"
355 | },
356 | "output_type": "display_data"
357 | }
358 | ],
359 | "source": [
360 | "df = pd.DataFrame({\n",
361 | " 'ghi': df_tmy['GHI'],\n",
362 | " 'poa': df_poa['poa_global'],\n",
363 | "})\n",
364 | "df_monthly = df.resample('M').sum()\n",
365 | "df_monthly.plot.bar()\n",
366 | "plt.ylabel('Monthly Insolation [W h/m$^2$]');"
367 | ]
368 | },
369 | {
370 | "cell_type": "markdown",
371 | "metadata": {},
372 | "source": [
373 | "This plot shows that, compared with a flat array, a tilted array receives significantly more insolation in the winter. However, it comes at the cost of slightly less insolation in the summer. The difference is all about solar position -- tilting up from horizontal gives a better match to solar position in winter, when the sun is low in the sky. However it gives a slightly worse match in summer when the sun is very high in the sky.\n",
374 | "\n",
375 | "As an example, here's a sunny day in winter vs a sunny day in summer. Note that the daily profile doesn't just change its height, it also changes its width (summer POA is \"skinnier\" than GHI)."
376 | ]
377 | },
378 | {
379 | "cell_type": "code",
380 | "execution_count": 7,
381 | "metadata": {},
382 | "outputs": [
383 | {
384 | "data": {
385 | "image/png": "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\n",
386 | "text/plain": [
387 | ""
388 | ]
389 | },
390 | "metadata": {
391 | "needs_background": "light"
392 | },
393 | "output_type": "display_data"
394 | }
395 | ],
396 | "source": [
397 | "df.loc['1990-01-15'].plot()\n",
398 | "plt.ylabel('Irradiance [W/m$^2$]');"
399 | ]
400 | },
401 | {
402 | "cell_type": "code",
403 | "execution_count": 8,
404 | "metadata": {},
405 | "outputs": [
406 | {
407 | "data": {
408 | "image/png": "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\n",
409 | "text/plain": [
410 | ""
411 | ]
412 | },
413 | "metadata": {
414 | "needs_background": "light"
415 | },
416 | "output_type": "display_data"
417 | }
418 | ],
419 | "source": [
420 | "df.loc['1990-07-08'].plot()\n",
421 | "plt.ylabel('Irradiance [W/m$^2$]');"
422 | ]
423 | },
424 | {
425 | "cell_type": "markdown",
426 | "metadata": {},
427 | "source": [
428 | "The difference between GHI and POA is of course dependent on the tilt defining POA, but because it also depends on solar position, it varies from location to location. Luckily, tools like pvlib make it easy to model!\n",
429 | "\n",
430 | "## Modeling POA for a tracking system\n",
431 | "\n",
432 | "The previous section calculated the transposition assuming a fixed array tilt and azimuth. Now we'll do the same for a tracking array that follows the sun across the sky. The most common type of tracking array is what's called a single-axis tracker (SAT) that rotates from East to West to follow the sun. We can calculate the time-dependent orientation of a SAT array with pvlib:"
433 | ]
434 | },
435 | {
436 | "cell_type": "code",
437 | "execution_count": 9,
438 | "metadata": {},
439 | "outputs": [
440 | {
441 | "data": {
442 | "image/png": "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\n",
443 | "text/plain": [
444 | ""
445 | ]
446 | },
447 | "metadata": {
448 | "needs_background": "light"
449 | },
450 | "output_type": "display_data"
451 | }
452 | ],
453 | "source": [
454 | "tracker_data = pvlib.tracking.singleaxis(\n",
455 | " solar_position['apparent_zenith'],\n",
456 | " solar_position['azimuth'],\n",
457 | " axis_azimuth=180, # axis is aligned N-S\n",
458 | " ) # leave the rest of the singleaxis parameters like backtrack and gcr at their defaults\n",
459 | "tilt = tracker_data['surface_tilt'].fillna(0)\n",
460 | "azimuth = tracker_data['surface_azimuth'].fillna(0)\n",
461 | "\n",
462 | "# plot a day to illustrate:\n",
463 | "tracker_data['tracker_theta'].fillna(0).head(24).plot()\n",
464 | "plt.ylabel('Tracker Rotation [degrees]');"
465 | ]
466 | },
467 | {
468 | "cell_type": "markdown",
469 | "metadata": {},
470 | "source": [
471 | "This plot shows a single day of tracker operation. The y-axis shows the tracker rotation from horizontal, so 0 degrees means the panels are flat. In the morning, the trackers rotate to negative angles to face East towards the morning sun; in the afternoon they rotate to positive angles to face West towards the evening sun. In the middle of the day, the trackers are flat because the sun is more or less overhead.\n",
472 | "\n",
473 | "Now we can model the irradiance collected by a tracking array -- we follow the same procedure as before, but using the timeseries tilt and azimuth this time:"
474 | ]
475 | },
476 | {
477 | "cell_type": "code",
478 | "execution_count": 10,
479 | "metadata": {},
480 | "outputs": [],
481 | "source": [
482 | "df_poa_tracker = pvlib.irradiance.get_total_irradiance(\n",
483 | " surface_tilt=tilt, # time series for tracking array\n",
484 | " surface_azimuth=azimuth, # time series for tracking array\n",
485 | " dni=df_tmy['DNI'],\n",
486 | " ghi=df_tmy['GHI'],\n",
487 | " dhi=df_tmy['DHI'],\n",
488 | " solar_zenith=solar_position['apparent_zenith'],\n",
489 | " solar_azimuth=solar_position['azimuth'])\n",
490 | "tracker_poa = df_poa_tracker['poa_global']"
491 | ]
492 | },
493 | {
494 | "cell_type": "markdown",
495 | "metadata": {},
496 | "source": [
497 | "Like before, let's compare GHI and POA:"
498 | ]
499 | },
500 | {
501 | "cell_type": "code",
502 | "execution_count": 11,
503 | "metadata": {},
504 | "outputs": [
505 | {
506 | "data": {
507 | "image/png": "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\n",
508 | "text/plain": [
509 | ""
510 | ]
511 | },
512 | "metadata": {
513 | "needs_background": "light"
514 | },
515 | "output_type": "display_data"
516 | }
517 | ],
518 | "source": [
519 | "df.loc['1990-01-15', 'ghi'].plot()\n",
520 | "tracker_poa.loc['1990-01-15'].plot()\n",
521 | "plt.legend()\n",
522 | "plt.ylabel('Irradiance [W/m$^2$]');"
523 | ]
524 | },
525 | {
526 | "cell_type": "markdown",
527 | "metadata": {},
528 | "source": [
529 | "Notice how different the daily profile is for the tracker array! This is because the array can tilt steeply East and West to face towards the sun in early morning and late afternoon, meaning the edges of day get much higher irradiance than for a south-facing array.\n",
530 | "\n",
531 | "Note also that in the middle of the day, GHI and POA just touch each other -- this is because at solar noon, the array lies flat, and so POA is momentarily identical to GHI."
532 | ]
533 | },
534 | {
535 | "cell_type": "markdown",
536 | "metadata": {},
537 | "source": [
538 | "Note that the POA calculations discussed above do not address the partial blocking of diffuse light in arrays with multiple tilted rows of PV modules, so the results will be slightly (typically 1-3%) optimistic relative to real conditions or to commercial modeling software. Such corrections are likely to be added to pvlib in the future for specific generic geometries like fixed racks."
539 | ]
540 | },
541 | {
542 | "cell_type": "markdown",
543 | "metadata": {},
544 | "source": [
545 | "[](http://creativecommons.org/licenses/by/4.0/)\n",
546 | "\n",
547 | "This work is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/)."
548 | ]
549 | }
550 | ],
551 | "metadata": {
552 | "kernelspec": {
553 | "display_name": "Python 3 (ipykernel)",
554 | "language": "python",
555 | "name": "python3"
556 | },
557 | "language_info": {
558 | "codemirror_mode": {
559 | "name": "ipython",
560 | "version": 3
561 | },
562 | "file_extension": ".py",
563 | "mimetype": "text/x-python",
564 | "name": "python",
565 | "nbconvert_exporter": "python",
566 | "pygments_lexer": "ipython3",
567 | "version": "3.11.4"
568 | }
569 | },
570 | "nbformat": 4,
571 | "nbformat_minor": 4
572 | }
573 |
--------------------------------------------------------------------------------
/Tutorial B - pvfree.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "\n",
8 | "\n",
9 | "\n",
10 | "# Tutorial B - pvfree\n",
11 | "\n",
12 | "Another option to get CEC module parameters is to use [pvfree](https://pvfree.azurewebsites.net/). \n",
13 | "\n",
14 | "