> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plantpredict.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Perez Model

export const ViewFactor = () => <Tooltip tip="Fraction of radiation leaving one surface that reaches another; determined by geometry.">
    view factor
  </Tooltip>;

export const HorizonBrightening = () => <Tooltip tip="Enhanced diffuse irradiance near the horizon due to atmospheric scattering at low angles.">
    horizon brightening
  </Tooltip>;

export const Circumsolar = () => <Tooltip tip="Diffuse irradiance concentrated in a bright ring around the solar disk.">
    circumsolar
  </Tooltip>;

export const Isotropic = () => <Tooltip tip="Uniform in all directions; describes diffuse irradiance distributed evenly across the sky dome.">
    isotropic
  </Tooltip>;

export const Albedo = () => <Tooltip tip="Ground reflectance (0–1); fraction of incident light reflected by the surface.">
    albedo
  </Tooltip>;

export const GHI = () => <Tooltip tip="Global Horizontal Irradiance: total solar radiation on a horizontal surface (direct + diffuse).">
    GHI
  </Tooltip>;

export const DNI = () => <Tooltip tip="Direct Normal Irradiance: solar radiation received perpendicular to the sun's rays (direct beam only).">
    DNI
  </Tooltip>;

export const DHI = () => <Tooltip tip="Diffuse Horizontal Irradiance: solar radiation from the sky dome (excluding direct beam) on a horizontal surface.">
    DHI
  </Tooltip>;

export const AirMass = () => <Tooltip tip="Ratio of atmospheric path length to path length at zenith; equals 1 when sun is overhead.">
    air mass
  </Tooltip>;

## Summary

The Perez transposition model estimates sky diffuse irradiance on a tilted surface by decomposing <DHI /> into three components: <Isotropic /> background, <Circumsolar /> brightening near the solar disk, and <HorizonBrightening /> near the horizon band. It uses empirical coefficients derived from extensive sky radiance measurements. Sky clearness and brightness indices determine which coefficient set is applied. PlantPredict supports multiple Perez coefficient sets derived from different locations and time periods.

## Inputs

| Name                                          | Symbol         | Units   | Description                                           |
| --------------------------------------------- | -------------- | ------- | ----------------------------------------------------- |
| **Global Horizontal Irradiance**              | $GHI$          | W/m²    | Total irradiance on horizontal surface                |
| **Direct Normal Irradiance**                  | $DNI$          | W/m²    | Direct beam irradiance perpendicular to sun           |
| **Diffuse Horizontal Irradiance**             | $DHI$          | W/m²    | Diffuse irradiance on horizontal surface              |
| **Extraterrestrial Direct Normal Irradiance** | $DNI_{extra}$  | W/m²    | Direct normal irradiance at top of atmosphere         |
| **Solar Zenith Angle**                        | $\theta_z$     | degrees | Angle between sun and local vertical                  |
| **Angle of Incidence**                        | $\theta_{AOI}$ | degrees | Angle between sun and surface normal                  |
| **Surface Tilt Angle**                        | $\beta_m$      | degrees | Tilt angle of surface from horizontal                 |
| **Albedo**                                    | $\rho$         | —       | Ground reflectance (0–1)                              |
| **Air Mass**                                  | $AM$           | —       | Air mass (see [Air Mass](../solar-geometry/air_mass)) |

***

## Outputs

| Name                   | Symbol       | Units | Description                                   |
| ---------------------- | ------------ | ----- | --------------------------------------------- |
| **POA Beam**           | $G_{beam}$   | W/m²  | Direct beam irradiance on tilted surface      |
| **POA Sky Diffuse**    | $G_{sky}$    | W/m²  | Sky diffuse irradiance on tilted surface      |
| **POA Ground Diffuse** | $G_{ground}$ | W/m²  | Ground-reflected irradiance on tilted surface |

***

## Detailed Description

### Sky Clearness and Brightness Indices

The Perez model uses two atmospheric parameters to characterize sky conditions:

**Sky Clearness Index ($\varepsilon$):** Represents the clarity of the atmosphere, accounting for the ratio of total to diffuse horizontal irradiance and solar zenith angle:

$$
\varepsilon = \frac{\frac{DHI + DNI}{DHI} + \kappa \theta_z^3}{1 + \kappa \theta_z^3}
$$

where $\kappa = 5.535 \times 10^{-6}$ is an empirical constant that corrects the clearness index for zenith angle dependence.

**Sky Brightness Index ($\Delta$):** Represents the amount of diffuse irradiance relative to extraterrestrial irradiance, normalized by <AirMass />:

$$
\Delta = \frac{DHI \cdot AM}{DNI_{extra}}
$$

where $AM$ is the (non pressure-corrected) air mass calculated using the configured air mass model.

### Perez Coefficient Lookup

The clearness index $\varepsilon$ is binned into 8 categories corresponding to sky conditions from overcast to clear. Each bin has associated empirical coefficients used to compute brightness coefficients $F_1$ and $F_2$:

| Bin | $\varepsilon$ Range | Sky Condition |
| --- | ------------------- | ------------- |
| 1   | \[1.000, 1.065)     | Overcast      |
| 2   | \[1.065, 1.230)     | Overcast      |
| 3   | \[1.230, 1.500)     | Partly Cloudy |
| 4   | \[1.500, 1.950)     | Partly Cloudy |
| 5   | \[1.950, 2.800)     | Partly Cloudy |
| 6   | \[2.800, 4.500)     | Clear         |
| 7   | \[4.500, 6.200)     | Clear         |
| 8   | \[6.200, ∞)         | Clear         |

For each bin, coefficients $f_{11}, f_{12}, f_{13}, f_{21}, f_{22}, f_{23}$—from which the Brightness Coefficients $F_1$ and $F_2$ are computed—are defined. PlantPredict supports multiple coefficient sets, each tailored to specific climatic conditions and derived from empirical measurements:

**Composite Coefficient Sets:**

* **PlantPredict:** Default coefficient set, matches the All Sites Composite 1990 set to the third digit
* **All Sites Composite 1990:** Comprehensive set derived from data across multiple locations using 1990 methodology.
* **All Sites Composite 1988:** Earlier composite set based on 1988 methodology from various sites.
* **Sandia Composite 1988:** Developed using data from Sandia National Laboratories.
* **USA Composite 1988:** Based on data collected from various U.S. locations.

**Location-Specific Coefficient Sets (1988):**

* **France 1988:** Derived from data collected in France.
* **Phoenix 1988:** Derived from data collected in Phoenix, Arizona.
* **El Monte 1988:** Derived from data collected in El Monte, California.
* **Osage 1988:** Derived from data collected in Osage, Iowa.
* **Albuquerque 1988:** Derived from data collected in Albuquerque, New Mexico.
* **Cape Canaveral 1988:** Derived from data collected in Cape Canaveral, Florida.
* **Albany 1988:** Derived from data collected in Albany, New York.

The selection of coefficient set can influence model accuracy depending on site-specific climatic conditions. Composite sets provide general applicability, while location-specific sets may offer improved accuracy for sites with similar climate characteristics. The complete coefficient values for all sets can be found in the [pvlib documentation](https://pvlib-python.readthedocs.io/en/latest/_modules/pvlib/irradiance.html).

### Brightness Coefficients

The brightness coefficients $F_1$ and $F_2$ are computed using the binned coefficients:

$$
F_1 = f_{11} + f_{12} \Delta + f_{13} \cdot \frac{\pi}{180} \theta_z
$$

$$
F_2 = f_{21} + f_{22} \Delta + f_{23} \cdot \frac{\pi}{180} \theta_z
$$

A quality control constraint is applied: $F_1 \geq 0$. Physically, $F_1$ quantifies circumsolar brightening (which cannot be negative), while $F_2$ quantifies horizon brightening or darkening (can be negative under clear sky conditions).

### Diffuse Irradiance Components

DHI is then decomposed into three components (isotropic sky, circumsolar, and horizon) using $F_1$ and $F_2$.

**Isotropic Component:** Uniform diffuse irradiance from the sky dome, reduced by the circumsolar fraction $F_1$:

$$
G_{isotropic} = DHI \cdot (1 - F_1) \cdot \frac{1 + \cos(\beta_m)}{2}
$$

The term $(1 + \cos(\beta_m))/2$ is the <ViewFactor /> from the tilted surface to the sky dome.

**Circumsolar Component:** Directional diffuse irradiance concentrated near the solar disk:

$$
G_{circumsolar} = DHI \cdot F_1 \cdot \frac{\cos(\theta_{AOI})}{\cos(\theta_z)}
$$

The ratio $\cos(\theta_{AOI})/\cos(\theta_z)$ is the projection ratio that converts horizontal circumsolar irradiance to the tilted plane, identical to the Hay-Davies model. When the sun is behind the module ($\cos(\theta_{AOI}) < 0$), the circumsolar component is set to zero. To avoid numerical instabilities near the horizon, a minimum threshold is applied: $\cos(\theta_z) \geq 0.0872$ (corresponding to $\theta_z \leq 85°$).

**Horizon Component:** Diffuse irradiance from the horizon band:

$$
G_{horizon} = DHI \cdot F_2 \cdot \sin(\beta_m)
$$

The horizon component can be negative when $F_2 < 0$, which can occur under clear sky conditions when the horizon band is darker than the average sky dome (horizon darkening effect).

### Circumsolar Allocation

The circumsolar component can be allocated to beam or diffuse POA irradiance (default: Diffuse), similar to the [Hay-Davies model](hay_davies):

**Direct Allocation:**

$$
G_{sky} = G_{isotropic} + G_{horizon}
$$

$$
G_{beam} = DNI \cdot \cos(\theta_{AOI}) + G_{circumsolar}
$$

**Diffuse Allocation:**

$$
G_{sky} = G_{isotropic} + G_{circumsolar} + G_{horizon}
$$

$$
G_{beam} = DNI \cdot \cos(\theta_{AOI})
$$

Circumsolar irradiance originates from near the solar disk and is blocked by obstructions the same way direct beam is. Allocating it to beam ensures that row-to-row shading calculations apply appropriate losses to circumsolar. Allocating to diffuse treats circumsolar as unaffected by direct shading, which may be appropriate for unshaded systems or when shading is negligible.

### Ground-Reflected Component

The ground-reflected component accounts for irradiance reflected from the ground onto the tilted surface:

$$
G_{ground} = \rho \cdot GHI \cdot \frac{1 - \cos(\beta_m)}{2}
$$

The term $(1 - \cos(\beta_m))/2$ is the view factor from the tilted surface to the ground.

### Quality Control

Physical constraints are enforced by clamping values:

* If $F_1 < 0$ → $F_1 = 0$
* If $G_{isotropic} < 0$ → $G_{isotropic} = 0$
* If $G_{circumsolar} < 0$ → $G_{circumsolar} = 0$
* If $G_{sky} > 800$ W/m² → $G_{sky} = 800$ W/m²

The horizon component $G_{horizon}$ is not clamped and may be negative.

***

## References

* Perez, R., Seals, R., Ineichen, P., Stewart, R., & Menicucci, D. (1987). *A new simplified version of the Perez diffuse irradiance model for tilted surfaces.* Solar Energy, 39(3), 221–231. DOI: [10.1016/S0038-092X(87)80031-2](https://doi.org/10.1016/S0038-092X\(87\)80031-2)
* Perez, R., Ineichen, P., Seals, R., Michalsky, J., & Stewart, R. (1990). *Modeling daylight availability and irradiance components from direct and global irradiance.* Solar Energy, 44(5), 271–289. DOI: [10.1016/0038-092X(90)90055-H](https://doi.org/10.1016/0038-092X\(90\)90055-H)
* pvlib python. *Irradiance module source code.* [https://pvlib-python.readthedocs.io/en/latest/\_modules/pvlib/irradiance.html](https://pvlib-python.readthedocs.io/en/latest/_modules/pvlib/irradiance.html)
