Improved method for computing Marion's IAM-correction to horizon diffuse POA irradiance #2815
Replies: 5 comments 2 replies
-
|
From this comment:
@cwhanse Does I'd consider incorporating the above horizon-integral implementation improvement in a bigger paper on a view-factor improved ground-diffuse correction, assuming your hunch is correct that it is missing in the Marion method. |
Beta Was this translation helpful? Give feedback.
-
|
I wrote up the derivation, which led me to realize an even simpler expression for the integral: import numpy
from scipy.integrate import quad
def integrand(phi_rad, theta_tilt_rad, iam_fun):
return iam_fun(numpy.degrees(numpy.arccos(numpy.sin(phi_rad) * numpy.sin(theta_tilt_rad)))) * numpy.sin(phi_rad) / 2
def marion_integrate_horizon(theta_tilt_rad, iam_fun):
# quad returns result and accuracy as a tuple, so take first element.
return quad(integrand, 0, numpy.pi, args=(theta_tilt_rad, iam_fun))[0]Marion_Horizon_Integral_Alternative.pdf @cwhanse I am happy to collaborate on a publication by adding the view-factor correction to the ground diffuse integrals. @cbcrespo I struggled to follow Marion's original derivation. Maybe this helps in understanding? Also, would you benefit by publishing a paper on this? (See also comment above for Cliff.) |
Beta Was this translation helpful? Give feedback.
-
|
@markcampanelli, it's meritful how you got your hands dirty and made the effort to understand what was happening under the hood. while it was easy for me to understand the practical challenge of " personally, and I have yet to discuss with @AdamRJensen about it, I think that a brief technical note could be a good diffusion mechanism for a potential new, interpolation-based IAM timeseries generation (which @cbcrespo is now testing). however, while that is a high-level modification (in the sense that it doesn't change the base code) which only helps for trackers, yours is a low-level one which benefits all cases and - from what you say - even corrects a potential gap in |
Beta Was this translation helpful? Give feedback.
-
@markcampanelli Even though the Marion interpolation is a good fit within my GSoC plan, I think this would already fall outside the scope of both my GSoC and my own research (as well as my calculus skills 😅). Thank you for asking though! |
Beta Was this translation helpful? Give feedback.
-
|
@ramaroesilva @cbcrespo To clarify a bit here, the method I wrote up is (in my view) a cleaner, more accurate, and more efficient way of computing the integral for Marion's IAM correction for the diffuse horizon-ring (using a Perez-like model). This is somewhat independent of using an interpolant to fit the result of this integration over a range of input tilt angles, which I view as a fairly straightforward interpolation problem, but with some more interesting questions to sort out around implementation in reasonably bombproof code. Also, despite this new integration method, my gut (!) says that the interpolation approach will still be preferred for any reasonably sized PV-tracker simulation. @cbcrespo Some students and early career folks are eager for opportunities to publish as it can help unlock opportunities. Thanks for considering. If it's any consolation, I sometimes still struggle with the intuition behind the surface integrals in 3D and such. :) |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
As mentioned in #1402, here is a simpler and ~2x faster (and more memory efficient?) way to compute Marion's IAM-correction to horizon diffuse POA irradiance. Copied this from a Jupyter notebook:
The key outputs are:
The new algorithm still expects radians and doesn't yet handle the special case where POA tilt is zero.
I am working on a proper math writeup to show how the two integrands are derived.
cc @cwhanse @kandersolar
Beta Was this translation helpful? Give feedback.
All reactions