@@ -533,153 +533,3 @@ def angstrom_alpha(aod1, lambda1, aod2, lambda2):
533533 pvlib.atmosphere.angstrom_aod_at_lambda
534534 """
535535 return - np .log (aod1 / aod2 ) / np .log (lambda1 / lambda2 )
536-
537-
538- def caballero_spectral_correction (airmass_absolute , aod500 , pw ,
539- module_type = None , coefficients = None ,
540- aod500_ref = 0.084 , pw_ref = 1.42 ):
541- r"""
542- Spectral mismatch modifier based on absolute (pressure-adjusted)
543- airmass (AM), aerosol optical depth (AOD) at 500 nm and
544- precipitable water (PW).
545-
546- Estimates a spectral mismatch modifier :math:`M` representing
547- the effect on module short circuit current of variation in the
548- spectral irradiance. :math:`M` is estimated from absolute
549- (pressure-adjusted) AM, :math:`ama`, AOD at 500 nm, :math:`aod500`
550- and PW, :math:`pw` [1]_.
551-
552- The best fit polynomial for each atmospheric parameter (AM, AOD, PW)
553- and PV technology under study has been obtained from synthetic spectra
554- generated with SMARTS [2]_, considering the following boundary
555- conditions:
556-
557- * :math:`1.0 <= ama <= 5.0`
558- * :math:`0.05 <= aod500 <= 0.6`
559- * :math:`0.25 \textrm{cm} <= pw <= 4 \textrm{cm}`
560- * Spectral range is limited to that of CMP11 (280 nm to 2800 nm)
561- * All other parameters fixed at G173 standard
562-
563- Elevation (deg), AOD and PW data were recorded in the city of Jaén,
564- Spain for one year synchronously with both, broadband and
565- spectroradiometric measurements of 30º tilted global irradiance
566- south-facing logged in 5-min intervals. AM was estimated through
567- elevation data.
568-
569- Finally, the spectral mismatch factor was calculated for each
570- of the PV technologies and a multivariable regression adjustment
571- as a function of AM, AOD and PW was performed according to [3] and [1]_.
572- As such, the polynomial adjustment coefficients included in [1]
573- were obtained.
574-
575-
576- Parameters
577- ----------
578- airmass_absolute : array-like
579- absolute (pressure-adjusted) airmass. [unitless]
580-
581- aod500 : array-like
582- atmospheric aerosol optical depth at 500 nm. [unitless]
583-
584- pw : array-like
585- atmospheric precipitable water. [cm]
586-
587- module_type : None or string, default None
588- a string specifying a cell type. Values of 'cdte', 'monosi', 'cigs',
589- 'multisi','asi' and 'perovskite'. If provided,
590- module_type selects default coefficients for the following modules:
591-
592- * 'cdte' - anonymous CdTe module.
593- * 'monosi', - anonymous sc-si module.
594- * 'multisi', - anonymous mc-si- module.
595- * 'cigs' - anonymous copper indium gallium selenide module.
596- * 'asi' - anonymous amorphous silicon module.
597- * 'perovskite' - anonymous pervoskite module.
598-
599- coefficients : None or array-like, optional
600- the coefficients employed have been obtained with experimental
601- data in the city of Jaén, Spain. It is pending to verify if such
602- coefficients vary in places with extreme climates where AOD and
603- pw values are frequently high.
604-
605- aod500_ref : numeric, default 0.084
606- atmospheric aerosol optical depth at 500nm value related to the
607- AM1.5G ASTMG-173-03 reference spectrum. [unitless]
608-
609- pw_ref : numeric, default 1.42
610- atmospheric precipitable water value related to the AM1.5G ASTMG-173-03
611- reference spectrum. [cm]
612-
613- Returns
614- -------
615- modifier: array-like
616- spectral mismatch factor (unitless) which is can be multiplied
617- with broadband irradiance reaching a module's cells to estimate
618- effective irradiance, i.e., the irradiance that is converted to
619- electrical current.
620-
621- References
622- ----------
623- .. [1] Caballero, J.A., Fernández, E., Theristis, M.,
624- Almonacid, F., and Nofuentes, G. "Spectral Corrections Based on
625- Air Mass, Aerosol Optical Depth and Precipitable Water
626- for PV Performance Modeling."
627- IEEE Journal of Photovoltaics 2018, 8(2), 552-558.
628- https://doi.org/10.1109/jphotov.2017.2787019
629- .. [2] Gueymard, Christian. SMARTS2: a simple model of the
630- atmospheric radiative transfer of sunshine: algorithms
631- and performance assessment. Cocoa, FL:
632- Florida Solar Energy Center, 1995.
633- .. [3] Theristis, M., Fernández, E., Almonacid, F., and
634- Pérez-Higueras, Pedro. "Spectral Corrections Based
635- on Air Mass, Aerosol Optical Depth and Precipitable
636- Water for CPV Performance Modeling."
637- IEEE Journal of Photovoltaics 2016, 6(6), 1598-1604.
638- https://doi.org/10.1109/jphotov.2016.2606702
639-
640- """
641-
642- # Experimental coefficients
643-
644- _coefficients = {}
645- _coefficients ['cdte' ] = (
646- 1.0044 , 0.0095 , - 0.0037 , 0.0002 , 0.0000 , - 0.0046 ,
647- - 0.0182 , 0 , 0.0095 , 0.0068 , 0 , 1 )
648- _coefficients ['monosi' ] = (
649- 0.9706 , 0.0377 , - 0.0123 , 0.0025 , - 0.0002 , 0.0159 ,
650- - 0.0165 , 0 , - 0.0016 , - 0.0027 , 1 , 0 )
651- _coefficients ['multisi' ] = (
652- 0.9836 , 0.0254 , - 0.0085 , 0.0016 , - 0.0001 , 0.0094 ,
653- - 0.0132 , 0 , - 0.0002 , - 0.0011 , 1 , 0 )
654- _coefficients ['cigs' ] = (
655- 0.9801 , 0.0283 , - 0.0092 , 0.0019 , - 0.0001 , 0.0117 ,
656- - 0.0126 , 0 , - 0.0011 , - 0.0019 , 1 , 0 )
657- _coefficients ['asi' ] = (
658- 1.1060 , - 0.0848 , 0.0302 , - 0.0076 , 0.0006 , - 0.1283 ,
659- 0.0986 , - 0.0254 , 0.0156 , 0.0146 , 1 , 0 )
660- _coefficients ['perovskite' ] = (
661- 1.0637 , - 0.0491 , 0.0180 , - 0.0047 , 0.0004 , - 0.0773 ,
662- 0.0583 , - 0.0159 , 0.01251 , 0.0109 , 1 , 0 )
663-
664- if module_type is None and coefficients is None :
665- raise ValueError ('Must provide either `module_type` or `coefficients`' )
666- if module_type is not None and coefficients is not None :
667- raise ValueError ('Only one of `module_type` and `coefficients` should '
668- 'be provided' )
669- if module_type is not None :
670- coeff = _coefficients [module_type ]
671- else :
672- coeff = coefficients
673-
674- # Evaluate spectral correction factor
675- ama = airmass_absolute
676- modifier = (
677- coeff [0 ] + (ama ) * coeff [1 ] + (ama * ama ) * coeff [2 ]
678- + (ama * ama * ama ) * coeff [3 ] + (ama * ama * ama * ama ) * coeff [4 ]
679- + (aod500 - aod500_ref ) * coeff [5 ]
680- + ((aod500 - aod500_ref ) * (ama ) * coeff [6 ]) * coeff [10 ]
681- + ((aod500 - aod500_ref ) * (np .log (ama )) * coeff [6 ]) * coeff [11 ]
682- + (aod500 - aod500_ref ) * (ama * ama ) * coeff [7 ]
683- + (pw - pw_ref ) * coeff [8 ] + (pw - pw_ref ) * (np .log (ama )) * coeff [9 ])
684-
685- return modifier
0 commit comments