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
is vf_row_sky correct? #1665
Comments
ditto: pvlib-python/pvlib/bifacial/infinite_sheds.py Line 153 in 7e88d21
and pvlib-python/pvlib/bifacial/infinite_sheds.py Line 251 in 7e88d21
|
FYI: these formulas are sort of referenced in doi: 10.1109/PVSC40753.2019.8980572 in eqn's (10) & (11), except that they are multipliers meant to undo the VF the previous transposition step. |
I disagree and believe that line of code and its description are correct. The implementation of the infinite_sheds doesn't use the multiplier approach indicated by the paper. The reference frame for all view factor calculations is the ground. The function |
I've been chewing on this for a while and am not quite sure where the flaw is in Mark's math. I suspect it has something to do with unwittingly adding or deleting a segment from the sky dome, making it not a hemisphere anymore and causing the view factor to be taken as a fraction of the wrong thing, but I don't have any math to back that up. I'd be interested to see a better explanation if anyone has one. Anyway, regarding the calculation in the code: start with the usual |
|
That was my mistake I think, but now I think that the way the angles are measured should not be arbitrary. Measuring the angles the way I did (from the slanted line) requires rotating the reference frame from horizontal, which I believe is equivalent to a module surface tilted further away from the isotropic sky dome by If I just rely on Marion as the reference then we have: Also the existing formulation
I think it's important to realize that these two formulas do not evaluate the same: |
Hi @cwhanse did you mean to reopen this? |
Yes. I think we need to better understand these two different calculations of view factors before we consider this question resolved. |
Okay, I think I see your point. I was going to say this is given by B-71 from Siegel's and Howell's "Thermal Radiation" 7th edition which is the fraction of radiation from a:
But the problem is the orientation of However, a differential surface Some other interesting papers I found are Joseph Applebaum's "View Factors of Flat Collectors, Including Photovoltaics, Visible to Partial Sky" in which they show several view factors using different methods. One is the view factor of an fixed tilt collector on an inclined plane. |
By the way, this problem can be solved using A-10 by integrating from zero to |
Testing both formulas against integrating A-10 in this gist, I find better agreement with the formulation in PR #1666 and the original reference doi: 10.1109/PVSC40753.2019.8980572 in eqn's (10) & (11). I believe the current pvlib formulation would only be valid for the ground's view of the sky as in the Marion reference. @cwhanse I think the reason the existing formulation doesn't work is because the normal of the differential surface @kanderso-nrel I think the reason that superposition, as you suggested, doesn't work because they are not the same differential I think we should consider merging the PR. I think we can use Siegel & Howell as a reference. |
Also I should’ve clarified that I did not derive the numerator expression. I took it from work done by Jeff Newmiller as explained in the wiki bifacial notes. I remember it took me awhile to understand it, as I also originally thought it should be a difference of two cosines, vs a cosine of a difference. Evidentially it didn’t stick because I forgot. That was pre-pandemic |
Yes. Herein lies the conceptual mistake I made in the implementation. B-71 in Siegel and Howell is the correct formula, but the angles must be relative to the plane containing the receiver, not to a reference plane such as the ground surface. I concur that #1666 is the valid correction to that line of code. |
Thanks @cwhanse for running this to ground. I will copy some of this into the wiki bifacial notes for reference. Just for clarification I think:
|
B-71 is correct for module -> sky, but in its cosine form since we want to measure angles relative to the module's plane rather than its normal. I wouldn't point to B-1 since that assumes the radiating surface is a flat plane, as opposed to a surface formed by moving a parallel line to form an arbitrary surface. There's an equivalency between B-71 and B-1, but that's one more conceptual step; B-71 and B-1 yield the same formula when the angles are determined relative to the module's plane. |
D'oh! Of course, thanks :) |
icymi: @jdnewmil |
pvlib-python/pvlib/bifacial/infinite_sheds.py
Line 146 in 7e88d21
I think this should be:
because in the reference frame of the module surface the angle pointing along the slant height to the sky is actually zero,$cos(0) = 1$ , and the angle above the slant height to a horizontal line would be the
surface_tilt
itself, then the angle from the horizontal to the top of the next row ispsi_t_shaded
so finally this angle from the slant height all the way up to the top of the next row issurface_tilt + psi_t_shaded
:For example, this is why if$(1+\cos(\beta))/2$ as given on the PVPMC website modeling reference for POA sky diffuse.
psi_t_shaded
is zero, then the view factor should collapse to the isotropic view factorThe actual value difference between the two formulas can be quite small when
psi_t_shaded
is close to zero (eg less than 5°), but it's significant when as the masking angle is larger (eg greater than 5°).The text was updated successfully, but these errors were encountered: