What’s New#
These are new features and improvements of note in each release.
v0.11.1 (September 26, 2024)#
Enhancements#
Add new function to calculate the average photon energy,
average_photon_energy()
. (GH2135, GH2140)Add new losses function that accounts for non-uniform irradiance on bifacial modules,
power_mismatch_deline()
. (GH2045, GH2046)Add new parameters for min/max absolute air mass to
spectral_factor_firstsolar()
. (GH2086, GH2100)Add
roll_utc_offset
andcoerce_year
arguments toget_pvgis_tmy()
to allow user to specify time zone, rotate indices of TMY to begin at midnight, and force indices to desired year. (GH2139, GH2138)Restructured the pvlib/spectrum folder by breaking up the contents of pvlib/spectrum/mismatch.py into pvlib/spectrum/mismatch.py, pvlib/spectrum/irradiance.py, and pvlib/spectrum/response.py. (GH2125, GH2136, GH2151)
Added function for calculating wind speed at different heights,
windspeed_powerlaw()
. (GH2118, GH2124)delta_t
can now be specified with an array in the SPA functions. The numba implementation now also allows calculation ofdelta_t
internally. (GH2189, GH2190)The multithreaded SPA functions no longer emit a warning when calculating solar positions for short time series. (GH2170)
Implemented closed-form solution for alpha in
detect_clearsky()
, obviating the call to scipy.optimize, which was prone to runtime errors, and minimizing computation. (GH2171, GH2216, GH2217).
Bug fixes#
To prevent simulation output from differing slightly based on the time zone of the time stamps, models that use day of year for sun position and irradiance calculations now determine the day of year according to the UTC equivalent of the specified time stamps. The following functions are affected:
lookup_linke_turbidity()
,get_extra_radiation()
,disc()
,dirint()
,spectrl2()
. (GH2054, GH2055)hour_angle()
andsun_rise_set_transit_geometric()
now raiseValueError
when given timezone-naive inputs, instead of assuming UTC. (GH2055)
Testing#
Updated the tests for
get_pvgis_tmy()
andread_pvgis_tmy()
as the default API endpoint has changed from 5.1 to 5.2. (GH2222)Removed unused
times
input fromdni_et
fixture. (GH2105, GH2156)
Documentation#
Added new gallery example pages for:
Demonstrating the application of several spectral mismatch factor models. (GH2107, GH2114)
Demonstrating the application of
average_photon_energy()
. (GH2194, GH2206)Calculating cell temperature for floating PV. (GH2110)
Demonstrating how to use different Perez coefficients in a ModelChain. (GH2127, GH2148)
Fixed examples in
shaded_fraction1d()
. (GH2215)Updated model description, added equation variable definitions, and created a new “notes” section in
haydavies()
andklucher()
. (GH2183, GH2191, GH2192)Document units with Wm⁻² instead of W/m^2 throughout
pvlib.irradiance
. (GH2205, GH2191)Split the contributing page into several pages. (GH2210, GH2219)
Requirements#
Contributors#
Echedey Luis (@echedey-ls)
Yunho Kee (@yhkee0404)
Chris Deline (@cdeline)
Ioannis Sifnaios (@IoannisSifnaios)
Leonardo Micheli (@lmicheli)
Rajiv Daxini (@RDaxini)
Mark A. Mikofski (@mikofski)
Ben Pierce (@bgpierc)
Jose Meza (@JoseMezaMendieta)
Kevin Anderson (@kandersolar)
Luiz Reis (@luizreiscver)
Carlos Cárdenas-Bravo (@cardenca)
Marcos R. Escudero (@marc-resc)
Bernat Nicolau (@BernatNicolau)
Eduardo Sarquis (@EduardoSarquis)
Adam R. Jensen (@AdamRJensen)
Andrew B Godbehere (@agodbehere)
Cliff Hansen (@cwhanse)
Anton Driesse (@adriesse)
Miguel Angel Sevillano Bendezú (@msevillanob)
Erfan (@Metal-Bat)
Will Holmgren (@wholmgren)
Kurt Rhee (@kurt-rhee)
Mark Campanelli (@markcampanelli)
v0.11.0 (June 21, 2024)#
Breaking changes#
The deprecated
pvlib.modelchain.basic_chain
has now been removed. (GH1862)Remove the
poa_horizontal_ratio
function and all of its references. (GH1697, GH2021)Updated
MIDC_VARIABLE_MAP
to reflect changes in instrumentation. (GH2006)pvlib.iotools.read_srml_month_from_solardat
was deprecated in v0.10.0 and has now been completely removed. The function is replaced byget_srml()
. (GH1779, GH1989)The
leap_day
parameter inget_psm3()
now defaults to True instead of False. (GH1481, GH1991)get_psm3()
,read_psm3()
, andparse_psm3()
all now havemap_variables=True
by default. (GH1425, GH2094)The deprecated
ivcurve_pnts
parameter ofpvlib.pvsystem.singlediode()
is removed. Usepvlib.pvsystem.v_from_i()
andpvlib.pvsystem.i_from_v()
instead. (GH2101)
Deprecations#
The
pvlib.irradiance.SURFACE_ALBEDOS
dictionary has been moved topvlib.albedo.SURFACE_ALBEDOS
. (GH2095)Function
pvlib.spectrum.get_am15g()
has been deprecated in favor of the new functionpvlib.spectrum.get_reference_spectra()
. Usepvlib.spectrum.get_reference_spectra(standard="ASTM G173-03")["global"]
instead. (GH2039)
Enhancements#
Add a simple transformer efficiency model
pvlib.transformer.simple_efficiency()
. (GH1269, GH2053)Add function
pvlib.shading.shaded_fraction1d()
, to calculate the shade perpendicular toaxis_azimuth
. The function is applicable to both fixed-tilt and one-axis tracking systems. (GH1689, GH1725, GH1962)Add function
pvlib.albedo.inland_water_dvoracek()
, to calculate the albedo for inland water bodies. (GH2079)Added conversion functions from spectral response ([A/W]) to quantum efficiency ([unitless]) and vice versa. The conversion functions are
pvlib.spectrum.sr_to_qe()
andpvlib.spectrum.qe_to_sr()
respectively. (GH2040, GH2041)Add function
pvlib.spectrum.spectral_factor_pvspec()
, which calculates the spectral mismatch factor as a function of absolute airmass and clearsky index using the PVSPEC model. (GH1950, GH2065, GH2072)Add function
pvlib.spectrum.spectral_factor_jrc()
, which calculates the spectral mismatch factor as a function of airmass and clearsky index using the JRC model. (GH1950, GH2065, GH2087, GH2088)Added extraterrestrial and direct spectra of the ASTM G173-03 standard with the new function
pvlib.spectrum.get_reference_spectra()
. (GH1963, GH2039)Added function
pvlib.shading.direct_martinez()
to calculate shading losses by taking into account the amount of bypass diodes of a module. (GH2063, GH2070)Add function
pvlib.irradiance.diffuse_par_spitters()
to calculate the diffuse fraction of Photosynthetically Active Radiation (PAR) from the global diffuse fraction and the solar zenith. (GH2047, GH2048)Default altitude in
pvlib.location.Location
now comes fromlookup_altitude()
(GH1516, GH1850)
Documentation#
Configure mathjax to left-align and indent equations in docstrings. (GH2056)
Contributors#
Cliff Hansen (@cwhanse)
Kurt Rhee (@kurt-rhee)
Mark Mikofski (@mikofski)
Siddharth Kaul (@k10blogger)
Ioannis Sifnaios (@IoannisSifnaios)
Mark Campanelli (@markcampanelli)
Rajiv Daxini (@RDaxini)
Nicolas Martinez (@nicomt)
John Obrecht (@jmobrecht)
Echedey Luis (@echedey-ls)
Adam R. Jensen (@AdamRJensen)
Anton Driesse (@adriesse)
Will Holmgren (@wholmgren)
Will Hobbs (@williamhobbs)
Kevin Anderson (@kandersolar)
v0.10.5 (May 6, 2024)#
Bug fixes#
Improved reliability of
pvlib.singlediode.bishop88_mpp()
,pvlib.singlediode.bishop88_i_from_v()
andpvlib.singlediode.bishop88_v_from_i()
by improving the initial guess for the newton and brentq algorithms. (GH2013, GH2032)Corrected equation for Ixx0 in
pvlib.pvsystem.sapm()
. (GH2016, GH2019)Fixed
pvlib.pvsystem.retrieve_sam()
silently ignoring thepath
parameter whenname
was provided. Now an exception is raised requesting to only provide one of the two parameters. (GH2018, GH2020)
Documentation#
Requirements#
Contributors#
Cliff Hansen (@cwhanse)
Mark Mikofski (@mikofski)
Echedey Luis (@echedey-ls)
Adam R. Jensen (@adamrjensen)
Anton Driesse (@adriesse)
Scott Meredith (@smmeredith)
Alexander Morgan (@alexandermorgan)
Kevin Anderson (@kandersolar)
v0.10.4 (March 19, 2024)#
Enhancements#
Added the Huld PV model used by PVGIS (GH1940)
Add
get_solargis()
for retrieving Solargis irradiance data. (GH1969)Added function
pvlib.shading.projected_solar_zenith_angle()
, a common calculation in shading and tracking. (GH1734, GH1904)Added
get_solrad()
for fetching irradiance data from the SOLRAD ground station network. (GH1967)Added metadata parsing to
read_solrad()
to follow the standard iotools convention of returning a tuple of (data, meta). Previously the function only returned a dataframe. (GH1968)
Bug fixes#
Fixed an error in solar position calculations when using
pandas.DatetimeIndex
withunit
other than'ns'
(GH1932). The following functions were affected:ModelChain
andget_solarposition()
with thenrel_numpy
andnrel_numba
methods
ModelChain
now raises a more useful error whentemperature_model_parameters
are specified on the passedsystem
instead of on itsarrays
. (GH1759).pvlib.irradiance.ghi_from_poa_driesse_2023()
now correctly makes use of thextol
argument. Previously, it was ignored. (GH1970, GH1971)Fixed incorrect unit conversion of precipitable water used for the Solcast iotools functions. (GH1969)
infer_temperature_model
now raises a more useful error when the temperature model cannot be inferred (GH1946)The default URL for retrieving irradiance data from the SRML network was updated in
get_srml()
(GH1957, GH1922)
Documentation#
Requirements#
Contributors#
Patrick Sheehan (@patricksheehan)
Echedey Luis (@echedey-ls)
Kevin Anderson (@kandersolar)
Cliff Hansen (@cwhanse)
Roma Koulikov (@matsuobasho)
Adam R. Jensen (@AdamRJensen)
Peter Dudfield (@peterdudfield)
Anton Driesse (@adriesse)
Mark Mikofski (@mikofski)
Will Holmgren (@wholmgren)
Jules Chéron (@jules-ch)
v0.10.3 (December 20, 2023)#
Enhancements#
Added the continuous Perez-Driesse transposition model.
pvlib.irradiance.perez_driesse()
(GH1841, GH1876)Added a reverse transposition algorithm using the Perez-Driesse model.
pvlib.irradiance.ghi_from_poa_driesse_2023()
(GH1901, GH1907)pvlib.bifacial.infinite_sheds.get_irradiance()
andpvlib.bifacial.infinite_sheds.get_irradiance_poa()
now include shaded fraction in returned variables. (GH1871)Added
get_solcast_tmy()
,get_solcast_historic()
,get_solcast_forecast()
andget_solcast_live()
to read data from the Solcast API. (GH1313, GH1875)Added
convert()
andfit()
that convert between IAM models, and that fit an IAM model to data. (GH1824, GH1827)Add
pvlib.iotools.read_solaranywhere()
andpvlib.iotools.get_solaranywhere()
for reading and retrieving SolarAnywhere solar irradiance data. (GH1497, GH1310)
Bug fixes#
Fixed CAMS error message handler in
pvlib.iotools.get_cams()
. (GH1799, GH1905)Fix mapping of the dew point column to
temp_dew
whenmap_variables
is True inpvlib.iotools.get_psm3()
. (GH1920)Fix
pvlib.modelchain.ModelChain
to use attribute clearsky_model. (GH1924)
Testing#
Documentation#
Create Weather data User’s Guide page. (GH1754)
Fixed a plotting issue in the IV curve gallery example. (GH1895)
Added two examples to demonstrate reverse transposition. (GH1907)
Fixed
detect_clearsky()
example in Clear sky. (GH1914)Clarified purpose of ModelChain.clearsky_model. (GH1924)
Requirements#
Contributors#
Arjan Keeman (@akeeman)
Miguel Sánchez de León Peque (@Peque)
Will Hobbs (@williamhobbs)
Anton Driesse (@adriesse)
Abigail Jones (@ajonesr)
Cliff Hansen (@cwhanse)
Gilles Fischer (@GillesFischerV)
Adam R. Jensen (@AdamRJensen)
Harry Jack (@harry-solcast)
Kevin Anderson (@kandersolar)
Lorenzo Riches (@lorenzo-solcast)
Hugh Cutcher (@hugh-solcast)
Echedey Luis (@echedey-ls)
Will Holmgren (@wholmgren)
Miroslav Šedivý (@eumiro)
Mark Mikofski (@mikofski)
Phoebe Pearce (@phoebe-p)
Eva-Maria Grommes (@EwaGomez)
v0.10.2 (September 21, 2023)#
Enhancements#
Added .pan/.ond reader function
pvlib.iotools.read_panond()
. (GH1747, GH1749)Added support for dates to be specified as strings in the iotools get functions:
get_pvgis_hourly()
,get_cams()
,get_bsrn()
, andread_midc_raw_data_from_nrel()
. (GH1800)Added support for asymmetric limiting angles in
pvlib.tracking.singleaxis()
andSingleAxisTrackerMount
. (GH1777, GH1809, GH1852)Added option to infer threshold values for
pvlib.clearsky.detect_clearsky()
(GH1808, GH1784)Added a continuous version of the Erbs diffuse-fraction/decomposition model.
pvlib.irradiance.erbs_driesse()
(GH1755, GH1834)Added
interp()
option as AOI losses model inModelChain
andPVSystem
. (GH1742, GH1832)PVSystem
objects with a singleArray
can now be created without wrapping theArray
in a list first. (GH1831, GH1854)
Bug fixes#
get_psm3()
no longer incorrectly returns clear-sky DHI instead of clear-sky GHI when requestingghi_clear
. (GH1819)pvlib.singlediode.bishop88()
withmethod='newton'
no longer crashes when passedpandas.Series
of length one. (GH1787, GH1822)PVSystem
now correctly passesn_ar
module parameter topvlib.iam.physical()
when this IAM model is specified or inferred. (GH1832)
Testing#
Documentation#
Added docstring detail for
pvlib.iam.schlick_diffuse()
. (GH1811, GH1812)Specified that
pvlib.singlediode.bishop88()
,pvlib.singlediode.bishop88_i_from_v()
, andpvlib.singlediode.bishop88_v_from_i()
parametersbreakdown_factor
,breakdown_voltage
, andbreakdown_exp
should be floats. (GH1820, GH1821)Fix and update example in
pvlib.pvsystem.retrieve_sam()
. (GH1741, GH1833)Fix error in
pvlib.iotools.get_pvgis_hourly()
documentation ofsurface_azimuth
. (GH1724, GH1838)Update definition of
snow_events
parameter forpvlib.snow.loss_townsend()
. (GH1839, GH1840)Added gallery example demonstrating how horizon profile data from
pvlib.iotools.get_pvgis_horizon()
, can be used to apply horizon shading to time series dni and global poa data. (GH1849)
Contributors#
Connor Krening (@ckrening)
Adam R. Jensen (@AdamRJensen)
Michal Arieli (@MichalArieli)
Abigail Jones (@ajonesr)
Taos Transue (@reepoi)
Echedey Luis (@echedey-ls)
Todd Karin (@toddkarin)
NativeSci (@nativesci)
Anton Driesse (@adriesse)
Lukas Grossar (@tongpu)
Areeba Turabi (@aturabi)
Saurabh Aneja (@spaneja)
Miroslav Šedivý (@eumiro)
kjsauer (@kjsauer)
Jules Chéron (@jules-ch)
Cliff Hansen (@cwhanse)
Will Holmgren (@wholmgren)
Mark Mikofski (@mikofski)
Kevin Anderson (@kandersolar)
v0.10.1 (July 3, 2023)#
To resolve an installation issue with pvfactors
and shapely
,
this release drops the optional pvfactors
dependency and replaces
it with solarfactors
, a fork of pvfactors
maintained by the
pvlib community. This change should not affect any user code.
(GH1796, GH1797, GH1657)
v0.10.0 (June 30, 2023)#
Breaking changes#
After being deprecated for over a year, the
pvlib.forecast
module is now removed entirely. (GH1766)The following, originally deprecated in v0.9.0 (September 1, 2021), is now removed: (GH1770)
The
pvlib.tracking.SingleAxisTracker
classThe various model-specific
PVSystem
inverter and cell temperature methodsAttribute “pass-through” from
ModelChain
toModelChainResult
The
eta_m
parameter inpvlib.temperature.pvsyst_cell()
Reorder arguments of
pvlib.pvsystem.PVSystem.i_from_v()
,pvlib.pvsystem.i_from_v()
,pvlib.pvsystem.v_from_i()
,pvlib.singlediode._lambertw_i_from_v()
, andpvlib.singlediode._lambertw_v_from_i()
to matchpvlib.pvsystem.singlediode()
. (GH1718, GH1719)Map wind direction to
'wind_direction'
instead of'wind_dir'
inpvlib.iotools.read_srml()
andpvlib.iotools.read_srml_month_from_solardat
(GH1773)get_pvgis_tmy()
andread_pvgis_tmy()
now rename columns to standard pvlib names by default (map_variables=True
) (GH1772)In
get_pvgis_tmy()
, themap_variables
keyword parameter now comes before theurl
keyword parameter. (GH1795)Modified the
surface_azimuth
parameter inpvlib.iotools.get_pvgis_hourly()
to conform to the pvlib azimuth convention (counterclockwise from north). Previously 0 degrees represented south. (GH1724, GH1739)For consistency with the rest of pvlib, the
pw
parameters are renamed toprecipitable_water
inpvlib.spectrum.spectral_factor_firstsolar()
. (GH1768)For consistency with the rest of pvlib, the
tilt
parameter is renamed tosurface_tilt
inpvlib.soiling.hsu()
. (GH1717, GH1738)Several undocumented functions in
pvlib.iotools.midc
,pvlib.iotools.srml
, andpvlib.iotools.surfrad
are now private. (GH1756, GH1769)
Deprecations#
The
ivcurve_pnts
parameter ofpvlib.pvsystem.singlediode()
is deprecated. Usepvlib.pvsystem.v_from_i()
andpvlib.pvsystem.i_from_v()
instead. (GH1626, GH1743)Functions for calculating spectral modifiers have been moved to
pvlib.spectrum
:pvlib.atmosphere.first_solar_spectral_correction()
is deprecated and replaced byspectral_factor_firstsolar()
, andpvlib.pvsystem.sapm_spectral_loss()
is deprecated and replaced byspectral_factor_sapm()
. (GH1628)Removed the
get_ecmwf_macc
andread_ecmwf_macc
iotools functions as the MACC dataset has been removed by ECMWF (data period 2003-2012). Instead, ECMWF recommends to use CAMS global reanalysis (EAC4) from the Atmosphere Data Store (ADS). See alsopvlib.iotools.get_cams()
. (GH1691, GH1654)The
recolumn
parameter inpvlib.iotools.read_tmy3()
, which maps TMY3 column names to nonstandard alternatives, is now deprecated. We encourage usingmap_variables
(which produces standard pvlib names) instead. (GH1517, GH1623)pvlib.iotools.read_srml_month_from_solardat
is deprecated and replaced bypvlib.iotools.get_srml()
. (GH1779)
Enhancements#
Added two new irradiance decomposition models:
pvlib.irradiance.orgill_hollands()
(GH1730) andpvlib.irradiance.louche()
(GH1705).The return values of
pvlib.pvsystem.calcparams_desoto()
,pvlib.pvsystem.calcparams_cec()
, andpvlib.pvsystem.calcparams_pvsyst()
are all numeric types and have the same Python type as theeffective_irradiance
andtemp_cell
parameters. (GH1626, GH1700)Added
map_variables
parameter topvlib.iotools.read_tmy3()
(GH1517, GH1623),pvlib.iotools.read_srml()
, andpvlib.iotools.read_srml_month_from_solardat
(GH1773).Added
pvlib.iotools.get_srml()
that is similar topvlib.iotools.read_srml_month_from_solardat
but is able to fetch multiple months of data using thestart
andend
parameters. (GH1779)Allow passing keyword arguments to
scipy.optimize.brentq()
andscipy.optimize.newton()
solvers inbishop88_mpp()
,bishop88_i_from_v()
andbishop88_v_from_i()
. Among others, tolerance and number of iterations can be set. (GH1249, GH1764)Improved
ModelChainResult.__repr__
(GH1236)Exposes several functions useful for bifacial and shading calculations (GH1666):
Added a function
pvlib.spectrum.spectral_factor_caballero()
to estimate spectral mismatch modifiers from atmospheric conditions. (GH1296)Add optional
encoding
parameter topvlib.iotools.read_tmy3()
. (GH1732, GH1737)Added function to retrieve horizon data from PVGIS
pvlib.iotools.get_pvgis_horizon()
. (GH1290, GH1395)Update the URL used in the
pvlib.iotools.get_cams()
function. The new URL supports load-balancing and redirects to the fastest server. (GH1688, GH1740)pvlib.iotools.get_psm3()
now has aurl
parameter to give the user the option of controlling what NSRDB endpoint is used. (GH1736)pvlib.iotools.get_psm3()
now uses the new NSRDB 3.2.2 endpoint for hourly and half-hourly single-year datasets. (GH1591, GH1736)The default solar position algorithm (NREL SPA) is now 50-100% faster. (GH1748)
Added functions to retrieve daily precipitation, temperature, and snowfall data from the NOAA’s ACIS service:
get_acis_prism()
,get_acis_nrcc()
,get_acis_mpe()
,get_acis_station_data()
, andget_acis_available_stations()
. (GH1293, GH1767)
Bug fixes#
Prevent small negative values of
v_oc
inpvlib.singlediode._lambertw()
which result from accumulated roundoff error. (GH1780, GH1673, GH1782)Corrects an error in view factor calculations which are part of
pvlib.bifacial.infinite_sheds.get_irradiance()
. The error affects rear surface irradiance by a few W/m2. As part of the correction, average view factors are now computed by exact formulas rather than by numerical integration. (GH1665, GH1666)data
can no longer be left unspecified inpvlib.modelchain.ModelChain.run_model_from_effective_irradiance()
. (GH1713, GH1720)d2mutau
andNsVbi
are now correctly passed throughpvlib.pvsystem.max_power_point()
instead of being hardcoded. (GH1733)pvlib.iam.physical()
no longer returns NaN whenn=1
andaoi>90
. This bug was introduced in v0.9.5. (GH1706, GH1707)
Testing#
Documentation#
Updated the description of the interval parameter in
pvlib.iotools.get_psm3()
. (GH1702, GH1712)
Requirements#
With the removal of
pvlib.forecast
, the following packages are no longer listed as (optional) dependencies:netCDF4
,cftime
, andsiphon
. (GH1766)
Contributors#
Taos Transue (@reepoi)
Nicholas Riedel-Lyngskær (@nicorie)
Adam R. Jensen (@AdamRJensen)
Echedey Luis (@echedey-ls)
Cliff Hansen (@cwhanse)
Cédric Leroy (@cedricleroy)
Jean-Baptiste Pasquier (@pasquierjb)
Mark Mikofski (@mikofski)
Lakshya Garg (@Lakshyadevelops)
Ben Pierce (@bgpierc)
Joseph Palakapilly (@JPalakapillyKWH)
Anton Driesse (@adriesse)
Will Holmgren (@wholmgren)
Karel De Brabandere (@kdebrab)
Josh Stein (@jsstein)
Kevin Anderson (@kandersolar)
Siddharth Kaul (@k10blogger)
Kshitiz Gupta (@kshitiz305)
Stefan de Lange (@langestefan)
Jose Antonio Caballero (@Jacc0027)
Andy Lam (@andylam598)
Devon Watt (@d-watt)
Todd Karin (@toddkarin)
Corey Pullium (@cpullium)
v0.9.5 (March 18, 2023)#
Starting with this version, new releases are no longer distributed through
the pvlib
conda channel. We recommend
conda
users install from the conda-forge
channel instead (see
Installation).
Enhancements#
Added the optional
string_factor
parameter topvlib.snow.loss_townsend()
. (GH1636, GH1653)Added optional
n_ar
parameter topvlib.iam.physical()
to support an anti-reflective coating. (GH1501, GH1616)boland()
is another diffuse fraction, DF, estimation method similar to Erbs but uses a single logistic exponential correlation between DF and clearness index, kt, that is continuously differentiable and bounded between zero and one. (GH1179)Add
model='gueymard2003'
, the airmass model used for REST and REST2, toget_relative_airmass()
. (GH1655)Added an optional
model
parameter topvlib.bifacial.infinite_sheds.get_irradiance()
andpvlib.bifacial.infinite_sheds.get_irradiance_poa()
to enable use of the hay-davies sky diffuse irradiance model instead of the default isotropic model. (GH1668)Added an optional
vectorize
parameter topvlib.bifacial.infinite_sheds.get_irradiance()
andpvlib.bifacial.infinite_sheds.get_irradiance_poa()
which, when set toTrue
, enables faster calculation but with increased memory usage. (GH1680, GH1682)Update the ADR inverter model parameter database by appending the ADR equivalents of all inverters in the current (2019) Sandia inverter model parameter database. (GH1695)
Use Horner’s Method to evaluate polynomials in
disc()
, may decrease runtime by 20%. (GH1180, GH1183)
Bug fixes#
Added a limit to
pvlib.snow.loss_townsend()
to guard against incorrect loss results for systems that are near the ground. (GH1636, GH1653)Fixed incorrect mapping of requested parameters names when using
pvlib.iotools.get_psm3()
. Also fixed the random reordering of the dataframe columns. (GH1629, GH1647, GH1648)When using
utc_time_range
withpvlib.iotools.read_ecmwf_macc()
, the time index subset is now selected withnearest
instead ofbefore
andafter
for consistency withcftime>=1.6.0
. (GH1609, GH1656)pvsyst_temperature_coeff()
no longer raises a scipy deprecation warning (and is slightly more accurate). (GH1644, GH1674)
Testing#
Added Python 3.11 to test suite. (GH1582)
Updated PSM3 test data files to match the new version 3.2.2 data returned by the PSM3 API. (GH1591, GH1652)
Testing
pvlib.pvsystem.singlediode()
,pvlib.pvsystem.v_from_i()
, andpvlib.pvsystem.i_from_v()
against precisely generated IV curve data. (GH411, GH1573)
Documentation#
Benchmarking#
Added benchmarks for
pvlib.bifacial.infinite_sheds
. (GH1627)
Requirements#
Removed unnecessary
nose
test requirement. (GH1637)
Contributors#
Kevin Anderson (@kanderso-nrel)
Will Holmgren (@wholmgren)
Cliff Hansen (@cwhanse)
Adam R. Jensen (@adamrjensen)
Pratham Chauhan (@ooprathamm)
Karel De Brabandere (@kdebrab)
Mark Mikofski (@mikofski)
Anton Driesse (@adriesse)
Michael Deceglie (@mdeceglie)
Saurabh Aneja (@spaneja)
John Moseley (@johnMoseleyArray)
Areeba Turabi (@aturabi)
Mark Campanelli (@markcampanelli)
Taos Transue (@reepoi)
Tim Townsend
Tom Arjannikov (@Arjannikov)
v0.9.4 (December 20, 2022)#
Enhancements#
Multiple code style issues fixed that were reported by LGTM analysis. (GH1275, GH1559)
Added a direct IAM model
pvlib.iam.schlick()
which can be used withmarion_diffuse()
, and a diffuse IAM modelpvlib.iam.schlick_diffuse()
. (GH1562, GH1564)Added a function to calculate one of GHI, DHI, and DNI from values of the other two.
complete_irradiance()
. (GH1565, GH1567)Added optional
return_components
parameter topvlib.irradiance.haydavies()
to return individual diffuse irradiance components. (GH1553, GH1568)Added a module temperature model that accounts for radiative losses to the sky in a simplified way, using the Faiman model as an example.
faiman_rad()
(GH1594, GH1595)Added a function
pvlib.ivtools.utils.astm_e1036()
to perform ASTM E1036 extraction of IV curve parameters. (GH1585)Added the ADR PV module efficiency model and a function to find its parameters from field or lab measurements (
pvefficiency_adr()
andfit_pvefficiency_adr()
). (GH1544, GH1602)
Bug fixes#
Fixed bug in
pvlib.shading.masking_angle()
andpvlib.bifacial.infinite_sheds._ground_angle()
where zerogcr
input caused a ZeroDivisionError. (GH1576, GH1589)Fixed bug in
pvlib.tools._golden_sect_DataFrame()
so that a result is returned when the search interval is length 0 (which occurs inpvlib.pvsystem.singlediode()
if v_oc is 0.) (GH1603, GH1606)
Testing#
Corrected a flawed test for
get_ground_diffuse()
. (GH1569, GH1575)
Documentation#
Added an FAQ page to the docs: Frequently Asked Questions. (GH1546, GH1549)
Fixed equation in
pvlib.iam.martin_ruiz()
docstring. (GH1561, GH1599)Fixed an error in
pvlib.singlediode.bishop88_mpp()
docstring. (GH1613, GH1615)Added three gallery examples demonstrating how the new ADR PV model can be used for time series simulation. (GH1544, GH1602)
Benchmarking#
Requirements#
Contributors#
Kirsten Perry (@kperrynrel)
Christian Orner (@chrisorner)
Saurabh Aneja (@spaneja)
Marcus Boumans (@bowie2211)
Michael Deceglie (@mdeceglie)
Yu Xie (@xieyupku)
Anton Driesse (@adriesse)
Cliff Hansen (@cwhanse)
Kevin Anderson (@kanderso-nrel)
Karel De Brabandere (@kdebrab)
Naman Priyadarshi (@Naman-Priyadarshi)
Adam R. Jensen (@AdamRJensen)
Echedey Luis (@echedey-ls)
Mark Mikofski (@mikofski)
Mark Campanelli (@markcampanelli)
Will Holmgren (@wholmgren)
Marios Theristis (@mtheristis)
v0.9.3 (September 15, 2022)#
Enhancements#
New class and function translate module temperature model parameters
GenericLinearModel()
generic_linear()
(GH1442, GH1463)Low resolution altitude lookup map
lookup_altitude()
(GH1516, GH1518)New module to calculate spectral mismatch from field spectral measurements
get_example_spectral_response()
get_am15g()
calc_spectral_mismatch_field()
(GH1523, GH1524)Added Townsend-Powers monthly snow loss model:
pvlib.snow.loss_townsend()
(GH1246, GH1251, GH1468)
Documentation#
Contributors#
João Guilherme (@joaoguilhermeS)
Nicolas Martinez (@nicomt)
Anton Driesse (@adriesse)
Cliff Hansen (@cwhanse)
Kevin Anderson (@kanderso-nrel)
Mark Mikofski (@mikofski)
Will Holmgren (@wholmgren)
Mark Campanelli (@markcampanelli)
Adam R. Jensen (@AdamRJensen)
Abhishek Parikh (@abhisheksparikh)
Taos Transue (@reepoi)
v0.9.2 (August 19, 2022)#
Enhancements#
albedo can now be provided as a column in the weather DataFrame input to
pvlib.modelchain.ModelChain.run_model()
. (GH1387, GH1478)albedo is now available as an input to
pvlib.pvsystem.PVSystem.get_irradiance()
andpvlib.pvsystem.Array.get_irradiance()
. (GH1478)pvlib.iotools.read_surfrad()
now also accepts remote files with https links in addition to files on the SURFRAD FTP server. (GH1459)Add
pvlib.tracking.calc_surface_orientation()
for calculating single-axis trackersurface_tilt
andsurface_azimuth
from rotation angles. (GH1471, GH1480)Improve error message about uneven time intervals for
detect_clearsky()
andprilliman()
. (GH1476, GH1490)Add support for PEP517 & PEP518 with setuptools build backend. (GH1495)
Bug fixes#
pvlib.irradiance.get_total_irradiance()
andpvlib.solarposition.spa_python()
now raise an error instead of silently ignoring unknown parameters. (GH1437)Fix a bug in
pvlib.solarposition.sun_rise_set_transit_ephem()
where passing localized timezones with large UTC offsets could return rise/set/transit times for the wrong day in recent versions ofephem
. (GH1449, GH1448)pvlib.iotools.read_tmy3()
is now able to accept midnight timestamps as either 24:00 (which is the standard) as well as 00:00. Previously 00:00 timestamps would incorrectly be moved one day forward. (GH1494)pvlib.iotools.get_psm3()
now raises a deprecation warning if theleap_day
parameter is not specified in a single-year request. Starting in pvlib 0.11.0leap_day
will default to True instead of False. (GH1481, GH1511)
Testing#
Documentation#
Added a reference to
pvlib.inverter.sandia_multi()
. (GH1479)Add gallery example of simulating rearside irradiance for a fixed-tilt array with pvfactors. (GH1470)
Benchmarking#
Requirements#
Contributors#
Adam R. Jensen (@AdamRJensen)
Naman Priyadarshi (@Naman-Priyadarshi)
Chencheng Luo (@roger-lcc)
Prajwal Borkar (@PrajwalBorkar)
Cliff Hansen (@cwhanse)
Kevin Anderson (@kanderso-nrel)
Cliff Hansen (@cwhanse)
Jules Chéron (@jules-ch)
Kurt Rhee (@kurt-rhee)
Will Hobbs (@williamhobbs)
Stephen Schneider (@sjschneider)
Mark Campanelli (@campanelli-sunpower)
Anton Driesse (@adriesse)
Kristen Wagner (@kwagnercpr)
Mark Mikofski (@mikofski)
v0.9.1 (March 29, 2022)#
Deprecations#
Moved
pvlib.bifacial.pvfactors_timeseries()
topvlib.bifacial.pvfactors.pvfactors_timeseries()
.pvlib.bifacial
is now a sub-package. (GH717)pvlib.modelchain.basic_chain
is deprecated. Seepvlib.modelchain.ModelChain.with_pvwatts()
andpvlib.modelchain.ModelChain.with_sapm()
for alternative simplifiedModelChain
interfaces, although note that the inputs do not directly translate. (GH1401)All functionality in the
pvlib.forecast
module is deprecated. For details, seeforecasts
. (GH1057, GH1426)
Enhancements#
Added
map_variables
option topvlib.iotools.get_psm3()
andpvlib.iotools.read_psm3()
(GH1374)Added
pvlib.bifacial.infinite_sheds
, containing a model for irradiance on front and back surfaces of bifacial arrays. (GH717)Added
map_variables
option toread_crn()
(GH1368)Added
pvlib.temperature.prilliman()
for modeling cell temperature at short time steps (GH1081, GH1391)
Bug fixes#
Address round-off effects in
pvlib.ivtools.utils._schumaker_qspline()
(GH1311, GH1315)Fixed a bug in
pvlib.spectrum.spectrl2()
where negative spectral irradiance values were returned when the sun is behind the plane of array (GH1348, GH1349)Fixed bug in
pvlib.iotools.get_pvgis_hourly()
where theoptimal_surface_tilt
argument was not being passed to theoptimalinclination
request parameter (GH1356)Fixed bug in
pvlib.bifacial.pvfactors.pvfactors_timeseries()
where scalarsurface_tilt
andsurface_azimuth
inputs caused an error (GH1127, GH1332, GH1361)Added -99999 to list of values to map to nan in
read_crn()
(GH1372, GH1368)Changed the metadata entry for the wind speed unit to “Wind Speed Units” in the PSM3 iotools function (GH1375)
Improved convergence when determining the maximum power point using for
pvlib.pvsystem.singlediode()
withmethod='lambertw'
. Tolerance is determined for the voltage at the maximum power point, and is improved from 0.01 V to 1e-8 V. (GH1087, GH1089)
Testing#
Updated test values to match the new values returned by the PVGIS TMY API. The difference is very minor (0.01 W/m2, affecting only a few beam irradiance values) (GH1396)
Documentation#
Fix documentation return error in
pvlib.forecast.ForecastModel.cloud_cover_to_transmittance_linear()
(GH1367, GH1370)Add gallery example illustrating bifacial simulation using the
pvlib.bifacial.pvfactors.pvfactors_timeseries()
function and eitherpvlib.modelchain.ModelChain
or procedural functions. (GH1394)Fix some typos (GH1414)
Clarify the descriptions of
delta_t
in several solar position functions (GH1429)Changed $C$ to $\degree C$ in the plot_singlediode.py file (GH1434)
Requirements#
Contributors#
Cliff Hansen (@cwhanse)
Christian Weickhmann (@cweickhmann)
Kevin Anderson (@kanderso-nrel)
Adam R. Jensen (@AdamRJensen)
Johann Loux (@JoLo90)
Saurabh Aneja (@spaneja)
Jack Kelly (@JackKelly)
Somasree Majumder(@soma2000-lang)
Naman Priyadarshi (@Naman-Priyadarshi)
Will Holmgren (@wholmgren)
Mark Mikofksi (@mikofski)
Will Hobbs (@williamhobbs)
Uday Guntupalli (@uguntupalli)
Shashwata Roy (@RoyCoding8)
v0.9.0 (September 1, 2021)#
Breaking changes#
Moved functions related to inverters from
pvsystem.py
toinverter.py
. Functions are renamed to follow a more consistent pattern, as follows (GH886, GH1136):pvlib.pvsystem.snlinverter
is nowpvlib.inverter.sandia()
pvlib.pvsystem.pvwatts_ac
is nowpvlib.inverter.pvwatts()
pvlib.pvsystem.adrinverter
is nowpvlib.inverter.adr()
Argument
ac_model
forpvlib.modelchain.ModelChain
now accepts'sandia'
,'pvwatts'
and'adr'
for the inverter models. (GH886, GH1136)Calling
pvlib.pvsystem.PVSystem.sapm_celltemp()
without settingPVSystem.temperature_model_parameters
, or a valid combination ofPVsystem.module_type
andPVsystem.racking_model
, will now raise an exception. (GH1030, GH1033, GH1136)Deprecated arbitrary keyword arguments for
pvlib.location.Location
,pvlib.pvsystem.PVSystem
,pvlib.tracking.SingleAxisTracker
, andpvlib.modelchain.ModelChain
. Supplying arbitrary keyword to these objects result in TypeErrors in v0.9. (GH1029, GH1053, GH1136)pvlib.pvsystem.LocalizedPVSystem
andpvlib.pvsystem.LocalizedSingleAxisTracker
have been removed. Usepvlib.location.Location
,pvlib.pvsystem.PVSystem
,pvlib.tracking.SingleAxisTracker
, andpvlib.modelchain.ModelChain
instead. (GH1029, GH1034, GH1053, GH1136)irradiance.liujordan
andForecastModel.cloud_cover_to_irradiance_liujordan
have been removed. (GH1136)ModelChain.snlinverter
changed toModelChain.sandia_inverter
.ModelChain.adrinverter
changed toModelChain.adr_inverter
. (GH1150)The
orientation_strategy
parameter has been removed from the variouspvlib.modelchain.ModelChain
constructors andsurface_tilt
,surface_azimuth
are now required parameters forpvlib.modelchain.basic_chain
(GH1028, GH1181)Removed the
**kwargs
parameters fromsapm()
andcalcparams_desoto()
andcalcparams_cec()
(GH1118, GH1222)Switched the order of the outputs from the PSM3 iotools, notably
get_psm3()
andread_psm3()
(GH1245, GH1268)Changed the naming of the inputs
startdate
/enddate
tostart
/end
inget_ecmwf_macc()
(GH1245, GH1268)Change the naming of the inputs
lat
/lon
tolatitude
/longitude
inget_pvgis_tmy()
(GH1245, GH1268)
Deprecations#
The following
ModelChain
attributes are deprecated. They have been moved to theModelChainResult
class that is accessible viaModelChain.results
:ModelChain.ac
ModelChain.airmass
ModelChain.aoi
ModelChain.aoi_modifier
ModelChain.cell_temperature
ModelChain.dc
ModelChain.diode_params
ModelChain.effective_irradiance
ModelChain.losses
ModelChain.solar_position
ModelChain.spectral_modifier
ModelChain.total_irrad
ModelChain.tracking
ModelChain.weather
ModelChain.times
The following
PVSystem
cell temperature methods have been deprecated and consolidated into the new wrapper methodget_cell_temperature()
(GH1211):sapm_celltemp()
pvsyst_celltemp()
faiman_celltemp()
fuentes_celltemp()
noct_sam_celltemp()
The
eta_m
parameter forpvsyst_cell()
is replaced by parametermodule_efficiency
. (GH1188, GH1218)The following attributes of
pvlib.pvsystem.PVSystem
andpvlib.tracking.SingleAxisTracker
have been deprecated in favor of the correspondingpvlib.pvsystem.Array
attributes:PVSystem.albedo
PVSystem.module
PVSystem.module_parameters
PVSystem.module_type
PVSystem.modules_per_string
PVSystem.racking_model
PVSystem.strings_per_inverter
PVSystem.surface_tilt
PVSystem.surface_azimuth
PVSystem.temperature_model_parameters
The
pvlib.tracking.SingleAxisTracker
class is deprecated and replaced by usingpvlib.pvsystem.PVSystem
with the newpvlib.pvsystem.SingleAxisTrackerMount
(GH1176)
Enhancements#
Added
read_pvgis_hourly()
andget_pvgis_hourly()
for reading and retrieving hourly solar radiation data and PV power output from PVGIS. (GH1186, GH849)Added
map_variables
option toget_pvgis_tmy()
andread_pvgis_tmy()
(GH1250, GH1268)Add
get_bsrn()
andread_bsrn()
for retrieving and reading BSRN solar radiation data files. (GH1254, GH1145, GH1015)Add
get_cams()
,parse_cams()
, andread_cams()
for retrieving, parsing, and reading CAMS Radiation and McClear time-series files. (GH1175)In
ModelChain
, attributes which contain output of models are now collected intoModelChain.results
. (GH1076, GH1067)Added
Array
class to represent an array of modules separately from aPVSystem
. (GH1076, GH1067)Added
FixedMount
andSingleAxisTrackerMount
classes to use with the newArray
class (GH1176)Added capability for modeling a PV system with multiple arrays in
PVSystem
. Updates thePVSystem
API to operate on and return tuples where each element of the tuple corresponds to the input or output for a specificArray
. (GH1076, GH1067)Support for systems with multiple
Arrays
added toModelChain
. This includes substantial API enhancements for accepting different weather input for eachArray
in the system. (GH1076, GH1067)Support for
sandia_multi()
andpvwatts_multi()
added toPVSystem
andModelChain
(asac_model='sandia'
andac_model='pvwatts'
). (GH1076, GH1067, GH1132, GH1117, GH1150)ModelChain
‘run_model’ methods now automatically switch to using'effective_irradiance'
(if available) for cell temperature models, when'poa_global'
is not provided in input weather or calculated from input weather data.pvwatts_dc()
now scales the DC power bypvsystem.PVSystem.modules_per_strings
andpvsystem.PVSystem.strings_per_inverter
. Note that both attributes still default to 1. (GH1138)get_ac()
is added to calculate AC power from DC power. Use parametermodel
to specify which inverter model to use. (GH1147, GH998, GH1150)Added
noct_sam()
, a cell temperature model implemented in SAM. (GH1177, GH1195)Added
pvsyst_temperature_coeff()
to calculate the temperature coefficient of power for the pvsyst module model. (GH1190)get_total_irradiance()
andget_sky_diffuse()
now fill inairmass
if required and not provided. These functions now raise aValueError
ifdni_extra
is required and not provided. (GH949, GH1225)
Bug fixes#
Corrected an error in
perez()
where the horizon irradiance component was prevented from taking negative values. Negative values are intentional according to the original publication. Changes in output are expected to be small and primarily occur at low irradiance conditions. (GH1238, GH1239)Pass weather data to solar position calculations in
prepare_inputs_from_poa()
. (GH1065, GH1140)Reindl model fixed to generate sky_diffuse=0 when GHI=0. (GH1153, GH1154)
Fix floating point round-off issue in
aoi_projection()
(GH1185, GH1191)Take into account
EgRef
,dEgdT
,irrad_ref
andtemp_ref
when callingcalcparams_cec()
. (GH1215, GH1216)Corrected methodology error in
wvm()
. Tracks with fix in PVLib for MATLAB. (GH1206, GH1213)Corrected an error affecting
detect_clearsky()
when data time step is not one minute. Error was introduced in v0.8.1. (GH1241, GH1242)Corrected error affecting
_compute_wavelet()
when passing a pandas time series with a sampling rate faster than 1 second. (GH1257, GH1258)Changed deprecated use of
.astype()
to.view()
insolarposition
. (GH1256, GH1261, GH1262)Fix
singleaxis()
AOI wrong when sun behind module. (GH1273, GH1221)Fix
get_data()
failure to correct for non-UTC timezones. (GH1237, GH1285)Fixed
HRRR
by changing model name to reflect change on the server. (GH1291, GH1292)
Testing#
Added
__init__.py
topvlib/tests
and subdirectories. This follows pytest recommendations for package layout and imports fromconftest.py
. Solves issue with test discovery in vscode. (GH1204)
Documentation#
Update intro tutorial to highlight the use of historical meteorological data and to make the procedural and OO results match exactly. (GH1116, GH1144)
Add a gallery example showing how to appropriately use interval-averaged weather data for modeling. (GH1152)
Update documentation links in
pvlib.iotools.get_psm3()
(GH1169)Use
Mount
classes inintrotutorial
andpvsystem
docs pages (GH1267)Clarified how statistics are calculated for
pvlib.clearsky.detect_clearsky()
(GH1070, GH1243)Add gallery examples using the new
Mount
classes (GH1266)Add “powered by pvlib” logos (GH1277)
Requirements#
Contributors#
Will Holmgren (@wholmgren)
Cliff Hansen (@cwhanse)
Will Vining (@wfvining)
Anton Driesse (@adriesse)
Mark Mikofski (@mikofski)
Nate Croft (@ncroft-b4)
Kevin Anderson (@kanderso-nrel)
Adam R. Jensen (@AdamRJensen)
Joshua Stein (@jsstein)
Tony Lorenzo (@alorenzo175)
Damjan Postolovski (@dpostolovski)
Miguel Sánchez de León Peque (@Peque)
Joe Ranalli (@jranalli)
Chas Schweizer (@cpr-chas)
Yoann Louvet (@YoannUniKS)
Brandon Carpenter (@hashstat)
v0.8.1 (January 4, 2021)#
Deprecations#
pvlib.irradiance.liujordan
is deprecated.pvlib.irradiance.campbell_norman()
replacespvlib.irradiance.liujordan
.
Enhancements#
Add a numpy-based implementation of the SPECTRL2 spectral irradiance model
pvlib.spectrum.spectrl2()
(GH1062)Create
fuentes_celltemp()
and addtemperature_model='fuentes'
option toModelChain
. (GH1042) (GH1073)Added
pvlib.temperature.ross()
for cell temperature modeling using only NOCT. (GH1045)pvlib.clearsky.detect_clearsky()
now uses centered rolling windows instead of left-aligned rolling windows. (GH1074)The ‘times’ and ‘window_length’ parameters are now optional kwargs in
pvlib.clearsky.detect_clearsky()
. If omitted, ‘times’ is set equal to the index of parameter ‘measured’, and ‘window_length’ is set to 10 minutes. (GH1074)Added
pvlib.inverter.sandia_multi()
andpvlib.inverter.pvwatts_multi()
for modeling inverters with multiple MPPTs (GH457, GH1085, GH1106)Added optional
attributes
parameter topvlib.iotools.get_psm3()
and added the option of fetching 5- and 15-minute PSM3 data. (GH1086)Added
pvlib.irradiance.campbell_norman()
for estimating DNI, DHI and GHI from extraterrestrial irradiance. This function replacespvlib.irradiance.liujordan
; users ofpvlib.irradiance.liujordan
should note thatpvlib.irradiance.campbell_norman()
expects different parameters. (GH1104)pvlib.forecast.ForecastModel.cloud_cover_to_irradiance_campbell_norman()
replacespvlib.forecast.ForecastModel.cloud_cover_to_irradiance_liujordan
. (GH1104)
Bug fixes#
Fix issue with
pvlib.temperature.fuentes()
with timezone-aware inputs. (GH1071, GH1072)Raise
ValueError
frompvlib.modelchain.ModelChain.prepare_inputs()
when input does not have a ‘dhi’ column. (GH1092, GH1093)Add missing modules (including
shading
andscaling
) to__init__.py
. (GH1103)
Testing#
Documentation#
Contributors#
Kevin Anderson (@kanderso-nrel)
Siyan (Veronica) Guo (@veronicaguo)
Will Holmgren (@wholmgren)
Cliff Hansen (@cwhanse)
Will Vining (@wfvining)
Michael Jurasovic (@jurasofish)
Aziz Ben Othman (@AzizCode92)
Anton Driesse (@adriesse)
Mark Mikofski (@mikofski)
Junaid Fatehi (@jhfatehi)
v0.8.0 (September 8, 2020)#
Breaking changes#
The
ivtools.py
module has been reorganized into a subpackage and functions inivtools.py
have been renamed (GH708):Functions for fitting diode models are now in
pvlib.ivtools.sdm
pvlib.ivtools.fit_sdm_cec_sam()
is nowpvlib.ivtools.sdm.fit_cec_sam()
pvlib.ivtools.fit_sdm_desoto()
is nowpvlib.ivtools.sdm.fit_desoto()
Functions for fitting the single diode equation are now in
pvlib.ivtools.sde
pvlib.ivtools.fit_sde_sandia()
is nowpvlib.ivtools.sde.fit_sandia_simple()
Removed
run_parallel_calculations
andn_workers_for_parallel_calcs
frompvlib.bifacial.pvfactors_timeseries()
inputs (GH902) (GH934)pvlib.iotools.read_tmy3()
can now only read local data files because the NREL RREDC server hosting the TMY3 dataset has been retired. For fetching TMY data from NREL servers,pvlib.iotools.get_psm3()
is now recommended to retrieve newer PSM3 data over the older TMY3 data. (GH996) (GH1004)The tkinter-based file selection dialog has been removed from
pvlib.iotools.read_tmy2()
andpvlib.iotools.read_tmy3()
; the filepath is now a required parameter. (GH1004)Removed
systemdef
function frompvsystem.py
. This function was not used in pvlib and its output was not directly compatible with any pvlib function. Seepvlib.iotools.read_tmy2()
,pvlib.iotools.read_tmy3()
,pvlib.location.Location.from_tmy()
, andpvlib.pvsystem.LocalizedPVSystem
for alternatives. (GH965) (GH1008)The following functions, methods, and arguments were deprecated in a previous release and have now been removed (GH966, GH1033):
pvsystem.PVSystem.ashraeiam
. Usepvlib.pvsystem.PVSystem.get_iam()
.pvsystem.PVSystem.physicaliam
. Usepvlib.pvsystem.PVSystem.get_iam()
.pvsystem.PVSystem.sapm_aoi_loss
. Usepvlib.pvsystem.PVSystem.get_iam()
.pvsystem.ashraeiam
. Usepvlib.iam.ashrae()
.pvsystem.physicaliam
. Usepvlib.iam.physical()
.pvsystem.sapm_aoi_loss
. Usepvlib.iam.sapm()
.pvsystem.sapm_celltemp
. Usepvlib.temperature.sapm_cell()
.pvsystem.pvsyst_celltemp
. Usepvlib.temperature.pvsyst_cell()
.times
keyword argument ofpvlib.modelchain.ModelChain.run_model()
,pvlib.modelchain.ModelChain.complete_irradiance()
, andpvlib.modelchain.ModelChain.prepare_inputs()
. The index of the input DataFrame is used instead.temp_model
keyword argument ofpvlib.modelchain.ModelChain()
. Usetemperature_model
instead.
Deprecations#
Moved functions related to inverters from
pvsystem.py
toinverter.py
. Functions are renamed to follow a more consistent pattern, as follows (GH886):pvlib.pvsystem.snlinverter
is nowpvlib.inverter.sandia()
pvlib.pvsystem.pvwatts_ac
is nowpvlib.inverter.pvwatts()
pvlib.pvsystem.adrinverter
is nowpvlib.inverter.adr()
Argument
ac_model
forpvlib.modelchain.ModelChain
now accepts'sandia'
,'pvwatts'
and'adr'
for the inverter models. (GH886)pvlib.pvsystem.PVSystem
module_type
andracking_model
now default toNone
. This continues a deprecation of assuming SAPM values for cell temperature modeling. In this v0.8 release series, callingpvlib.pvsystem.PVSystem.sapm_celltemp()
without settingPVSystem.temperature_model_parameters
, or a valid combination ofPVsystem.module_type
andPVsystem.racking_model
, will causePVSystem.temperature_model_parameters
to be set to SAPM values for a glass/glass module in open racking and emit a warning. In v0.9, users must providetemperature_model_parameters
or a valid combination ofmodule_type
andracking_model
. (GH1030, GH1033)Deprecated arbitrary keyword arguments for
pvlib.location.Location
,pvlib.pvsystem.PVSystem
,pvlib.tracking.SingleAxisTracker
, andpvlib.modelchain.ModelChain
. Supplying arbitrary keyword to these objects will result in TypeErrors in v0.9. (GH1029, GH1053)pvlib.pvsystem.LocalizedPVSystem
andpvlib.pvsystem.LocalizedSingleAxisTracker
are deprecated and will be removed in 0.9. Usepvlib.location.Location
,pvlib.pvsystem.PVSystem
,pvlib.tracking.SingleAxisTracker
, andpvlib.modelchain.ModelChain
instead. (GH1029, GH1034, GH1053)
Enhancements#
Update
pvfactors_timeseries()
to run withpvfactors
v1.4.1 (GH902)(GH934)Add
pvlib.iam.marion_diffuse()
andpvlib.iam.marion_integrate()
to calculate IAM values for diffuse irradiance. (GH984)Add
pvlib.shading.sky_diffuse_passias()
,pvlib.shading.masking_angle_passias()
, andpvlib.shading.masking_angle()
to model diffuse shading loss. (GH1017)Add
pvlib.inverter.fit_sandia()
that fits the Sandia inverter model to a set of inverter efficiency curves. (GH1011)Add
pvlib.ivtools.sdm.fit_pvsyst_sandia()
andpvlib.ivtools.sdm.fit_desoto_sandia()
for fitting the Pvsyst and De Soto models to IV curve data (GH227)(GH708)Add factory methods
with_pvwatts()
with_sapm()
to createModelChain
objects configured for the respective modeling paradigms. The configurations are defined inmodelchain.PVWATTS_CONFIG
, andmodelchain.SAPM_CONFIG
. (GH1013, GH1022)Added
racking_model
,module_type
, andtemperature_model_parameters
toPVSystem
andSingleAxisTracker
repr methods. (GH1027)Added
calc_axis_tilt()
to calculate the tracker axes tilt andcalc_cross_axis_tilt()
to calculate the cross-axis tilt, which is the angle, relative to horizontal, of the line formed by the intersection between the slope containing the tracker axes and a plane perpendicular to the tracker axes. (GH823)Added
cross_axis_tilt
argument tosingleaxis()
andSingleAxisTracker()
which defaults to zero. Usecalc_cross_axis_tilt()
to calculate the cross-axis tilt angle if necessary. (GH823)Added ability for
pvlib.soiling.hsu()
to accept arbitrary time intervals. (GH980)Added
pvlib.temperature.fuentes()
for cell temperature modeling. (GH1037)Add
pvlib.pvsystem.combine_loss_factors()
as general purpose function to combine loss factors with a common index. Partialy addresses GH988. Contributed by Brock Taute @btauteAdd capability to run a ModelChain starting with plane-of-array or effective irradiance, or with back-of-module or cell temperature data. New methods are
pvlib.modelchain.ModelChain.run_model_from_poa()
,pvlib.modelchain.ModelChain.run_model_from_effective_irradiance()
, andpvlib.modelchain.ModelChain.prepare_inputs_from_poa()
(GH536, GH943)
Bug fixes#
Fixed unit and default value errors in
pvlib.soiling.hsu()
. (GH977, GH980)Handle NUL characters and fix version column dtype in
read_crn()
. (GH1025)Fix low sun angle tracker rotation calculation. (GH824)
Fix issue with big-endian and little-endian data in
forecast.py
. (GH921)
Testing#
Decorator
pvlib.conftest.fail_on_pvlib_version()
can now be applied to functions that require args or kwargs. (GH973)Test added for
pvlib.modelchain.ModelChain
to confirm ValueError whenac_model
is an invalid string. (GH886)Add minimum requirements configuration to Azure Pipelines build. (GH1006)
Update the data/test_psm3_tmy-2017.csv datafile to match the updated NSRDB data. (GH1005, GH1007)
Add wrappers around the pandas assert_X_equal functions to accommodate the changed API and default precision thresholds in pandas 1.1.0 (GH1018, GH1021)
Add github action for publishing tags to pypi.org. (GH950, GH1038, GH1039)
Remove Travis CI configuration. (GH950)
Documentation#
Improved formatting and content of docstrings in
pvlib.atmosphere
. (GH969)Fix LaTeX rendering in
pvlib.singlediode.bishop88()
. (GH967)Clarify units for heat loss factors in
pvlib.temperature.pvsyst_cell()
andpvlib.temperature.faiman()
. (GH960)Added hsu soiling model example to the gallery. (GH990)
Add make.bat so that docs can be built on Windows without
make
installed. (GH978, GH981)Add instructions to build the documentation. (GH982)
Corrected key names for
pvlib.inverter.sandia()
. (GH976, GH886)Add a transposition gain example to the gallery. (GH979)
Add a gallery example of calculating diffuse IAM using
pvlib.iam.marion_diffuse()
. (GH984)Add a gallery example of modeling diffuse shading loss. (GH1017)
Add minigalleries to API reference pages. (GH991)
Requirements#
Contributors#
Cliff Hansen (@cwhanse)
Kevin Anderson (@kanderso-nrel)
Mark Mikofski (@mikofski)
Joshua S. Stein (@jsstein)
Marc A. Anoma (@anomam)
Will Holmgren (@wholmgren)
Brock Taute (@btaute)
Cameron Stark (@CameronTStark)
Miguel Sánchez de León Peque (@Peque)
Stephen Lightfoote (@srlightfoote)
v0.7.2 (April 22, 2020)#
API Changes#
pvlib.forecast.ForecastModel
now requiresstart
andend
arguments to be tz-localized. (GH877, GH879)pvlib.iotools.read_tmy3()
when coerced to a single year now returns indices that are monotonically increasing. Therefore, the last index will be January 1, 00:00 of the next year. (GH910)Renamed
pvlib.losses
topvlib.soiling
. Additional loss models will go into code modules named for the loss or effect type. (GH935, GH891)Renamed
pvlib.losses.soiling_hsu
topvlib.soiling.hsu()
(GH935)
Enhancements#
TMY3 dataframe returned by
read_tmy3()
now contains the originalDate (MM/DD/YYYY)
andTime (HH:MM)
columns that the indices were parsed from. (GH866)Add
pvlib.pvsystem.PVSystem.faiman()
and addedtemperature_model='faiman'
option toModelChain
(GH897) (GH836).Add Kimber soiling model
pvlib.losses.soiling_kimber()
. (GH860)Add
pvlib.iotools.read_pvgis_tmy()
for files downloaded using the- Add Kimber soiling model
pvlib.soiling.kimber()
. (GH860, :issue`935`)
- Add Kimber soiling model
Add
read_pvgis_tmy()
for files downloaded using the PVGIS tool. (GH880)Add
pvlib.temperature.sapm_cell_from_module()
to convert back of module temperature to cell temperature (GH927)Add new module
pvlib.snow
to contain models related to snow coverage and effects on a PV system. (GH764)Add snow coverage model
pvlib.snow.coverage_nrel()
and function to identify when modules are fully covered by snowpvlib.snow.fully_covered_nrel()
. (GH577)Add function
pvlib.snow.dc_loss_nrel()
for effect of snow coverage on DC output. (GH764)Add capability to calculate current at reverse bias using an avalanche breakdown model, affects
pvlib.singlediode.bishop88()
,pvlib.singlediode.bishop88_i_from_v()
,pvlib.singlediode.bishop88_v_from_i()
,pvlib.singlediode.bishop88_mpp()
. (GH948)Add weather data arguments in get_solarpostion method of modelchain.ModelChain.prepare_inputs
modelchain.ModelChain.prepare_inputs()
(GH936)
Bug fixes#
Fix
read_tmy3()
parsing when February contains a leap year. (GH866)Implement NREL Developer Network API key for consistent success with API calls in
pvlib.tests.iotools.test_psm3
. (GH873)Fix issue with
pvlib.location.Location
creation when passingtz=datetime.timezone.utc
. (GH879)Fix documentation homepage title to “pvlib python” based on first heading on the page. (GH890) (GH888)
Fix missing 0.7.0 what’s new entries about changes to
PVSystem.pvwatts_ac
. Delete unreleased 0.6.4 what’s new file. (GH898)Compatibility with cftime 1.1. (GH895)
Minor implemention changes to avoid runtime and deprecation warnings in
detect_clearsky()
,martin_ruiz_diffuse()
,soiling_hsu()
, and various test functions.Fix
read_tmy3()
so that when coerced to a single year the TMY3 index will be monotonically increasing. (GH910)Fix
pvlib.spa.julian_day_dt()
so that microseconds are scaled correctly (GH940) (GH942)
Testing#
Rename system fixture to sapm_dc_snl_ac_system in model chain tests. (GH908, GH915).
Implement pytest-remotedata to increase test suite speed. Requires
--remote-data
pytest flag to execute data retrieval tests over a network. (GH882)(GH896)Add documentation build test to Azure Pipelines CI. (GH909)
Implement the pytest.mark.flaky decorator from pytest-rurunfailures pytest-dev/pytest-rerunfailures on all network dependent iotools tests to repeat them on failure. (GH919)
Separate azure-pipelines.yml platform-specific tests to their own templates located in
./ci/azure/
. (GH926)
Documentation#
Requirements#
Contributors#
Mark Mikofski (@mikofski)
Cliff Hansen (@cwhanse)
Cameron T. Stark (@camerontstark)
Will Holmgren (@wholmgren)
Kevin Anderson (@kanderso-nrel)
Karthikeyan Singaravelan (@tirkarthi)
Siyan (Veronica) Guo (@veronicaguo)
Eric Fitch (@ericf900)
Joseph Palakapilly (@JPalakapilly)
Auguste Colle(@augustecolle)
Ahan M R (@Ahanmr)
v0.7.1 (January 17, 2020)#
Enhancements#
Added
read_psm3()
to read local NSRDB PSM3 files andparse_psm3()
to parse local NSRDB PSM3 file-like objects. (GH841)Added leap_day parameter to iotools.get_psm3 instead of hardcoding it as False.
Added
get_pvgis_tmy()
to get PVGIS TMY datasets. (GH845)Added
parse_epw()
to parse a file-like buffer containing weather data in the EPW format.Added a new module pvlib.losses for various loss models.
Added the Humboldt State University soiling model
soiling_hsu()
. (GH739)
Bug fixes#
Testing#
Added single-year PSM3 API test for iotools.get_psm3.
Added tests for iotools.parse_psm3 and iotools.read_psm3.
Change pvlib/test folder to pvlib/tests and reorganize tests into subfolders, e.g.: created pvlib/tests/iotools (GH859)
replace os.path with pathlib and stringify path objects for Python<=3.5
Documentation#
Created an Example Gallery. (GH846)
Updated list of allowed years for iotools.get_psm3.
Contributors#
Kevin Anderson (@kanderso-nrel)
Mark Mikofski (@mikofski)
Will Holmgren (@wholmgren)
Cliff Hansen (@cwhanse)
Valliappan CA (@nappaillav)
Anton Driesse (@adriesse)
v0.7.0 (December 18, 2019)#
This is a major release that drops support for Python 2 and Python 3.4. We recommend all users of v0.6.3 upgrade to this release after checking API compatibility notes.
Python 2.7 support ended on June 1, 2019. (GH501) Minimum numpy version is now 1.12.0. Minimum pandas version is now 0.18.1. (GH830, GH748)
API Breaking Changes#
The effective_irradiance argument for
pvsystem.sapm()
now requires units of W/m^2. Previously, units for this input were suns. A RuntimeWarning warning is raised if all effective_irradiance < 2.0.The output of
pvsystem.sapm_effective_irradiance()
is now in units of W/m2 rather than suns.Calling
pvlib.pvsystem.retrieve_sam()
with no parameters will raise an exception instead of displaying a dialog.The modelchain.ModelChain.diode_params attribute is now formatted in a pandas.DataFrame with DatetimeIndex, rather than in a tuple.
PVSystem.pvwatts_ac
now uses inverter DC input limitPVSystem.inverter_parameters['pdc0']
instead of module nameplate capacityPVSystem.module_parameters['pdc0']
. (GH734)ModelChain.infer_ac_model
now uses the presence of the key'pdc0'
PVSystem.inverter_parameters
to determine if the pvwatts_ac inverter model should be used. The inference method previously looked for the key inPVSystem.module_parameters
. (GH734)
API Changes with Deprecations#
- Changes related to cell temperature models (GH678):
- Changes to functions
Moved functions for cell temperature from pvsystem.py to temperature.py.
Renamed pvsystem.sapm_celltemp and pvsystem.pvsyst_celltemp to temperature.sapm_cell and temperature.pvsyst_cell.
temperature.sapm_cell returns only the cell temperature, whereas the old pvsystem.sapm_celltemp returned a DataFrame with both cell and module temperatures.
Created temperature.sapm_module to return module temperature using the SAPM temperature model.
Changed the order of arguments for pvsystem.sapm_celltemp, pvsystem.pvsyst_celltemp and PVSystem.sapm_celltemp to be consistent among cell temperature model functions.
Removed model as a kwarg from temperature.sapm_cell and temperature.pvsyst_cell. These functions now require model-specific parameters.
Added the argument irrad_ref, default value 1000, to temperature.sapm_cell.
- Changes to named temperature model parameter sets
Renamed pvsystem.TEMP_MODEL_PARAMS to temperature.TEMPERATURE_MODEL_PARAMETERS.
temperature.TEMPERATURE_MODEL_PARAMETERS uses dict rather than tuple for a parameter set.
Names for parameter sets in temperature.TEMPERATURE_MODEL_PARAMETERS have changed.
Parameter sets for the SAPM cell temperature model named ‘open_rack_polymer_thinfilm_steel’ and ‘22x_concentrator_tracker’ are considered obsolete and have been removed.
- Changes to PVSystem class
Changed the model kwarg in PVSystem.sapm_celltemp and PVSystem.pvsyst_celltemp to parameter_set. parameter_set expects a str which is a valid key for temperature.TEMPERATURE_MODEL_PARAMETERS for the corresponding temperature model.
Added an attribute PVSystem.module_type (str) to record module front and back materials, default is glass_polymer.
Changed meaning of PVSystem.racking_model to describe racking only, e.g., default is open_rack.
Added an attribute PVSystem.temperature_model_parameters (dict). to contain temperature model parameters.
If PVSystem.temperature_model_parameters is not specified and PVSystem.racking_model and PVSystem.module_type combine to a valid parameter set name for the SAPM cell temperature model, that parameter set is assigned to PVSystem.temperature_model_parameters. Otherwise PVSystem.temperature_model_parameters is assigned an empty dict. The result is that the default parameter set for SAPM cell temperature model is open_rack_glass_polymer; the old default was open_rack_glass_glass.
- Changes to ModelChain class
ModelChain.temp_model renamed to ModelChain.temperature_model.
ModelChain.temperature_model now defaults to None. The temperature model can be inferred from PVSystem.temperature_model_parameters.
ModelChain.temperature_model_parameters now defaults to None. The temperature model can be inferred from PVSystem.temperature_model_parameters.
ModelChain.temps attribute renamed to ModelChain.cell_temperature, and its datatype is now numeric rather than DataFrame.
If PVSystem.temperature_model_parameters is not specified, ModelChain defaults to old behavior, using the SAPM temperature model with parameter set open_rack_glass_glass. This behavior is deprecated, and will be removed in v0.8. In v0.8 PVSystem.temperature_model_parameters will be required for ModelChain.
Implemented pvsyst as an option for ModelChain.temperature_model.
modelchain.basic_chain has a new required argument temperature_model_parameters.
- Changes related to IAM (AOI loss) functions (GH680):
- Changes to functions
Moved functions from pvsystem.py to iam.py. pvsystem IAM functions are deprecated and will be removed in v0.8.
- Functions are renamed to a consistent pattern:
pvsystem.physicaliam is iam.physical
pvsystem.ashraeiam is iam.ashrae
pvsystem.sapm_aoi_loss is iam.sapm
- Changes to PVSystem class
IAM models are provided by PVSystem.get_iam with kwarg iam_model.
Methods PVSystem.ashraeiam, PVSystem.physicaliam and PVSystem.sapm_aoi_loss are deprecated and will be removed in v0.8.
- Changes related to spectral modifier (GH782):
- Changes to functions
Added the argument pw_min and pw_max, default values 0.1 and 8 resp., to atmosphere.first_solar_spectral_correction. This function now returns NaN if pw value higher than pw_max.
The times keyword argument has been deprecated in the
pvlib.modelchain.ModelChain.run_model()
,pvlib.modelchain.ModelChain.prepare_inputs()
, andpvlib.modelchain.ModelChain.complete_irradiance()
methods. Model times are now determined by the input weather. DataFrame. Therefore, the weather DataFrame must have a DatetimeIndex. The weather argument of the above methods is now the first, required positional argument and the times argument is kept as the second keyword argument for capability during the deprecation period.Parameter pvsystem.DC_MODEL_PARAMS is renamed to pvsystem._DC_MODEL_PARAMS. Users should not rely on this dictionary’s existence or structure.
Other API Changes#
pvlib.iotools.midc.read_midc()
now passes additional keyword arguments to pandas.read_csvAdd timeout argument to
pvlib.iotools.midc.read_midc_raw_data_from_nrel()
pvlib.bifacial
is now imported whenpvlib
is imported. (GH766)
Enhancements#
Created one new temperature model function:
pvlib.temperature.faiman()
. (GH750)Created two new incidence angle modifier (IAM) functions:
pvlib.iam.martin_ruiz()
andpvlib.iam.interp()
. (GH751)Created one new incidence angle modifier (IAM) function for diffuse irradiance:
pvlib.iam.martin_ruiz_diffuse()
. (GH751)Add the martin_ruiz IAM function as an option for ModelChain.aoi_model.
Updated the file for module parameters for the CEC model, from the SAM file dated 2017-6-5 to the SAM file dated 2019-03-05. (GH761)
Updated the file for inverter parameters for the CEC model, from the SAM file dated 2018-3-18 to the SAM file dated 2019-03-05. (GH761)
Added recombination current parameters to bishop88 single-diode functions and also to
pvlib.pvsystem.max_power_point()
. (GH762)Add ivtools module to contain functions for IV model fitting.
Add
fit_sde_sandia()
, a simple method to fit the single diode equation to an IV curve.Add
fit_sdm_cec_sam()
, a wrapper for the CEC single diode model fitting function ‘6parsolve’ from NREL’s System Advisor Model.Add
fit_sdm_desoto()
, a method to fit the De Soto single diode model to the typical specifications given in manufacturers datasheets.Add timeout to
pvlib.iotools.get_psm3()
.Add
wvm()
, a port of the wavelet variability model for computing reductions in variability due to a spatially distributed plant.Add
from_epw()
, a method to create a Location object from epw metadata, typically coming from pvlib.iotools.epw.read_epw.
Bug fixes#
Fix handling of keyword arguments in forecasts.get_processed_data. (GH745)
Fix output as Series feature in
pvlib.pvsystem.ashraeiam()
.Fix rounding issue in clearsky._linearly_scale, a function that converts longitude or latitude degree to an index number in a Linke turbidity lookup table. Also rename the function to clearsky._degrees_to_index. (GH754)
Fix reading raw MIDC CSV files from NREL where the number of header columns does not match the number of data columns.
Fix installation issue due to missing
requests
dependency. (GH725)PVSystem.pvwatts_ac
now uses inverter DC input limitPVSystem.inverter_parameters['pdc0']
instead of module nameplate capacityPVSystem.module_parameters['pdc0']
. (GH734)
Testing#
Added 30 minutes to timestamps in test_psm3.csv to match change in NSRDB (GH733)
Added tests for methods in bifacial.py.
Added tests for changes to cell temperature models.
Add tests configuration for bare python environment (no conda). (GH727)
Added tests for changes to IAM models.
Added test for ModelChain.infer_aoi_model.
Documentation#
Corrected docstring for pvsystem.PVSystem.sapm
Fixed broken ipython examples from CEC data updates
Edited docstring for pvsystem.sapm to remove DataFrame option for input module. The DataFrame option was never tested and would cause an error if used. (GH785)
Note warning about _TMY3.epw files retrieved from energyplus.net in docstring of epw.read_epw
Improved sphinx rendering of API reference entries for clearsky.ineichen, clearsky.haurwitz, tracking.singleaxis, iotools.read_midc, Location.from_tmy, ModelChain.run_model, ModelChain.complete_irradiance, and ModelChain.prepare_inputs
Removed duplicate pvwatts_losses entry in api.rst
Removal of prior version deprecations#
Removed irradiance.extraradiation.
Removed irradiance.grounddiffuse.
Removed irradiance.total_irrad.
Removed irradiance.globalinplane.
Removed atmosphere.relativeairmass.
Removed atmosphere.relativeairmass.
Removed solarposition.get_sun_rise_set_transit.
Removed tmy module.
Removed ModelChain.singlediode method.
Removed ModelChain.prepare_inputs clearsky assumption when no irradiance data was provided.
Requirements#
Contributors#
Mark Campanellli (@markcampanelli)
Will Holmgren (@wholmgren)
Cliff Hansen (@cwhanse)
Oscar Dowson (@odow)
Anton Driesse (@adriesse)
Alexander Morgan (@alexandermorgan)
Miguel Sánchez de León Peque (@Peque)
Tanguy Lunel (@tylunel)
Veronica Guo (@veronicaguo)
Joseph Ranalli (@jranalli)
Tony Lorenzo (@alorenzo175)
Todd Karin (@toddkarin)
Mark Mikofski (@mikofski)
Kevin Anderson (@kevinsa5)
Cameron Stark (@camerontstark)
Janine Freeman (@janinefreeman)
Roel Loonen (@roelloonen)
Birgit Schachler (@birgits)
Hamilton Kibbe (@hamiltonkibbe)
Adam Peretti (@aperetti)
Cedric Leroy (@cedricleroy)
Joseph Palakapilly (@JPalakapillyKWH)
v0.6.3 (May 15, 2019)#
This is a minor release on top of v0.6.2 to fix an installation issue. We recommend that all users of v0.6.1 and v0.6.2 upgrade to this release.
Python 2.7 support will end on June 1, 2019. Releases made after this date will require Python 3. This release is likely to be the last that supports Python 2.7. (GH501)
Bug fixes#
Fix installation issue due to missing
requests
dependency. (GH725)
Contributors#
Will Holmgren (@wholmgren)
v0.6.2 (May 15, 2019)#
This is a minor release. We recommend all users of v0.6.1 upgrade to this release.
Python 2.7 support will end on June 1, 2019. Releases made after this date will require Python 3. This release is likely to be the last that supports Python 2.7. (GH501)
Minimum pandas requirement bumped 0.15.0=>0.16.0
API Changes#
erbs()
doy argument changed to datetime_or_doy to be consistent with allowed types and similar functions (disc()
,get_extra_radiation()
). (GH681)erbs()
DataFrame vs. OrderedDict return behavior now determined by type of datetime_or_doy instead of ghi or zenith. (GH681)Added min_cos_zenith and max_zenith keyword arguments to
erbs()
. (GH681)Deprecated
prepare_inputs()
assumption of clear sky if no irradiance fields were provided. (GH705, GH707)Remove automatic column name mapping from
read_midc()
andread_midc_raw_data_from_nrel()
and added optional keyword argument variable_map to map columns. (GH721)Update
pvfactors_timeseries()
and tests to usepvfactors
v1.0.1 (GH699)
Enhancements#
Bug fixes#
Compatibility with pandas 0.24 deprecations. (GH659)
pvwatts_ac()
raisedZeroDivisionError
when called with scalarpdc=0
and aRuntimeWarning
forarray(0)
input. Now correctly returns 0s of the appropriate type. (GH675)Fixed
erbs()
behavior when zenith is near 90 degrees. (GH681)dni()
now referenced in API under Decomposing and Combining irradiance header. (GH686)Fixed NaN output from
singleaxis()
when sun near horizon. (GH656)Fixed numpy warnings in
singleaxis()
when comparing NaN values to limits. (GH622)Change ModelChain to apply
pvwatts_losses
tomc.dc
instead ofmc.ac
. (GH696)Fixed a bug in the day angle equation for the ASCE extraterrestrial irradiance model. (GH211)
Silenced divide by 0 irradiance warnings in
klucher()
andcalcparams_desoto()
. (GH698)Fix
NDFD
model by updating variables.Fix
format_index()
to parse non one-minute data correctly. (GH709)
Testing#
Remove most expected warnings emitted by test suite. (GH698)
Contributors#
Cliff Hansen (@cwhanse)
Will Holmgren (@wholmgren)
Roel Loonen (@roelloonen)
Todd Hendricks (@tahentx)
Kevin Anderson (@kevinsa5)
Jonathan Gaffiot (@jgaffiot)
Leland Boeman (@lboeman)
Marc Anoma (@anomam)
v0.6.1 (January 31, 2019)#
This is a minor release. We recommend all users of v0.6.0 upgrade to this release.
Python 2.7 support will end on June 1, 2019. Releases made after this date will require Python 3. (GH501)
Minimum pandas requirement bumped 0.14.0=>0.15.0
API Changes#
Deprecated
tmy
,tmy.readtmy2
andtmy.readtmy3
; they will be removed in v0.7. Use the newpvlib.iotools.read_tmy2()
andpvlib.iotools.read_tmy3()
instead. (GH261)Added keyword argument
horizon
topyephem()
andcalc_time()
with default value'+0:00'
. (GH588)Add max_airmass keyword argument to
pvlib.irradiance.disc()
. Default value (max_airmass=12) is consistent with polynomial fit in original paper describing the model. This change may result in different output of functions that use the disc Kn calculation for times when input zenith angles approach 90 degrees. This includespvlib.irradiance.dirint()
andpvlib.irradiance.dirindex()
when min_cos_zenith and max_zenith kwargs are used, as well aspvlib.irradiance.gti_dirint()
. (GH450)Changed key names for components returned from
pvlib.clearsky.detect_clearsky()
. (GH596)Changed function name from pvlib.solarposition.get_rise_set_transit (deprecated) to
pvlib.solarposition.sun_rise_set_transit_spa. `sun_rise_set_transit_spa()
requires time input to be localized to the specified latitude/longitude. (GH316)Created new bifacial section for pvfactors limited implementation (GH421)
Enhancements#
Add
sun_rise_set_transit_ephem`to calculate sunrise, sunset and transit times using pyephem (:issue:`114()
)Add geometric functions for sunrise, sunset, and sun transit times,
sun_rise_set_transit_geometric()
(GH114)Add Location class method
get_sun_rise_set_transit()
Created
pvlib.iotools.read_srml()
andpvlib.iotools.read_srml_month_from_solardat
to read University of Oregon Solar Radiation Monitoring Laboratory data. (GH589)Created
pvlib.iotools.read_surfrad()
to read NOAA SURFRAD data. (GH590)Created
pvlib.iotools.read_midc()
andpvlib.iotools.read_midc_raw_data_from_nrel()
to read NREL MIDC data. (GH601)Created
pvlib.iotools.get_ecmwf_macc()
andpvlib.iotools.read_ecmwf_macc()
to get and read ECMWF MACC data. (GH602)Use HRRR modeled surface temperature values instead of inferring from isobaric values and modeled wind speed instead of inferring from gust. (GH604)
Change
pvlib.pvsystem.sapm_spectral_loss()
to avoid numpy warning.Add warning message when
pvlib.spa()
is reloaded. (GH401)Add option for
pvlib.irradiance.disc()
to use relative airmass by supplying pressure=None. (GH449)Created
pvlib.pvsystem.pvsyst_celltemp()
to implement PVsyst’s cell temperature model. (GH552)Created
pvlib.bifacial.pvfactors_timeseries()
to use open-source pvfactors package to calculate back surface irradiance (GH421)Add PVSystem class method
pvsyst_celltemp()
(GH633)Add
pvlib.irradiance.clearsky_index()
to calculate clear-sky index from measured GHI and modeled clear-sky GHI. (GH551)
Bug fixes#
Fix when building documentation using Matplotlib 3.0 or greater.
~pvlib.spa.calculate_deltat: Fix constant coefficient of the polynomial expression for years >= 1860 and < 1900, fix year 2050 which was returning 0. (GH600)
Fix and improve
hour_angle()
(GH598)Fix error in
pvlib.clearsky.detect_clearsky()
(GH506)Fix documentation errors when using IPython >= 7.0.
Fix error in
pvlib.modelchain.ModelChain.infer_spectral_model()
(GH619)Fix error in
pvlib.spa
when using Python 3.7 on some platforms.Fix error in
pvlib.irradiance._delta_kt_prime_dirint()
(GH637). The error affects the first and last values of DNI calculated by the functionpvlib.irradiance.dirint()
Fix errors on Python 2.7 and Numpy 1.6. (GH642)
Replace deprecated np.asscalar with array.item(). (GH642)
Testing#
Add test for
hour_angle()
(GH597)Update tests to be compatible with pytest 4.0. (GH623)
Add tests for
pvlib.bifacial.pvfactors_timeseries()
implementation (GH421)
Contributors#
Will Holmgren (@wholmgren)
Leland Boeman (@lboeman)
Cedric Leroy (@cedricleroy)
Ben Ellis (@bhellis725)
Cliff Hansen (@cwhanse)
Mark Mikofski (@mikofski)
Anton Driesse (@adriesse)
Cameron Stark (@camerontstark)
Jonathan Gaffiot (@jgaffiot)
Marc Anoma (@anomam)
Anton Driesse (@adriesse)
Kevin Anderson (@kevinsa5)
v0.6.0 (September 17, 2018)#
This is a major release and contains a large number of API changes, new features, and bug fixes. Users should carefully read the changelog below before upgrading.
Python 2.7 support will end on June 1, 2019. Releases made after this date will require Python 3. (GH501)
API Changes#
pvlib python is changing a handful of function names. In general, functions that can calculate a quantity using multiple algorithms now start with the prefix
get_
. For example,relativeairmass
can calculate airmass using one of manymodel
arguments. Its name has been changed toget_relative_airmass()
. The old function names remain in this release, but will emit aPVLibDeprecationWarning
when called. The old functions will be removed in the v0.7 release. Functions composed of multiple words jammed together have been renamed with underscores separating the words (see above). Each change is detailed below. (GH427)Deprecated
relativeairmass
; it will be removed in v0.7. Use the newget_relative_airmass()
instead. (GH427)Deprecated
absoluteairmass
; it will be removed in v0.7. Use the newget_absolute_airmass()
instead. (GH427)Deprecated
irradiance.globalinplane
; it will be removed in v0.7. Use the newpoa_components()
instead. (GH427)Added
poa_components()
. Function is the same as the now-deprecatedirradiance.globalinplane
, but adds'poa_sky_diffuse'
and'poa_ground_diffuse'
to the output. (GH427)Deprecated
irradiance.extraradiation
; it will be removed in v0.7. Usepvlib.irradiance.get_extra_radiation()
instead. (GH427)Deprecated
irradiance.grounddiffuse
; it will be removed in v0.7. Useget_ground_diffuse()
instead. (GH427)Added
get_poa_sky_diffuse()
. (GH427)Deprecated
irradiance.total_irrad
; it will be removed in v0.7. Useget_total_poa_irradiance()
instead. (GH427)Removed
'klutcher'
fromget_sky_diffuse
/total_irrad
. This misspelling was deprecated long ago but never removed. (GH97)calcparams_desoto()
now requires arguments for each module model parameter. (GH462)Add losses_parameters attribute to PVSystem objects and remove the kwargs support from PVSystem.pvwatts_losses. Enables custom losses specification in ModelChain calculations. (GH484)
removed irradiance parameter from ModelChain.run_model and ModelChain.prepare_inputs
Add
perez_enhancement
keyword argument to clearsky.ineichen to control whether or not the “perez enhancement factor” is applied. The enhancement factor was always applied until now. Now it is turned off by default. The enhancement factor can yield unphysical results, especially for latitudes closer to the poles and especially in the winter months. It may yield improved results under other conditions. (GH435)Add min_cos_zenith, max_zenith keyword arguments to disc, dirint, and dirindex functions. (GH311, GH396)
Method ModelChain.infer_dc_model now returns a tuple (function handle, model name string) instead of only the function handle (GH417)
Add DC model methods desoto and pvsyst to ModelChain, and deprecates DC model method singlediode (singlediode defaults to desoto until v0.7.0) (GH487)
Add the CEC module model in pvsystem.calcparams_cec and ModelChain.cec. The CEC model differs from the desoto model by using the parameter Adjust. Modules selected from the SAM CEC library sam-library-cec-modules-2017-6-5.csv include the Adjust parameter and ModelChain.infer_dc_model will now select the cec model rather than the desoto model. (GH463)
The behavior of irradiance.perez(return_components=True) has changed. The function previously returned a tuple of total sky diffuse and an OrderedDict/DataFrame of components. The function now returns an OrderedDict/DataFrame with total sky diffuse and each component. The behavior for return_components=False remains unchanged. (GH434)
Enhancements#
Add sea surface albedo in
irradiance.py
(GH458)Implement
first_solar_spectral_loss()
inmodelchain.py
(GH359)Clarify arguments
Egref
anddEgdT
forcalcparams_desoto()
(GH462)Add pvsystem.calcparams_pvsyst to compute values for the single diode equation using the PVsyst v6 model (GH470)
Extend
singlediode()
with an additional keyword argumentmethod
in('lambertw', 'newton', 'brentq')
, default is'lambertw'
, to select a method to solve the single diode equation for points on the IV curve. Selecting either'brentq'
or'newton'
as the method usesbishop88()
with the corresponding method. (GH410)Implement new methods
'brentq'
and'newton'
for solving the single diode equation for points on the IV curve.'brentq'
uses a bisection method (Brent, 1973) that may be slow but guarantees a solution.'newton'
uses the Newton-Raphson method and may be faster but is not guaranteed to converge. However,'newton'
should be safe for well-behaved IV curves. (GH408)Implement
bishop88()
for explicit calculation of arbitrary IV curve points using diode voltage instead of cell voltage. Ifmethod
is either'newton'
or'brentq'
andivcurve_pnts
insinglediode()
is provided, the IV curve points will be log spaced instead of linear.Implement
estimate_voc()
to estimate open circuit voltage by assuming \(R_{sh} \to \infty\) and \(R_s=0\) as an upper bound in bisection method forsinglediode()
when method is either'newton'
or'brentq'
.Add
max_power_point()
method to compute the max power point using the new'brentq'
method.Add new module
pvlib.singlediode
with low-level functions for solving the single diode equation such as:bishop88()
,estimate_voc()
,bishop88_i_from_v()
,bishop88_v_from_i()
, andbishop88_mpp()
.Add PVSyst thin-film recombination losses for CdTe and a:Si (GH163)
Python 3.7 officially supported. (GH496)
Improve performance of solarposition.ephemeris. (GH512)
Improve performance of Location.get_airmass. Most noticeable when solar position is supplied, time index length is less than 10000, and method is looped over. (GH502)
Add irradiance.gti_dirint function. (GH396)
Add irradiance.clearness_index function. (GH396)
Add irradiance.clearness_index_zenith_independent function. (GH396)
Add checking for consistency between module_parameters and dc_model. (GH417)
Add DC model methods
'desoto'
and'pvsyst'
to ModelChain (GH487)Add the CEC module model in pvsystem.calcparams_cec and ModelChain.cec. (GH463)
Add DC model methods desoto and pvsyst to ModelChain (GH487)
pvlib now ships with a pvlib[optional] installation option to automatically install packages needed to support additional pvlib features:
pip install pvlib[optional]
. Additional installation options include doc (requirements for minimal documentation build), test (requirements for testing), and all (optional + doc + test). (GH553, GH483)Set default alpha to 1.14 in
angstrom_aod_at_lambda()
(GH563)tracking.singleaxis now accepts scalar and 1D-array input.
Bug fixes#
Unset executable bits of irradiance.py and test_irradiance.py (GH460)
Fix failing tests due to column order on Python 3.6+ and Pandas 0.23+ (GH464)
ModelChain.prepare_inputs failed to pass solar_position and airmass to Location.get_clearsky. Fixed. (GH481)
Add User-Agent specification to TMY3 remote requests to avoid rejection. (GH493)
Fix
pvlib.irradiance.klucher
output is different for Pandas Series vs. floats and NumPy arrays. (GH508)Make GitHub recognize the license, add AUTHORS.md, clarify shared copyright. (GH503)
Fix issue with non-zero direct irradiance contribution to Reindl, Klucher, and Hay-Davies diffuse sky algorithms when the sun is behind the array. (GH526)
Fix issue with dividing by near-0 cos(solar_zenith) values in Reindl and Hay-Davies diffuse sky algorithms. (GH432)
Fix argument order of longitude and latitude when querying weather forecasts by lonlat bounding box (GH521)
Fix issue with unbounded clearness index calculation in disc. (GH540)
Limit pvwatts_ac results to be greater than or equal to 0. (GH541)
Fix bug in get_relative_airmass(model=’youngirvine1967’). (GH545)
Fix bug in variable names returned by forecast.py’s HRRR_ESRL model. (GH557)
Fixed bug in tracking.singleaxis that mistakenly assigned nan values when the Sun was still above the horizon. No effect on systems with axis_tilt=0. (GH569)
Source distribution did not contain LICENSE file. Added LICENSE, AUTHORS.md, and some docs to MANIFEST. (GH579)
Patch SPA C-files to fix timezone macro name clash with pyconfig.h. (GH168)
Documentation#
Expand testing section with guidelines for functions, PVSystem/Location objects, and ModelChain.
Updated several incorrect statements in ModelChain documentation regarding implementation status and default values. (GH480)
Expanded general contributing and pull request guidelines.
Added section on single diode equation with some detail on solutions used in pvlib-python (GH518)
Minor improvements and updates to installation documentation. (GH531)
Improve LocalizedPVSystem and LocalizedSingleAxisTracker documentation. (GH532)
Move the “Getting Started”/”Modeling Paradigms” section to a new top-level “Intro Examples” page.
Copy pvlib documentation’s “Getting support” section to README.md.
Add example of Kasten Linke Turbidity calculation, discuss broadband AOD and Angstrom Turbidity Model. (GH302)
Add JOSS paper to “Citing pvlib-python” section.
Testing#
Add pytest-mock dependency
Use pytest-mock to ensure that PVSystem and ModelChain methods call corresponding functions correctly. Removes implicit dependence on precise return values of some function/methods. (GH394)
Additional test refactoring to limit test result dependence to a single function per test. (GH394)
Use pytest-mock to ensure that ModelChain DC model is set up correctly.
Add Python 3.7 to build matrix
Make test_forecast.py more robust. (GH293)
Improve test_atmosphere.py. (GH158)
Add LGTM.com integration. (GH554)
Add SticklerCI integration.
Add codecov integration.
Contributors#
Will Holmgren (@wholmgren)
Yu Cao (@tsaoyu)
Cliff Hansen (@cwhanse)
Mark Mikofski (@mikofski)
Alan Mathew (@alamathe1)
Xavier Rene-Corail (@xcorail)
Anton Driesse (@adriesse)
Mark Campanelli (@thunderfish24)
Cedric Leroy (@cedricleroy)
Jessica Forbess (@jforbess)
Jeff Newmiller (@jdnewmil)
Marc A. Anoma (@anomam)
William C Grisaitis (@grisaitis)
Karel De Brabandere (@kdebrab)
v0.5.2 (May 13, 2018)#
API Changes#
Enhancements#
Improve clearsky.lookup_linke_turbidity speed, changing .mat source file to .h5 (GH437)
Updated libraries for CEC module parameters to SAM release 2017.9.5 (library dated 2017.6.30) and CEC inverter parameters to file posted to www.github.com/NREL/SAM on 2018.3.18, with one entry removed due to a missing parameter value. (:issue:’440’)
Bug fixes#
fixed redeclaration of test_simplified_solis_series_elevation (GH387)
physicaliam now returns a Series if called with a Series as an argument. (GH397)
corrected docstring for irradiance.total_irrad (:issue: ‘423’)
modified solar_azimuth_analytical to handle some borderline cases, thereby avoiding the NaN values and/or warnings that were previously produced (:issue: ‘420’)
removed RuntimeWarnings due to divide by 0 or nans in input data within irradiance.perez, clearsky.simplified_solis, pvsystem.adrinverter, pvsystem.ashraeiam, pvsystem.physicaliam, pvsystem.sapm_aoi_loss, pvsystem.v_from_i. (GH428)
Documentation#
Improve physicaliam doc string. (GH397)
Testing#
Contributors#
Cliff Hansen
Will Holmgren
KonstantinTr
Anton Driesse
Cedric Leroy
v0.5.1 (October 17, 2017)#
API Changes#
pvsystem.v_from_i and pvsystem.i_from_v functions now accept resistance_series = 0 and/or resistance_shunt = numpy.inf as inputs (GH340)
Enhancements#
Improve clearsky.lookup_linke_turbidity speed. (GH368)
Ideal devices supported in single diode model, e.g., resistance_series = 0 and/or resistance_shunt = numpy.inf (GH340)
pvsystem.v_from_i and pvsystem.i_from_v computations for near ideal devices are more numerically stable. However, very, very near ideal resistance_series and/or resistance_shunt may still cause issues with the implicit solver (GH340)
Bug fixes#
Remove condition causing Overflow warning from clearsky.haurwitz (GH363)
modelchain.basic_chain now correctly passes ‘solar_position_method’ arg to solarposition.get_solarposition (GH370)
Fixed: Variables and Symbols extra references not available (GH380)
Removed unnecessary calculations of alpha_prime in spa.solar_position_numpy and spa.solar_position_loop (GH366)
Fixed args mismatch for solarposition.pyephem call from solarposition.get_solarposition with method=’pyephem’ arg to solarposition.get_solarposition (GH370)
ModelChain.prepare_inputs and ModelChain.complete_irradiance now correctly pass the ‘solar_position_method’ argument to solarposition.get_solarposition (GH377)
Fixed usage of inplace parameter for tmy._recolumn (GH342)
Documentation#
Testing#
Changed test for clearsky.haurwitz to operate on zenith angles
Significant new test cases added for pvsystem.v_from_i and pvsystem.i_from_v (GH340)
Contributors#
Cliff Hansen
KonstantinTr
Will Holmgren
Mark Campanelli
DaCoEx
v0.5.0 (August 11, 2017)#
API Changes#
Removed parameter w from _calc_d (GH344)
SingleAxisTracker.get_aoi and SingleAxisTracker.get_irradiance now require surface_zenith and surface_azimuth (GH351)
Changes calculation of the Incidence Angle Modifier to return 0 instead of np.nan for angles >= 90°. This improves the calculation of effective irradiance close to sunrise and sunset. (GH338)
Change the default ModelChain orientation strategy from ‘south_at_latitude_tilt’ to
None
. (GH290)
Bug fixes#
Method of multi-inheritance has changed to make it possible to use kwargs in the parent classes of LocalizedPVSystem and LocalizedSingleAxisTracker (GH330)
Fix the __repr__ method of ModelChain, crashing when orientation_strategy is set to ‘None’ (GH352)
Fix the ModelChain’s angle of incidence calculation for SingleAxisTracker objects (GH351)
Fix issue with ForecastModel.cloud_cover_to_transmittance_linear method of forecast.py ignoring ‘offset’ parameter. (GH343)
Enhancements#
Documentation#
Added ModelChain documentation page
Added nbsphinx to documentation build configuration.
Added a pull request template file (GH354)
Testing#
Added explicit tests for aoi and aoi_projection functions.
Update test of ModelChain.__repr__ to take in account GH352
Added a test for solar_azimuth_analytical function.
Contributors#
Johannes Kaufmann
Will Holmgren
Uwe Krien
Alaina Kafkes
Birgit Schachler
Jonathan Gaffiot
Siyan (Veronica) Guo
KonstantinTr
v0.4.5 (June 5, 2017)#
Bug fixes#
Fix pandas 0.20 incompatibilities in Location.get_clearsky, solarposition.ephemeris (GH325)
Fixes timezone issue in solarposition spa_c function (GH237)
Added NREL Bird clear sky model. (GH276)
Added lower accuracy formulas for equation of time, declination, hour angle and solar zenith.
Remove all instances of .ix (GH322)
Update docstring in pvlib.spa.solar_position - change units of pressure to millibars. NOTE: units of pressure in pvlib.solar_position.spa_python and pvlib.solar_position.spa_c are still Pascals. This update should have no effect on most users, since it only applies to the low-level spa.py module. (GH327)
Enhancements#
Added irradiance.dni method that determines DNI from GHI and DHI and corrects unreasonable DNI values during sunrise/sunset transitions
ForecastModel will now only connect to the Unidata server when necessary, rather than when the object is created. This supports offline work and speeds up analysis of previously downloaded data.
Contributors#
Will Holmgren
Marc Anoma
Mark Mikofski
Birgit Schachler
v0.4.4 (February 18, 2017)#
Enhancements#
Added Anton Driesse Inverter database and made compatible with pvsystem.retrieve_sam. (GH169)
Ported Anton Driesse Inverter model from PV_LIB Toolbox. (GH160)
Added Kasten pyrheliometric formula to calculate Linke turbidity factors with improvements by Ineichen and Perez to extend range of air mass (GH278)
Added coefficients for CIGS and a-Si modules types to the first_solar_spectral_correction function (GH308)
API Changes#
Change PVSystem default module_parameters and inverter_parameters to empty dict. Code that relied on these attributes being None or raising a TypeError will need to be updated. (issue:294)
Documentation#
Fixes the Forecasting page’s broken links to the tutorials.
Fixes the Forecasting page’s broken examples. (GH299)
Fixes broken Classes link in the v0.3.0 documentation.
Bug fixes#
Resolved several issues with the forecast module tests. Library import errors were resolved by prioritizing the conda-forge channel over the default channel. Stalled ci runs were resolved by adding a timeout to the HRRR_ESRL test. (GH293)
Fixed issue with irradiance jupyter notebook tutorial. (GH309)
Contributors#
Will Holmgren
Volker Beutner
Mark Mikofski
Anton Driesse
Mitchell Lee
v0.4.3 (December 28, 2016)#
Enhancements#
Other#
Adds Python 3.6 to compatibility statement and pypi classifiers. (GH286)
Contributors#
Marc Anoma
Will Holmgren
Cliff Hansen
Tony Lorenzo
v0.4.2 (December 7, 2016)#
This is a minor release from 0.4.1.
Bug fixes#
Fixed typo in __repr__ method of ModelChain and in its regarding test.
PVSystem.pvwatts_ac could not use the eta_inv_ref kwarg and PVSystem.pvwatts_dc could not use the temp_ref kwarg. Fixed. (GH252)
Fixed typo in ModelChain.infer_spectral_model error message. (GH251)
Fixed Linke turbdity factor out of bounds error at 90-degree latitude or at 180-degree longitude (GH262)
Fixed Linke turbidity factor grid spacing and centers (GH263)
API Changes#
The run_model method of the ModelChain will use the weather parameter of all weather data instead of splitting it to irradiation and weather. The irradiation parameter still works but will be removed soon. (GH239)
delta_t kwarg is now 67.0 instead of None. IMPORTANT: Setting delta_t as None will break the code for the Numba accelerated calculations. This will be fixed in a future version. (GH165)
Enhancements#
Adding a complete_irradiance method to the ModelChain to make it possible to calculate missing irradiation data from the existing columns [beta]. (GH239)
Added calculate_deltat method to the spa module to calculate the time difference between terrestrial time and UT1. Specifying a scalar is sufficient for most calculations. (GH165)
Added more attributes to ModelChain, PVSystem, and Location printed representations. (GH254)
Added name attribute to ModelChain and PVSystem. (GH254)
Restructured API section of the documentation so that there are separate pages for each function, class, or method. (GH258)
Improved Linke turbidity factor time interpolation with Python calendar month days and leap years (GH265)
Added option to return diffuse components from Perez transposition model.
Other#
Code Contributors#
Uwe Krien
Will Holmgren
Volker Beutner
Mark Mikofski
Marc Anoma
Giuseppe Peronato
v0.4.1 (October 5, 2016)#
This is a minor release from 0.4.0. We recommend that all users upgrade to this version, especially if they want to use the latest versions of pandas.
Bug fixes#
Documentation#
Code Contributors#
Mark Mikofski
Johannes Dollinger
Will Holmgren
v0.4.0 (July 28, 2016)#
This is a major release from 0.3.3. We recommend that all users upgrade to this version after reviewing the API Changes. Please see the Bug Fixes for changes that will result in slightly different modeling results.
API Changes#
Remove unneeded module argument from singlediode function. (GH200)
In
pvlib.irradiance.perez
, renamed argumentmodelt
tomodel
. (GH196)Functions in the irradiance module now work with scalar inputs in addition to arrays and Series. Furthermore, these functions no longer promote scalar or array input to Series output. Also applies to atmosphere.relativeairmass. (GH201, GH214)
Reorder the ashraeiam, physicaliam, and snlinverter arguments to put the most variable arguments first. Adds default arguments for the IAM functions. (GH197)
The irradiance.extraradiation function input/output type consistency across different methods has been dramatically improved. (GH217, GH219)
Updated to pvsystem.sapm to be consistent with the PVLIB MATLAB API. pvsystem.sapm now takes an effective irradiance argument instead of POA irradiances, airmass, and AOI. Implements closely related sapm_spectral_loss, sapm_aoi_loss, and sapm_effective_irradiance functions, as well as PVSystem methods. The sapm_aoi_loss function includes an optional argument to apply an upper limit to the output (output can be ~1% larger than 1 for AOI of ~30 degrees). (GH198, GH205, GH218)
The pvsystem.retrieve_sam keyword argument
samfile
has been replaced withpath
. A selection dialog window is now activated by not supplying any arguments to the function. The API for typical usage remains unchanged, however, the data will be loaded from a local file rather than the SAM website. (GH52)
Enhancements#
Adds the First Solar spectral correction model. (GH115)
Adds the Gueymard 1994 integrated precipitable water model. (GH115)
Adds the PVWatts DC, AC, and system losses model. (GH195)
Improve PEP8 conformity in irradiance module. (GH214)
irradiance.disc is up to 10x faster. (GH214)
Add solarposition.nrel_earthsun_distance function and option to calculate extraterrestrial radiation using the NREL solar position algorithm. (GH211, GH215)
pvsystem.singlediode can now calculate IV curves if a user supplies an ivcurve_pnts keyword argument. (GH83)
Includes SAM data files in the distribution. (GH52)
ModelChain now implements SAPM, PVWatts, Single Diode and user-defined modeling options. See Will Holmgren’s ModelChain refactor gist for more discussion about new features in ModelChain. (GH143, GH194)
Added
forecast.py
module for solar power forecasts. (GH86, GH124, GH180)
Bug fixes#
Fixed an error in pvsystem.singlediode’s i_mp, v_mp, and p_mp calculations when using array or Series input. The function wrongly returned solutions when any single point is within the error tolerance, rather than requiring that the solution for all points be within the error tolerance. Results in test scenarios changed by 1-10%. (GH221)
Fixed a numerical overflow error in pvsystem.singlediode’s v_oc determination for some combinations of parameters. (GH225)
dirint function yielded the wrong results for non-sea-level pressures. Fixed. (GH212)
Fixed a bug in the day angle calculation used by the ‘spencer’ and ‘asce’ extraterrestrial radiation options. Most modeling results will be changed by less than 1 part in 1000. (GH211)
irradiance.extraradiation now raises a ValueError for invalid method input. It previously failed silently. (GH215)
Documentation#
Other#
pvlib-python is now available on the conda-forge channel: conda install pvlib-python -c conda-forge (GH154)
Switch to the py.test testing framework. (GH204)
Reconfigure Appveyor CI builds and resolve an issue in which the command line length was too long. (GH207)
Manually build numpy and pandas for the min requirements test. This is needed to avoid Continuum’s bad practice of bundling scipy with pandas. (GH214)
Requirements#
pvlib now requires pandas >= 0.14.0 and numpy >= 1.9.0, both released in 2014. Most of pvlib will work with lesser versions. (GH214)
Code Contributors#
Will Holmgren
Jonathan Chambers
Mitchell Lee
Derek Groenendyk
v0.3.3 (June 15, 2016)#
This is a minor release from 0.3.2. We recommend that all users upgrade to this version.
API Changes#
Renamed
series_modules
tomodules_per_string
andparallel_modules
tostrings_per_inverter
. (GH176)Changed two of the TMY3 data reader fields for consistency with the rest of the fields and with PVLIB MATLAB. Changed ‘PresWth source’ to ‘PresWthSource’, and ‘PresWth uncert’ to ‘PresWthUncertainty’. (GH193)
Enhancements#
Adds the Erbs model. (GH2)
Adds the
scale_voltage_current_power
function andPVSystem
method to support simple array modeling. (GH159)Adds support for
SingleAxisTracker
objects inModelChain
. (GH169)Add
__repr__
method to PVSystem, LocalizedPVSystem, ModelChain, SingleAxisTracker, Location. (GH142)Add
v_from_i
function for solving the single diode model. (GH190)Improve speed of
singlediode
function by usingv_from_i
to determinev_oc
. Speed is ~2x faster. (GH190)Adds the Simplified Solis clear sky model. (GH148)
Bug fixes#
Fix another bug with the Appveyor continuous integration builds. (GH170)
Add classifiers to setup.py. (GH181)
Fix snlinverter and singlediode documentation. They incorrectly said that inverter/module must be a DataFrame, when in reality they can be any dict-like object. (GH157)
Fix numpy 1.11 deprecation warnings caused by some functions using non-integer indices.
Propagate airmass data through ModelChain’s get_irradiance call so that the perez model can use it, if necessary. (GH172)
Fix problem in which the perez function dropped nighttime values. Nighttime values are now set to 0. (GH191)
Documentation#
Localize datetime indices in package overview examples. (GH156)
Clarify that
ModelChain
andbasic_chain
currently only supports SAPM. (GH177)Fix version number in 0.3.2 whatsnew file.
Shorten README.md file and move information to official documentation. (GH182)
Change authors to PVLIB Python Developers and clean up setup.py. (GH184)
Document the PresWth, PresWthSource, and PresWthUncertainty fields in the TMY3 data reader. (GH193)
Other#
Removed test skip decorator functions for Linux + Python 3 and for pandas 0.18.0. (GH187)
Contributors#
Will Holmgren
Mark Mikofski
Johannes Oos
Tony Lorenzo
v0.3.2 (May 3, 2016)#
This is a minor release from 0.3.1. We recommend that all users upgrade to this version.
Bug fixes#
Updates the SAM file URL. (GH152)
Contributors#
Will Holmgren
v0.3.1 (April 19, 2016)#
This is a minor release from 0.3.0. We recommend that all users upgrade to this version.
Enhancements#
Added versioneer to keep track of version changes instead of manually updating pvlib/version.py. This will aid developers because the version string includes the specific git commit of the library code currently imported. (issue:150)
Bug fixes#
Fixes night tare issue in snlinverter. When the DC input power (p_dc) to an inverter is below the inversion startup power (Ps0), the model should set the AC output (ac_power) to the night tare value (Pnt). The night tare power indicates the power consumed by the inverter to sense PV array voltage. The model was erroneously comparing Ps0 with the AC output power (ac_power), rather than the DC input power (p_dc). (GH140)
Fixed the azimuth calculation of rotated PV panel in function pvlib.tracking.singleaxis(…) so that the results are consistent with PVsyst. (GH144)
Contributors#
ejmiller2
Yudong Ma
Tony Lorenzo
Will Holmgren
v0.3.0 (March 21, 2016)#
This is a major release from 0.2.2. It will almost certainly break your code, but it’s worth it! We recommend that all users upgrade to this version after testing their code for compatibility and updating as necessary.
API changes#
The
location
argument insolarposition.get_solarposition
andclearsky.ineichen
has been replaced withlatitude
,longitude
,altitude
, andtz
as appropriate. This separates the object-oriented API from the procedural API. (GH17)Location
classes gain theget_solarposition
,get_clearsky
, andget_airmass
functions.Adds
ModelChain
,PVSystem
,LocalizedPVSystem
,SingleAxisTracker
, andLocalizedSingleAxisTracker
classes. (GH17)Location
objects can be created from TMY2/TMY3 metadata using thefrom_tmy
constructor.Change default
Location
timezone to'UTC'
.The solar position calculators now assume UTC time if the input time is not localized. The calculators previously tried to infer the timezone from the now defunct location argument.
pvsystem.sapm_celltemp
argument names now follow the variable conventions.irradiance.total_irrad
now follows the variable conventions. (GH105)atmosphere.relativeairmass
now raises a ValueError instead of assuming'kastenyoung1989'
if an invalid model is supplied. (GH119)
Enhancements#
Added new sections to the documentation:
Classes (GH93) (Moved to API reference in GH258)
Adds support for Appveyor, a Windows continuous integration service. (GH111)
The readthedocs documentation build now uses conda packages instead of mock packages. This enables code to be run and figures to be generated during the documentation builds. (GH104)
Reconfigures TravisCI builds and adds e.g.
has_numba
decorators to the test suite. The result is that the TravisCI test suite runs almost 10x faster and users do not have to install all optional dependencies to run the test suite. (GH109)Adds more unit tests that test that the return values are actually correct.
Add
atmosphere.APPARENT_ZENITH_MODELS
andatmosphere.TRUE_ZENITH_MODELS
to enable code that can automatically determine which type of zenith data to use e.g.Location.get_airmass
.Modify
sapm
documentation to clarify that it does not work with the CEC database. (GH122)Adds citation information to the documentation. (GH73)
Updates the
comparison_pvlib_matlab
documentation. (GH116)
Bug fixes#
Fixed the metadata key specification in documentation of the
readtmy2
function.Fixes the import of tkinter on Python 3 (GH112)
Add a decorator to skip
test_calcparams_desoto
on pandas 0.18.0. (GH130)Fixes
i_from_v
documentation. (GH126)Fixes two minor sphinx documentation errors: a too short heading underline in whatsnew/v0.2.2.txt and a table format in pvsystem. (GH123)
Contributors#
Will Holmgren
pyElena21
DaCoEx
Uwe Krien
Will Holmgren, Jessica Forbess, bmu, Cliff Hansen, Tony Lorenzo, Uwe Krien, and bt- contributed to the object model discussion.
v0.2.2 (November 13, 2015)#
This is a minor release from 0.2.1. We recommend that all users upgrade to this version.
Enhancements#
Bug fixes#
irradiance.total_irrad
had a typo that required the Klucher model to be accessed with'klutcher'
. Both spellings will work for the remaining 0.2.* versions of pvlib, but the misspelled method will be removed in 0.3. (GH97)Fixes an import and KeyError in the IPython notebook tutorials (GH94).
Uses the
logging
module properly by replacingformat
calls withargs
. This results in a 5x speed increase fortracking.singleaxis
(GH89).Adds a link to the 2015 PVSC paper (GH81)
Contributors#
Will Holmgren
jetheurer
dacoex
v0.2.1 (July 16, 2015)#
This is a minor release from 0.2. It includes a large number of bug fixes for the IPython notebook tutorials. We recommend that all users upgrade to this version.
Enhancements#
Update component info from SAM (csvs dated 2015-6-30) (GH75)
Bug fixes#
Contributors#
Will Holmgren
Jessica Forbess
v0.2.0 (July 6, 2015)#
This is a major release from 0.1 and includes a large number of API changes, several new features and enhancements along with a number of bug fixes. We recommend that all users upgrade to this version.
Due to the large number of API changes, you will probably need to update your code.
API changes#
Change variable names to conform with new Variables and style rules wiki. This impacts many function declarations and return values. Your existing code probably will not work! (GH37, GH54).
Move
dirint
anddisc
algorithms fromclearsky.py
toirradiance.py
(GH42)Mark some
pvsystem.py
methods as private (GH20)Make output of
pvsystem.sapm_celltemp
a DataFrame (GH54)
Enhancements#
Bug fixes#
The release date of 0.1 was fixed in the documentation (see v0.1.0 (April 20, 2015))
fix casting of DateTimeIndex to int64 epoch timestamp on machines with 32 bit python int (GH63)
fixed some docstrings with failing doctests (GH62)
Contributors#
Will Holmgren
Rob Andrews
bmu
Tony Lorenzo
v0.1.0 (April 20, 2015)#
This is the first official release of the pvlib-python project. As such, a “What’s new” document is a little hard to write. There will be significant overlap with the to-be-written document that describes the differences between pvlib-python and PVLIB_Matlab.
API changes#
Remove
pvl_
from module names.Consolidation of similar modules. For example, functions from
pvl_clearsky_ineichen.py
andpvl_clearsky_haurwitz.py
have been consolidated intoclearsky.py
.Return one DataFrame instead of a tuple of DataFrames.
Change function and module names so that they do not conflict.
New features#
Library is Python 3.3 and 3.4 compatible
Add What’s New section to docs (GH10)
Add PyEphem option to solar position calculations.
Add a Python translation of NREL’s SPA algorithm.
irradiance.py
has more AOI, projection, and irradiance sum and calculation functionsTMY data import has a
coerce_year
optionTMY data can be loaded from a url (GH5)
Locations are now
pvlib.location.Location
objects, not “structs”.Specify time zones using a string from the standard IANA Time Zone Database naming conventions or using a pytz.timezone instead of an integer GMT offset. We may add dateutils support in the future.
clearsky.ineichen
supports interpolating monthly Linke Turbidities to daily resolution.
Other changes#
Removed
Vars=Locals(); Expect...; var=pvl\_tools.Parse(Vars,Expect);
pattern. Very few tests of input validitity remain. Garbage in, garbage ornan
out.Removing unnecssary and sometimes undesired behavior such as setting maximum zenith=90 or airmass=0. Instead, we make extensive use of
nan
values.Adding logging calls, removing print calls.
Improved PEP8 compliance.
Added
/pvlib/data
for lookup tables, test, and tutorial data.Limited the scope of
clearsky.py
’sscipy
dependency.clearsky.ineichen
will work withoutscipy
so long as the Linke Turbidity is supplied as a keyword argument. (GH13)Removed NREL’s SPA code to comply with their license (GH9).
Revised the globalinplane function and added a test_globalinplane (GH21, GH33).
Documentation#
Testing#
Tests are cleaner and more thorough. They are still nowhere near complete.
Using Coveralls to measure test coverage.
Using TravisCI for automated testing.
Using
nosetests
for more concise test code.
Bug fixes#
Fixed DISC algorithm bugs concerning modifying input zenith Series (GH24), the
Kt
conditional evaluation (GH6), and ignoring the input pressure (GH25).Many more bug fixes were made, but you’ll have to look at the detailed commit history.
Fixed inconsistent azimuth angle in the ephemeris function (GH40)
Contributors#
This list includes all (I hope) contributors to pvlib/pvlib-python, Sandia-Labs/PVLIB_Python, and UARENForecasting/PVLIB_Python.
Rob Andrews
Will Holmgren
bmu
Tony Lorenzo
jforbess
Jorissup
dacoex
alexisph
Uwe Krien