pvperfsolar performance modeling

Reference / Spectral correction

Model option

Air-mass modifier (King 2004)

A polynomial in the absolute air mass with De Soto's coefficients, applied to the effective irradiance

Inputs used: Spectral mode, Spectral model, Spectral coefficients, Technology, Precipitable water, Relative humidity, Altitude

Method

The spectral modifier MM is a fourth-degree polynomial in the absolute air mass: the air-mass function of King's Sandia array performance model, with the coefficients De Soto, Klein and Beckman fitted for crystalline silicon. The same coefficients serve every cell technology. The absolute air mass is the Kasten and Young formula with the zenith angle held at 86° or below, times a factor that falls with the site elevation. MM multiplies the effective irradiance before the cell temperature step, point A of Figure 10, so the cell temperature, the module power and the irradiance-level and temperature rows all use M GM\,G. The spectral row is the change of the array's nominal power between GG and M GM\,G (4). On a dark timestep or one where no light reaches the modules, MM is 1. A lit timestep with the sun at or below the horizon takes the zenith angle of 86°. The modifier uses only the sun's position and the site elevation, and needs no weather column.

Where the spectral modifier M enters the chain

Settings

Setting Value
Coefficients a0…a4a_0 \ldots a_4 0.918093, 0.086257, −0.024459, 0.002816, −0.000126
Largest zenith angle 86°
Where the modifier acts on the effective irradiance, before the cell temperature

The math

  1. Absolute air mass
  2. Spectral modifier
  3. Irradiance the module converts
  4. Spectral row
AMa=e−0.0001184 zcos⁡θz′+0.5057 (96.080−θz′)−1.634,θz′=min⁡(θz, 86°)(1)\text{AM}_a = \frac{e^{-0.0001184\,z}}{\cos\theta_z' + 0.5057\,(96.080 - \theta_z')^{-1.634}},\qquad \theta_z' = \min(\theta_z,\ 86°) \tag{1} M=max⁡ ⁣(0, ∑k=04ak AMa k)(2)M = \max\!\left(0,\ \sum_{k=0}^{4} a_k\,\text{AM}_a^{\,k}\right) \tag{2} Gused=M G(3)G_{used} = M\,G \tag{3} ΔPsp=N[Plin(G)−Plin(M G)],Plin(g)=Pnom gGref(4)\Delta P_{sp} = N\left[P_{lin}(G) - P_{lin}(M\,G)\right],\qquad P_{lin}(g) = P_{nom}\,\frac{g}{G_{ref}} \tag{4}

where

Symbol Meaning Unit
AMa\text{AM}_a the absolute air mass —
zz the site elevation m
θz′\theta_z' the zenith angle held at 86° or below degrees
θz\theta_z the zenith angle of the sun, 90° minus its elevation degrees
MM the spectral modifier —
aka_k the five coefficients of the polynomial —
kk the power of the air mass —
GusedG_{used} the irradiance the cell temperature and the module model use W/m²
GG the effective irradiance on the modules W/m²
ΔPsp\Delta P_{sp} the power the spectral correction removes at the timestep, the spectral row of the loss diagram; negative when MM exceeds 1 W
NN the number of modules —
Plin(g)P_{lin}(g) the array's nominal power per module at irradiance gg W
PnomP_{nom} the nameplate power of one module W
GrefG_{ref} the irradiance of standard test conditions, 1000 W/m² W/m²

References

  1. King, Boyson & Kratochvil 2004, Photovoltaic Array Performance Model, Sandia report SAND2004-3535
  2. De Soto, Klein & Beckman 2006, Improvement and validation of a model for photovoltaic array performance, Solar Energy 80(1) 78–88
  3. Kasten & Young 1989, Revised optical air mass tables and approximation formula, Applied Optics 28(22) 4735–4738
  4. NREL SAM Simulation Core (SSC) source code, release 2026.7.3, github.com/NatLabRockies/ssc: shared/lib_pv_spectral_correction.cpp, functions spectral_correction_king() and sandia_absolute_air_mass()

API

spectral.mode = on, spectral.model = king

Symbols follow the symbol registry.