Description
Given aerosol optical depth (AOD), Angstrom alpha and precipitable water (AKA total column water vapor) calculate Linke turbidity factor using Molineaux (1998), Bird-Hulstrom (1980), Berk (1996) and Kasten (1980).
-
calculate Angstrom turbidity alpha exponent if not known, from AOD at two wavelengths,
lambda1
andlambda2
:alpha0 = -log(aod1 / aod2) / log(lambda1 / lambda2)
Example with
lambda1 = 1240nm
andlambda2 = 550nm
alpha0 = -log(aod1240nm / aod550nm) / log(1240 / 550)
-
get
aod
at 700[nm] fromalpha
aod700 = aod550* ((700 / 550) ^ (-alpha0))
-
From numerically integrated spectral simulations done with Modtran (Berk, 1996), Molineaux (1998) obtained for the broadband optical depth of a clean and dry atmopshere (fictious atmosphere that comprises only the effects of Rayleigh scattering and absorption by the atmosphere gases other than the water vapor) the following expression where
M
is airmass.delta_cda = - 0.101 + 0.235 * M ^ (-0.16)
-
The broadband water vapor optical depth where
pwat
is the precipitable water vapor content of the atmosphere in [cm]. The precision of these fits is better than 1% when compared with Modtran simulations in the range 1 < M < 6 and 0 < w < 5 cm.delta_w = 0.112 * M ^ (-0.55) * pwat ^ (0.34);
-
Aerosol
either using (Molineaux 1998)
delta_a = aod700
or using (Bird-Hulstrom 1980)
delta_a = 0.27583*aod380 + 0.35*aod500
-
Using the Kasten pyrheliometric formula (1980), the Linke turbidity at M
TL = -(9.4 + 0.9*M) * log(exp(-M * (delta_cda + delta_w + delta_a))) / M
This derivation was developed in collaboration with Armel Oumbe @aoumbe
references:
Activity
mikofski commentedon Nov 28, 2016
References:
molineaux-ineichen 1998 - Equivalence of pyrheliometric and aerosol optical depth (ao).pdf
new airmass for Linke-02.pdf
mikofski commentedon Nov 28, 2016
@wholmgren there seem to be several derivations of Linke turbidity. Is this worth submitting?
wholmgren commentedon Nov 29, 2016
Sorry, I don't fully understand your proposal. Are you proposing to add functions to implement some of the equations above? I actually meant to add Bird-Hulstrom 1980 to atmosphere.py when I added the simplified solis model a few months ago.
mikofski commentedon Nov 29, 2016
@wholmgren these formulas together allow you to convert AOD and Pwat measurements directly to Linke turbidity for use in Ineichen clearsky, which is evidently the only place it's used. Maybe it's related to #101.
For example if you had AOD and Pwat from AERONET and MERRA (or any source), then you could calculate Linke turbidity factors and use them in the clearsky model.
wholmgren commentedon Nov 29, 2016
I do think that could be useful. My understanding is that using your AOD and PW data with simplified solis is more accurate, however, your proposed functionality would be necessary to actually prove that in pvlib.
adriesse commentedon Nov 29, 2016
I think it would be really nice to have these cleanly implemented so that various comparisons can be done.
cwhanse commentedon Nov 29, 2016
@mikofski I'd like to see this function added.
mikofski commentedon Nov 30, 2016
I struggled with testing, so I compared the broadband AOD measurements from TMY3 from Melbourne, FL with the lookup Linke turbidity function and the output was within an order of magnitude. The figure below shows that Linke turbidity calculated with lambda set to 500[nm] and the daily averages differ by about 10%.
But the TMY3 manual says that the reported AOD is broadband so if I use lambda of 700[nm] then the calculated values are much closer, but the trends deviated in autumn.
I think another test would be to compare it with ECMWF AOD/Pwat data in which the wavelength of the AOD measurement is also reported, and there are measurements at five different bands.
Here's a patch. @wholmgren and @cwhanse, not sure where you want me to put it.
linke_turb_from_aod.py.txt
To get the 700[nm] plot I change L129:
and L131-132:
Let me know what other ideas you have.
mikofski commentedon Nov 30, 2016
Another reference from Ineichen that outlines these steps pretty well:
atmospheric water vapor and aerosol content, P. Ineichecn, Solar Energy 82 (2008), p 1095-1097
Ineichen_SolarEnergy(82)_Conversion-of-Linke-turbidity_2008.pdf
Ineichen also outlines an improved method by Mueller (2004) and Mayer (1997) derived from the simplified solis scheme:
Should be pretty easy to add this as an option to the existing
kasten_80lt()
method.wholmgren commentedon Dec 1, 2016
Nice. Can you really use a wavelength of 700 as a substitute for broadband, or was that just to prove that the wavelength matters? Good idea to test with ECMWF data, though I don't know if that's necessary to do before adding this to the library.
I can see arguments for putting this kind of thing in either atmosphere.py or clearsky.py. I don't have a recommendation at this point.
+1 on the second TL formulation.
It might be best to write separate (possibly private) functions for each of the steps you initially outlined, then another function or two that ties them all together. We can also defer discussion of implementation details to a PR.
cwhanse commentedon Dec 1, 2016
wholmgren commentedon Dec 1, 2016
Thanks, Cliff. That all makes sense and once again I should have read Mark's original post more carefully.
mikofski commentedon Dec 1, 2016
@BenBourne can you take a look at this?
9 remaining items