/
Run_full_timeseries_simulations.ipynb
648 lines (648 loc) · 118 KB
/
Run_full_timeseries_simulations.ipynb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Run full timeseries simulations\n",
"========================="
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this section, we will learn how to:\n",
"\n",
"- run full timeseries simulations using the ``PVEngine`` class, and visualize some of the results\n",
"- run full timeseries simulations using the ``run_timeseries_engine()`` function"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Imports and settings"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Import external libraries\n",
"import os\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from datetime import datetime\n",
"import pandas as pd\n",
"import warnings\n",
"\n",
"# Settings\n",
"%matplotlib inline\n",
"np.set_printoptions(precision=3, linewidth=300)\n",
"warnings.filterwarnings('ignore')\n",
"# Paths\n",
"LOCAL_DIR = os.getcwd()\n",
"DATA_DIR = os.path.join(LOCAL_DIR, 'data')\n",
"filepath = os.path.join(DATA_DIR, 'test_df_inputs_MET_clearsky_tucson.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Get timeseries inputs"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def export_data(fp):\n",
" tz = 'US/Arizona'\n",
" df = pd.read_csv(fp, index_col=0)\n",
" df.index = pd.DatetimeIndex(df.index).tz_convert(tz)\n",
" return df\n",
"\n",
"df = export_data(filepath)\n",
"df_inputs = df.iloc[:24, :]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x216 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Plot the data\n",
"f, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(12, 3))\n",
"df_inputs[['dni', 'dhi']].plot(ax=ax1)\n",
"df_inputs[['solar_zenith', 'solar_azimuth']].plot(ax=ax2)\n",
"df_inputs[['surface_tilt', 'surface_azimuth']].plot(ax=ax3)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# Use a fixed albedo\n",
"albedo = 0.2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Prepare PV array parameters"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"pvarray_parameters = {\n",
" 'n_pvrows': 3, # number of pv rows\n",
" 'pvrow_height': 1, # height of pvrows (measured at center / torque tube)\n",
" 'pvrow_width': 1, # width of pvrows\n",
" 'axis_azimuth': 0., # azimuth angle of rotation axis\n",
" 'gcr': 0.4, # ground coverage ratio\n",
" 'rho_front_pvrow': 0.01, # pv row front surface reflectivity\n",
" 'rho_back_pvrow': 0.03, # pv row back surface reflectivity\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Run single timestep with PVEngine and inspect results"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Instantiate the ``PVEngine`` class and fit it to the data"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"from pvfactors.engine import PVEngine\n",
"from pvfactors.geometry import OrderedPVArray\n",
"\n",
"# Create ordered PV array\n",
"pvarray = OrderedPVArray.init_from_dict(pvarray_parameters)\n",
"# Create engine\n",
"engine = PVEngine(pvarray)\n",
"# Fit engine to data\n",
"engine.fit(df_inputs.index, df_inputs.dni, df_inputs.dhi, \n",
" df_inputs.solar_zenith, df_inputs.solar_azimuth, \n",
" df_inputs.surface_tilt, df_inputs.surface_azimuth, \n",
" albedo)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The user can run a simulation for a single timestep and plot the returned PV array"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Get the PV array\n",
"pvarray = engine.run_full_mode(fn_build_report=lambda pvarray: pvarray)\n",
"\n",
"# Plot pvarray shapely geometries\n",
"f, ax = plt.subplots(figsize=(10, 3))\n",
"pvarray.plot_at_idx(15, ax, with_surface_index=True)\n",
"ax.set_title(df.index[15])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The user can inspect the results very easily thanks to the simple geometry API"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Incident irradiance on front surface of middle pv row: \n",
"[ nan nan nan nan nan nan nan 117.633 587.344 685.115 652.526 616.77 618.875 656.024 685.556 550.172 87.66 nan nan nan nan nan nan nan] W/m2\n",
"Reflected irradiance on back surface of left pv row: \n",
"[ nan nan nan nan nan nan nan 8.375 6.597 39.275 58.563 68.346 64.176 47.593 32.984 25.216 7.044 nan nan nan nan nan nan nan] W/m2\n",
"Isotropic irradiance on back surface of right pv row: \n",
"[ nan nan nan nan nan nan nan 0.076 2.15 3.116 1.697 0.199 0.414 2.627 4.208 2.83 0.066 nan nan nan nan nan nan nan] W/m2\n"
]
}
],
"source": [
"# Get the calculated outputs from the pv array\n",
"center_row_front_incident_irradiance = pvarray.ts_pvrows[1].front.get_param_weighted('qinc')\n",
"left_row_back_reflected_incident_irradiance = pvarray.ts_pvrows[0].back.get_param_weighted('reflection')\n",
"right_row_back_isotropic_incident_irradiance = pvarray.ts_pvrows[2].back.get_param_weighted('isotropic')\n",
"\n",
"print(\"Incident irradiance on front surface of middle pv row: \\n{} W/m2\"\n",
" .format(center_row_front_incident_irradiance))\n",
"print(\"Reflected irradiance on back surface of left pv row: \\n{} W/m2\"\n",
" .format(left_row_back_reflected_incident_irradiance))\n",
"print(\"Isotropic irradiance on back surface of right pv row: \\n{} W/m2\"\n",
" .format(right_row_back_isotropic_incident_irradiance))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Run multiple timesteps with PVEngine"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The users can also obtain a \"report\" that will look like whatever the users want, and which will rely on the simple geometry API shown above.\n",
"Here is an example:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>qinc_front</th>\n",
" <th>qinc_back</th>\n",
" <th>iso_front</th>\n",
" <th>iso_back</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>2019-01-01 07:00:00-07:00</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-01-01 08:00:00-07:00</td>\n",
" <td>117.632919</td>\n",
" <td>9.703464</td>\n",
" <td>5.070103</td>\n",
" <td>0.076232</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-01-01 09:00:00-07:00</td>\n",
" <td>587.344197</td>\n",
" <td>4.906038</td>\n",
" <td>12.087407</td>\n",
" <td>2.150237</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-01-01 10:00:00-07:00</td>\n",
" <td>685.115436</td>\n",
" <td>33.478098</td>\n",
" <td>17.516188</td>\n",
" <td>3.115967</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-01-01 11:00:00-07:00</td>\n",
" <td>652.526254</td>\n",
" <td>52.534503</td>\n",
" <td>24.250780</td>\n",
" <td>1.697046</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" qinc_front qinc_back iso_front iso_back\n",
"2019-01-01 07:00:00-07:00 NaN NaN NaN NaN\n",
"2019-01-01 08:00:00-07:00 117.632919 9.703464 5.070103 0.076232\n",
"2019-01-01 09:00:00-07:00 587.344197 4.906038 12.087407 2.150237\n",
"2019-01-01 10:00:00-07:00 685.115436 33.478098 17.516188 3.115967\n",
"2019-01-01 11:00:00-07:00 652.526254 52.534503 24.250780 1.697046"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a function that will build a report\n",
"from pvfactors.report import example_fn_build_report\n",
"\n",
"# Run full simulation\n",
"report = engine.run_full_mode(fn_build_report=example_fn_build_report)\n",
"\n",
"# Print results (report is defined by report function passed by user)\n",
"df_report = pd.DataFrame(report, index=df_inputs.index)\n",
"df_report.iloc[6:11]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x216 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"f, ax = plt.subplots(1, 2, figsize=(10, 3))\n",
"df_report[['qinc_front', 'qinc_back']].plot(ax=ax[0])\n",
"df_report[['iso_front', 'iso_back']].plot(ax=ax[1])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A function that builds a report needs to be specified, otherwise nothing will be returned by the simulation. \n",
"Here is an example of a report function that will return the total incident irradiance (``'qinc'``) on the back surface of the rightmost PV row.\n",
"A good way to get started building the reporting function is to use the example provided in the ``report.py`` module of the pvfactors package."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"def new_fn_build_report(pvarray): return {'total_inc_back': pvarray.ts_pvrows[1].back.get_param_weighted('qinc')}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can run the timeseries simulation again using the same engine but a different report function."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>total_inc_back</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>2019-01-01 07:00:00-07:00</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-01-01 08:00:00-07:00</td>\n",
" <td>9.703464</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-01-01 09:00:00-07:00</td>\n",
" <td>4.906038</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-01-01 10:00:00-07:00</td>\n",
" <td>33.478098</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2019-01-01 11:00:00-07:00</td>\n",
" <td>52.534503</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_inc_back\n",
"2019-01-01 07:00:00-07:00 NaN\n",
"2019-01-01 08:00:00-07:00 9.703464\n",
"2019-01-01 09:00:00-07:00 4.906038\n",
"2019-01-01 10:00:00-07:00 33.478098\n",
"2019-01-01 11:00:00-07:00 52.534503"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Run full simulation using new report function\n",
"new_report = engine.run_full_mode(fn_build_report=new_fn_build_report)\n",
"\n",
"# Print results\n",
"df_new_report = pd.DataFrame(new_report, index=df_inputs.index)\n",
"df_new_report.iloc[6:11]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"f, ax = plt.subplots(figsize=(5, 3))\n",
"df_new_report.plot(ax=ax)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see in the printed output the new report generated by the simulation run. \n",
"For convenience, we've been using dictionaries as the data structure holding the reports, but it could be anything else, like numpy arrays, pandas dataframes, etc."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Run one or multiple timesteps with the ``run_timeseries_engine()`` function"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The same thing can be accomplished using a function from the ``run.py`` module of the pvfactors package. \n",
"But only the report will be returned."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# import function\n",
"from pvfactors.run import run_timeseries_engine\n",
"\n",
"# run simulation using new_fn_build_report\n",
"report_from_fn = run_timeseries_engine(new_fn_build_report, pvarray_parameters, df_inputs.index, \n",
" df_inputs.dni, df_inputs.dhi, \n",
" df_inputs.solar_zenith, df_inputs.solar_azimuth, \n",
" df_inputs.surface_tilt, df_inputs.surface_azimuth, \n",
" albedo)\n",
"\n",
"# make a dataframe out of the report\n",
"df_report_from_fn = pd.DataFrame(report_from_fn, index=df_inputs.index)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"f, ax = plt.subplots(figsize=(5, 3))\n",
"df_report_from_fn.plot(ax=ax)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The plot above shows that we get the same results as previously."
]
}
],
"metadata": {
"hide_input": false,
"kernelspec": {
"display_name": "pvfactors_py3",
"language": "python",
"name": "pvfactors_py3"
},
"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"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": true,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 1
}