pvlib 0.11.0a1__tar.gz → 0.11.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. {pvlib-0.11.0a1/pvlib.egg-info → pvlib-0.11.2}/PKG-INFO +10 -7
  2. {pvlib-0.11.0a1 → pvlib-0.11.2}/README.md +1 -1
  3. pvlib-0.11.2/docs/examples/bifacial/plot_irradiance_nonuniformity_loss.py +129 -0
  4. pvlib-0.11.2/docs/examples/floating-pv/README.rst +2 -0
  5. pvlib-0.11.2/docs/examples/floating-pv/plot_floating_pv_cell_temperature.py +230 -0
  6. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/irradiance-transposition/plot_seasonal_tilt.py +2 -0
  7. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/irradiance-transposition/plot_transposition_gain.py +1 -0
  8. pvlib-0.11.2/docs/examples/irradiance-transposition/use_perez_modelchain.py +126 -0
  9. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/iv-modeling/plot_singlediode.py +2 -0
  10. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/shading/plot_martinez_shade_loss.py +2 -8
  11. pvlib-0.11.2/docs/examples/spectrum/average_photon_energy.py +197 -0
  12. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/spectrum/plot_spectrl2_fig51A.py +12 -10
  13. pvlib-0.11.2/docs/examples/spectrum/spectral_factor.py +150 -0
  14. pvlib-0.11.2/docs/sphinx/source/_images/example_function_screenshot.png +0 -0
  15. pvlib-0.11.2/docs/sphinx/source/_static/reference_format.css +5 -0
  16. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_static/version-alert.js +1 -1
  17. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_templates/edit-this-page.html +6 -9
  18. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/conf.py +103 -72
  19. pvlib-0.11.2/docs/sphinx/source/contributing/how_to_contribute_new_code.rst +159 -0
  20. pvlib-0.11.2/docs/sphinx/source/contributing/index.rst +14 -0
  21. pvlib-0.11.2/docs/sphinx/source/contributing/introduction_to_contributing.rst +55 -0
  22. pvlib-0.11.2/docs/sphinx/source/contributing/style_guide.rst +352 -0
  23. pvlib-0.11.2/docs/sphinx/source/contributing/testing.rst +188 -0
  24. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/index.rst +2 -2
  25. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/airmass_atmospheric.rst +3 -0
  26. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/bifacial.rst +7 -0
  27. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/effects_on_pv_system_output/spectrum.rst +1 -0
  28. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/tracking.rst +0 -3
  29. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/transformer.rst +1 -1
  30. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/faq.rst +1 -1
  31. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/index.rst +1 -1
  32. pvlib-0.11.2/docs/sphinx/source/user_guide/nomenclature.rst +196 -0
  33. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/singlediode.rst +14 -14
  34. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/weather_data.rst +1 -1
  35. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.11.0.rst +10 -14
  36. pvlib-0.11.2/docs/sphinx/source/whatsnew/v0.11.1.rst +112 -0
  37. pvlib-0.11.2/docs/sphinx/source/whatsnew/v0.11.2.rst +99 -0
  38. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.3.0.txt +1 -1
  39. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew.rst +2 -0
  40. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/tutorials/irradiance.ipynb +13 -11
  41. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/_deprecation.py +73 -0
  42. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/atmosphere.py +236 -1
  43. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/bifacial/__init__.py +4 -4
  44. pvlib-0.11.2/pvlib/bifacial/loss_models.py +163 -0
  45. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/clearsky.py +53 -51
  46. pvlib-0.11.2/pvlib/data/pvgis_tmy_meta.json +32 -0
  47. pvlib-0.11.2/pvlib/data/pvgis_tmy_test.csv +8761 -0
  48. pvlib-0.11.2/pvlib/data/tmy_45.000_8.000_2005_2023.csv +8789 -0
  49. pvlib-0.11.2/pvlib/data/tmy_45.000_8.000_2005_2023.epw +8768 -0
  50. pvlib-0.11.2/pvlib/data/tmy_45.000_8.000_2005_2023.json +1 -0
  51. pvlib-0.11.2/pvlib/data/tmy_45.000_8.000_2005_2023.txt +8761 -0
  52. pvlib-0.11.2/pvlib/data/tmy_45.000_8.000_userhorizon.json +1 -0
  53. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iam.py +4 -4
  54. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/midc.py +1 -1
  55. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/pvgis.py +39 -13
  56. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/irradiance.py +237 -173
  57. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/ivtools/sdm.py +75 -52
  58. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/location.py +5 -5
  59. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/modelchain.py +1 -1
  60. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/pvsystem.py +134 -86
  61. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/shading.py +8 -8
  62. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/singlediode.py +1 -1
  63. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/solarposition.py +101 -80
  64. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/spa.py +28 -24
  65. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/spectrum/__init__.py +9 -4
  66. pvlib-0.11.2/pvlib/spectrum/irradiance.py +273 -0
  67. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/spectrum/mismatch.py +118 -508
  68. pvlib-0.11.2/pvlib/spectrum/response.py +280 -0
  69. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/spectrum/spectrl2.py +18 -17
  70. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/temperature.py +49 -3
  71. pvlib-0.11.2/pvlib/tests/bifacial/test_losses_models.py +54 -0
  72. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_pvgis.py +58 -12
  73. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/ivtools/test_sdm.py +23 -1
  74. pvlib-0.11.2/pvlib/tests/spectrum/__init__.py +0 -0
  75. pvlib-0.11.2/pvlib/tests/spectrum/conftest.py +40 -0
  76. pvlib-0.11.2/pvlib/tests/spectrum/test_irradiance.py +138 -0
  77. pvlib-0.11.0a1/pvlib/tests/test_spectrum.py → pvlib-0.11.2/pvlib/tests/spectrum/test_mismatch.py +32 -306
  78. pvlib-0.11.2/pvlib/tests/spectrum/test_response.py +124 -0
  79. pvlib-0.11.2/pvlib/tests/spectrum/test_spectrl2.py +72 -0
  80. pvlib-0.11.2/pvlib/tests/test__deprecation.py +97 -0
  81. pvlib-0.11.2/pvlib/tests/test_atmosphere.py +351 -0
  82. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_clearsky.py +44 -26
  83. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_conftest.py +0 -44
  84. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_irradiance.py +62 -16
  85. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_pvsystem.py +17 -1
  86. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_solarposition.py +117 -36
  87. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_spa.py +30 -1
  88. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tools.py +26 -2
  89. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tracking.py +53 -47
  90. {pvlib-0.11.0a1 → pvlib-0.11.2/pvlib.egg-info}/PKG-INFO +10 -7
  91. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib.egg-info/SOURCES.txt +33 -11
  92. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib.egg-info/requires.txt +8 -5
  93. {pvlib-0.11.0a1 → pvlib-0.11.2}/pyproject.toml +9 -6
  94. pvlib-0.11.2/scripts/update_top_ranking_issues.py +81 -0
  95. pvlib-0.11.0a1/docs/sphinx/source/_static/reference_format.css +0 -13
  96. pvlib-0.11.0a1/docs/sphinx/source/contributing.rst +0 -506
  97. pvlib-0.11.0a1/docs/sphinx/source/user_guide/variables_style_rules.rst +0 -25
  98. pvlib-0.11.0a1/pvlib/data/aod550_tcwv_20121101_test.nc +0 -0
  99. pvlib-0.11.0a1/pvlib/data/pvgis_tmy_meta.json +0 -93
  100. pvlib-0.11.0a1/pvlib/data/pvgis_tmy_test.dat +0 -8761
  101. pvlib-0.11.0a1/pvlib/data/tmy_45.000_8.000_2005_2016.csv +0 -8789
  102. pvlib-0.11.0a1/pvlib/data/tmy_45.000_8.000_2005_2016.epw +0 -8768
  103. pvlib-0.11.0a1/pvlib/data/tmy_45.000_8.000_2005_2016.json +0 -1
  104. pvlib-0.11.0a1/pvlib/data/tmy_45.000_8.000_2005_2016.txt +0 -8761
  105. pvlib-0.11.0a1/pvlib/data/tmy_45.000_8.000_userhorizon.json +0 -1
  106. pvlib-0.11.0a1/pvlib/data/variables_style_rules.csv +0 -55
  107. pvlib-0.11.0a1/pvlib/tests/test_atmosphere.py +0 -133
  108. {pvlib-0.11.0a1 → pvlib-0.11.2}/AUTHORS.md +0 -0
  109. {pvlib-0.11.0a1 → pvlib-0.11.2}/LICENSE +0 -0
  110. {pvlib-0.11.0a1 → pvlib-0.11.2}/MANIFEST.in +0 -0
  111. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/README.rst +0 -0
  112. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/adr-pvarray/README.rst +0 -0
  113. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/adr-pvarray/plot_fit_to_matrix.py +0 -0
  114. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/adr-pvarray/plot_simulate_fast.py +0 -0
  115. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/adr-pvarray/plot_simulate_system.py +0 -0
  116. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/agrivoltaics/README.rst +0 -0
  117. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/agrivoltaics/plot_diffuse_PAR_Spitters_relationship.py +0 -0
  118. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/bifacial/README.rst +0 -0
  119. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/bifacial/plot_bifi_model_mc.py +0 -0
  120. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/bifacial/plot_bifi_model_pvwatts.py +0 -0
  121. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/bifacial/plot_pvfactors_fixed_tilt.py +0 -0
  122. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/irradiance-decomposition/README.rst +0 -0
  123. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/irradiance-decomposition/plot_diffuse_fraction.py +0 -0
  124. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/irradiance-transposition/README.rst +0 -0
  125. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/irradiance-transposition/plot_ghi_transposition.py +0 -0
  126. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/irradiance-transposition/plot_interval_transposition_error.py +0 -0
  127. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/irradiance-transposition/plot_mixed_orientation.py +0 -0
  128. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/irradiance-transposition/plot_rtranpose_limitations.py +0 -0
  129. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/irradiance-transposition/plot_rtranpose_year.py +0 -0
  130. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/iv-modeling/README.rst +0 -0
  131. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/reflections/README.rst +0 -0
  132. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/reflections/plot_convert_iam_models.py +0 -0
  133. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/reflections/plot_diffuse_aoi_correction.py +0 -0
  134. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/reflections/plot_fit_iam_models.py +0 -0
  135. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/shading/README.rst +0 -0
  136. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/shading/plot_partial_module_shading_simple.py +0 -0
  137. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/shading/plot_passias_diffuse_shading.py +0 -0
  138. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/shading/plot_shaded_fraction1d_ns_hsat_example.py +0 -0
  139. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/shading/plot_simple_irradiance_adjustment_for_horizon_shading.py +0 -0
  140. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/soiling/README.rst +0 -0
  141. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/soiling/plot_fig3A_hsu_soiling_example.py +0 -0
  142. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/soiling/plot_greensboro_kimber_soiling.py +0 -0
  143. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/solar-position/README.rst +0 -0
  144. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/solar-position/plot_sunpath_diagrams.py +0 -0
  145. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/solar-tracking/README.rst +0 -0
  146. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/solar-tracking/plot_discontinuous_tracking.py +0 -0
  147. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/solar-tracking/plot_dual_axis_tracking.py +0 -0
  148. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/solar-tracking/plot_single_axis_tracking.py +0 -0
  149. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/solar-tracking/plot_single_axis_tracking_on_sloped_terrain.py +0 -0
  150. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/spectrum/README.rst +0 -0
  151. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/spectrum/plot_standard_ASTM_G173-03.py +0 -0
  152. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/system-models/README.rst +0 -0
  153. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/examples/system-models/plot_oedi_9068.py +0 -0
  154. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/notes/Determining the average view factor from a module.pdf +0 -0
  155. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/Makefile +0 -0
  156. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/make.bat +0 -0
  157. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/Anderson_Jensen_2024_Fig3.png +0 -0
  158. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/Anderson_Mikofski_2020_Fig5.jpg +0 -0
  159. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/Coello_Boyle_2019_Fig3.png +0 -0
  160. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/OEDI_9068_daily_timeseries.png +0 -0
  161. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/OEDI_9068_inverter1_comparison.png +0 -0
  162. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/OEDI_9068_inverter2_comparison.png +0 -0
  163. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/PV_module_layout_cesardd.jpg +0 -0
  164. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/clonebutton.png +0 -0
  165. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/ground_slope_angle_convention.png +0 -0
  166. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/pvlib_logo_horiz.png +0 -0
  167. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/pvlib_logo_vert.png +0 -0
  168. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/pvlib_powered_logo_horiz.png +0 -0
  169. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/pvlib_powered_logo_vert.png +0 -0
  170. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/tracker_azimuth_angle_convention.png +0 -0
  171. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_images/tracker_rotation_angle_convention.png +0 -0
  172. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_static/favicon-16x16.png +0 -0
  173. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_static/favicon-32x32.png +0 -0
  174. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_static/no_scrollbars.css +0 -0
  175. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_templates/autosummary/class.rst +0 -0
  176. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_templates/autosummary/function.rst +0 -0
  177. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/_templates/autosummary/method.rst +0 -0
  178. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/classes.rst +0 -0
  179. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/clearsky.rst +0 -0
  180. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/effects_on_pv_system_output/index.rst +0 -0
  181. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/effects_on_pv_system_output/loss-models.rst +0 -0
  182. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/effects_on_pv_system_output/shading.rst +0 -0
  183. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/effects_on_pv_system_output/snow.rst +0 -0
  184. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/effects_on_pv_system_output/soiling.rst +0 -0
  185. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/index.rst +0 -0
  186. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/iotools.rst +0 -0
  187. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/irradiance/albedo.rst +0 -0
  188. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/irradiance/class-methods.rst +0 -0
  189. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/irradiance/clearness-index.rst +0 -0
  190. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/irradiance/components.rst +0 -0
  191. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/irradiance/decomposition.rst +0 -0
  192. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/irradiance/index.rst +0 -0
  193. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/irradiance/transposition.rst +0 -0
  194. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/location.rst +0 -0
  195. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/modelchain.rst +0 -0
  196. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/pv_modeling/iam.rst +0 -0
  197. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/pv_modeling/index.rst +0 -0
  198. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/pv_modeling/inverter.rst +0 -0
  199. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/pv_modeling/other.rst +0 -0
  200. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/pv_modeling/parameters.rst +0 -0
  201. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/pv_modeling/sdm.rst +0 -0
  202. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/pv_modeling/system_models.rst +0 -0
  203. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/pv_modeling/temperature.rst +0 -0
  204. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/scaling.rst +0 -0
  205. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/reference/solarposition.rst +0 -0
  206. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/bifacial.rst +0 -0
  207. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/clearsky.rst +0 -0
  208. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/installation.rst +0 -0
  209. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/introtutorial.rst +0 -0
  210. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/modelchain.rst +0 -0
  211. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/package_overview.rst +0 -0
  212. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/pvsystem.rst +0 -0
  213. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/user_guide/timetimezones.rst +0 -0
  214. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.1.0.txt +0 -0
  215. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.10.0.rst +0 -0
  216. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.10.1.rst +0 -0
  217. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.10.2.rst +0 -0
  218. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.10.3.rst +0 -0
  219. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.10.4.rst +0 -0
  220. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.10.5.rst +0 -0
  221. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.2.0.txt +0 -0
  222. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.2.1.txt +0 -0
  223. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.2.2.txt +0 -0
  224. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.3.1.txt +0 -0
  225. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.3.2.txt +0 -0
  226. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.3.3.txt +0 -0
  227. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.4.0.txt +0 -0
  228. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.4.1.txt +0 -0
  229. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.4.2.txt +0 -0
  230. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.4.3.txt +0 -0
  231. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.4.4.txt +0 -0
  232. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.4.5.txt +0 -0
  233. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.5.0.rst +0 -0
  234. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.5.1.rst +0 -0
  235. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.5.2.rst +0 -0
  236. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.6.0.rst +0 -0
  237. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.6.1.rst +0 -0
  238. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.6.2.rst +0 -0
  239. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.6.3.rst +0 -0
  240. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.7.0.rst +0 -0
  241. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.7.1.rst +0 -0
  242. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.7.2.rst +0 -0
  243. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.8.0.rst +0 -0
  244. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.8.1.rst +0 -0
  245. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.9.0.rst +0 -0
  246. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.9.1.rst +0 -0
  247. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.9.2.rst +0 -0
  248. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.9.3.rst +0 -0
  249. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.9.4.rst +0 -0
  250. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/sphinx/source/whatsnew/v0.9.5.rst +0 -0
  251. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/tutorials/atmosphere.ipynb +0 -0
  252. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/tutorials/pvsystem.ipynb +0 -0
  253. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/tutorials/solarposition.ipynb +0 -0
  254. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/tutorials/tmy.ipynb +0 -0
  255. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/tutorials/tmy_and_diffuse_irrad_models.ipynb +0 -0
  256. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/tutorials/tmy_to_power.ipynb +0 -0
  257. {pvlib-0.11.0a1 → pvlib-0.11.2}/docs/tutorials/tracking.ipynb +0 -0
  258. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/__init__.py +0 -0
  259. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/albedo.py +0 -0
  260. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/bifacial/infinite_sheds.py +0 -0
  261. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/bifacial/pvfactors.py +0 -0
  262. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/bifacial/utils.py +0 -0
  263. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/12839.tm2 +0 -0
  264. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/703165TY.csv +0 -0
  265. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/723170TYA.CSV +0 -0
  266. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/ASTMG173.csv +0 -0
  267. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/Altitude.h5 +0 -0
  268. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/BIRD_08_16_2012.csv +0 -0
  269. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/BIRD_08_16_2012_patm.csv +0 -0
  270. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/Burlington, United States SolarAnywhere Time Series 2021 Lat_44_465 Lon_-73_205 TMY3 format.csv +0 -0
  271. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/Burlington, United States SolarAnywhere Time Series 20210101 to 20210103 Lat_44_4675 Lon_-73_2075 SA format.csv +0 -0
  272. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/Burlington, United States SolarAnywhere Typical GHI Year Lat_44_465 Lon_-73_205 SA format.csv +0 -0
  273. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/CPS SCH275KTL-DO-US-800-250kW_275kVA_1.OND +0 -0
  274. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/CRNS0101-05-2019-AZ_Tucson_11_W.txt +0 -0
  275. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/CRN_with_problems.txt +0 -0
  276. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/ET-M772BH550GL.PAN +0 -0
  277. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/LinkeTurbidities.h5 +0 -0
  278. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/NLD_Amsterdam062400_IWEC.epw +0 -0
  279. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/PVsyst_demo.csv +0 -0
  280. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/PVsyst_demo_model.csv +0 -0
  281. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/SRML-day-EUPO1801.txt +0 -0
  282. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/abq19056.dat +0 -0
  283. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/adr-library-cec-inverters-2019-03-05.csv +0 -0
  284. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/bishop88_numerical_precision.csv +0 -0
  285. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/bsrn-lr0100-pay0616.dat +0 -0
  286. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/bsrn-pay0616.dat.gz +0 -0
  287. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/cams_mcclear_1min_verbose.csv +0 -0
  288. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/cams_mcclear_monthly.csv +0 -0
  289. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/cams_radiation_1min_verbose.csv +0 -0
  290. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/cams_radiation_monthly.csv +0 -0
  291. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/detect_clearsky_data.csv +0 -0
  292. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/detect_clearsky_threshold_data.csv +0 -0
  293. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/greensboro_kimber_soil_manwash.dat +0 -0
  294. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/greensboro_kimber_soil_nowash.dat +0 -0
  295. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/inverter_fit_snl_meas.csv +0 -0
  296. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/inverter_fit_snl_sim.csv +0 -0
  297. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/ivtools_numdiff.csv +0 -0
  298. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/midc_20181014.txt +0 -0
  299. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/midc_raw_20181018.txt +0 -0
  300. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/midc_raw_short_header_20191115.txt +0 -0
  301. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/msn19056.dat +0 -0
  302. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/precise_iv_curves1.json +0 -0
  303. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/precise_iv_curves2.json +0 -0
  304. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/precise_iv_curves_parameter_sets1.csv +0 -0
  305. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/precise_iv_curves_parameter_sets2.csv +0 -0
  306. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/pvgis_hourly_Timeseries_45.000_8.000_SA2_10kWp_CIS_5_2a_2013_2014.json +0 -0
  307. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/pvgis_hourly_Timeseries_45.000_8.000_SA_30deg_0deg_2016_2016.csv +0 -0
  308. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/pvwatts_8760_rackmount.csv +0 -0
  309. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/pvwatts_8760_roofmount.csv +0 -0
  310. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/sam-library-cec-inverters-2019-03-05.csv +0 -0
  311. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/sam-library-cec-modules-2019-03-05.csv +0 -0
  312. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/sam-library-sandia-modules-2015-6-30.csv +0 -0
  313. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/singleaxis_tracker_wslope.csv +0 -0
  314. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/soiling_hsu_example_inputs.csv +0 -0
  315. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/spectrl2_example_spectra.csv +0 -0
  316. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/surfrad-slv16001.dat +0 -0
  317. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/test_psm3_2017.csv +0 -0
  318. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/test_psm3_2019_5min.csv +0 -0
  319. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/test_psm3_tmy-2017.csv +0 -0
  320. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/test_read_psm3.csv +0 -0
  321. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/data/test_read_pvgis_horizon.csv +0 -0
  322. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/inverter.py +0 -0
  323. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/__init__.py +0 -0
  324. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/acis.py +0 -0
  325. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/bsrn.py +0 -0
  326. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/crn.py +0 -0
  327. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/epw.py +0 -0
  328. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/panond.py +0 -0
  329. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/psm3.py +0 -0
  330. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/sodapro.py +0 -0
  331. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/solaranywhere.py +0 -0
  332. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/solargis.py +0 -0
  333. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/solcast.py +0 -0
  334. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/solrad.py +0 -0
  335. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/srml.py +0 -0
  336. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/surfrad.py +0 -0
  337. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/iotools/tmy.py +0 -0
  338. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/ivtools/__init__.py +0 -0
  339. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/ivtools/sde.py +0 -0
  340. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/ivtools/utils.py +0 -0
  341. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/pvarray.py +0 -0
  342. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/scaling.py +0 -0
  343. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/snow.py +0 -0
  344. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/soiling.py +0 -0
  345. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/spa_c_files/README.md +0 -0
  346. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/spa_c_files/__init__.py +0 -0
  347. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/spa_c_files/cspa_py.pxd +0 -0
  348. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/spa_c_files/setup.py +0 -0
  349. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/spa_c_files/spa_py.pyx +0 -0
  350. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/spa_c_files/spa_py_example.py +0 -0
  351. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/__init__.py +0 -0
  352. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/bifacial/__init__.py +0 -0
  353. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/bifacial/test_infinite_sheds.py +0 -0
  354. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/bifacial/test_pvfactors.py +0 -0
  355. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/bifacial/test_utils.py +0 -0
  356. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/conftest.py +0 -0
  357. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/__init__.py +0 -0
  358. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_acis.py +0 -0
  359. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_bsrn.py +0 -0
  360. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_crn.py +0 -0
  361. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_epw.py +0 -0
  362. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_midc.py +0 -0
  363. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_panond.py +0 -0
  364. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_psm3.py +0 -0
  365. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_sodapro.py +0 -0
  366. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_solaranywhere.py +0 -0
  367. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_solargis.py +0 -0
  368. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_solcast.py +0 -0
  369. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_solrad.py +0 -0
  370. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_srml.py +0 -0
  371. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_surfrad.py +0 -0
  372. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/iotools/test_tmy.py +0 -0
  373. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/ivtools/__init__.py +0 -0
  374. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/ivtools/test_sde.py +0 -0
  375. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/ivtools/test_utils.py +0 -0
  376. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_albedo.py +0 -0
  377. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_iam.py +0 -0
  378. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_inverter.py +0 -0
  379. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_location.py +0 -0
  380. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_modelchain.py +0 -0
  381. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_numerical_precision.py +0 -0
  382. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_pvarray.py +0 -0
  383. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_scaling.py +0 -0
  384. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_shading.py +0 -0
  385. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_singlediode.py +0 -0
  386. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_snow.py +0 -0
  387. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_soiling.py +0 -0
  388. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_temperature.py +0 -0
  389. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_tools.py +0 -0
  390. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_tracking.py +0 -0
  391. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/tests/test_transformer.py +0 -0
  392. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/transformer.py +0 -0
  393. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib/version.py +0 -0
  394. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib.egg-info/dependency_links.txt +0 -0
  395. {pvlib-0.11.0a1 → pvlib-0.11.2}/pvlib.egg-info/top_level.txt +0 -0
  396. {pvlib-0.11.0a1 → pvlib-0.11.2}/setup.cfg +0 -0
  397. {pvlib-0.11.0a1 → pvlib-0.11.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pvlib
3
- Version: 0.11.0a1
3
+ Version: 0.11.2
4
4
  Summary: A set of functions and classes for simulating the performance of photovoltaic energy systems.
5
5
  Home-page: https://github.com/pvlib/pvlib-python
6
6
  Author-email: pvlib python Developers <pvlib-admin@googlegroups.com>
@@ -15,11 +15,11 @@ Classifier: Intended Audience :: Science/Research
15
15
  Classifier: Programming Language :: Python
16
16
  Classifier: Programming Language :: Python :: 3
17
17
  Classifier: Topic :: Scientific/Engineering
18
- Requires-Python: >=3.8
18
+ Requires-Python: >=3.9
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
21
  License-File: AUTHORS.md
22
- Requires-Dist: numpy>=1.17.3
22
+ Requires-Dist: numpy>=1.19.3
23
23
  Requires-Dist: pandas>=1.3.0
24
24
  Requires-Dist: pytz
25
25
  Requires-Dist: requests
@@ -34,14 +34,17 @@ Requires-Dist: solarfactors; extra == "optional"
34
34
  Requires-Dist: statsmodels; extra == "optional"
35
35
  Provides-Extra: doc
36
36
  Requires-Dist: ipython; extra == "doc"
37
+ Requires-Dist: pickleshare; extra == "doc"
37
38
  Requires-Dist: matplotlib; extra == "doc"
38
- Requires-Dist: sphinx==4.5.0; extra == "doc"
39
- Requires-Dist: pydata-sphinx-theme==0.8.1; extra == "doc"
39
+ Requires-Dist: sphinx==7.3.7; extra == "doc"
40
+ Requires-Dist: pydata-sphinx-theme==0.15.4; extra == "doc"
40
41
  Requires-Dist: sphinx-gallery; extra == "doc"
41
- Requires-Dist: docutils==0.15.2; extra == "doc"
42
+ Requires-Dist: docutils==0.21; extra == "doc"
42
43
  Requires-Dist: pillow; extra == "doc"
43
- Requires-Dist: sphinx-toggleprompt>=0.0.5; extra == "doc"
44
+ Requires-Dist: sphinx-toggleprompt==0.5.2; extra == "doc"
45
+ Requires-Dist: sphinx-favicon; extra == "doc"
44
46
  Requires-Dist: solarfactors; extra == "doc"
47
+ Requires-Dist: sphinx-hoverxref; extra == "doc"
45
48
  Provides-Extra: test
46
49
  Requires-Dist: pytest; extra == "test"
47
50
  Requires-Dist: pytest-cov; extra == "test"
@@ -81,7 +81,7 @@ Contributing
81
81
  ============
82
82
 
83
83
  We need your help to make pvlib-python a great tool!
84
- Please see the [Contributing page](http://pvlib-python.readthedocs.io/en/stable/contributing.html) for more on how you can contribute.
84
+ Please see the [Contributing page](https://pvlib-python.readthedocs.io/en/stable/contributing/index.html) for more on how you can contribute.
85
85
  The long-term success of pvlib-python requires substantial community support.
86
86
 
87
87
 
@@ -0,0 +1,129 @@
1
+ """
2
+ Plot Irradiance Non-uniformity Loss
3
+ ===================================
4
+
5
+ Calculate the DC power lost to irradiance non-uniformity in a bifacial PV
6
+ array.
7
+ """
8
+
9
+ # %%
10
+ # The incident irradiance on the backside of a bifacial PV module is
11
+ # not uniform due to neighboring rows, the ground albedo, and site conditions.
12
+ # When each cell works at different irradiance levels, the power produced by
13
+ # the module is less than the sum of the power produced by each cell since the
14
+ # maximum power point (MPP) of each cell is different, but cells connected in
15
+ # series will operate at the same current.
16
+ # This is known as irradiance non-uniformity loss.
17
+ #
18
+ # Calculating the IV curve of each cell and then matching the working point of
19
+ # the whole module is computationally expensive, so a simple model to account
20
+ # for this loss is of interest. Deline et al. [1]_ proposed a model based on
21
+ # the Relative Mean Absolute Difference (RMAD) of the irradiance of each cell.
22
+ # They considered the standard deviation of the cells' irradiances, but they
23
+ # found that the RMAD was a better predictor of the mismatch loss.
24
+ #
25
+ # This example demonstrates how to model the irradiance non-uniformity loss
26
+ # from the irradiance levels of each cell in a PV module.
27
+ #
28
+ # The function
29
+ # :py:func:`pvlib.bifacial.power_mismatch_deline` is
30
+ # used to transform the Relative Mean Absolute Difference (RMAD) of the
31
+ # irradiance into a power loss mismatch. Down below you will find a
32
+ # numpy-based implementation of the RMAD function.
33
+ #
34
+ # References
35
+ # ----------
36
+ # .. [1] C. Deline, S. Ayala Pelaez, S. MacAlpine, and C. Olalla, 'Estimating
37
+ # and parameterizing mismatch power loss in bifacial photovoltaic
38
+ # systems', Progress in Photovoltaics: Research and Applications, vol. 28,
39
+ # no. 7, pp. 691-703, 2020, :doi:`10.1002/pip.3259`.
40
+ #
41
+ # .. sectionauthor:: Echedey Luis <echelual (at) gmail.com>
42
+
43
+ # %%
44
+ # Problem description
45
+ # -------------------
46
+ # Let's set a fixed irradiance to each cell row of the PV array with the values
47
+ # described in Figure 1 (A), [1]_. We will cover this case for educational
48
+ # purposes, although it can be achieved with the packages
49
+ # `solarfactors <https://github.com/pvlib/solarfactors/>`_ and
50
+ # `bifacial_radiance <https://github.com/NREL/bifacial_radiance>`_.
51
+ #
52
+ # Here we set and plot the global irradiance level of each cell.
53
+
54
+ import numpy as np
55
+ import matplotlib.pyplot as plt
56
+ from matplotlib.cm import ScalarMappable
57
+ from matplotlib.colors import Normalize
58
+
59
+ from pvlib.bifacial import power_mismatch_deline
60
+
61
+ x = np.arange(12, 0, -1)
62
+ y = np.arange(6, 0, -1)
63
+ cells_irrad = np.repeat([1059, 976, 967, 986, 1034, 1128], len(x)).reshape(
64
+ len(y), len(x)
65
+ )
66
+
67
+ # plot the irradiance levels of each cell
68
+ color_map = "gray"
69
+ color_norm = Normalize(930, 1150)
70
+
71
+ fig, ax = plt.subplots()
72
+ fig.suptitle("Global Irradiance Levels of Each Cell")
73
+ fig.colorbar(
74
+ ScalarMappable(cmap=color_map, norm=color_norm),
75
+ ax=ax,
76
+ orientation="vertical",
77
+ label="$[W/m^2]$",
78
+ )
79
+ ax.set_aspect("equal")
80
+ ax.pcolormesh(
81
+ x,
82
+ y,
83
+ cells_irrad,
84
+ shading="nearest",
85
+ edgecolors="black",
86
+ cmap=color_map,
87
+ norm=color_norm,
88
+ )
89
+
90
+ # %%
91
+ # Relative Mean Absolute Difference
92
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
93
+ # Calculate the Relative Mean Absolute Difference (RMAD) of the cells'
94
+ # irradiances with the following function, Eq. (4) of [1]_:
95
+ #
96
+ # .. math::
97
+ #
98
+ # \Delta \left[ unitless \right] = \frac{1}{n^2 \bar{G}_{total}}
99
+ # \sum_{i=1}^{n} \sum_{j=1}^{n} \lvert G_{total,i} - G_{total,j} \rvert
100
+ #
101
+
102
+
103
+ def rmad(data):
104
+ """
105
+ Relative Mean Absolute Difference. Output is [Unitless]. Eq. (4) of [1]_.
106
+ """
107
+ mean = np.mean(data)
108
+ mad = np.mean(np.absolute(np.subtract.outer(data, data)))
109
+ return mad / mean
110
+
111
+
112
+ rmad_cells = rmad(cells_irrad)
113
+
114
+ # this is the same as a column's RMAD!
115
+ print(rmad_cells == rmad(cells_irrad[:, 0]))
116
+
117
+ # %%
118
+ # Mismatch Loss
119
+ # ^^^^^^^^^^^^^
120
+ # Calculate the power loss ratio due to the irradiance non-uniformity
121
+ # with :py:func:`pvlib.bifacial.power_mismatch_deline`.
122
+
123
+ mismatch_loss = power_mismatch_deline(rmad_cells)
124
+
125
+ print(f"RMAD of the cells' irradiance: {rmad_cells:.3} [unitless]")
126
+ print(
127
+ "Power loss due to the irradiance non-uniformity: "
128
+ + f"{mismatch_loss:.3} [unitless]"
129
+ )
@@ -0,0 +1,2 @@
1
+ Floating PV Systems Modelling
2
+ -----------------------------
@@ -0,0 +1,230 @@
1
+ r"""
2
+ Temperature modeling for floating PV
3
+ ================================================
4
+
5
+ This example uses the PVSyst temperature model to calculate
6
+ cell temperature for floating photovoltaic (FPV) systems.
7
+
8
+ One of the primary benefits attributed to FPV systems is the potential
9
+ for lower operating temperatures, which are expected to increase the
10
+ operating efficiency. In general, the temperature at which a photovoltaic
11
+ module operates is influenced by various factors including solar radiation,
12
+ ambient temperature, wind speed and direction, and the characteristics of the
13
+ cell and module materials, as well as the mounting structure.
14
+
15
+ A popular model for calculating PV cell temperature is the
16
+ empirical heat loss factor model suggested by Faiman
17
+ (:py:func:`pvlib.temperature.faiman`). A modified version of this model is
18
+ has been proposed by PVSyst (:py:func:`~pvlib.temperature.pvsyst_cell`).
19
+ The PVSyst model for cell temperature :math:`T_{C}` is given by:
20
+
21
+ .. math::
22
+
23
+ T_{C} = T_{a} + \frac{\alpha \cdot E \cdot (1 - \eta_{m})}{U_{c} + U_{v} \cdot WS},
24
+
25
+ where :math:`E` is the plane-of-array irradiance, :math:`T_{a}` is the
26
+ ambient air temperature, :math:`WS` is the wind speed, :math:`\alpha` is the
27
+ absorbed fraction of the incident irradiance, :math:`\eta_{m}` is the
28
+ electrical efficiency of the module, :math:`U_{c}` is the wind-independent heat
29
+ loss coefficient, and :math:`U_{v}` is the wind-dependent heat loss coefficient.
30
+ It should be noted that in many cases, similar to land-based PV systems,
31
+ the wind-dependent heat loss coefficient (:math:`U_{v}`) can be set to zero,
32
+ and the denominator is thus reduced to a single combined U-value
33
+ (:math:`U_{c}`).
34
+
35
+ However, the default heat loss coefficient values of the PVSyst model were
36
+ specified for land-based PV systems and are not necessarily representative
37
+ of FPV systems.
38
+
39
+ For FPV systems, the module's operating temperature, much like in land-based
40
+ systems, is mainly influenced by the mounting structure (which significantly
41
+ affects both U-value coefficients), wind, and air temperature. Thus, factors
42
+ that help reduce operating temperatures in such systems include lower air
43
+ temperatures and changes in air flow beneath the modules (wind/convection).
44
+ In some designs, where the modules are in direct thermal contact with water,
45
+ cooling effectiveness is largely dictated by the water temperature.
46
+
47
+ Systems with closely packed modules and restricted airflow behind the modules
48
+ generally exhibit lower heat loss coefficients compared to those with better
49
+ airflow behind the modules.
50
+
51
+ The table below gives heat loss coefficients derived for different FPV systems
52
+ and locations as found in the literature. It should be noted that, for some
53
+ systems, there are two sets of coefficients, where the second set uses only
54
+ one heat loss coefficient (i.e., only :math:`U_{c}`).
55
+
56
+ .. table:: Heat transfer coefficients for different PV systems
57
+ :widths: 40 15 15 15 15
58
+
59
+ +--------------------------+-------------+--------------------------------+----------------------------------------+-----------+
60
+ | System | Location |:math:`U_{c}` | :math:`U_{v}` | Reference |
61
+ | | |:math:`[\frac{W}{m^2 \cdot K}]` | :math:`[\frac{W}{m^3 \cdot K \cdot s}]`| |
62
+ +==========================+=============+================================+========================================+===========+
63
+ | - Monofacial module | Netherlands | 24.4 | 6.5 | [1]_ |
64
+ | - Open structure | | | | |
65
+ | - Two-axis tracking | | 57 | 0 | |
66
+ | - Small water footprint | | | | |
67
+ +--------------------------+-------------+--------------------------------+----------------------------------------+-----------+
68
+ | - Monofacial module | Netherlands | 25.2 | 3.7 | [1]_ |
69
+ | - Closed structure | | | | |
70
+ | - Large water footprint | | 37 | 0 | |
71
+ +--------------------------+-------------+--------------------------------+----------------------------------------+-----------+
72
+ | - Monofacial module | Singapore | 34.8 | 0.8 | [1]_ |
73
+ | - Closed structure | | | | |
74
+ | - Large water footprint | | 36 | 0 | |
75
+ +--------------------------+-------------+--------------------------------+----------------------------------------+-----------+
76
+ | - Monofacial module | Singapore | 18.9 | 8.9 | [1]_ |
77
+ | - Closed structure | | | | |
78
+ | - Medium water footprint | | 41 | 0 | |
79
+ +--------------------------+-------------+--------------------------------+----------------------------------------+-----------+
80
+ | - Monofacial module | Singapore | 35.3 | 8.9 | [1]_ |
81
+ | - Open structure | | | | |
82
+ | - Free-standing | | 55 | 0 | |
83
+ +--------------------------+-------------+--------------------------------+----------------------------------------+-----------+
84
+ | - Monofacial module | Norway | 71 | 0 | [2]_ |
85
+ | - In contact with water | | | | |
86
+ | - Calculated using water | | | | |
87
+ | temperature as | | | | |
88
+ | :math:`T_{amb}` | | | | |
89
+ +--------------------------+-------------+--------------------------------+----------------------------------------+-----------+
90
+ | - Monofacial module | South Italy | 31.9 | 1.5 | [3]_ |
91
+ | - Open structure | | | | |
92
+ | - Free-standing | | | | |
93
+ +--------------------------+-------------+--------------------------------+----------------------------------------+-----------+
94
+ | - Bifacial module | South Italy | 35.2 | 1.5 | [3]_ |
95
+ | - Open structure | | | | |
96
+ | - Free-standing | | | | |
97
+ +--------------------------+-------------+--------------------------------+----------------------------------------+-----------+
98
+
99
+ References
100
+ ----------
101
+ .. [1] Dörenkämper M., Wahed A., Kumar A., de Jong M., Kroon J., Reindl T.
102
+ (2021), 'The cooling effect of floating PV in two different climate zones:
103
+ A comparison of field test data from the Netherlands and Singapore'
104
+ Solar Energy, vol. 214, pp. 239-247, :doi:`10.1016/j.solener.2020.11.029`.
105
+
106
+ .. [2] Kjeldstad T., Lindholm D., Marstein E., Selj J. (2021), 'Cooling of
107
+ floating photovoltaics and the importance of water temperature', Solar
108
+ Energy, vol. 218, pp. 544-551, :doi:`10.1016/j.solener.2021.03.022`.
109
+
110
+ .. [3] Tina G.M., Scavo F.B., Merlo L., Bizzarri F. (2021), 'Comparative
111
+ analysis of monofacial and bifacial photovoltaic modules for floating
112
+ power plants', Applied Energy, vol 281, pp. 116084,
113
+ :doi:`10.1016/j.apenergy.2020.116084`.
114
+ """ # noqa: E501
115
+
116
+ # %%
117
+ # Read example weather data
118
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^
119
+ # Read weather data from a TMY3 file and calculate the solar position and
120
+ # the plane-of-array irradiance.
121
+
122
+ import pvlib
123
+ import matplotlib.pyplot as plt
124
+ from pathlib import Path
125
+
126
+ # Assume a FPV system on a lake with the following specifications
127
+ tilt = 30 # degrees
128
+ azimuth = 180 # south-facing
129
+
130
+ # Datafile found in the pvlib distribution
131
+ data_file = Path(pvlib.__path__[0]).joinpath('data', '723170TYA.CSV')
132
+
133
+ tmy, metadata = pvlib.iotools.read_tmy3(
134
+ data_file, coerce_year=2002, map_variables=True
135
+ )
136
+ tmy = tmy.filter(
137
+ ['ghi', 'dni', 'dni_extra', 'dhi', 'temp_air', 'wind_speed', 'pressure']
138
+ ) # remaining columns are not needed
139
+ tmy = tmy['2002-06-06 00:00':'2002-06-06 23:59'] # select period
140
+
141
+ solar_position = pvlib.solarposition.get_solarposition(
142
+ # TMY timestamp is at end of hour, so shift to center of interval
143
+ tmy.index.shift(freq='-30T'),
144
+ latitude=metadata['latitude'],
145
+ longitude=metadata['longitude'],
146
+ altitude=metadata['altitude'],
147
+ pressure=tmy['pressure'] * 100, # convert from millibar to Pa
148
+ temperature=tmy['temp_air'],
149
+ )
150
+ solar_position.index = tmy.index # reset index to end of the hour
151
+
152
+ # Albedo calculation for inland water bodies
153
+ albedo = pvlib.albedo.inland_water_dvoracek(
154
+ solar_elevation=solar_position['elevation'],
155
+ surface_condition='clear_water_no_waves'
156
+ )
157
+
158
+ # Use transposition model to find plane-of-array irradiance
159
+ irradiance = pvlib.irradiance.get_total_irradiance(
160
+ surface_tilt=tilt,
161
+ surface_azimuth=azimuth,
162
+ solar_zenith=solar_position['apparent_zenith'],
163
+ solar_azimuth=solar_position['azimuth'],
164
+ dni=tmy['dni'],
165
+ dni_extra=tmy['dni_extra'],
166
+ ghi=tmy['ghi'],
167
+ dhi=tmy['dhi'],
168
+ albedo=albedo,
169
+ model='haydavies'
170
+ )
171
+
172
+ # %%
173
+ # Calculate and plot cell temperature
174
+ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
175
+ # The temperature of the PV cell is calculated for lake-based floating PV
176
+ # systems.
177
+
178
+ # Make a dictionary containing all the sets of coefficients presented in the
179
+ # above table.
180
+ heat_loss_coeffs = {
181
+ 'open_structure_small_footprint_tracking_NL': [24.4, 6.5, 'C0', 'solid'],
182
+ 'open_structure_small_footprint_tracking_NL_2': [57, 0, 'C0', 'dashed'],
183
+ 'closed_structure_large_footprint_NL': [25.2, 3.7, 'C1', 'solid'],
184
+ 'closed_structure_large_footprint_NL_2': [37, 0, 'C1', 'dashed'],
185
+ 'closed_structure_large_footprint_SG': [34.8, 0.8, 'C2', 'solid'],
186
+ 'closed_structure_large_footprint_SG_2': [36, 0, 'C2', 'dashed'],
187
+ 'closed_structure_medium_footprint_SG': [18.9, 8.9, 'C3', 'solid'],
188
+ 'closed_structure_medium_footprint_SG_2': [41, 0, 'C3', 'dashed'],
189
+ 'open_structure_free_standing_SG': [35.3, 8.9, 'C4', 'solid'],
190
+ 'open_structure_free_standing_SG_2': [55, 0, 'C4', 'dashed'],
191
+ 'in_contact_with_water_NO': [71, 0, 'C5', 'solid'],
192
+ 'open_structure_free_standing_IT': [31.9, 1.5, 'C6', 'solid'],
193
+ 'open_structure_free_standing_bifacial_IT': [35.2, 1.5, 'C7', 'solid'],
194
+ 'default_PVSyst_coeffs_for_land_systems': [29.0, 0, 'C8', 'solid']
195
+ }
196
+
197
+ # Plot the cell temperature for each set of the above heat loss coefficients
198
+ for coeffs in heat_loss_coeffs:
199
+ T_cell = pvlib.temperature.pvsyst_cell(
200
+ poa_global=irradiance['poa_global'],
201
+ temp_air=tmy['temp_air'],
202
+ wind_speed=tmy['wind_speed'],
203
+ u_c=heat_loss_coeffs[coeffs][0],
204
+ u_v=heat_loss_coeffs[coeffs][1]
205
+ )
206
+ # Convert Dataframe Indexes to Hour format to make plotting easier
207
+ T_cell.index = T_cell.index.strftime("%H")
208
+ plt.plot(T_cell, label=coeffs, c=heat_loss_coeffs[coeffs][2],
209
+ ls=heat_loss_coeffs[coeffs][3], alpha=0.8)
210
+
211
+ plt.xlabel('Hour')
212
+ plt.ylabel('PV cell temperature [°C]')
213
+ plt.ylim(10, 45)
214
+ plt.xlim('06', '20')
215
+ plt.grid()
216
+ plt.legend(loc='upper left', frameon=False, ncols=2, fontsize='x-small',
217
+ bbox_to_anchor=(0, -0.2))
218
+ plt.tight_layout()
219
+ plt.show()
220
+
221
+ # %%
222
+ # The figure above illustrates the necessity of choosing appropriate heat loss
223
+ # coefficients when using the PVSyst model for calculating the cell temperature
224
+ # for floating PV systems. A difference of up to 10.3 °C was obtained when
225
+ # using the default PVSyst coefficients versus using coefficients for systems
226
+ # where panels are in contact with water.
227
+ #
228
+ # It should be noted that, using the single combined U-value versus the
229
+ # :math:`U_c` and :math:`U_v` gives significantly different results, even
230
+ # when using the coefficients derived from the same system.
@@ -32,6 +32,8 @@ class SeasonalTiltMount(pvsystem.AbstractMount):
32
32
  surface_azimuth: float = 180.0
33
33
 
34
34
  def get_orientation(self, solar_zenith, solar_azimuth):
35
+ # note: determining tilt based on month may produce different
36
+ # results depending on the time zone of the timestamps
35
37
  tilts = [self.monthly_tilts[m-1] for m in solar_zenith.index.month]
36
38
  return pd.DataFrame({
37
39
  'surface_tilt': tilts,
@@ -104,6 +104,7 @@ df_monthly = 100 * (df_monthly.divide(ghi_monthly, axis=0) - 1)
104
104
  df_monthly.plot()
105
105
  plt.xlabel('Month of Year')
106
106
  plt.ylabel('Monthly Transposition Gain [%]')
107
+ plt.tight_layout()
107
108
  plt.show()
108
109
 
109
110
 
@@ -0,0 +1,126 @@
1
+ """
2
+ Use different Perez coefficients with the ModelChain
3
+ ====================================================
4
+
5
+ This example demonstrates how to customize the ModelChain
6
+ to use site-specific Perez transposition coefficients.
7
+ """
8
+
9
+ # %%
10
+ # The :py:class:`pvlib.modelchain.ModelChain` object provides a useful method
11
+ # for easily constructing a PV system model with a simple, unified interface.
12
+ # However, a user may want to customize the steps
13
+ # in the system model in various ways.
14
+ # One such example is during the irradiance transposition step.
15
+ # The Perez model perform very well on field data, but
16
+ # it requires a set of fitted coefficients from various sites.
17
+ # It has been noted that these coefficients can be specific to
18
+ # various climates, so users may see improved model accuracy
19
+ # when using a site-specific set of coefficients.
20
+ # However, the base :py:class:`~pvlib.modelchain.ModelChain`
21
+ # only supports the default coefficients.
22
+ # This example shows how the :py:class:`~pvlib.modelchain.ModelChain` can
23
+ # be adjusted to use a different set of Perez coefficients.
24
+
25
+ import pandas as pd
26
+ from pvlib.pvsystem import PVSystem
27
+ from pvlib.modelchain import ModelChain
28
+ from pvlib.temperature import TEMPERATURE_MODEL_PARAMETERS
29
+ from pvlib import iotools, location, irradiance
30
+ import pvlib
31
+ import os
32
+ import matplotlib.pyplot as plt
33
+
34
+ # load in TMY weather data from North Carolina included with pvlib
35
+ PVLIB_DIR = pvlib.__path__[0]
36
+ DATA_FILE = os.path.join(PVLIB_DIR, 'data', '723170TYA.CSV')
37
+
38
+ tmy, metadata = iotools.read_tmy3(DATA_FILE, coerce_year=1990,
39
+ map_variables=True)
40
+
41
+ weather_data = tmy[['ghi', 'dhi', 'dni', 'temp_air', 'wind_speed']]
42
+
43
+ loc = location.Location.from_tmy(metadata)
44
+
45
+ #%%
46
+ # Now, let's set up a standard PV model using the ``ModelChain``
47
+
48
+ surface_tilt = metadata['latitude']
49
+ surface_azimuth = 180
50
+
51
+ # define an example module and inverter
52
+ sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod')
53
+ cec_inverters = pvlib.pvsystem.retrieve_sam('cecinverter')
54
+ sandia_module = sandia_modules['Canadian_Solar_CS5P_220M___2009_']
55
+ cec_inverter = cec_inverters['ABB__MICRO_0_25_I_OUTD_US_208__208V_']
56
+
57
+ temp_params = TEMPERATURE_MODEL_PARAMETERS['sapm']['open_rack_glass_glass']
58
+
59
+ # define the system and ModelChain
60
+ system = PVSystem(arrays=None,
61
+ surface_tilt=surface_tilt,
62
+ surface_azimuth=surface_azimuth,
63
+ module_parameters=sandia_module,
64
+ inverter_parameters=cec_inverter,
65
+ temperature_model_parameters=temp_params)
66
+
67
+ mc = ModelChain(system, location=loc)
68
+
69
+ # %%
70
+ # Now, let's calculate POA irradiance values outside of the ``ModelChain``.
71
+ # We do this for both the default Perez coefficients and the desired
72
+ # alternative Perez coefficients. This enables comparison at the end.
73
+
74
+ # Cape Canaveral seems like the most likely match for climate
75
+ model_perez = 'capecanaveral1988'
76
+
77
+ solar_position = loc.get_solarposition(times=weather_data.index)
78
+ dni_extra = irradiance.get_extra_radiation(weather_data.index)
79
+
80
+ POA_irradiance = irradiance.get_total_irradiance(
81
+ surface_tilt=surface_tilt,
82
+ surface_azimuth=surface_azimuth,
83
+ dni=weather_data['dni'],
84
+ ghi=weather_data['ghi'],
85
+ dhi=weather_data['dhi'],
86
+ solar_zenith=solar_position['apparent_zenith'],
87
+ solar_azimuth=solar_position['azimuth'],
88
+ model='perez',
89
+ dni_extra=dni_extra)
90
+
91
+ POA_irradiance_new_perez = irradiance.get_total_irradiance(
92
+ surface_tilt=surface_tilt,
93
+ surface_azimuth=surface_azimuth,
94
+ dni=weather_data['dni'],
95
+ ghi=weather_data['ghi'],
96
+ dhi=weather_data['dhi'],
97
+ solar_zenith=solar_position['apparent_zenith'],
98
+ solar_azimuth=solar_position['azimuth'],
99
+ model='perez',
100
+ model_perez=model_perez,
101
+ dni_extra=dni_extra)
102
+
103
+ # %%
104
+ # Now, run the ``ModelChain`` with both sets of irradiance data and compare
105
+ # (note that to use POA irradiance as input to the ModelChain the method
106
+ # `.run_model_from_poa` is used):
107
+
108
+ mc.run_model_from_poa(POA_irradiance)
109
+ ac_power_default = mc.results.ac
110
+
111
+ mc.run_model_from_poa(POA_irradiance_new_perez)
112
+ ac_power_new_perez = mc.results.ac
113
+
114
+ start, stop = '1990-05-05 06:00:00', '1990-05-05 19:00:00'
115
+ plt.plot(ac_power_default.loc[start:stop],
116
+ label="Default Composite Perez Model")
117
+ plt.plot(ac_power_new_perez.loc[start:stop],
118
+ label="Cape Canaveral Perez Model")
119
+ plt.xticks(rotation=90)
120
+ plt.ylabel("AC Power ($W$)")
121
+ plt.legend()
122
+ plt.tight_layout()
123
+ plt.show()
124
+ # %%
125
+ # Note that there is a small, but noticeable difference from the default
126
+ # coefficients that may add up over longer periods of time.
@@ -114,6 +114,8 @@ for idx, case in conditions.iterrows():
114
114
  # mark the MPP
115
115
  plt.plot([v_mp], [i_mp], ls='', marker='o', c='k')
116
116
 
117
+ plt.xlim(left=0)
118
+ plt.ylim(bottom=0)
117
119
  plt.legend(loc=(1.0, 0))
118
120
  plt.xlabel('Module voltage [V]')
119
121
  plt.ylabel('Module current [A]')
@@ -47,7 +47,7 @@ import pvlib
47
47
  import pandas as pd
48
48
  import numpy as np
49
49
  import matplotlib.pyplot as plt
50
- from matplotlib.dates import ConciseDateFormatter
50
+ from matplotlib.dates import DateFormatter
51
51
 
52
52
  pitch = 4 # meters
53
53
  width = 1.5 # meters
@@ -235,10 +235,6 @@ for k, shade_losses in shade_losses_per_module.items():
235
235
  ax1.plot(times, shade_losses, label=k, linestyle=linestyle)
236
236
  ax1.legend(loc="upper center")
237
237
  ax1.grid()
238
- ax1.set_xlabel("Time")
239
- ax1.xaxis.set_major_formatter(
240
- ConciseDateFormatter("%H:%M", tz="Europe/Madrid")
241
- )
242
238
  ax1.set_ylabel(r"$P_{out}$ losses")
243
239
  ax1.set_title("Per module")
244
240
 
@@ -248,9 +244,7 @@ for k, shade_losses in shade_losses_per_row.items():
248
244
  ax2.legend(loc="upper center")
249
245
  ax2.grid()
250
246
  ax2.set_xlabel("Time")
251
- ax2.xaxis.set_major_formatter(
252
- ConciseDateFormatter("%H:%M", tz="Europe/Madrid")
253
- )
247
+ ax2.xaxis.set_major_formatter(DateFormatter("%H:%M", tz="Europe/Madrid"))
254
248
  ax2.set_ylabel(r"$P_{out}$ losses")
255
249
  ax2.set_title("Per row")
256
250
  fig.tight_layout()