pvlib 0.13.1a1__tar.gz → 0.14.0__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 (422) hide show
  1. {pvlib-0.13.1a1/pvlib.egg-info → pvlib-0.14.0}/PKG-INFO +3 -3
  2. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/irradiance-decomposition/plot_diffuse_fraction.py +2 -2
  3. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/shading/plot_simple_irradiance_adjustment_for_horizon_shading.py +1 -1
  4. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/spectrum/average_photon_energy.py +11 -10
  5. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/system-models/plot_oedi_9068.py +6 -4
  6. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/effects_on_pv_system_output/spectrum.rst +3 -2
  7. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/iotools.rst +21 -3
  8. pvlib-0.14.0/docs/sphinx/source/reference/irradiance/angle-of-incidence.rst +10 -0
  9. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/irradiance/clearness-index.rst +2 -2
  10. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/irradiance/decomposition.rst +2 -4
  11. pvlib-0.14.0/docs/sphinx/source/reference/irradiance/extraterrestrial-radiation.rst +9 -0
  12. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/irradiance/index.rst +5 -4
  13. pvlib-0.13.1a1/docs/sphinx/source/reference/irradiance/albedo.rst → pvlib-0.14.0/docs/sphinx/source/reference/irradiance/other.rst +5 -2
  14. pvlib-0.14.0/docs/sphinx/source/reference/irradiance/reverse-transposition.rst +10 -0
  15. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/irradiance/transposition.rst +3 -1
  16. pvlib-0.14.0/docs/sphinx/source/reference/location.rst +31 -0
  17. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/pv_modeling/sdm.rst +2 -0
  18. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/pv_modeling/system_models.rst +8 -0
  19. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/extras/faq.rst +1 -9
  20. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/getting_started/installation.rst +1 -1
  21. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/index.rst +1 -0
  22. pvlib-0.14.0/docs/sphinx/source/user_guide/modeling_topics/singlediode.rst +217 -0
  23. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/modeling_topics/spectrum.rst +20 -7
  24. pvlib-0.14.0/docs/sphinx/source/user_guide/modeling_topics/temperature.rst +107 -0
  25. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/modeling_topics/weather_data.rst +3 -2
  26. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.10.0.rst +3 -3
  27. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.10.2.rst +1 -1
  28. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.10.3.rst +1 -1
  29. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.11.0.rst +3 -3
  30. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.12.0.rst +1 -1
  31. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.13.0.rst +1 -1
  32. pvlib-0.14.0/docs/sphinx/source/whatsnew/v0.14.0.rst +80 -0
  33. pvlib-0.14.0/docs/sphinx/source/whatsnew/v0.14.1.rst +45 -0
  34. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.7.0.rst +1 -1
  35. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.7.1.rst +2 -2
  36. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.8.0.rst +1 -1
  37. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.8.1.rst +1 -1
  38. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.9.0.rst +2 -2
  39. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.9.1.rst +2 -2
  40. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.9.2.rst +1 -1
  41. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.9.5.rst +1 -1
  42. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew.rst +1 -0
  43. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/bifacial/infinite_sheds.py +3 -2
  44. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/inverter.py +2 -2
  45. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/__init__.py +2 -3
  46. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/acis.py +2 -2
  47. pvlib-0.14.0/pvlib/iotools/era5.py +207 -0
  48. pvlib-0.14.0/pvlib/iotools/merra2.py +196 -0
  49. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/psm4.py +0 -1
  50. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/irradiance.py +26 -25
  51. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/ivtools/sdm/__init__.py +2 -1
  52. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/ivtools/sdm/desoto.py +72 -0
  53. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/pvarray.py +130 -1
  54. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/pvsystem.py +135 -46
  55. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/singlediode.py +249 -52
  56. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/solarposition.py +1 -1
  57. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spa.py +1 -1
  58. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spectrum/__init__.py +3 -2
  59. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spectrum/mismatch.py +101 -0
  60. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/temperature.py +11 -12
  61. {pvlib-0.13.1a1 → pvlib-0.14.0/pvlib.egg-info}/PKG-INFO +3 -3
  62. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib.egg-info/SOURCES.txt +11 -6
  63. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib.egg-info/requires.txt +2 -2
  64. {pvlib-0.13.1a1 → pvlib-0.14.0}/pyproject.toml +5 -3
  65. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/conftest.py +39 -0
  66. pvlib-0.14.0/tests/iotools/test_era5.py +94 -0
  67. pvlib-0.14.0/tests/iotools/test_merra2.py +111 -0
  68. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_meteonorm.py +21 -11
  69. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_sodapro.py +2 -1
  70. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_solargis.py +2 -1
  71. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/ivtools/sdm/test_desoto.py +24 -0
  72. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/ivtools/test_sde.py +3 -3
  73. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/spectrum/test_mismatch.py +87 -0
  74. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_irradiance.py +19 -21
  75. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_modelchain.py +14 -2
  76. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_pvarray.py +39 -0
  77. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_pvsystem.py +84 -41
  78. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_singlediode.py +83 -14
  79. pvlib-0.13.1a1/docs/sphinx/source/reference/irradiance/class-methods.rst +0 -11
  80. pvlib-0.13.1a1/docs/sphinx/source/reference/irradiance/components.rst +0 -17
  81. pvlib-0.13.1a1/docs/sphinx/source/reference/location.rst +0 -11
  82. pvlib-0.13.1a1/docs/sphinx/source/user_guide/modeling_topics/singlediode.rst +0 -114
  83. pvlib-0.13.1a1/pvlib/iotools/psm3.py +0 -365
  84. pvlib-0.13.1a1/scripts/update_top_ranking_issues.py +0 -81
  85. pvlib-0.13.1a1/tests/iotools/test_psm3.py +0 -191
  86. {pvlib-0.13.1a1 → pvlib-0.14.0}/AUTHORS.md +0 -0
  87. {pvlib-0.13.1a1 → pvlib-0.14.0}/LICENSE +0 -0
  88. {pvlib-0.13.1a1 → pvlib-0.14.0}/MANIFEST.in +0 -0
  89. {pvlib-0.13.1a1 → pvlib-0.14.0}/README.md +0 -0
  90. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/README.rst +0 -0
  91. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/adr-pvarray/README.rst +0 -0
  92. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/adr-pvarray/plot_fit_to_matrix.py +0 -0
  93. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/adr-pvarray/plot_simulate_fast.py +0 -0
  94. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/adr-pvarray/plot_simulate_system.py +0 -0
  95. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/agrivoltaics/README.rst +0 -0
  96. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/agrivoltaics/plot_agrivoltaics_ground_irradiance.py +0 -0
  97. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/agrivoltaics/plot_diffuse_PAR_Spitters_relationship.py +0 -0
  98. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/bifacial/README.rst +0 -0
  99. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/bifacial/plot_bifi_model_mc.py +0 -0
  100. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/bifacial/plot_bifi_model_pvwatts.py +0 -0
  101. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/bifacial/plot_irradiance_nonuniformity_loss.py +0 -0
  102. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/bifacial/plot_pvfactors_fixed_tilt.py +0 -0
  103. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/floating-pv/README.rst +0 -0
  104. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/floating-pv/plot_floating_pv_cell_temperature.py +0 -0
  105. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/irradiance-decomposition/README.rst +0 -0
  106. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/irradiance-transposition/README.rst +0 -0
  107. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/irradiance-transposition/plot_ghi_transposition.py +0 -0
  108. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/irradiance-transposition/plot_interval_transposition_error.py +0 -0
  109. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/irradiance-transposition/plot_mixed_orientation.py +0 -0
  110. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/irradiance-transposition/plot_rtranpose_limitations.py +0 -0
  111. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/irradiance-transposition/plot_rtranpose_year.py +0 -0
  112. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/irradiance-transposition/plot_seasonal_tilt.py +0 -0
  113. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/irradiance-transposition/plot_transposition_gain.py +0 -0
  114. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/irradiance-transposition/use_perez_modelchain.py +0 -0
  115. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/iv-modeling/README.rst +0 -0
  116. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/iv-modeling/plot_singlediode.py +0 -0
  117. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/reflections/README.rst +0 -0
  118. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/reflections/plot_convert_iam_models.py +0 -0
  119. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/reflections/plot_diffuse_aoi_correction.py +0 -0
  120. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/reflections/plot_fit_iam_models.py +0 -0
  121. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/shading/README.rst +0 -0
  122. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/shading/plot_martinez_shade_loss.py +0 -0
  123. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/shading/plot_partial_module_shading_simple.py +0 -0
  124. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/shading/plot_passias_diffuse_shading.py +0 -0
  125. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/shading/plot_shaded_fraction1d_ns_hsat_example.py +0 -0
  126. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/soiling/README.rst +0 -0
  127. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/soiling/plot_fig3A_hsu_soiling_example.py +0 -0
  128. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/soiling/plot_greensboro_kimber_soiling.py +0 -0
  129. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/solar-position/README.rst +0 -0
  130. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/solar-position/plot_sunpath_diagrams.py +0 -0
  131. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/solar-tracking/README.rst +0 -0
  132. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/solar-tracking/plot_discontinuous_tracking.py +0 -0
  133. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/solar-tracking/plot_dual_axis_tracking.py +0 -0
  134. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/solar-tracking/plot_single_axis_tracking.py +0 -0
  135. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/solar-tracking/plot_single_axis_tracking_on_sloped_terrain.py +0 -0
  136. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/spectrum/README.rst +0 -0
  137. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/spectrum/plot_spectrl2_fig51A.py +0 -0
  138. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/spectrum/plot_standard_ASTM_G173-03.py +0 -0
  139. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/spectrum/spectral_factor.py +0 -0
  140. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/examples/system-models/README.rst +0 -0
  141. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/notes/Determining the average view factor from a module.pdf +0 -0
  142. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/Makefile +0 -0
  143. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/make.bat +0 -0
  144. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/Anderson_Jensen_2024_Fig3.png +0 -0
  145. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/Anderson_Mikofski_2020_Fig5.jpg +0 -0
  146. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/Coello_Boyle_2019_Fig3.png +0 -0
  147. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/OEDI_9068_daily_timeseries.png +0 -0
  148. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/OEDI_9068_inverter1_comparison.png +0 -0
  149. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/OEDI_9068_inverter2_comparison.png +0 -0
  150. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/PV_module_layout_cesardd.jpg +0 -0
  151. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/agrivoltaics_system.jpg +0 -0
  152. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/clonebutton.png +0 -0
  153. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/example_function_screenshot.png +0 -0
  154. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/ground_slope_angle_convention.png +0 -0
  155. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/pvlib_logo_horiz.png +0 -0
  156. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/pvlib_logo_vert.png +0 -0
  157. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/pvlib_powered_logo_horiz.png +0 -0
  158. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/pvlib_powered_logo_vert.png +0 -0
  159. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/tracker_azimuth_angle_convention.png +0 -0
  160. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_images/tracker_rotation_angle_convention.png +0 -0
  161. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_static/favicon-16x16.png +0 -0
  162. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_static/favicon-32x32.png +0 -0
  163. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_static/no_scrollbars.css +0 -0
  164. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_static/reference_format.css +0 -0
  165. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_static/tooltipster_color_theming.css +0 -0
  166. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_static/version-alert.js +0 -0
  167. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_templates/autosummary/class.rst +0 -0
  168. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_templates/autosummary/function.rst +0 -0
  169. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_templates/autosummary/method.rst +0 -0
  170. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/_templates/edit-this-page.html +0 -0
  171. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/conf.py +0 -0
  172. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/contributing/how_to_contribute_new_code.rst +0 -0
  173. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/contributing/index.rst +0 -0
  174. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/contributing/introduction_to_contributing.rst +0 -0
  175. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/contributing/style_guide.rst +0 -0
  176. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/contributing/testing.rst +0 -0
  177. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/index.rst +0 -0
  178. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/airmass_atmospheric.rst +0 -0
  179. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/bifacial.rst +0 -0
  180. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/classes.rst +0 -0
  181. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/clearsky.rst +0 -0
  182. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/effects_on_pv_system_output/index.rst +0 -0
  183. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/effects_on_pv_system_output/loss-models.rst +0 -0
  184. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/effects_on_pv_system_output/shading.rst +0 -0
  185. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/effects_on_pv_system_output/snow.rst +0 -0
  186. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/effects_on_pv_system_output/soiling.rst +0 -0
  187. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/index.rst +0 -0
  188. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/modelchain.rst +0 -0
  189. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/pv_modeling/iam.rst +0 -0
  190. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/pv_modeling/index.rst +0 -0
  191. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/pv_modeling/inverter.rst +0 -0
  192. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/pv_modeling/other.rst +0 -0
  193. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/pv_modeling/parameters.rst +0 -0
  194. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/pv_modeling/temperature.rst +0 -0
  195. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/scaling.rst +0 -0
  196. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/solarposition.rst +0 -0
  197. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/tracking.rst +0 -0
  198. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/reference/transformer.rst +0 -0
  199. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/extras/nomenclature.rst +0 -0
  200. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/getting_started/introtutorial.rst +0 -0
  201. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/getting_started/package_overview.rst +0 -0
  202. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/modeling_topics/bifacial.rst +0 -0
  203. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/modeling_topics/clearsky.rst +0 -0
  204. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/modeling_topics/modelchain.rst +0 -0
  205. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/modeling_topics/pvsystem.rst +0 -0
  206. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/user_guide/modeling_topics/timetimezones.rst +0 -0
  207. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.1.0.txt +0 -0
  208. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.10.1.rst +0 -0
  209. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.10.4.rst +0 -0
  210. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.10.5.rst +0 -0
  211. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.11.1.rst +0 -0
  212. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.11.2.rst +0 -0
  213. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.13.1.rst +0 -0
  214. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.2.0.txt +0 -0
  215. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.2.1.txt +0 -0
  216. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.2.2.txt +0 -0
  217. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.3.0.txt +0 -0
  218. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.3.1.txt +0 -0
  219. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.3.2.txt +0 -0
  220. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.3.3.txt +0 -0
  221. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.4.0.txt +0 -0
  222. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.4.1.txt +0 -0
  223. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.4.2.txt +0 -0
  224. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.4.3.txt +0 -0
  225. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.4.4.txt +0 -0
  226. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.4.5.txt +0 -0
  227. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.5.0.rst +0 -0
  228. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.5.1.rst +0 -0
  229. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.5.2.rst +0 -0
  230. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.6.0.rst +0 -0
  231. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.6.1.rst +0 -0
  232. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.6.2.rst +0 -0
  233. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.6.3.rst +0 -0
  234. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.7.2.rst +0 -0
  235. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.9.3.rst +0 -0
  236. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.9.4.rst +0 -0
  237. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/sphinx/source/whatsnew/v0.X.Y-example.rst +0 -0
  238. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/tutorials/atmosphere.ipynb +0 -0
  239. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/tutorials/irradiance.ipynb +0 -0
  240. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/tutorials/pvsystem.ipynb +0 -0
  241. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/tutorials/solarposition.ipynb +0 -0
  242. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/tutorials/tmy.ipynb +0 -0
  243. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/tutorials/tmy_and_diffuse_irrad_models.ipynb +0 -0
  244. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/tutorials/tmy_to_power.ipynb +0 -0
  245. {pvlib-0.13.1a1 → pvlib-0.14.0}/docs/tutorials/tracking.ipynb +0 -0
  246. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/__init__.py +0 -0
  247. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/_deprecation.py +0 -0
  248. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/albedo.py +0 -0
  249. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/atmosphere.py +0 -0
  250. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/bifacial/__init__.py +0 -0
  251. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/bifacial/loss_models.py +0 -0
  252. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/bifacial/pvfactors.py +0 -0
  253. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/bifacial/utils.py +0 -0
  254. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/clearsky.py +0 -0
  255. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/data/12839.tm2 +0 -0
  256. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/data/703165TY.csv +0 -0
  257. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/data/723170TYA.CSV +0 -0
  258. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/data/ASTMG173.csv +0 -0
  259. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/data/Altitude.h5 +0 -0
  260. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/data/LinkeTurbidities.h5 +0 -0
  261. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/data/adr-library-cec-inverters-2019-03-05.csv +0 -0
  262. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/data/sam-library-cec-inverters-2019-03-05.csv +0 -0
  263. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/data/sam-library-cec-modules-2019-03-05.csv +0 -0
  264. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/data/sam-library-sandia-modules-2015-6-30.csv +0 -0
  265. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/data/soiling_hsu_example_inputs.csv +0 -0
  266. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iam.py +0 -0
  267. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/bsrn.py +0 -0
  268. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/crn.py +0 -0
  269. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/epw.py +0 -0
  270. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/meteonorm.py +0 -0
  271. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/midc.py +0 -0
  272. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/nasa_power.py +0 -0
  273. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/panond.py +0 -0
  274. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/pvgis.py +0 -0
  275. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/sodapro.py +0 -0
  276. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/solaranywhere.py +0 -0
  277. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/solargis.py +0 -0
  278. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/solcast.py +0 -0
  279. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/solrad.py +0 -0
  280. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/srml.py +0 -0
  281. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/surfrad.py +0 -0
  282. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/iotools/tmy.py +0 -0
  283. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/ivtools/__init__.py +0 -0
  284. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/ivtools/sde.py +0 -0
  285. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/ivtools/sdm/_fit_desoto_pvsyst_sandia.py +0 -0
  286. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/ivtools/sdm/cec.py +0 -0
  287. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/ivtools/sdm/pvsyst.py +0 -0
  288. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/ivtools/utils.py +0 -0
  289. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/location.py +0 -0
  290. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/modelchain.py +0 -0
  291. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/scaling.py +0 -0
  292. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/shading.py +0 -0
  293. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/snow.py +0 -0
  294. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/soiling.py +0 -0
  295. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spa_c_files/README.md +0 -0
  296. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spa_c_files/__init__.py +0 -0
  297. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spa_c_files/cspa_py.pxd +0 -0
  298. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spa_c_files/setup.py +0 -0
  299. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spa_c_files/spa_py.pyx +0 -0
  300. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spa_c_files/spa_py_example.py +0 -0
  301. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spectrum/irradiance.py +0 -0
  302. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spectrum/response.py +0 -0
  303. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/spectrum/spectrl2.py +0 -0
  304. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/tools.py +0 -0
  305. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/tracking.py +0 -0
  306. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/transformer.py +0 -0
  307. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib/version.py +0 -0
  308. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib.egg-info/dependency_links.txt +0 -0
  309. {pvlib-0.13.1a1 → pvlib-0.14.0}/pvlib.egg-info/top_level.txt +0 -0
  310. {pvlib-0.13.1a1 → pvlib-0.14.0}/setup.cfg +0 -0
  311. {pvlib-0.13.1a1 → pvlib-0.14.0}/setup.py +0 -0
  312. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/__init__.py +0 -0
  313. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/bifacial/__init__.py +0 -0
  314. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/bifacial/test_infinite_sheds.py +0 -0
  315. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/bifacial/test_losses_models.py +0 -0
  316. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/bifacial/test_pvfactors.py +0 -0
  317. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/bifacial/test_utils.py +0 -0
  318. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/BIRD_08_16_2012.csv +0 -0
  319. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/BIRD_08_16_2012_patm.csv +0 -0
  320. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/Burlington, United States SolarAnywhere Time Series 2021 Lat_44_465 Lon_-73_205 TMY3 format.csv +0 -0
  321. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/Burlington, United States SolarAnywhere Time Series 20210101 to 20210103 Lat_44_4675 Lon_-73_2075 SA format.csv +0 -0
  322. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/Burlington, United States SolarAnywhere Typical GHI Year Lat_44_465 Lon_-73_205 SA format.csv +0 -0
  323. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/CPS SCH275KTL-DO-US-800-250kW_275kVA_1.OND +0 -0
  324. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/CRNS0101-05-2019-AZ_Tucson_11_W.txt +0 -0
  325. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/CRN_with_problems.txt +0 -0
  326. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/ET-M772BH550GL.PAN +0 -0
  327. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/NLD_Amsterdam062400_IWEC.epw +0 -0
  328. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/PVsyst_demo.csv +0 -0
  329. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/PVsyst_demo_model.csv +0 -0
  330. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/SRML-day-EUPO1801.txt +0 -0
  331. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/abq19056.dat +0 -0
  332. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/bishop88_numerical_precision.csv +0 -0
  333. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/bsrn-lr0100-pay0616.dat +0 -0
  334. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/bsrn-pay0616.dat.gz +0 -0
  335. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/cams_mcclear_1min_verbose.csv +0 -0
  336. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/cams_mcclear_monthly.csv +0 -0
  337. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/cams_radiation_1min_verbose.csv +0 -0
  338. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/cams_radiation_monthly.csv +0 -0
  339. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/detect_clearsky_data.csv +0 -0
  340. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/detect_clearsky_threshold_data.csv +0 -0
  341. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/greensboro_kimber_soil_manwash.dat +0 -0
  342. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/greensboro_kimber_soil_nowash.dat +0 -0
  343. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/inverter_fit_snl_meas.csv +0 -0
  344. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/inverter_fit_snl_sim.csv +0 -0
  345. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/ivtools_numdiff.csv +0 -0
  346. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/midc_20181014.txt +0 -0
  347. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/midc_raw_20181018.txt +0 -0
  348. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/midc_raw_short_header_20191115.txt +0 -0
  349. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/msn19056.dat +0 -0
  350. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/precise_iv_curves1.json +0 -0
  351. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/precise_iv_curves2.json +0 -0
  352. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/precise_iv_curves_parameter_sets1.csv +0 -0
  353. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/precise_iv_curves_parameter_sets2.csv +0 -0
  354. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/pvgis_hourly_Timeseries_45.000_8.000_SA2_10kWp_CIS_5_2a_2013_2014.json +0 -0
  355. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/pvgis_hourly_Timeseries_45.000_8.000_SA_30deg_0deg_2016_2016.csv +0 -0
  356. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/pvgis_tmy_meta.json +0 -0
  357. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/pvgis_tmy_test.csv +0 -0
  358. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/pvwatts_8760_rackmount.csv +0 -0
  359. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/pvwatts_8760_roofmount.csv +0 -0
  360. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/singleaxis_tracker_wslope.csv +0 -0
  361. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/spectrl2_example_spectra.csv +0 -0
  362. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/surfrad-slv16001.dat +0 -0
  363. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/test_psm3_2017.csv +0 -0
  364. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/test_psm3_2019_5min.csv +0 -0
  365. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/test_psm3_tmy-2017.csv +0 -0
  366. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/test_psm4_2023.csv +0 -0
  367. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/test_psm4_2023_5min.csv +0 -0
  368. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/test_psm4_full_disc_2023.csv +0 -0
  369. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/test_psm4_tmy-2023.csv +0 -0
  370. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/test_read_psm3.csv +0 -0
  371. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/test_read_psm4.csv +0 -0
  372. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/test_read_pvgis_horizon.csv +0 -0
  373. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/tmy_45.000_8.000_2005_2023.csv +0 -0
  374. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/tmy_45.000_8.000_2005_2023.epw +0 -0
  375. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/tmy_45.000_8.000_2005_2023.json +0 -0
  376. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/data/tmy_45.000_8.000_userhorizon.json +0 -0
  377. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/__init__.py +0 -0
  378. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_acis.py +0 -0
  379. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_bsrn.py +0 -0
  380. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_crn.py +0 -0
  381. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_epw.py +0 -0
  382. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_midc.py +0 -0
  383. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_nasa_power.py +0 -0
  384. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_panond.py +0 -0
  385. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_psm4.py +0 -0
  386. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_pvgis.py +0 -0
  387. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_solaranywhere.py +0 -0
  388. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_solcast.py +0 -0
  389. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_solrad.py +0 -0
  390. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_srml.py +0 -0
  391. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_surfrad.py +0 -0
  392. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/iotools/test_tmy.py +0 -0
  393. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/ivtools/__init__.py +0 -0
  394. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/ivtools/sdm/conftest.py +0 -0
  395. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/ivtools/sdm/test__fit_desoto_pvsyst_sandia.py +0 -0
  396. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/ivtools/sdm/test_cec.py +0 -0
  397. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/ivtools/sdm/test_pvsyst.py +0 -0
  398. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/ivtools/test_utils.py +0 -0
  399. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/spectrum/__init__.py +0 -0
  400. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/spectrum/conftest.py +0 -0
  401. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/spectrum/test_irradiance.py +0 -0
  402. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/spectrum/test_response.py +0 -0
  403. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/spectrum/test_spectrl2.py +0 -0
  404. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test__deprecation.py +0 -0
  405. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_albedo.py +0 -0
  406. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_atmosphere.py +0 -0
  407. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_clearsky.py +0 -0
  408. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_conftest.py +0 -0
  409. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_iam.py +0 -0
  410. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_inverter.py +0 -0
  411. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_location.py +0 -0
  412. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_numerical_precision.py +0 -0
  413. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_scaling.py +0 -0
  414. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_shading.py +0 -0
  415. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_snow.py +0 -0
  416. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_soiling.py +0 -0
  417. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_solarposition.py +0 -0
  418. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_spa.py +0 -0
  419. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_temperature.py +0 -0
  420. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_tools.py +0 -0
  421. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_tracking.py +0 -0
  422. {pvlib-0.13.1a1 → pvlib-0.14.0}/tests/test_transformer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pvlib
3
- Version: 0.13.1a1
3
+ Version: 0.14.0
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>
@@ -29,7 +29,7 @@ Requires-Dist: cython; extra == "optional"
29
29
  Requires-Dist: ephem; extra == "optional"
30
30
  Requires-Dist: nrel-pysam; extra == "optional"
31
31
  Requires-Dist: numba>=0.17.0; extra == "optional"
32
- Requires-Dist: solarfactors; extra == "optional"
32
+ Requires-Dist: solarfactors>=1.6.1; extra == "optional"
33
33
  Requires-Dist: statsmodels; extra == "optional"
34
34
  Provides-Extra: doc
35
35
  Requires-Dist: ipython; extra == "doc"
@@ -42,7 +42,7 @@ Requires-Dist: docutils==0.21; extra == "doc"
42
42
  Requires-Dist: pillow; extra == "doc"
43
43
  Requires-Dist: sphinx-toggleprompt==0.5.2; extra == "doc"
44
44
  Requires-Dist: sphinx-favicon; extra == "doc"
45
- Requires-Dist: solarfactors; extra == "doc"
45
+ Requires-Dist: solarfactors>=1.6.1; extra == "doc"
46
46
  Requires-Dist: sphinx-hoverxref~=1.4.2; extra == "doc"
47
47
  Provides-Extra: test
48
48
  Requires-Dist: pytest; extra == "test"
@@ -44,7 +44,7 @@ solpos.index = greensboro.index # reset index to end of the hour
44
44
  # %%
45
45
  # pvlib Decomposition Functions
46
46
  # -----------------------------
47
- # Methods for separating DHI into diffuse and direct components include:
47
+ # Methods for separating GHI into diffuse and direct components include:
48
48
  # `DISC`_, `DIRINT`_, `Erbs`_, and `Boland`_.
49
49
 
50
50
  # %%
@@ -112,7 +112,7 @@ out_boland = out_boland.rename(
112
112
  # ----------------
113
113
  # In the plots below we compare the four decomposition models to the TMY3 file
114
114
  # for Greensboro, North Carolina. We also compare the clearness index, kt, with
115
- # GHI normalized by a reference irradiance, E0 = 1000 [W/m^2], to highlight
115
+ # GHI normalized by a reference irradiance, E0 = 1000 [Wm⁻²], to highlight
116
116
  # spikes caused when cosine of zenith approaches zero, particularly at sunset.
117
117
  #
118
118
  # First we combine the dataframes for the decomposition models and the TMY3
@@ -14,7 +14,7 @@ solar-position data, and adjust DNI and POA-global irradiance.
14
14
  # After location information and a date range is established, solar position
15
15
  # data is calculated using :py:func:`pvlib.solarposition.get_solarposition`.
16
16
  # Horizon data is assigned, and interpolated to the solar azimuth time
17
- # series data. Finally, in times when solar elevation is greater than the
17
+ # series data. Finally, in times when solar elevation is less than the
18
18
  # interpolated horizon elevation angle, DNI is set to 0.
19
19
 
20
20
  import numpy as np
@@ -11,8 +11,8 @@ Calculation of the Average Photon Energy from SPECTRL2 output.
11
11
  # This example demonstrates how to use the
12
12
  # :py:func:`~pvlib.spectrum.average_photon_energy` function to calculate the
13
13
  # Average Photon Energy (APE, :math:`\overline{E_\gamma}`) of spectral
14
- # irradiance distributions. This example uses spectral irradiance simulated
15
- # using :py:func:`~pvlib.spectrum.spectrl2`, but the same method is
14
+ # irradiance distributions. This example uses clearsky spectral irradiance
15
+ # simulated using :py:func:`~pvlib.spectrum.spectrl2`, but the same method is
16
16
  # applicable to spectral irradiance from any source.
17
17
  # More information on the SPECTRL2 model can be found in [1]_.
18
18
  # The APE parameter is a useful indicator of the overall shape of the solar
@@ -35,18 +35,19 @@ from scipy.integrate import trapezoid
35
35
  from pvlib import spectrum, solarposition, irradiance, atmosphere
36
36
 
37
37
  lat, lon = 39.742, -105.18 # NREL SRRL location
38
- tilt = 25
39
- azimuth = 180 # south-facing system
38
+ surface_tilt = 25
39
+ surface_azimuth = 180 # south-facing system
40
40
  pressure = 81190 # at 1828 metres AMSL, roughly
41
- water_vapor_content = 0.5 # cm
42
- tau500 = 0.1
41
+ precipitable_water = 0.5 # cm
42
+ aerosol_turbidity_500nm = 0.1
43
43
  ozone = 0.31 # atm-cm
44
44
  albedo = 0.2
45
45
 
46
46
  times = pd.date_range('2023-01-01 08:00', freq='h', periods=9,
47
47
  tz='America/Denver')
48
48
  solpos = solarposition.get_solarposition(times, lat, lon)
49
- aoi = irradiance.aoi(tilt, azimuth, solpos.apparent_zenith, solpos.azimuth)
49
+ aoi = irradiance.aoi(surface_tilt, surface_azimuth,
50
+ solpos.apparent_zenith, solpos.azimuth)
50
51
 
51
52
  relative_airmass = atmosphere.get_relative_airmass(solpos.apparent_zenith,
52
53
  model='kastenyoung1989')
@@ -64,13 +65,13 @@ relative_airmass = atmosphere.get_relative_airmass(solpos.apparent_zenith,
64
65
  spectra_components = spectrum.spectrl2(
65
66
  apparent_zenith=solpos.apparent_zenith,
66
67
  aoi=aoi,
67
- surface_tilt=tilt,
68
+ surface_tilt=surface_tilt,
68
69
  ground_albedo=albedo,
69
70
  surface_pressure=pressure,
70
71
  relative_airmass=relative_airmass,
71
- precipitable_water=water_vapor_content,
72
+ precipitable_water=precipitable_water,
72
73
  ozone=ozone,
73
- aerosol_turbidity_500nm=tau500,
74
+ aerosol_turbidity_500nm=aerosol_turbidity_500nm,
74
75
  )
75
76
 
76
77
  # %%
@@ -143,10 +143,12 @@ email = 'your_email@domain.com'
143
143
 
144
144
  keys = ['ghi', 'dni', 'dhi', 'temp_air', 'wind_speed',
145
145
  'albedo', 'precipitable_water']
146
- psm3, psm3_metadata = pvlib.iotools.get_psm3(latitude, longitude, api_key,
147
- email, interval=5, names=2019,
148
- map_variables=True, leap_day=True,
149
- attributes=keys)
146
+ psm3, psm3_metadata = pvlib.iotools.get_nsrdb_psm4_conus(latitude, longitude,
147
+ api_key, email,
148
+ year=2019, interval=5,
149
+ parameters=keys,
150
+ map_variables=True,
151
+ leap_day=True)
150
152
 
151
153
  # %%
152
154
  # Pre-generate some model inputs
@@ -12,9 +12,10 @@ Spectrum
12
12
  spectrum.calc_spectral_mismatch_field
13
13
  spectrum.spectral_factor_caballero
14
14
  spectrum.spectral_factor_firstsolar
15
- spectrum.spectral_factor_sapm
16
- spectrum.spectral_factor_pvspec
17
15
  spectrum.spectral_factor_jrc
16
+ spectrum.spectral_factor_polo
17
+ spectrum.spectral_factor_pvspec
18
+ spectrum.spectral_factor_sapm
18
19
  spectrum.sr_to_qe
19
20
  spectrum.qe_to_sr
20
21
  spectrum.average_photon_energy
@@ -81,9 +81,6 @@ Satellite-derived irradiance and weather data for the Americas.
81
81
  iotools.get_nsrdb_psm4_conus
82
82
  iotools.get_nsrdb_psm4_full_disc
83
83
  iotools.read_nsrdb_psm4
84
- iotools.get_psm3
85
- iotools.read_psm3
86
- iotools.parse_psm3
87
84
 
88
85
 
89
86
  Commercial datasets
@@ -236,6 +233,27 @@ lower quality.
236
233
 
237
234
  iotools.read_crn
238
235
 
236
+ ECMWF ERA5
237
+ ^^^^^^^^^^
238
+
239
+ A global reanalysis dataset providing weather and solar resource data.
240
+
241
+ .. autosummary::
242
+ :toctree: generated/
243
+
244
+ iotools.get_era5
245
+
246
+ MERRA-2
247
+ ^^^^^^^
248
+
249
+ A global reanalysis dataset providing weather, aerosol, and solar irradiance
250
+ data.
251
+
252
+ .. autosummary::
253
+ :toctree: generated/
254
+
255
+ iotools.get_merra2
256
+
239
257
 
240
258
  Generic data file readers
241
259
  -------------------------
@@ -0,0 +1,10 @@
1
+ .. currentmodule:: pvlib
2
+
3
+ Angle of incidence
4
+ ------------------
5
+
6
+ .. autosummary::
7
+ :toctree: ../generated/
8
+
9
+ irradiance.aoi
10
+ irradiance.aoi_projection
@@ -1,7 +1,7 @@
1
1
  .. currentmodule:: pvlib
2
2
 
3
- Clearness index models
4
- ----------------------
3
+ Clearness and clearsky index
4
+ ----------------------------
5
5
 
6
6
  .. autosummary::
7
7
  :toctree: ../generated/
@@ -2,8 +2,8 @@
2
2
 
3
3
  .. _dniestmodels:
4
4
 
5
- DNI estimation models
6
- ---------------------
5
+ Decomposition models
6
+ --------------------
7
7
 
8
8
  .. autosummary::
9
9
  :toctree: ../generated/
@@ -16,6 +16,4 @@ DNI estimation models
16
16
  irradiance.orgill_hollands
17
17
  irradiance.boland
18
18
  irradiance.campbell_norman
19
- irradiance.gti_dirint
20
19
  irradiance.louche
21
-
@@ -0,0 +1,9 @@
1
+ .. currentmodule:: pvlib
2
+
3
+ Extraterrestrial radiation
4
+ --------------------------
5
+
6
+ .. autosummary::
7
+ :toctree: ../generated/
8
+
9
+ irradiance.get_extra_radiation
@@ -6,9 +6,10 @@ Irradiance
6
6
  .. toctree::
7
7
  :maxdepth: 2
8
8
 
9
- class-methods
10
- components
11
- transposition
12
9
  decomposition
10
+ transposition
11
+ reverse-transposition
12
+ angle-of-incidence
13
13
  clearness-index
14
- albedo
14
+ extraterrestrial-radiation
15
+ other
@@ -1,9 +1,12 @@
1
1
  .. currentmodule:: pvlib
2
2
 
3
- Albedo
4
- ------
3
+ Other
4
+ -----
5
5
 
6
6
  .. autosummary::
7
7
  :toctree: ../generated/
8
8
 
9
+ irradiance.dni
10
+ irradiance.complete_irradiance
11
+ irradiance.diffuse_par_spitters
9
12
  albedo.inland_water_dvoracek
@@ -0,0 +1,10 @@
1
+ .. currentmodule:: pvlib
2
+
3
+ Reverse transposition models
4
+ ----------------------------
5
+
6
+ .. autosummary::
7
+ :toctree: ../generated/
8
+
9
+ irradiance.ghi_from_poa_driesse_2023
10
+ irradiance.gti_dirint
@@ -8,6 +8,9 @@ Transposition models
8
8
 
9
9
  irradiance.get_total_irradiance
10
10
  irradiance.get_sky_diffuse
11
+ irradiance.get_ground_diffuse
12
+ irradiance.beam_component
13
+ irradiance.poa_components
11
14
  irradiance.isotropic
12
15
  irradiance.perez
13
16
  irradiance.perez_driesse
@@ -15,4 +18,3 @@ Transposition models
15
18
  irradiance.klucher
16
19
  irradiance.reindl
17
20
  irradiance.king
18
- irradiance.ghi_from_poa_driesse_2023
@@ -0,0 +1,31 @@
1
+ .. currentmodule:: pvlib
2
+
3
+ Location
4
+ ========
5
+
6
+ Methods for information about locations.
7
+
8
+ .. autosummary::
9
+ :toctree: generated/
10
+
11
+ location.lookup_altitude
12
+
13
+ Classes
14
+ -------
15
+ .. autosummary::
16
+ :toctree: generated/
17
+
18
+ location.Location
19
+
20
+ A :py:class:`~pvlib.location.Location` object may be created from the
21
+ metadata returned by these file types:
22
+
23
+ .. autosummary::
24
+ :toctree: generated/
25
+
26
+ location.Location.from_tmy
27
+ location.Location.from_epw
28
+
29
+ Methods for calculating time series of certain variables for a given
30
+ location are available through this class.
31
+
@@ -17,6 +17,7 @@ Functions relevant for single diode models.
17
17
  pvsystem.v_from_i
18
18
  pvsystem.max_power_point
19
19
  ivtools.sdm.pvsyst_temperature_coeff
20
+ singlediode.batzelis
20
21
 
21
22
  Low-level functions for solving the single diode equation.
22
23
 
@@ -37,3 +38,4 @@ Functions for fitting diode models
37
38
  ivtools.sde.fit_sandia_simple
38
39
  ivtools.sdm.fit_cec_sam
39
40
  ivtools.sdm.fit_desoto
41
+ ivtools.sdm.fit_desoto_batzelis
@@ -55,3 +55,11 @@ PVGIS model
55
55
  :toctree: ../generated/
56
56
 
57
57
  pvarray.huld
58
+
59
+ Other
60
+ ^^^^^
61
+
62
+ .. autosummary::
63
+ :toctree: ../generated/
64
+
65
+ pvarray.batzelis
@@ -52,15 +52,7 @@ Where can I get irradiance data for my simulation?
52
52
 
53
53
  pvlib has a module called iotools which has several functions for
54
54
  retrieving irradiance data as well as reading standard file formats
55
- such as EPW, TMY2, and TMY3. For free irradiance data, you may
56
- consider NREL's NSRDB which can be accessed using the
57
- :py:func:`pvlib.iotools.get_psm3` function and is available for
58
- North America. For Europe and Africa, you may consider looking into
59
- CAMS (:py:func:`pvlib.iotools.get_cams`).
60
- PVGIS (:py:func:`pvlib.iotools.get_pvgis_hourly`) is another option, which
61
- provides irradiance from several different databases with near global coverage.
62
- pvlib also has functions for accessing a plethora of ground-measured
63
- irradiance datasets, including the BSRN, SURFRAD, SRML, and NREL's MIDC.
55
+ such as EPW, TMY2, and TMY3. See :ref:`weatherdata`.
64
56
 
65
57
 
66
58
  Can I use PVsyst (PAN/OND) files with pvlib?
@@ -185,7 +185,7 @@ With your conda/virtual environment still active...
185
185
  Consider installing pvlib using ``pip install -e .[all]`` so that
186
186
  you can run the unit tests and build the documentation.
187
187
  Your clone directory is probably similar to
188
- ``C:\Users\%USER%\Documents\GitHub\pvlib-python``(Windows) or
188
+ ``C:\Users\%USER%\Documents\GitHub\pvlib-python`` (Windows) or
189
189
  ``/Users/%USER%/Documents/pvlib-python`` (Mac).
190
190
  #. **Test** your installation by running ``python -c 'import pvlib'``.
191
191
  You're good to go if it returns without an exception.
@@ -26,6 +26,7 @@ This user guide is an overview and explains some of the key features of pvlib.
26
26
  modeling_topics/clearsky
27
27
  modeling_topics/weather_data
28
28
  modeling_topics/singlediode
29
+ modeling_topics/temperature
29
30
 
30
31
  .. toctree::
31
32
  :maxdepth: 2
@@ -0,0 +1,217 @@
1
+ .. _singlediode:
2
+
3
+ Single diode models
4
+ ===================
5
+
6
+ Single-diode models are a popular means of simulating the electrical output
7
+ of a PV module under any given irradiance and temperature conditions.
8
+ A single-diode model (SDM) pairs the single-diode equation (SDE) with a set of
9
+ auxiliary equations that predict the SDE parameters at any given irradiance
10
+ and temperature. All SDMs use the SDE, but their auxiliary equations differ.
11
+ For more background on SDMs, see the `PVPMC website
12
+ <https://pvpmc.sandia.gov/modeling-guide/2-dc-module-iv/single-diode-equivalent-circuit-models/>`_.
13
+
14
+ Three SDMs are currently available in pvlib: the CEC SDM, the PVsyst SDM,
15
+ and the De Soto SDM. pvlib splits these models into two steps. The first
16
+ is to compute the auxiliary equations using one of the following functions:
17
+
18
+ * CEC SDM: :py:func:`~pvlib.pvsystem.calcparams_cec`
19
+ * PVsyst SDM: :py:func:`~pvlib.pvsystem.calcparams_pvsyst`
20
+ * De Soto SDM: :py:func:`~pvlib.pvsystem.calcparams_desoto`
21
+
22
+ The second step is to use the output of these functions to compute points on
23
+ the SDE's I-V curve. Three points on the SDE I-V curve are typically of special
24
+ interest for PV modeling: the maximum power (MP), open circuit (OC), and
25
+ short circuit (SC) points. The most convenient function for computing these
26
+ points is :py:func:`pvlib.pvsystem.singlediode`. It provides several methods
27
+ for solving the SDE:
28
+
29
+ +------------------+------------+-----------+-------------------------+
30
+ | Method | Type | Speed | Guaranteed convergence? |
31
+ +==================+============+===========+=========================+
32
+ | ``newton`` | iterative | fast | no |
33
+ +------------------+------------+-----------+-------------------------+
34
+ | ``brentq`` | iterative | slow | yes |
35
+ +------------------+------------+-----------+-------------------------+
36
+ | ``chandrupatla`` | iterative | fast | yes |
37
+ +------------------+------------+-----------+-------------------------+
38
+ | ``lambertw`` | explicit | medium | yes |
39
+ +------------------+------------+-----------+-------------------------+
40
+
41
+
42
+
43
+ Computing full I-V curves
44
+ -------------------------
45
+
46
+ Full I-V curves can be computed using
47
+ :py:func:`pvlib.pvsystem.i_from_v` and :py:func:`pvlib.pvsystem.v_from_i`, which
48
+ calculate either current or voltage from the other, with the methods listed
49
+ above. It is often useful to
50
+ first compute the open-circuit or short-circuit values using
51
+ :py:func:`pvlib.pvsystem.singlediode` and then compute a range
52
+ of voltages/currents from zero to those extreme points. This range can then
53
+ be used with the above functions to compute the I-V curve.
54
+
55
+
56
+ IV curves in reverse bias
57
+ -------------------------
58
+
59
+ The standard SDE does not account for diode breakdown at reverse bias. The
60
+ following functions can optionally include an extra term for modeling it:
61
+ :py:func:`pvlib.pvsystem.max_power_point`,
62
+ :py:func:`pvlib.singlediode.bishop88_i_from_v`,
63
+ and :py:func:`pvlib.singlediode.bishop88_v_from_i`.
64
+
65
+
66
+ Recombination current for thin film cells
67
+ -----------------------------------------
68
+
69
+ The PVsyst SDM optionally modifies the SDE to better represent recombination
70
+ current in CdTe and a-Si modules. The modified SDE requires two additional
71
+ parameters. pvlib functions can compute the key points or full I-V curves using
72
+ the modified SDE:
73
+ :py:func:`pvlib.pvsystem.max_power_point`,
74
+ :py:func:`pvlib.singlediode.bishop88_i_from_v`,
75
+ and :py:func:`pvlib.singlediode.bishop88_v_from_i`.
76
+
77
+ Model parameter values
78
+ ----------------------
79
+
80
+ Despite some models having parameters with similar names, parameter values are
81
+ specific to each model and thus must be produced with the intended model in mind.
82
+ For some models, sets of parameter values can be read from external sources,
83
+ for example:
84
+
85
+ * CEC SDM parameter database can be read using :py:func:`~pvlib.pvsystem.retrieve_sam`
86
+ * PAN files, which can be read using :py:func:`~pvlib.iotools.read_panond`
87
+
88
+ pvlib also provides a set of functions that can estimate SDM parameter values
89
+ from various datasources:
90
+
91
+ +---------------------------------------------------------------+---------+--------------------+
92
+ | Function | SDM | Inputs |
93
+ +===============================================================+=========+====================+
94
+ | :py:func:`~pvlib.ivtools.sdm.fit_cec_sam` | CEC | datasheet |
95
+ +---------------------------------------------------------------+---------+--------------------+
96
+ | :py:func:`~pvlib.ivtools.sdm.fit_desoto` | De Soto | datasheet |
97
+ +---------------------------------------------------------------+---------+--------------------+
98
+ | :py:func:`~pvlib.ivtools.sdm.fit_desoto_sandia` | De Soto | I-V curves |
99
+ +---------------------------------------------------------------+---------+--------------------+
100
+ | :py:func:`~pvlib.ivtools.sdm.fit_pvsyst_sandia` | PVsyst | I-V curves |
101
+ +---------------------------------------------------------------+---------+--------------------+
102
+ | :py:func:`~pvlib.ivtools.sdm.fit_pvsyst_iec61853_sandia_2025` | PVsyst | IEC 61853-1 matrix |
103
+ +---------------------------------------------------------------+---------+--------------------+
104
+
105
+
106
+ Single-diode equation
107
+ ---------------------
108
+
109
+ This section reviews the solutions to the single diode equation used in
110
+ pvlib-python to generate an IV curve of a PV module.
111
+
112
+ pvlib-python supports two ways to solve the single diode equation:
113
+
114
+ 1. Lambert W-Function
115
+ 2. Bishop's Algorithm
116
+
117
+ The :func:`pvlib.pvsystem.singlediode` function allows the user to choose the
118
+ method using the ``method`` keyword.
119
+
120
+ Lambert W-Function
121
+ ******************
122
+ When ``method='lambertw'``, the Lambert W-function is used as previously shown
123
+ by Jain, Kapoor [1, 2] and Hansen [3]. The following algorithm can be found on
124
+ `Wikipedia: Theory of Solar Cells
125
+ <https://en.wikipedia.org/wiki/Theory_of_solar_cells>`_, given the basic single
126
+ diode model equation.
127
+
128
+ .. math::
129
+
130
+ I = I_L - I_0 \left(\exp \left(\frac{V + I R_s}{n N_s V_{th}} \right) - 1 \right)
131
+ - \frac{V + I R_s}{R_{sh}}
132
+
133
+ Lambert W-function is the inverse of the function
134
+ :math:`f \left( w \right) = w \exp \left( w \right)` or
135
+ :math:`w = f^{-1} \left( w \exp \left( w \right) \right)` also given as
136
+ :math:`w = W \left( w \exp \left( w \right) \right)`. Defining the following
137
+ parameter, :math:`z`, is necessary to transform the single diode equation into
138
+ a form that can be expressed as a Lambert W-function.
139
+
140
+ .. math::
141
+
142
+ z = \frac{R_s I_0}{n N_s V_{th} \left(1 + \frac{R_s}{R_{sh}} \right)} \exp \left(
143
+ \frac{R_s \left( I_L + I_0 \right) + V}{n N_s V_{th} \left(1 + \frac{R_s}{R_{sh}}\right)}
144
+ \right)
145
+
146
+ Then the module current can be solved using the Lambert W-function,
147
+ :math:`W \left(z \right)`.
148
+
149
+ .. math::
150
+
151
+ I = \frac{I_L + I_0 - \frac{V}{R_{sh}}}{1 + \frac{R_s}{R_{sh}}}
152
+ - \frac{n N_s V_{th}}{R_s} W \left(z \right)
153
+
154
+
155
+ Bishop's Algorithm
156
+ ******************
157
+ The function :func:`pvlib.singlediode.bishop88` uses an explicit solution [4]
158
+ that finds points on the IV curve by first solving for pairs :math:`(V_d, I)`
159
+ where :math:`V_d` is the diode voltage :math:`V_d = V + I*Rs`. Then the voltage
160
+ is backed out from :math:`V_d`. Points with specific voltage, such as open
161
+ circuit, are located using the bisection search method, ``brentq``, bounded
162
+ by a zero diode voltage and an estimate of open circuit voltage given by
163
+
164
+ .. math::
165
+
166
+ V_{oc, est} = n N_s V_{th} \log \left( \frac{I_L}{I_0} + 1 \right)
167
+
168
+ We know that :math:`V_d = 0` corresponds to a voltage less than zero, and
169
+ we can also show that when :math:`V_d = V_{oc, est}`, the resulting
170
+ current is also negative, meaning that the corresponding voltage must be
171
+ in the 4th quadrant and therefore greater than the open circuit voltage
172
+ (see proof below). Therefore the entire forward-bias 1st quadrant IV-curve
173
+ is bounded because :math:`V_{oc} < V_{oc, est}`, and so a bisection search
174
+ between 0 and :math:`V_{oc, est}` will always find any desired condition in the
175
+ 1st quadrant including :math:`V_{oc}`.
176
+
177
+ .. math::
178
+
179
+ I = I_L - I_0 \left(\exp \left(\frac{V_{oc, est}}{n N_s V_{th}} \right) - 1 \right)
180
+ - \frac{V_{oc, est}}{R_{sh}} \newline
181
+
182
+ I = I_L - I_0 \left(\exp \left(\frac{n N_s V_{th} \log \left(\frac{I_L}{I_0} + 1 \right)}{n N_s V_{th}} \right) - 1 \right)
183
+ - \frac{n N_s V_{th} \log \left(\frac{I_L}{I_0} + 1 \right)}{R_{sh}} \newline
184
+
185
+ I = I_L - I_0 \left(\exp \left(\log \left(\frac{I_L}{I_0} + 1 \right) \right) - 1 \right)
186
+ - \frac{n N_s V_{th} \log \left(\frac{I_L}{I_0} + 1 \right)}{R_{sh}} \newline
187
+
188
+ I = I_L - I_0 \left(\frac{I_L}{I_0} + 1 - 1 \right)
189
+ - \frac{n N_s V_{th} \log \left(\frac{I_L}{I_0} + 1 \right)}{R_{sh}} \newline
190
+
191
+ I = I_L - I_0 \left(\frac{I_L}{I_0} \right)
192
+ - \frac{n N_s V_{th} \log \left(\frac{I_L}{I_0} + 1 \right)}{R_{sh}} \newline
193
+
194
+ I = I_L - I_L - \frac{n N_s V_{th} \log \left( \frac{I_L}{I_0} + 1 \right)}{R_{sh}} \newline
195
+
196
+ I = - \frac{n N_s V_{th} \log \left( \frac{I_L}{I_0} + 1 \right)}{R_{sh}}
197
+
198
+ References
199
+ ----------
200
+ [1] "Exact analytical solutions of the parameters of real solar cells using
201
+ Lambert W-function," A. Jain, A. Kapoor, Solar Energy Materials and Solar Cells,
202
+ 81, (2004) pp 269-277.
203
+ :doi:`10.1016/j.solmat.2003.11.018`
204
+
205
+ [2] "A new method to determine the diode ideality factor of real solar cell
206
+ using Lambert W-function," A. Jain, A. Kapoor, Solar Energy Materials and Solar
207
+ Cells, 85, (2005) 391-396.
208
+ :doi:`10.1016/j.solmat.2004.05.022`
209
+
210
+ [3] "Parameter Estimation for Single Diode Models of Photovoltaic Modules,"
211
+ Clifford W. Hansen, Sandia `Report SAND2015-2065
212
+ <https://prod.sandia.gov/techlib-noauth/access-control.cgi/2015/152065.pdf>`_,
213
+ 2015 :doi:`10.13140/RG.2.1.4336.7842`
214
+
215
+ [4] "Computer simulation of the effects of electrical mismatches in
216
+ photovoltaic cell interconnection circuits" JW Bishop, Solar Cell (1988)
217
+ :doi:`10.1016/0379-6787(88)90059-2`
@@ -61,11 +61,21 @@ Reference [2]_.
61
61
  | +-----------------------------+ | ✓ | ✓ | | | + [4]_ |
62
62
  | | clearsky_index | | | | | | | |
63
63
  +-----------------------------------------------------+-----------------------------+---------+---------+------+------+------+------------+-----------+
64
+ | :py:func:`Polo <spectral_factor_polo>` | :term:`precipitable_water`, | | | | | | | |
65
+ | +-----------------------------+ ✓ | | ✓ | ✓ | ✓ | + [5]_ |
66
+ | | :term:`airmass_absolute`, | | | | | | | |
67
+ | +-----------------------------+ | | | | | | |
68
+ | | aod500, | | | | | | | |
69
+ | +-----------------------------+ | | | | | | |
70
+ | | :term:`aoi`, | | | | | | | |
71
+ | +-----------------------------+ | | | | | | |
72
+ | | :term:`pressure` | | | | | | | |
73
+ +-----------------------------------------------------+-----------------------------+---------+---------+------+------+------+------------+-----------+
64
74
  | :py:func:`PVSPEC <spectral_factor_pvspec>` | :term:`airmass_absolute`, | | | | | | | |
65
- | +-----------------------------+ ✓ | ✓ | ✓ | ✓ | ✓ | | [5]_ |
75
+ | +-----------------------------+ ✓ | ✓ | ✓ | ✓ | ✓ | | [6]_ |
66
76
  | | clearsky_index | | | | | | | |
67
77
  +-----------------------------------------------------+-----------------------------+---------+---------+------+------+------+------------+-----------+
68
- | :py:func:`SAPM <spectral_factor_sapm>` | :term:`airmass_absolute` | | | | | | | [6]_ |
78
+ | :py:func:`SAPM <spectral_factor_sapm>` | :term:`airmass_absolute` | | | | | | | [7]_ |
69
79
  +-----------------------------------------------------+-----------------------------+---------+---------+------+------+------+------------+-----------+
70
80
 
71
81
 
@@ -88,16 +98,19 @@ References
88
98
  PVSPEC Model of Photovoltaic Spectral Mismatch Factor," in Proc. 2020
89
99
  IEEE 47th Photovoltaic Specialists Conference (PVSC), Calgary, AB,
90
100
  Canada, 2020, pp. 1–6. :doi:`10.1109/PVSC45281.2020.9300932`
91
- .. [5] D. L. King, W. E. Boyson, and J. A. Kratochvil, Photovoltaic Array
101
+ .. [5] J. Polo and C. Sanz-Saiz, 'Development of spectral mismatch models
102
+ for BIPV applications in building façades', Renewable Energy, vol. 245,
103
+ p. 122820, Jun. 2025, :doi:`10.1016/j.renene.2025.122820`
104
+ .. [6] D. L. King, W. E. Boyson, and J. A. Kratochvil, Photovoltaic Array
92
105
  Performance Model, Sandia National Laboratories, Albuquerque, NM, USA,
93
106
  Tech. Rep. SAND2004-3535, Aug. 2004. :doi:`10.2172/919131`
94
- .. [6] M. Lee and A. Panchula, "Spectral Correction for Photovoltaic Module
107
+ .. [7] M. Lee and A. Panchula, "Spectral Correction for Photovoltaic Module
95
108
  Performance Based on Air Mass and Precipitable Water," 2016 IEEE 43rd
96
109
  Photovoltaic Specialists Conference (PVSC), Portland, OR, USA, 2016,
97
110
  pp. 3696-3699. :doi:`10.1109/PVSC.2016.7749836`
98
- .. [7] H. Thomas, S. Tony, and D. Ewan, A Simple Model for Estimating the
99
- Influence of Spectrum Variations on PV Performance,” pp. 3385–3389, Nov.
111
+ .. [8] T. Huld, T. Sample, and E. Dunlop, "A Simple Model for Estimating the
112
+ Influence of Spectrum Variations on PV Performance," pp. 3385–3389, Nov.
100
113
  2009, :doi:`10.4229/24THEUPVSEC2009-4AV.3.27`
101
- .. [8] IEC 60904-7:2019, Photovoltaic devices — Part 7: Computation of the
114
+ .. [9] IEC 60904-7:2019, Photovoltaic devices — Part 7: Computation of the
102
115
  spectral mismatch correction for measurements of photovoltaic devices,
103
116
  International Electrotechnical Commission, Geneva, Switzerland, 2019.