-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Adds k parameter to temperature.ross #2521
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 5 commits
85aa720
50da75f
48866ee
c917c61
b3b10fc
70616e1
b71960b
c3edec5
3d8db5e
3766673
058e1f0
97535a0
0cc4b5f
fd72680
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
@@ -618,7 +618,7 @@ def faiman_rad(poa_global, temp_air, wind_speed=1.0, ir_down=None, | |||||||||
return temp_air + temp_difference | ||||||||||
|
||||||||||
|
||||||||||
def ross(poa_global, temp_air, noct): | ||||||||||
def ross(poa_global, temp_air, noct=None, k=None): | ||||||||||
r''' | ||||||||||
Calculate cell temperature using the Ross model. | ||||||||||
|
||||||||||
|
@@ -638,6 +638,9 @@ def ross(poa_global, temp_air, noct): | |||||||||
noct : numeric | ||||||||||
Nominal operating cell temperature [C], determined at conditions of | ||||||||||
800 W/m^2 irradiance, 20 C ambient air temperature and 1 m/s wind. | ||||||||||
k: numeric | ||||||||||
Ross coefficient [Km^2/W], which is an alternative to employing | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
NOCT in Ross's equation. | ||||||||||
|
||||||||||
Returns | ||||||||||
------- | ||||||||||
|
@@ -650,19 +653,52 @@ def ross(poa_global, temp_air, noct): | |||||||||
|
||||||||||
.. math:: | ||||||||||
|
||||||||||
T_{C} = T_{a} + \frac{NOCT - 20}{80} S | ||||||||||
T_{C} = T_{a} + \frac{NOCT - 20}{80} S = T_{a} + k × S | ||||||||||
|
||||||||||
where :math:`S` is the plane of array irradiance in :math:`mW/{cm}^2`. | ||||||||||
This function expects irradiance in :math:`W/m^2`. | ||||||||||
Comment on lines
658
to
659
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Let others comment, but I think
Suggested change
|
||||||||||
|
||||||||||
Representative values for k are provided in [2]_, covering different types | ||||||||||
of mounting and module structure. | ||||||||||
|
||||||||||
+---------------------+-----------+ | ||||||||||
| Mounting | :math:`k` | | ||||||||||
+=====================+===========+ | ||||||||||
| Well cooled | 0.02 | | ||||||||||
+---------------------+-----------+ | ||||||||||
| Free standing | 0.0208 | | ||||||||||
+---------------------+-----------+ | ||||||||||
| Flat on roof | 0.026 | | ||||||||||
+---------------------+-----------+ | ||||||||||
| Not so well cooled | 0.0342 | | ||||||||||
+---------------------+-----------+ | ||||||||||
| Transparent pv | 0.0455 | | ||||||||||
+---------------------+-----------+ | ||||||||||
| Facade integrated | 0.0538 | | ||||||||||
+---------------------+-----------+ | ||||||||||
| On sloped roof | 0.0563 | | ||||||||||
+---------------------+-----------+ | ||||||||||
|
||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I feel like we'll be asked what is meant by some of these descriptors: "not so well cooled", "on sloped roof" - is that a sloped roof, or modules tilted up away from the roof? I've got a copy of the paper that [2] references, I'll leave a comment with suggested text to add. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On sloped roofs: On flat roofs: Building integrated: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks for your effort @cwhanse and for pointing out the unclear designations! I disagree with the author flat on roof designation, which I believe misled your interpretation. The original reference mentions
This makes me think both are tilted modules, but one on the ground and another on top of a flat roof. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I concur. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instead I would propose a new, more self-explanatory nomenclature, mentioning the original reference as inspiration (with the values made explicit in our documentation, it should be easy for people to make the correspondance with the Skoplaki publication). Well cooled » Sloped roof, well ventilated I hesitated on removing the Would also include a note mentioning that the ventilation in the namings refers to the back side of the module (and, thus, the spacing available with the surface). There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I agree, ventilation is the primary distinction, rather than level of transparency of the module itself. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @cwhanse documentation improved in latest commit, let me know what you think. And thanks for the brainstorming! :-) |
||||||||||
References | ||||||||||
---------- | ||||||||||
.. [1] Ross, R. G. Jr., (1981). "Design Techniques for Flat-Plate | ||||||||||
Photovoltaic Arrays". 15th IEEE Photovoltaic Specialist Conference, | ||||||||||
Orlando, FL. | ||||||||||
.. [2] E. Skoplaki and J. A. Palyvos, “Operating temperature of | ||||||||||
photovoltaic modules: A survey of pertinent correlations,” Renewable | ||||||||||
Energy, vol. 34, no. 1, pp. 23–29, Jan. 2009, | ||||||||||
:doi:`10.1016/j.renene.2008.04.009` | ||||||||||
''' | ||||||||||
# factor of 0.1 converts irradiance from W/m2 to mW/cm2 | ||||||||||
return temp_air + (noct - 20.) / 80. * poa_global * 0.1 | ||||||||||
if (noct is None) & (k is None): | ||||||||||
raise ValueError("Either noct or k need is required.") | ||||||||||
elif (noct is not None) & (k is not None): | ||||||||||
raise ValueError("Provide only one of noct or k, not both.") | ||||||||||
Comment on lines
+702
to
+705
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The codecov checks on this PR fail because these There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could you be a bit more explicit? Never used that before. Also, fyi, there is a similar |
||||||||||
elif k is None: | ||||||||||
# factor of 0.1 converts irradiance from W/m2 to mW/cm2 | ||||||||||
return temp_air + (noct - 20.) / 80. * poa_global * 0.1 | ||||||||||
cwhanse marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||
elif noct is None: | ||||||||||
# k assumes irradiance in W.m-2, dismissing 0.1 factor | ||||||||||
return temp_air + k * poa_global | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For testing: please check that the function returns correct values when There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If the types you mention refer to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please add the tests to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @RDaxini tests added :-) |
||||||||||
|
||||||||||
|
||||||||||
def _fuentes_hconv(tave, windmod, tinoct, temp_delta, xlen, tilt, | ||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's good to keep PR scope focused, but our units convention was only recently introduced and we aim to update the documentation gradually. Since you're working on this function anyway, I don't think anyone would object to (personally, I would encourage) updating the formatting of these units here and elsewhere in this function. That said, anyone, feel free to object
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the initiative @RDaxini. I thought about that but then I noticed that the issue applies to the whole file. So to make the PR more focused, I kept the original formatting and moved that to a separate issue (#2519).
If that's okay for you, I would leave this PR with the
Adds
»Add
and correct the doi formatting (which I've already commited).Next week I will address the unit styling in #2519, feel free to join the discussion. There I'm proposing to have a
.
between units (e.g.W.m⁻²
) to make reading easier, and to present the Ross equation with800
in the denominator to shift from the historically cell-motivated mW.cm⁻² to a more module-friendly W.m⁻² (which also dismisses the current0.1
factor to match the irradiance unit).There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree, let's do edits for style in #2519 for all of temperature.py.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If there is already work planned to do this separately then that's fine