pvlib 0.9.4a1__tar.gz → 0.10.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.
- pvlib-0.10.0/AUTHORS.md +35 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/LICENSE +5 -2
- {pvlib-0.9.4a1 → pvlib-0.10.0}/MANIFEST.in +0 -1
- {pvlib-0.9.4a1/pvlib.egg-info → pvlib-0.10.0}/PKG-INFO +2 -2
- {pvlib-0.9.4a1 → pvlib-0.10.0}/README.md +7 -18
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/README.rst +2 -0
- pvlib-0.10.0/docs/examples/adr-pvarray/README.rst +3 -0
- pvlib-0.10.0/docs/examples/adr-pvarray/plot_fit_to_matrix.py +108 -0
- pvlib-0.10.0/docs/examples/adr-pvarray/plot_simulate_fast.py +176 -0
- pvlib-0.10.0/docs/examples/adr-pvarray/plot_simulate_system.py +158 -0
- pvlib-0.10.0/docs/examples/irradiance-decomposition/README.rst +3 -0
- pvlib-0.10.0/docs/examples/irradiance-decomposition/plot_diffuse_fraction.py +220 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/irradiance-transposition/plot_seasonal_tilt.py +4 -3
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/irradiance-transposition/plot_transposition_gain.py +6 -5
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/iv-modeling/plot_singlediode.py +18 -15
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/soiling/plot_greensboro_kimber_soiling.py +3 -2
- pvlib-0.10.0/docs/notes/Determining the average view factor from a module.pdf +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/conf.py +1 -1
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/contributing.rst +10 -10
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/index.rst +4 -4
- pvlib-0.10.0/docs/sphinx/source/reference/bifacial.rst +25 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/reference/classes.rst +0 -1
- pvlib-0.10.0/docs/sphinx/source/reference/effects_on_pv_system_output/index.rst +13 -0
- pvlib-0.10.0/docs/sphinx/source/reference/effects_on_pv_system_output/loss-models.rst +10 -0
- pvlib-0.10.0/docs/sphinx/source/reference/effects_on_pv_system_output/shading.rst +12 -0
- pvlib-0.10.0/docs/sphinx/source/reference/effects_on_pv_system_output/snow.rst +12 -0
- pvlib-0.10.0/docs/sphinx/source/reference/effects_on_pv_system_output/soiling.rst +10 -0
- pvlib-0.10.0/docs/sphinx/source/reference/effects_on_pv_system_output/spectrum.rst +15 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/reference/index.rst +3 -4
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/reference/iotools.rst +7 -2
- pvlib-0.10.0/docs/sphinx/source/reference/irradiance/class-methods.rst +11 -0
- pvlib-0.10.0/docs/sphinx/source/reference/irradiance/clearness-index.rst +11 -0
- pvlib-0.10.0/docs/sphinx/source/reference/irradiance/components.rst +17 -0
- pvlib-0.10.0/docs/sphinx/source/reference/irradiance/decomposition.rst +20 -0
- pvlib-0.10.0/docs/sphinx/source/reference/irradiance/index.rst +13 -0
- pvlib-0.10.0/docs/sphinx/source/reference/irradiance/transposition.rst +16 -0
- pvlib-0.10.0/docs/sphinx/source/reference/pv_modeling/iam.rst +19 -0
- pvlib-0.10.0/docs/sphinx/source/reference/pv_modeling/index.rst +27 -0
- pvlib-0.10.0/docs/sphinx/source/reference/pv_modeling/inverter.rst +22 -0
- pvlib-0.10.0/docs/sphinx/source/reference/pv_modeling/other.rst +11 -0
- pvlib-0.10.0/docs/sphinx/source/reference/pv_modeling/parameters.rst +30 -0
- pvlib-0.10.0/docs/sphinx/source/reference/pv_modeling/sdm.rst +39 -0
- pvlib-0.10.0/docs/sphinx/source/reference/pv_modeling/system_models.rst +49 -0
- pvlib-0.10.0/docs/sphinx/source/reference/pv_modeling/temperature.rst +28 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/reference/scaling.rst +1 -0
- pvlib-0.10.0/docs/sphinx/source/reference/tracking.rst +15 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/bifacial.rst +9 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/clearsky.rst +8 -6
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/comparison_pvlib_matlab.rst +2 -3
- pvlib-0.10.0/docs/sphinx/source/user_guide/faq.rst +174 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/index.rst +1 -1
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/installation.rst +7 -12
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/introtutorial.rst +1 -2
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/pvsystem.rst +0 -13
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/timetimezones.rst +2 -2
- pvlib-0.10.0/docs/sphinx/source/whatsnew/v0.10.0.rst +186 -0
- pvlib-0.10.0/docs/sphinx/source/whatsnew/v0.10.1.rst +34 -0
- pvlib-0.10.0/docs/sphinx/source/whatsnew/v0.9.4.rst +72 -0
- pvlib-0.10.0/docs/sphinx/source/whatsnew/v0.9.5.rst +94 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew.rst +3 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/__init__.py +3 -2
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/atmosphere.py +23 -173
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/bifacial/infinite_sheds.py +88 -277
- pvlib-0.10.0/pvlib/bifacial/utils.py +391 -0
- pvlib-0.10.0/pvlib/data/adr-library-cec-inverters-2019-03-05.csv +5009 -0
- pvlib-0.10.0/pvlib/data/precise_iv_curves1.json +10251 -0
- pvlib-0.10.0/pvlib/data/precise_iv_curves2.json +10251 -0
- pvlib-0.10.0/pvlib/data/precise_iv_curves_parameter_sets1.csv +33 -0
- pvlib-0.10.0/pvlib/data/precise_iv_curves_parameter_sets2.csv +33 -0
- pvlib-0.10.0/pvlib/data/test_psm3_2017.csv +17521 -0
- pvlib-0.10.0/pvlib/data/test_psm3_2019_5min.csv +289 -0
- pvlib-0.10.0/pvlib/data/test_read_psm3.csv +17523 -0
- pvlib-0.10.0/pvlib/data/test_read_pvgis_horizon.csv +49 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/variables_style_rules.csv +3 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iam.py +207 -51
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/inverter.py +6 -1
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/__init__.py +7 -2
- pvlib-0.10.0/pvlib/iotools/acis.py +516 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/midc.py +4 -4
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/psm3.py +59 -42
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/pvgis.py +84 -28
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/sodapro.py +8 -6
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/srml.py +121 -18
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/surfrad.py +2 -2
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/tmy.py +146 -102
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/irradiance.py +270 -15
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/ivtools/sde.py +14 -20
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/ivtools/sdm.py +31 -20
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/ivtools/utils.py +127 -6
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/location.py +3 -2
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/modelchain.py +67 -70
- pvlib-0.10.0/pvlib/pvarray.py +225 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/pvsystem.py +169 -539
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/shading.py +43 -2
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/singlediode.py +216 -66
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/snow.py +36 -15
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/soiling.py +3 -3
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/spa.py +327 -368
- pvlib-0.10.0/pvlib/spectrum/__init__.py +9 -0
- pvlib-0.10.0/pvlib/spectrum/mismatch.py +572 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/temperature.py +124 -13
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/bifacial/test_infinite_sheds.py +44 -106
- pvlib-0.10.0/pvlib/tests/bifacial/test_utils.py +185 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/conftest.py +0 -31
- pvlib-0.10.0/pvlib/tests/iotools/test_acis.py +213 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/iotools/test_midc.py +6 -6
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/iotools/test_psm3.py +7 -5
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/iotools/test_pvgis.py +21 -14
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/iotools/test_sodapro.py +1 -1
- pvlib-0.10.0/pvlib/tests/iotools/test_srml.py +164 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/iotools/test_tmy.py +43 -8
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/ivtools/test_sde.py +19 -17
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/ivtools/test_sdm.py +9 -4
- pvlib-0.10.0/pvlib/tests/ivtools/test_utils.py +173 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_atmosphere.py +8 -64
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_clearsky.py +0 -1
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_iam.py +74 -1
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_irradiance.py +56 -2
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_location.py +1 -1
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_modelchain.py +33 -76
- pvlib-0.10.0/pvlib/tests/test_pvarray.py +46 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_pvsystem.py +366 -201
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_shading.py +35 -0
- pvlib-0.10.0/pvlib/tests/test_singlediode.py +559 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_snow.py +84 -1
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_soiling.py +8 -7
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_solarposition.py +7 -7
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_spa.py +6 -7
- pvlib-0.10.0/pvlib/tests/test_spectrum.py +317 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_temperature.py +29 -11
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_tools.py +41 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_tracking.py +0 -149
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tools.py +49 -25
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tracking.py +1 -269
- {pvlib-0.9.4a1 → pvlib-0.10.0/pvlib.egg-info}/PKG-INFO +2 -2
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib.egg-info/SOURCES.txt +41 -12
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib.egg-info/requires.txt +1 -11
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pyproject.toml +0 -3
- {pvlib-0.9.4a1 → pvlib-0.10.0}/setup.py +6 -7
- pvlib-0.9.4a1/AUTHORS.md +0 -32
- pvlib-0.9.4a1/docs/sphinx/source/reference/bifacial.rst +0 -13
- pvlib-0.9.4a1/docs/sphinx/source/reference/effects_on_pv_system_output.rst +0 -54
- pvlib-0.9.4a1/docs/sphinx/source/reference/forecasting.rst +0 -63
- pvlib-0.9.4a1/docs/sphinx/source/reference/irradiance.rst +0 -71
- pvlib-0.9.4a1/docs/sphinx/source/reference/pv_modeling.rst +0 -189
- pvlib-0.9.4a1/docs/sphinx/source/reference/tracking.rst +0 -28
- pvlib-0.9.4a1/docs/sphinx/source/user_guide/forecasts.rst +0 -520
- pvlib-0.9.4a1/docs/sphinx/source/whatsnew/v0.9.4.rst +0 -45
- pvlib-0.9.4a1/docs/tutorials/forecast.ipynb +0 -6804
- pvlib-0.9.4a1/docs/tutorials/forecast_to_power.ipynb +0 -964
- pvlib-0.9.4a1/pvlib/bifacial/utils.py +0 -149
- pvlib-0.9.4a1/pvlib/data/adr-library-2013-10-01.csv +0 -1762
- pvlib-0.9.4a1/pvlib/data/test_psm3_2017.csv +0 -17521
- pvlib-0.9.4a1/pvlib/data/test_psm3_2019_5min.csv +0 -289
- pvlib-0.9.4a1/pvlib/data/test_read_psm3.csv +0 -17523
- pvlib-0.9.4a1/pvlib/forecast.py +0 -1211
- pvlib-0.9.4a1/pvlib/iotools/ecmwf_macc.py +0 -312
- pvlib-0.9.4a1/pvlib/spectrum/__init__.py +0 -3
- pvlib-0.9.4a1/pvlib/spectrum/mismatch.py +0 -237
- pvlib-0.9.4a1/pvlib/tests/bifacial/test_utils.py +0 -88
- pvlib-0.9.4a1/pvlib/tests/iotools/test_ecmwf_macc.py +0 -162
- pvlib-0.9.4a1/pvlib/tests/iotools/test_srml.py +0 -99
- pvlib-0.9.4a1/pvlib/tests/ivtools/test_utils.py +0 -78
- pvlib-0.9.4a1/pvlib/tests/test_forecast.py +0 -228
- pvlib-0.9.4a1/pvlib/tests/test_singlediode.py +0 -282
- pvlib-0.9.4a1/pvlib/tests/test_spectrum.py +0 -173
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/bifacial/README.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/bifacial/plot_bifi_model_mc.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/bifacial/plot_bifi_model_pvwatts.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/bifacial/plot_pvfactors_fixed_tilt.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/irradiance-transposition/README.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/irradiance-transposition/plot_ghi_transposition.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/irradiance-transposition/plot_interval_transposition_error.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/irradiance-transposition/plot_mixed_orientation.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/iv-modeling/README.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/reflections/README.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/reflections/plot_diffuse_aoi_correction.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/shading/README.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/shading/plot_partial_module_shading_simple.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/shading/plot_passias_diffuse_shading.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/soiling/README.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/soiling/plot_fig3A_hsu_soiling_example.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/solar-position/README.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/solar-position/plot_sunpath_diagrams.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/solar-tracking/README.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/solar-tracking/plot_discontinuous_tracking.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/solar-tracking/plot_dual_axis_tracking.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/solar-tracking/plot_single_axis_tracking.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/solar-tracking/plot_single_axis_tracking_on_sloped_terrain.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/spectrum/README.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/examples/spectrum/plot_spectrl2_fig51A.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/Makefile +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/make.bat +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_images/Coello_Boyle_2019_Fig3.png +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_images/clonebutton.png +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_images/ground_slope_angle_convention.png +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_images/pvlib_logo_horiz.png +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_images/pvlib_logo_vert.png +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_images/pvlib_powered_logo_horiz.png +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_images/pvlib_powered_logo_vert.png +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_images/tracker_azimuth_angle_convention.png +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_images/tracker_rotation_angle_convention.png +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_static/favicon-16x16.png +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_static/favicon-32x32.png +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_static/no_scrollbars.css +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_static/reference_format.css +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_static/version-alert.js +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_templates/autosummary/class.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_templates/autosummary/function.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_templates/autosummary/method.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/_templates/edit-this-page.html +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/reference/airmass_atmospheric.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/reference/clearsky.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/reference/location.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/reference/modelchain.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/reference/solarposition.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/modelchain.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/package_overview.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/singlediode.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/user_guide/variables_style_rules.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.1.0.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.2.0.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.2.1.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.2.2.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.3.0.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.3.1.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.3.2.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.3.3.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.4.0.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.4.1.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.4.2.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.4.3.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.4.4.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.4.5.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.5.0.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.5.1.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.5.2.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.6.0.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.6.1.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.6.2.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.6.3.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.7.0.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.7.1.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.7.2.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.8.0.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.8.1.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.9.0.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.9.1.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.9.2.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/sphinx/source/whatsnew/v0.9.3.rst +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/tutorials/atmosphere.ipynb +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/tutorials/irradiance.ipynb +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/tutorials/pvsystem.ipynb +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/tutorials/solarposition.ipynb +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/tutorials/tmy.ipynb +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/tutorials/tmy_and_diffuse_irrad_models.ipynb +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/tutorials/tmy_to_power.ipynb +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/docs/tutorials/tracking.ipynb +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/_deprecation.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/bifacial/__init__.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/bifacial/pvfactors.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/clearsky.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/12839.tm2 +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/703165TY.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/723170TYA.CSV +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/Altitude.h5 +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/BIRD_08_16_2012.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/BIRD_08_16_2012_patm.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/Burlington, United States SolarAnywhere Time Series 2021 Lat_44_465 Lon_-73_205 TMY3 format.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/CRNS0101-05-2019-AZ_Tucson_11_W.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/CRN_with_problems.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/LinkeTurbidities.h5 +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/NLD_Amsterdam062400_IWEC.epw +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/PVsyst_demo.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/PVsyst_demo_model.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/SRML-day-EUPO1801.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/abq19056.dat +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/aod550_tcwv_20121101_test.nc +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/astm_g173_am15g.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/bishop88_numerical_precision.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/bsrn-lr0100-pay0616.dat +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/bsrn-pay0616.dat.gz +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/cams_mcclear_1min_verbose.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/cams_mcclear_monthly.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/cams_radiation_1min_verbose.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/cams_radiation_monthly.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/detect_clearsky_data.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/greensboro_kimber_soil_manwash.dat +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/greensboro_kimber_soil_nowash.dat +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/inverter_fit_snl_meas.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/inverter_fit_snl_sim.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/ivtools_numdiff.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/midc_20181014.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/midc_raw_20181018.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/midc_raw_short_header_20191115.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/msn19056.dat +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/pvgis_hourly_Timeseries_45.000_8.000_SA2_10kWp_CIS_5_2a_2013_2014.json +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/pvgis_hourly_Timeseries_45.000_8.000_SA_30deg_0deg_2016_2016.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/pvgis_tmy_meta.json +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/pvgis_tmy_test.dat +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/pvwatts_8760_rackmount.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/pvwatts_8760_roofmount.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/sam-library-cec-inverters-2019-03-05.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/sam-library-cec-modules-2019-03-05.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/sam-library-sandia-modules-2015-6-30.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/singleaxis_tracker_wslope.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/soiling_hsu_example_inputs.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/spectrl2_example_spectra.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/surfrad-slv16001.dat +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/test_psm3_tmy-2017.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/tmy_45.000_8.000_2005_2016.csv +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/tmy_45.000_8.000_2005_2016.epw +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/tmy_45.000_8.000_2005_2016.json +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/tmy_45.000_8.000_2005_2016.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/data/tmy_45.000_8.000_userhorizon.json +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/bsrn.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/crn.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/epw.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/iotools/solrad.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/ivtools/__init__.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/scaling.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/solarposition.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/spa_c_files/README.md +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/spa_c_files/SPA_NOTICE.md +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/spa_c_files/__init__.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/spa_c_files/cspa_py.pxd +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/spa_c_files/setup.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/spa_c_files/spa_py.pyx +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/spa_c_files/spa_py_example.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/spectrum/spectrl2.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/__init__.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/bifacial/__init__.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/bifacial/test_pvfactors.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/iotools/__init__.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/iotools/test_bsrn.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/iotools/test_crn.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/iotools/test_epw.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/iotools/test_solrad.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/iotools/test_surfrad.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/ivtools/__init__.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_conftest.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_inverter.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_numerical_precision.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/tests/test_scaling.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib/version.py +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib.egg-info/dependency_links.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib.egg-info/not-zip-safe +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/pvlib.egg-info/top_level.txt +0 -0
- {pvlib-0.9.4a1 → pvlib-0.10.0}/setup.cfg +0 -0
pvlib-0.10.0/AUTHORS.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
About the Copyright Holders
|
|
2
|
+
===========================
|
|
3
|
+
|
|
4
|
+
* Copyright (c) 2023 pvlib python Contributors
|
|
5
|
+
* Copyright (c) 2014 PVLIB python Development Team
|
|
6
|
+
* Copyright (c) 2013 Sandia National Laboratories
|
|
7
|
+
|
|
8
|
+
The pvlib python Contributors comprises all authors of content of the pvlib python project.
|
|
9
|
+
A complete list of contributors can be found in the documentation.
|
|
10
|
+
|
|
11
|
+
The PVLIB python Development Team is the collection of developers of the
|
|
12
|
+
pvlib python project. Members of this team are included in the pvlib python Contributors.
|
|
13
|
+
|
|
14
|
+
Sandia National Laboratories originally developed pvlib python based on code in
|
|
15
|
+
PVLib MATLAB.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Our Copyright Policy
|
|
19
|
+
====================
|
|
20
|
+
|
|
21
|
+
pvlib python uses a shared copyright model. Each contributor maintains copyright
|
|
22
|
+
over their contributions to pvlib python. However, it is important to note that
|
|
23
|
+
these contributions are typically only changes to the repositories. Thus,
|
|
24
|
+
the pvlib python source code, in its entirety, is not the copyright of any single
|
|
25
|
+
person or institution. Instead, it is the collective copyright of the
|
|
26
|
+
Contributors. If individual contributors want to make explicit their copyright
|
|
27
|
+
of the contributions they have made,
|
|
28
|
+
they should indicate their copyright using in-line comments in the code submitted
|
|
29
|
+
to the pvlib python repository, with the understanding that by contributing, they
|
|
30
|
+
grant the pvlib-python license.
|
|
31
|
+
|
|
32
|
+
License
|
|
33
|
+
=======
|
|
34
|
+
|
|
35
|
+
pvlib python is distributed under a 3-clause BSD license.
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
BSD 3-Clause License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2023 pvlib python Contributors
|
|
4
|
+
Copyright (c) 2014 PVLIB python Development Team
|
|
5
|
+
Copyright (c) 2013 Sandia National Laboratories
|
|
6
|
+
|
|
4
7
|
All rights reserved.
|
|
5
8
|
|
|
6
9
|
Redistribution and use in source and binary forms, with or without modification,
|
|
@@ -13,7 +16,7 @@ are permitted provided that the following conditions are met:
|
|
|
13
16
|
list of conditions and the following disclaimer in the documentation and/or
|
|
14
17
|
other materials provided with the distribution.
|
|
15
18
|
|
|
16
|
-
Neither the name of the
|
|
19
|
+
Neither the name of the copyright holder nor the names of its
|
|
17
20
|
contributors may be used to endorse or promote products derived from
|
|
18
21
|
this software without specific prior written permission.
|
|
19
22
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pvlib
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.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: pvlib python Developers
|
|
7
|
-
Maintainer-email:
|
|
7
|
+
Maintainer-email: pvlib-admin@googlegroups.com
|
|
8
8
|
License: BSD 3-Clause
|
|
9
9
|
Project-URL: Bug Tracker, https://github.com/pvlib/pvlib-python/issues
|
|
10
10
|
Project-URL: Documentation, https://pvlib-python.readthedocs.io/
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
<tr>
|
|
18
18
|
<td>License</td>
|
|
19
19
|
<td>
|
|
20
|
-
<a href="https://github.com/pvlib/pvlib-python/blob/
|
|
20
|
+
<a href="https://github.com/pvlib/pvlib-python/blob/main/LICENSE">
|
|
21
21
|
<img src="https://img.shields.io/pypi/l/pvlib.svg" alt="license" />
|
|
22
22
|
</a>
|
|
23
23
|
</td>
|
|
@@ -28,29 +28,18 @@
|
|
|
28
28
|
<a href="http://pvlib-python.readthedocs.org/en/stable/">
|
|
29
29
|
<img src="https://readthedocs.org/projects/pvlib-python/badge/?version=stable" alt="documentation build status" />
|
|
30
30
|
</a>
|
|
31
|
-
<a href="https://github.com/pvlib/pvlib-python/actions/workflows/pytest.yml?query=branch%
|
|
32
|
-
<img src="https://github.com/pvlib/pvlib-python/actions/workflows/pytest.yml/badge.svg?branch=
|
|
31
|
+
<a href="https://github.com/pvlib/pvlib-python/actions/workflows/pytest.yml?query=branch%3Amain">
|
|
32
|
+
<img src="https://github.com/pvlib/pvlib-python/actions/workflows/pytest.yml/badge.svg?branch=main" alt="GitHub Actions Testing Status" />
|
|
33
33
|
</a>
|
|
34
34
|
<a href="https://codecov.io/gh/pvlib/pvlib-python">
|
|
35
|
-
<img src="https://codecov.io/gh/pvlib/pvlib-python/branch/
|
|
36
|
-
</a>
|
|
37
|
-
</td>
|
|
38
|
-
</tr>
|
|
39
|
-
<tr>
|
|
40
|
-
<td>Code Quality</td>
|
|
41
|
-
<td>
|
|
42
|
-
<a href="https://lgtm.com/projects/g/pvlib/pvlib-python/context:python">
|
|
43
|
-
<img src="https://img.shields.io/lgtm/grade/python/g/pvlib/pvlib-python.svg?logo=lgtm&logoWidth=18" alt="lgtm quality grade" />
|
|
44
|
-
</a>
|
|
45
|
-
<a href="https://lgtm.com/projects/g/pvlib/pvlib-python/alerts">
|
|
46
|
-
<img src="https://img.shields.io/lgtm/alerts/g/pvlib/pvlib-python.svg?logo=lgtm&logoWidth=18" alt="lgtm alters" />
|
|
35
|
+
<img src="https://codecov.io/gh/pvlib/pvlib-python/branch/main/graph/badge.svg" alt="codecov coverage" />
|
|
47
36
|
</a>
|
|
48
37
|
</td>
|
|
49
38
|
</tr>
|
|
50
39
|
<tr>
|
|
51
40
|
<td>Benchmarks</td>
|
|
52
41
|
<td>
|
|
53
|
-
<a href="https://pvlib
|
|
42
|
+
<a href="https://pvlib.github.io/pvlib-benchmarks/">
|
|
54
43
|
<img src="https://img.shields.io/badge/benchmarks-asv-lightgrey" />
|
|
55
44
|
</a>
|
|
56
45
|
</td>
|
|
@@ -93,8 +82,8 @@ but operate independently of it.
|
|
|
93
82
|
Documentation
|
|
94
83
|
=============
|
|
95
84
|
|
|
96
|
-
Full documentation can be found at [readthedocs](http://pvlib-python.readthedocs.io/en/stable/)
|
|
97
|
-
|
|
85
|
+
Full documentation can be found at [readthedocs](http://pvlib-python.readthedocs.io/en/stable/),
|
|
86
|
+
including an [FAQ](http://pvlib-python.readthedocs.io/en/stable/user_guide/faq.html) page.
|
|
98
87
|
|
|
99
88
|
Installation
|
|
100
89
|
============
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Obtaining ADR model parameters from IEC 61853 matrix measurements
|
|
3
|
+
=================================================================
|
|
4
|
+
|
|
5
|
+
There's a fitting function provided in pvlib to do exactly that.
|
|
6
|
+
|
|
7
|
+
Since PV module efficiency varies with irradiance and temperature
|
|
8
|
+
what better way to train a model than using efficiency measurement
|
|
9
|
+
over a broad range of temperature and irradiance levels?
|
|
10
|
+
The standard IEC 61853-1 defines a standard matrix of conditions
|
|
11
|
+
for such measurements and this example shows how the ADR model
|
|
12
|
+
parameters can be determined with just a few lines of code using
|
|
13
|
+
functions in pvlib-python.
|
|
14
|
+
|
|
15
|
+
Author: Anton Driesse
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from io import StringIO
|
|
19
|
+
import pandas as pd
|
|
20
|
+
import matplotlib.pyplot as plt
|
|
21
|
+
|
|
22
|
+
from pvlib.pvarray import pvefficiency_adr, fit_pvefficiency_adr
|
|
23
|
+
|
|
24
|
+
# %% The text on this line is not displayed
|
|
25
|
+
#
|
|
26
|
+
# Here are some matrix measurements:
|
|
27
|
+
#
|
|
28
|
+
|
|
29
|
+
iec61853data = '''
|
|
30
|
+
irradiance temperature p_mp
|
|
31
|
+
0 100 15.0 30.159
|
|
32
|
+
1 200 15.0 63.057
|
|
33
|
+
2 400 15.0 129.849
|
|
34
|
+
3 600 15.0 197.744
|
|
35
|
+
4 800 15.0 264.825
|
|
36
|
+
5 1000 15.0 330.862
|
|
37
|
+
6 100 25.0 29.250
|
|
38
|
+
7 200 25.0 61.137
|
|
39
|
+
8 400 25.0 126.445
|
|
40
|
+
9 600 25.0 192.278
|
|
41
|
+
10 800 25.0 257.561
|
|
42
|
+
11 1000 25.0 322.305
|
|
43
|
+
12 1100 25.0 354.174
|
|
44
|
+
15 400 50.0 117.062
|
|
45
|
+
16 600 50.0 177.959
|
|
46
|
+
17 800 50.0 238.626
|
|
47
|
+
18 1000 50.0 298.954
|
|
48
|
+
19 1100 50.0 328.413
|
|
49
|
+
23 600 75.0 162.966
|
|
50
|
+
24 800 75.0 218.585
|
|
51
|
+
25 1000 75.0 273.651
|
|
52
|
+
26 1100 75.0 301.013
|
|
53
|
+
'''
|
|
54
|
+
df = pd.read_csv(StringIO(iec61853data), delim_whitespace=True)
|
|
55
|
+
|
|
56
|
+
# %%
|
|
57
|
+
#
|
|
58
|
+
# Now calculate the normalized or relative efficiency values
|
|
59
|
+
# and use the fitting function to determine the parameters.
|
|
60
|
+
# The parameters (shown below) can now be used to
|
|
61
|
+
# simulate the module operating in a PV system.
|
|
62
|
+
#
|
|
63
|
+
|
|
64
|
+
P_REF = 322.305 # (W) STC value from the table above
|
|
65
|
+
G_REF = 1000. # (W/m2)
|
|
66
|
+
|
|
67
|
+
df['eta_rel'] = (df['p_mp'] / P_REF) / (df['irradiance'] / G_REF)
|
|
68
|
+
|
|
69
|
+
adr_params = fit_pvefficiency_adr(df['irradiance'], df['temperature'],
|
|
70
|
+
df['eta_rel'])
|
|
71
|
+
|
|
72
|
+
for k, v in adr_params.items():
|
|
73
|
+
print('%-5s = %8.5f' % (k, v))
|
|
74
|
+
|
|
75
|
+
# %%
|
|
76
|
+
#
|
|
77
|
+
# Compare the model output to the original measurements.
|
|
78
|
+
# The chart below shows minor differences but due to their random nature
|
|
79
|
+
# they are most likely evidence of the limitations of measurement accuracy.
|
|
80
|
+
#
|
|
81
|
+
|
|
82
|
+
eta_rel_adr = pvefficiency_adr(df['irradiance'],
|
|
83
|
+
df['temperature'], **adr_params)
|
|
84
|
+
|
|
85
|
+
plt.figure()
|
|
86
|
+
plt.plot(df['irradiance'], df['eta_rel'], 'oc', ms=8)
|
|
87
|
+
plt.plot(df['irradiance'], eta_rel_adr, '.k')
|
|
88
|
+
plt.legend(['Lab measurements', 'ADR model fit'], loc='lower right')
|
|
89
|
+
plt.xlabel('Irradiance [W/m²]')
|
|
90
|
+
plt.ylabel('Relative efficiency [-]')
|
|
91
|
+
plt.grid(alpha=0.5)
|
|
92
|
+
plt.xlim(0, 1200)
|
|
93
|
+
plt.ylim(0.7, 1.1)
|
|
94
|
+
plt.show()
|
|
95
|
+
|
|
96
|
+
# %%
|
|
97
|
+
#
|
|
98
|
+
# References
|
|
99
|
+
# ----------
|
|
100
|
+
# .. [1] A. Driesse and J. S. Stein, "From IEC 61853 power measurements
|
|
101
|
+
# to PV system simulations", Sandia Report No. SAND2020-3877, 2020.
|
|
102
|
+
# :doi:`10.2172/1615179`
|
|
103
|
+
#
|
|
104
|
+
# .. [2] A. Driesse, M. Theristis and J. S. Stein, "A New Photovoltaic Module
|
|
105
|
+
# Efficiency Model for Energy Prediction and Rating," in IEEE Journal
|
|
106
|
+
# of Photovoltaics, vol. 11, no. 2, pp. 527-534, March 2021.
|
|
107
|
+
# :doi:`10.1109/JPHOTOV.2020.3045677`
|
|
108
|
+
#
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Fast simulation using the ADR efficiency model starting from PVsyst parameters
|
|
3
|
+
==============================================================================
|
|
4
|
+
|
|
5
|
+
Would you like to increase simulation speed by a factor of 4000+?
|
|
6
|
+
|
|
7
|
+
Simulation using single-diode models can be slow because the maximum
|
|
8
|
+
power point is usually found by an iterative search.
|
|
9
|
+
In this example we use the PVsyst single diode model to generate
|
|
10
|
+
a matrix of efficiency values, then determine the ADR model
|
|
11
|
+
parameters to approximate the behavior of the PVsyst model.
|
|
12
|
+
This way both PVsyst and ADR models can simulate the same PV module type.
|
|
13
|
+
|
|
14
|
+
To compare simulation speed, we run them using ``timeit``.
|
|
15
|
+
|
|
16
|
+
Author: Anton Driesse
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
import numpy as np
|
|
20
|
+
import matplotlib.pyplot as plt
|
|
21
|
+
|
|
22
|
+
from pvlib.pvsystem import calcparams_pvsyst, max_power_point
|
|
23
|
+
from pvlib.pvarray import fit_pvefficiency_adr, pvefficiency_adr
|
|
24
|
+
|
|
25
|
+
from timeit import timeit
|
|
26
|
+
|
|
27
|
+
# %% The text on this line is not displayed
|
|
28
|
+
#
|
|
29
|
+
# Generate a matrix of power values
|
|
30
|
+
#
|
|
31
|
+
|
|
32
|
+
pvsyst_params = {'alpha_sc': 0.0015,
|
|
33
|
+
'gamma_ref': 1.20585,
|
|
34
|
+
'mu_gamma': -9.41066e-05,
|
|
35
|
+
'I_L_ref': 5.9301,
|
|
36
|
+
'I_o_ref': 2.9691e-10,
|
|
37
|
+
'R_sh_ref': 1144,
|
|
38
|
+
'R_sh_0': 3850,
|
|
39
|
+
'R_s': 0.6,
|
|
40
|
+
'cells_in_series': 96,
|
|
41
|
+
'R_sh_exp': 5.5,
|
|
42
|
+
'EgRef': 1.12,
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
G_REF = 1000
|
|
46
|
+
T_REF = 25
|
|
47
|
+
|
|
48
|
+
params_stc = calcparams_pvsyst(G_REF, T_REF, **pvsyst_params)
|
|
49
|
+
mpp_stc = max_power_point(*params_stc)
|
|
50
|
+
|
|
51
|
+
P_REF = mpp_stc['p_mp']
|
|
52
|
+
|
|
53
|
+
g, t = np.meshgrid(np.linspace(100, 1100, 11),
|
|
54
|
+
np.linspace(0, 75, 4))
|
|
55
|
+
|
|
56
|
+
adjusted_params = calcparams_pvsyst(g, t, **pvsyst_params)
|
|
57
|
+
mpp = max_power_point(*adjusted_params)
|
|
58
|
+
p_mp = mpp['p_mp']
|
|
59
|
+
|
|
60
|
+
print('irradiance')
|
|
61
|
+
print(g[:1].round(0))
|
|
62
|
+
|
|
63
|
+
print('maximum power')
|
|
64
|
+
print(p_mp.round(1))
|
|
65
|
+
|
|
66
|
+
# %%
|
|
67
|
+
#
|
|
68
|
+
# Convert power matrix to efficiency and fit the ADR model to all the points
|
|
69
|
+
#
|
|
70
|
+
|
|
71
|
+
eta_rel_pvs = (p_mp / P_REF) / (g / G_REF)
|
|
72
|
+
|
|
73
|
+
adr_params = fit_pvefficiency_adr(g, t, eta_rel_pvs, dict_output=True)
|
|
74
|
+
|
|
75
|
+
for k, v in adr_params.items():
|
|
76
|
+
print('%-5s = %8.5f' % (k, v))
|
|
77
|
+
|
|
78
|
+
# %%
|
|
79
|
+
#
|
|
80
|
+
# Compare the ADR model output to the PVsyst model output
|
|
81
|
+
#
|
|
82
|
+
|
|
83
|
+
eta_rel_adr = pvefficiency_adr(g, t, **adr_params)
|
|
84
|
+
mbe = np.mean(eta_rel_adr - eta_rel_pvs)
|
|
85
|
+
rmse = np.sqrt(np.mean(np.square(eta_rel_adr - eta_rel_pvs)))
|
|
86
|
+
|
|
87
|
+
plt.figure()
|
|
88
|
+
plt.plot(g.flat, eta_rel_pvs.flat, 'oc', ms=8)
|
|
89
|
+
plt.plot(g.flat, eta_rel_adr.flat, '.k')
|
|
90
|
+
plt.grid(alpha=0.5)
|
|
91
|
+
plt.xlim(0, 1200)
|
|
92
|
+
plt.ylim(0.7, 1.1)
|
|
93
|
+
|
|
94
|
+
plt.xlabel('Irradiance [W/m²]')
|
|
95
|
+
plt.ylabel('Relative efficiency [-]')
|
|
96
|
+
plt.legend(['PVsyst model output', 'ADR model fit'], loc='lower right')
|
|
97
|
+
plt.title('Differences: mean %.5f, RMS %.5f' % (mbe, rmse))
|
|
98
|
+
plt.show()
|
|
99
|
+
|
|
100
|
+
# %%
|
|
101
|
+
#
|
|
102
|
+
# Generate some random irradiance and temperature data
|
|
103
|
+
#
|
|
104
|
+
|
|
105
|
+
g = np.random.uniform(0, 1200, 8760)
|
|
106
|
+
t = np.random.uniform(20, 80, 8760)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def run_adr():
|
|
110
|
+
eta_rel = pvefficiency_adr(g, t, **adr_params)
|
|
111
|
+
p_adr = P_REF * eta_rel * (g / G_REF)
|
|
112
|
+
return p_adr
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def run_pvsyst():
|
|
116
|
+
adjusted_params = calcparams_pvsyst(g, t, **pvsyst_params)
|
|
117
|
+
mpp = max_power_point(*adjusted_params)
|
|
118
|
+
p_pvs = mpp['p_mp']
|
|
119
|
+
return p_pvs
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
elapsed_adr = timeit('run_adr()', number=1, globals=globals())
|
|
123
|
+
elapsed_pvs = timeit('run_pvsyst()', number=1, globals=globals())
|
|
124
|
+
|
|
125
|
+
print('Elapsed time for the PVsyst model: %9.6f s' % elapsed_pvs)
|
|
126
|
+
print('Elapsed time for the ADR model: %9.6f s' % elapsed_adr)
|
|
127
|
+
print('ADR acceleration ratio: %9.0f x' % (elapsed_pvs/elapsed_adr))
|
|
128
|
+
|
|
129
|
+
# %%
|
|
130
|
+
#
|
|
131
|
+
# That's fast, but is it accurate?
|
|
132
|
+
# Run them again to compare the simulated power values
|
|
133
|
+
#
|
|
134
|
+
|
|
135
|
+
p_pvs = run_pvsyst()
|
|
136
|
+
p_adr = run_adr()
|
|
137
|
+
|
|
138
|
+
mbe = np.mean(p_adr - p_pvs)
|
|
139
|
+
rmse = np.sqrt(np.mean(np.square(p_adr - p_pvs)))
|
|
140
|
+
|
|
141
|
+
# sphinx_gallery_thumbnail_number = 2
|
|
142
|
+
plt.figure()
|
|
143
|
+
pc = plt.scatter(p_pvs, p_adr-p_pvs, c=t, cmap='jet')
|
|
144
|
+
plt.colorbar()
|
|
145
|
+
pc.set_alpha(0.25)
|
|
146
|
+
plt.ylim(-1.4, 1.4)
|
|
147
|
+
plt.grid(alpha=0.5)
|
|
148
|
+
|
|
149
|
+
plt.xlabel('Power calculated using the PVsyst model [W]')
|
|
150
|
+
plt.ylabel('ADR model power - PVsyst model power [W]')
|
|
151
|
+
plt.title('Differences: mean %.2f W, RMS %.2f W' % (mbe, rmse))
|
|
152
|
+
plt.show()
|
|
153
|
+
|
|
154
|
+
# %%
|
|
155
|
+
#
|
|
156
|
+
# There are some small systematic differences between the original
|
|
157
|
+
# PVsyst model output and the ADR fit. But these differences are
|
|
158
|
+
# much smaller than the typical uncertainty in measured output
|
|
159
|
+
# of modules of this type. The PVsyst model and the parameters
|
|
160
|
+
# we started with are of course also only approximations of the
|
|
161
|
+
# true module behavior.
|
|
162
|
+
#
|
|
163
|
+
|
|
164
|
+
# %%
|
|
165
|
+
#
|
|
166
|
+
# References
|
|
167
|
+
# ----------
|
|
168
|
+
# .. [1] A. Driesse and J. S. Stein, "From IEC 61853 power measurements
|
|
169
|
+
# to PV system simulations", Sandia Report No. SAND2020-3877, 2020.
|
|
170
|
+
# :doi:`10.2172/1615179`
|
|
171
|
+
#
|
|
172
|
+
# .. [2] A. Driesse, M. Theristis and J. S. Stein, "A New Photovoltaic Module
|
|
173
|
+
# Efficiency Model for Energy Prediction and Rating," in IEEE Journal
|
|
174
|
+
# of Photovoltaics, vol. 11, no. 2, pp. 527-534, March 2021.
|
|
175
|
+
# :doi:`10.1109/JPHOTOV.2020.3045677`
|
|
176
|
+
#
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Simulating PV system DC output using the ADR module efficiency model
|
|
3
|
+
====================================================================
|
|
4
|
+
|
|
5
|
+
Time series processing with the ADR model is really easy.
|
|
6
|
+
|
|
7
|
+
This example reads a TMY3 weather file, and runs a basic simulation
|
|
8
|
+
on a fixed latitude-tilt system.
|
|
9
|
+
Efficiency is independent of system size, so adjusting the system
|
|
10
|
+
capacity is just a matter of setting the desired value, e.g. P_STC = 5000.
|
|
11
|
+
|
|
12
|
+
Author: Anton Driesse
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import os
|
|
16
|
+
import pandas as pd
|
|
17
|
+
import matplotlib.pyplot as plt
|
|
18
|
+
|
|
19
|
+
import pvlib
|
|
20
|
+
from pvlib import iotools, location
|
|
21
|
+
from pvlib.irradiance import get_total_irradiance
|
|
22
|
+
from pvlib.pvarray import pvefficiency_adr
|
|
23
|
+
|
|
24
|
+
# %%
|
|
25
|
+
#
|
|
26
|
+
# Read a TMY3 file containing weather data and select needed columns
|
|
27
|
+
#
|
|
28
|
+
|
|
29
|
+
PVLIB_DIR = pvlib.__path__[0]
|
|
30
|
+
DATA_FILE = os.path.join(PVLIB_DIR, 'data', '723170TYA.CSV')
|
|
31
|
+
|
|
32
|
+
tmy, metadata = iotools.read_tmy3(DATA_FILE, coerce_year=1990,
|
|
33
|
+
map_variables=True)
|
|
34
|
+
|
|
35
|
+
df = pd.DataFrame({'ghi': tmy['ghi'], 'dhi': tmy['dhi'], 'dni': tmy['dni'],
|
|
36
|
+
'temp_air': tmy['temp_air'],
|
|
37
|
+
'wind_speed': tmy['wind_speed'],
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
# %%
|
|
41
|
+
#
|
|
42
|
+
# Shift timestamps to middle of hour and then calculate sun positions
|
|
43
|
+
#
|
|
44
|
+
|
|
45
|
+
df.index = df.index - pd.Timedelta(minutes=30)
|
|
46
|
+
|
|
47
|
+
loc = location.Location.from_tmy(metadata)
|
|
48
|
+
solpos = loc.get_solarposition(df.index)
|
|
49
|
+
|
|
50
|
+
# %%
|
|
51
|
+
#
|
|
52
|
+
# Determine total irradiance on a fixed-tilt array
|
|
53
|
+
#
|
|
54
|
+
|
|
55
|
+
TILT = metadata['latitude']
|
|
56
|
+
ORIENT = 180
|
|
57
|
+
|
|
58
|
+
total_irrad = get_total_irradiance(TILT, ORIENT,
|
|
59
|
+
solpos.apparent_zenith, solpos.azimuth,
|
|
60
|
+
df.dni, df.ghi, df.dhi)
|
|
61
|
+
|
|
62
|
+
df['poa_global'] = total_irrad.poa_global
|
|
63
|
+
|
|
64
|
+
# %%
|
|
65
|
+
#
|
|
66
|
+
# Estimate the expected operating temperature of the PV modules
|
|
67
|
+
#
|
|
68
|
+
|
|
69
|
+
df['temp_pv'] = pvlib.temperature.faiman(df.poa_global, df.temp_air,
|
|
70
|
+
df.wind_speed)
|
|
71
|
+
|
|
72
|
+
# %%
|
|
73
|
+
#
|
|
74
|
+
# Now we're ready to calculate PV array DC output power based
|
|
75
|
+
# on POA irradiance and PV module operating temperature.
|
|
76
|
+
# Among the models available in pvlib-python to do this are:
|
|
77
|
+
#
|
|
78
|
+
# - PVWatts
|
|
79
|
+
# - SAPM
|
|
80
|
+
# - single-diode model variations
|
|
81
|
+
#
|
|
82
|
+
# And now also the ADR PV efficiency model
|
|
83
|
+
#
|
|
84
|
+
# Simulation is done in two steps:
|
|
85
|
+
#
|
|
86
|
+
# - first calculate efficiency using the ADR model,
|
|
87
|
+
# - then convert (scale up) efficiency to power.
|
|
88
|
+
#
|
|
89
|
+
|
|
90
|
+
# Borrow the ADR model parameters from the other example:
|
|
91
|
+
|
|
92
|
+
adr_params = {'k_a': 0.99924,
|
|
93
|
+
'k_d': -5.49097,
|
|
94
|
+
'tc_d': 0.01918,
|
|
95
|
+
'k_rs': 0.06999,
|
|
96
|
+
'k_rsh': 0.26144
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
df['eta_rel'] = pvefficiency_adr(df['poa_global'], df['temp_pv'], **adr_params)
|
|
100
|
+
|
|
101
|
+
# Set the desired array size:
|
|
102
|
+
P_STC = 5000. # (W)
|
|
103
|
+
|
|
104
|
+
# and the irradiance level needed to achieve this output:
|
|
105
|
+
G_STC = 1000. # (W/m2)
|
|
106
|
+
|
|
107
|
+
df['p_mp'] = P_STC * df['eta_rel'] * (df['poa_global'] / G_STC)
|
|
108
|
+
|
|
109
|
+
# %%
|
|
110
|
+
#
|
|
111
|
+
# Show how power and efficiency vary with both irradiance and temperature
|
|
112
|
+
#
|
|
113
|
+
|
|
114
|
+
plt.figure()
|
|
115
|
+
pc = plt.scatter(df['poa_global'], df['eta_rel'], c=df['temp_pv'], cmap='jet')
|
|
116
|
+
plt.colorbar(label='Temperature [C]', ax=plt.gca())
|
|
117
|
+
pc.set_alpha(0.25)
|
|
118
|
+
plt.grid(alpha=0.5)
|
|
119
|
+
plt.ylim(0.48)
|
|
120
|
+
plt.xlabel('Irradiance [W/m²]')
|
|
121
|
+
plt.ylabel('Relative efficiency [-]')
|
|
122
|
+
plt.show()
|
|
123
|
+
|
|
124
|
+
plt.figure()
|
|
125
|
+
pc = plt.scatter(df['poa_global'], df['p_mp'], c=df['temp_pv'], cmap='jet')
|
|
126
|
+
plt.colorbar(label='Temperature [C]', ax=plt.gca())
|
|
127
|
+
pc.set_alpha(0.25)
|
|
128
|
+
plt.grid(alpha=0.5)
|
|
129
|
+
plt.xlabel('Irradiance [W/m²]')
|
|
130
|
+
plt.ylabel('Array power [W]')
|
|
131
|
+
plt.show()
|
|
132
|
+
|
|
133
|
+
# %%
|
|
134
|
+
#
|
|
135
|
+
# One day:
|
|
136
|
+
#
|
|
137
|
+
|
|
138
|
+
DEMO_DAY = '1990-08-05'
|
|
139
|
+
|
|
140
|
+
plt.figure()
|
|
141
|
+
plt.plot(df['p_mp'][DEMO_DAY])
|
|
142
|
+
plt.xticks(rotation=30)
|
|
143
|
+
plt.ylabel('Power [W]')
|
|
144
|
+
plt.show()
|
|
145
|
+
|
|
146
|
+
# %%
|
|
147
|
+
#
|
|
148
|
+
# References
|
|
149
|
+
# ----------
|
|
150
|
+
# .. [1] A. Driesse and J. S. Stein, "From IEC 61853 power measurements
|
|
151
|
+
# to PV system simulations", Sandia Report No. SAND2020-3877, 2020.
|
|
152
|
+
# :doi:`10.2172/1615179`
|
|
153
|
+
#
|
|
154
|
+
# .. [2] A. Driesse, M. Theristis and J. S. Stein, "A New Photovoltaic Module
|
|
155
|
+
# Efficiency Model for Energy Prediction and Rating," in IEEE Journal
|
|
156
|
+
# of Photovoltaics, vol. 11, no. 2, pp. 527-534, March 2021.
|
|
157
|
+
# :doi:`10.1109/JPHOTOV.2020.3045677`
|
|
158
|
+
#
|