Skip to content

Thermal model

This section contains details of the equations used to calculate the operating temperature of the PV module. There are two options for the thermal model:

  1. ‘Faiman’: which is commonly used in yield software,
  2. ‘Extended Faiman’: an extension to the Faiman model.

The ‘Extended Faiman’ model applies the Faiman model but permits several extensions:

  1. transient effects,
  2. a dependence of UvU_v on tilt and wind direction,
  3. radiation to the sky,
  4. heat flow into the ground, and
  5. free convection, where the latter three are separate components of UcU_c.

Both thermal models require the average plane-of-array irradiance on each module surface. This represents the total irradiance of incident light striking the panel which may act to heat it up, thus it includes all wavelengths of sunlight (i.e., up to 4000 nm). Currently there exist some limitations to the use of ray tracing to determine this. Solving the optics at longer wavelengths requires optical material data measured at these extremes and requires confirmation of the geometric optics assumption.1 Work is ongoing to resolve these limitations. In the meantime, SunSolve applies view factor models to determine an appropriate amount of total POA irradiance to use on the panels.

The view factor implementation follows the standard approach as described by [Marion2017] and [Mermoud2014]. This has been demonstrated to be consistent with 3D ray tracing under this idealized scenario:

  • infinitely long rows,
  • infinitely many rows,
  • isotropic insolation for diffuse light,
  • isotropic reflection from the ground with a constant albedo,
  • a flat ground,
  • no reflection from modules,
  • no reflection or shading from structures like posts and torque tubes, and
  • no transmission through modules or gaps between modules.

Therefore, the calculation of POA irradiance used in the temperature calculation is also based on these assumptions. The view factor model assumes albedo is wavelength‑independent.

The view factor model is solved separately for each module orientation and position in the y-direction. Each solve includes the following components:

  1. Sky to module front for direct light

  2. Sky to module rear for direct light

  3. Sky to module front for isotropic light

  4. Sky to module rear for isotropic light

  5. Sky to ground to module rear for direct light

  6. Sky to ground to module rear for isotropic light

The ground is solved by integrating across a minimum of 10 equally spaced points. Where a wavelength dependent albedo has been defined it is converted into a single averaged value (with no weighting applied to wavelength).

The Faiman model is a well-known approach to determine the operating temperature of PV modules under irradiance and subject to convective cooling. In the Faiman model, the heat flowing into the module Qin is given by

Qin=IPOA(αη)Q_{in} = I_{POA} \cdot (\alpha - \eta)

where IPOAI_{POA} is the total irradiance incident to the plane of the module (front and rear), α\alpha is the absorption coefficient and η\eta is the module efficiency.

SunSolve applies this equation in a way that accounts for different absorption levels of irradiance on the front and rear sides of the module

Qin=IPOA,frontαfront+IPOA,rearαrearPmoduleQ_{in} = I_{POA,front} \cdot \alpha_{front} + I_{POA,rear} \cdot \alpha_{rear} - P_{module}

where IPOA,frontI_{POA,front} and IPOA,rearI_{POA,rear} are determined via view factor solving. Module power is determined using ray tracing to calculate the optical absorption in the cells. The cell with the lowest JLJ_L (light-generated current) in each module is identified, and a single equivalent circuit, based on that JLJ_L value, is used to represent the module. This circuit is solved at the current temperature estimate, and the resulting electrical power is subtracted from the absorbed optical power to determine the net heat input. This coupling between optical, electrical, and thermal models ensures that temperature-dependent efficiency losses are accurately captured.

The module temperature is calculated by forming an energy balance equation in which the energy in equals the heat flowing from the module into the ambient QaQ_a,

Qin=Qout=Qa=(Uc+Uvw)(TmTa),Q_{in} = Q_{out} = Q_a = (U_c + U_v \cdot w) \cdot (T_m - T_a),

where ww is the wind speed, UvU_v is the forced-convection coefficient, UcU_c is a coefficient that represents all other forms of heat transfer, and TmT_m and TaT_a are the module and ambient temperatures.

The advantage of this model is that it is well known and only requires two inputs from the user to describe the heat flow out. However, its weakness is that it groups many forms of cooling into those two inputs. This limits the ability of the model to accurately determine the operating temperature at any specific time of day.

The Faiman thermal solver provides a direct analytical solution without internal iteration. Rearranging the energy balance equation yields:

Tm=Ta+QinUc+UvwT_m = T_a + \frac{Q_{in}}{U_c + U_v \cdot w}

where Qin=αfrontIPOA,front+αrearIPOA,rearPmoduleQ_{in} = \alpha_{front} \cdot I_{POA,front} + \alpha_{rear} \cdot I_{POA,rear} - P_{module}.

Since neither UcU_c nor UvU_v depend on module temperature, each call to the thermal solver is a straightforward calculation. Given the heat input and heat transfer coefficients, it directly returns the module temperature.

This model improves on the Faiman model in several ways. It defines multiple mechanisms for convective heat loss and relates them to the system and the prevailing conditions. These components may be applied or neglected as desired. Noting that the main Faiman inputs (UcU_c and UvU_v) are always required.2 It also provides an option for transient analysis in which the current module temperature is also dependent on its previous temperature. This is particularly important when using time steps of 15 minutes or less.

The model is based on the main Faiman equations described in the previous section. However, rather than forcing all heat to flow into the ambient, there are three possible heat sinks: the ambient, the sky and the ground; and hence

Qout=Qa+Qs+Qg.Q_{out} = Q_a + Q_s + Q_g.

In addition to these new heat sinks, it provides options to account for transient effects, wind direction and module tilt.

The table below summarises all possible inputs to the Extended Faiman model and gives a brief description of each. The equations that use these are provided in the following sub-sections.

ParameterUnitsValue rangeDescription
α0 - 1The absorption coefficient; defines the fraction of incident irradiance that is absorbed by the panel
ε0 - 1The emissivity; defines the effectiveness of the panel at emitting thermal radiation
UgU_gW∙m⁻²∙K⁻¹0 - 10Coefficient of both conductive and radiative losses into the ground.
Uc0U_{c0}W∙m⁻²∙K⁻¹0 - 10Coefficient of convective heat loss into the ambient with no dependence on tilt.
UcβU_{cβ}W∙m⁻²∙K⁻¹∙rad⁻¹0 - 10Coefficient of convective heat loss into the ambient with dependence on module tilt.
Uv0U_{v0}W∙s∙m⁻³∙K⁻¹0 - 5Coefficient of forced convective loss.
ava_v0 - 1Amplitude of the wind direction dependency
bvb_v0 - 1Frequency of the wind direction dependency
δ0δ_0rad0 - 2πPhase shift of the wind direction dependency
cmodc_{mod}J∙kg⁻¹∙K⁻¹0 – 2000Specific heat capacitance of the PV module.
mmodm_{mod}kg∙m⁻²0 - 20Ratio of the module mass to surface area.

The heat flowing into the ambient QaQ_a has a similar form to the Faiman model,

Qa=(Uc+Uvw)(TmTa),Q_a = (U_c + U_{v} \cdot w) \cdot (T_m - T_a),

except that UcU_c contains a dependence on tilt β, which arises because UcU_c includes free-convection,3

Uc=Uc0+UcββU_c = U_{c0} + U_{c\beta} \cdot |\beta|

and UvU_v depends on the direction of the wind

Uv=Uv0{1+avcos[bv(δδ0)]}U_v = U_{v0} \cdot \left\{ 1 + a_v \cos \left[ b_v(\delta - \delta_0) \right] \right\}

where the cosine term contains the dependence on wind direction, with ava_v being its amplitude, bvb_v its frequency, and δ0\delta_0 its phase shift; where the incident wind direction δ\delta is the difference between the wind direction ϕw\phi_w and the orientation of the module ϕm\phi_m,

δ=ϕwϕm\delta = \phi_w - \phi_m

and where β\beta, δ\delta, δ0\delta_0, ϕw\phi_w and ϕm\phi_m are in radians.

The heat flowing into the sky QsQ_s is radiative and governed by the Stefan–Boltzmann equation,

Qs=vsσε(Tm4Ts4),Q_s = v_s \cdot \sigma \cdot \varepsilon \cdot (T_m^4 - T_s^4),

where vsv_s is the view factor of the sky seen by the module, σ is the Stefan–Boltzmann constant, and ε is the emissivity of the module.

The view factor assumes an infinite field and is calculated as described in the POA irradiance for thermal model section.

The sky temperature is calculated based on the equation from Swinbank [Swinbank1963], which depends solely on TaT_a,

Ts=0.0552Ta1.5,T_s = 0.0552 \cdot T_a^{1.5},

The heat flowing into the ground QgQ_g is simply

Qg=Ug(TmTg),Q_g = U_g \cdot (T_m - T_g),

which combines conductive and radiative losses into a single free variable UgU_g. We also assume a constant TgT_g (i.e., the ground is at one temperature).

Transient effects are accounted for by recognizing that the module’s thermal mass causes a time lag in temperature response. The rate of temperature change is proportional to the net heat flow:

dTmdt=1mc(QinQout)\frac{dT_m}{dt} = \frac{1}{m \cdot c} (Q_{in} - Q_{out})

where cc is the heat capacitance of the module (J⋅kg⁻¹⋅K⁻¹), mm is the mass per unit area (kg⋅m⁻²), and their product mcm \cdot c represents the thermal mass per unit area.4 Thus, it does not assume steady-state conditions, which means that the temperature of the module takes time to heat and cool when the irradiance increases or decreases.

During yield solving the previous value of module temperature is used as a reference point to calculate the new temperature via the equation above. To facilitate parallel solving of this loop the full year is broken into monthly blocks that are solved according to their time series. This creates a small error at the start of each month where the module temperature is assumed equal to the ambient temperature rather than based on the solving of the previous hour.

Note that if the transient model is applied then better accuracy is achieved by solving the night-time temperatures. Typically during the night the module temperature is below the ambient due to the radiative loss to the cold night sky.

Unlike the Faiman model, the Extended Faiman thermal solver requires internal iteration. For steady-state conditions, the temperature equation is:

Tm=UaTa+UsTs+UgTg+QinUa+Us+UgT_m = \frac{U_a \cdot T_a + U_s \cdot T_s + U_g \cdot T_g + Q_{in}}{U_a + U_s + U_g}

where the heat transfer coefficients (UaU_a, UsU_s, UgU_g) and the absorbed heat (QinQ_{in}) are calculated from the equations in the preceding sections.

The thermal solver performs an iteration loop (typically 3-5 iterations) because the radiative heat transfer coefficient to the sky is temperature-dependent:

Us=εσvs(Tm2+Ts2)(Tm+Ts)U_s = \varepsilon \cdot \sigma \cdot v_s \cdot (T_m^2 + T_s^2) \cdot (T_m + T_s)

This creates a circular dependency where TmT_m is needed to calculate UsU_s, but UsU_s is needed to solve for TmT_m. The solver iterates with successive temperature estimates until convergence to within 0.1 K.

This section describes how optical, electrical, and thermal models are coupled at each timestep. The core workflow applies to both Faiman and Extended Faiman models, with additional steps specific to Extended Faiman noted below.

Common workflow (both models):

  1. Calculate POA irradiance (IPOA,frontI_{POA,front}, IPOA,rearI_{POA,rear}) using view factors
  2. Solve optical model via ray tracing to determine absorption in each cell
  3. Identify limiting cell (lowest JLJ_L) and solve equivalent circuit at initial temperature to get PmoduleP_{module}
  4. First thermal solve:
    • Calculate absorbed heat: Qin=αfrontIPOA,front+αrearIPOA,rearPmoduleQ_{in} = \alpha_{front} \cdot I_{POA,front} + \alpha_{rear} \cdot I_{POA,rear} - P_{module}
    • Apply thermal model to get temperature estimate
  5. Update all equivalent circuits to the new temperature
  6. Recalculate PmoduleP_{module} at the new temperature
  7. Second thermal solve with updated PmoduleP_{module} to get final temperature

Extended Faiman additions:

  • Before first thermal solve: Calculate sky temperature (TsT_s) using Swinbank model and set ground temperature (Tg=TaT_g = T_a by default)
  • During each thermal solve: Inner iteration loop (3-5 iterations) calculates temperature-dependent Us(Tm)U_s(T_m) until convergence within 0.1 K
  • Temperature equation includes sky and ground heat sinks: Tm=UaTa+UsTs+UgTg+QinUa+Us+UgT_m = \frac{U_a \cdot T_a + U_s \cdot T_s + U_g \cdot T_g + Q_{in}}{U_a + U_s + U_g}
  • After final thermal solve: For transient mode, incorporate thermal mass using previous timestep’s temperature

Faiman simplifications:

  • No sky or ground temperature calculations needed
  • Each thermal solve is a direct calculation (no inner iteration): Tm=Ta+QinUc+UvwT_m = T_a + \frac{Q_{in}}{U_c + U_v \cdot w}

For parallel solving efficiency, the annual simulation is divided into monthly blocks.

The table below provides a summary of the models used in SunSolve’s thermal calculations.

ParameterModelNotesReference
Module operating temperatureFaimanThe de facto standard in the PV industry[Faiman2008]
PV Lighthouse IEEE 2022An extension to the Faiman model published by PV Lighthouse.[McIntosh2022]
Sky temperatureSwinbank[Swinbank1963]
Ground temperature-Assumed to equal the ambient temperature-
Plane-of-array irradianceView factorAn alternative approach to the application of ray tracing.[Marion2017] [Mermoud2014]
  1. Note that at 2,000 nm the wavelength of light is already twice the size of a standard solar cell texture feature at which point the assumption that it can be solved simply with geometric optics may require further validation.

  2. Essentially the inputs to the Faiman model attempt to capture all the individual parts of this extended model into a simple pair of variables. The values of UcU_c and UvU_v should be re-evaluated as each Extended Faiman component is added. The exception to this is the transient analysis which rather affects the reference temperature.

  3. In this approach, UcU_c represents free-convection and conduction into the ground.

  4. Calculated for a typical 144-cell bifacial module (LONGI LR5) to be cmodc_{mod} = 833 J⋅kg-1⋅K-1 and mmodm_{mod} = 13 kg/m2.