-
Notifications
You must be signed in to change notification settings - Fork 1k
/
v0.7.0.rst
243 lines (228 loc) · 12.6 KB
/
v0.7.0.rst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
.. _whatsnew_0700:
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.** (:issue:`501`)
**Minimum numpy version is now 1.12.0. Minimum pandas version is now 0.18.1.** (:issue:`830`, :issue:`748`)
API Breaking Changes
~~~~~~~~~~~~~~~~~~~~
* The `effective_irradiance` argument for :py:func:`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 :py:func:`pvsystem.sapm_effective_irradiance` is now in units
of W/m2 rather than suns.
* Calling :py:func:`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 limit
``PVSystem.inverter_parameters['pdc0']`` instead of module nameplate
capacity ``PVSystem.module_parameters['pdc0']``. (:issue:`734`)
* ``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 in ``PVSystem.module_parameters``. (:issue:`734`)
API Changes with Deprecations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Changes related to cell temperature models (:issue:`678`):
* 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 (:issue:`680`):
* 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 (:issue:`782`):
* 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
:py:meth:`pvlib.modelchain.ModelChain.run_model`,
:py:meth:`pvlib.modelchain.ModelChain.prepare_inputs`, and
:py:meth:`pvlib.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
~~~~~~~~~~~~~~~~~
* :py:func:`pvlib.iotools.midc.read_midc` now passes additional keyword
arguments to `pandas.read_csv`
* Add `timeout` argument to :py:func:`pvlib.iotools.midc.read_midc_raw_data_from_nrel`
* :py:mod:`pvlib.bifacial` is now imported when ``pvlib`` is imported.
(:issue:`766`)
Enhancements
~~~~~~~~~~~~
* Created one new temperature model function:
:py:func:`pvlib.temperature.faiman`. (:issue:`750`)
* Created two new incidence angle modifier (IAM) functions:
:py:func:`pvlib.iam.martin_ruiz` and :py:func:`pvlib.iam.interp`. (:issue:`751`)
* Created one new incidence angle modifier (IAM) function for diffuse irradiance:
:py:func:`pvlib.iam.martin_ruiz_diffuse`. (:issue:`751`)
* 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. (:issue:`761`)
* 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. (:issue:`761`)
* Added recombination current parameters to bishop88 single-diode functions and also
to :py:func:`pvlib.pvsystem.max_power_point`. (:issue:`762`)
* Add `ivtools` module to contain functions for IV model fitting.
* Add :py:func:`~pvlib.ivtools.fit_sde_sandia`, a simple method to fit
the single diode equation to an IV curve.
* Add :py:func:`~pvlib.ivtools.fit_sdm_cec_sam`, a wrapper for the CEC single
diode model fitting function '6parsolve' from NREL's System Advisor Model.
* Add :py:func:`~pvlib.ivtools.fit_sdm_desoto`, a method to fit the De Soto single
diode model to the typical specifications given in manufacturers datasheets.
* Add `timeout` to :py:func:`pvlib.iotools.get_psm3`.
* Add :py:func:`~pvlib.scaling.wvm`, a port of the wavelet variability model for
computing reductions in variability due to a spatially distributed plant.
* Add :py:meth:`~pvlib.location.Location.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`.
(:issue:`745`)
* Fix output as Series feature in :py:func:`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`.
(:issue:`754`)
* 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.
(:issue:`725`)
* ``PVSystem.pvwatts_ac`` now uses inverter DC input limit
``PVSystem.inverter_parameters['pdc0']`` instead of module nameplate
capacity ``PVSystem.module_parameters['pdc0']``. (:issue:`734`)
Testing
~~~~~~~
* Added 30 minutes to timestamps in `test_psm3.csv` to match change
in NSRDB (:issue:`733`)
* Added tests for methods in bifacial.py.
* Added tests for changes to cell temperature models.
* Add tests configuration for bare python environment (no conda).
(:issue:`727`)
* 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. (:issue:`785`)
* 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
~~~~~~~~~~~~
* numpy minimum increased to v1.12.0, released in 2017. (:issue:`830`)
* pandas minimum increased to v1.18.1, released in 2016. (:issue:`748`)
Contributors
~~~~~~~~~~~~
* Mark Campanellli (:ghuser:`markcampanelli`)
* Will Holmgren (:ghuser:`wholmgren`)
* Cliff Hansen (:ghuser:`cwhanse`)
* Oscar Dowson (:ghuser:`odow`)
* Anton Driesse (:ghuser:`adriesse`)
* Alexander Morgan (:ghuser:`alexandermorgan`)
* Miguel Sánchez de León Peque (:ghuser:`Peque`)
* Tanguy Lunel (:ghuser:`tylunel`)
* Veronica Guo (:ghuser:`veronicaguo`)
* Joseph Ranalli (:ghuser:`jranalli`)
* Tony Lorenzo (:ghuser:`alorenzo175`)
* Todd Karin (:ghuser:`toddkarin`)
* Mark Mikofski (:ghuser:`mikofski`)
* Kevin Anderson (:ghuser:`kevinsa5`)
* Cameron Stark (:ghuser:`camerontstark`)
* Janine Freeman (:ghuser:`janinefreeman`)
* Roel Loonen (:ghuser:`roelloonen`)
* Birgit Schachler (:ghuser:`birgits`)
* Hamilton Kibbe (:ghuser:`hamiltonkibbe`)
* Adam Peretti (:ghuser:`aperetti`)
* Cedric Leroy (:ghuser:`cedricleroy`)
* Joseph Palakapilly (:ghuser:`JPalakapillyKWH`)
* (:ghuser:`shall-resurety`)