Home Knowledge Base quasi-Fermi levels

Quasi-Fermi Levels and Non-Equilibrium Statistical Thermodynamics in Semiconductors: Electrochemical Potential, Carrier Transport, and Device Physics


Executive Summary

Under non-equilibrium conditions—whether driven by optical illumination, electrical injection, or thermal gradients—a semiconductor cannot be described by a single Fermi level. Instead, separate quasi-Fermi levels (or electrochemical potentials) emerge for electrons and holes: $E_{Fn}$ and $E_{Fp}$, respectively. These quasi-Fermi levels are central to understanding carrier dynamics in photovoltaic cells, light-emitting diodes (LEDs), laser diodes, transistors, and thermal-to-electric converters. This article provides rigorous derivations from non-equilibrium statistical mechanics, establishes the connection to applied voltage and photocurrent in devices, derives expressions for recombination and injection rates, and demonstrates practical applications ranging from bandgap engineering to efficiency limits of photonic devices.


Table of Contents

1. Equilibrium vs. Non-Equilibrium: The Need for Quasi-Fermi Levels 2. Thermodynamic Foundations: Chemical Potentials & Electrochemical Potentials 3. Formal Definition of Quasi-Fermi Levels 4. Relationship Between Quasi-Fermi Levels and Applied Voltage 5. Carrier Concentrations Under Non-Equilibrium: Modified Fermi–Dirac Distribution 6. Recombination Rates and Quasi-Fermi Level Splitting 7. Optical Generation: Photovoltages and Photocurrents 8. Non-Equilibrium Thermodynamics: Free Energy and Driving Forces 9. Exciton Formation and Quasi-Fermi Level Engineering 10. Device Applications: Lasers, LEDs, Solar Cells, and Transistors 11. Numerical Calculations and Simulations 12. Experimental Measurement Techniques 13. References & Further Reading


1. Equilibrium vs. Non-Equilibrium: The Need for Quasi-Fermi Levels

1.1 Equilibrium Condition: Single Fermi Level

At thermal equilibrium with no applied fields or optical excitation, the entire system reaches a uniform temperature $T$ and a single electrochemical potential (Fermi level) $E_F$. Both electrons in the conduction band and holes in the valence band are described by the same Fermi–Dirac distribution:

$$f_n(E) = f_p(E) = f_{\text{FD}}(E) = \frac{1}{1 + e^{(E-E_F)/k_B T}}$$

The populations are:

$$n_0 = \int_0^{\infty} N_c(E) f_{\text{FD}}(E) dE, \quad p_0 = \int_0^{\infty} N_v(E) [1 - f_{\text{FD}}(E)] dE$$

with $n_0 p_0 = n_i^2$ (law of mass action).

1.2 Non-Equilibrium Conditions: When $n \neq n_0$ and $p \neq p_0$

When the system is driven away from equilibrium by:

...the electron and hole populations are no longer balanced. Electrons and holes can reach local equilibrium (thermal distribution at the same temperature) while maintaining $n \neq n_0$ and $p \neq p_0$.

In this regime, separate Fermi levels $E_{Fn}$ and $E_{Fp}$ must be defined for electrons and holes, respectively. These are called quasi-Fermi levels or quasi-chemical potentials.


2. Thermodynamic Foundations: Chemical Potentials & Electrochemical Potentials

2.1 Chemical Potential in Statistical Mechanics

For a system at temperature $T$ with fixed number of particles $N$, the chemical potential $\mu$ is defined as:

$$\mu = \left( \frac{\partial G}{\partial N} \right)_{T, P} = \left( \frac{\partial F}{\partial N} \right)_{T, V}$$

where $G$ is Gibbs free energy and $F$ is Helmholtz free energy.

For an ideal quantum gas with Fermi–Dirac statistics, the chemical potential equals the Fermi energy $E_F$ at $T = 0$. At finite temperature, $\mu(T)$ shifts slightly from $E_F(0)$.

2.2 Electrochemical Potential

In the presence of an electric potential $\Phi(\mathbf{r})$, the total energy of an electron at position $\mathbf{r}$ includes the electrostatic term:

$$\mathcal{E}_{\text{electron}}(\mathbf{r}) = E_n(\mathbf{r}) - e \Phi(\mathbf{r})$$

where $E_n$ is the band edge energy (Conduction band edge $E_c$ for electrons) and $-e\Phi$ is the electrostatic potential energy for an electron (charge $-e$).

The electrochemical potential for electrons is:

$$\tilde{\mu}_n(\mathbf{r}) = \mu_n + E_c(\mathbf{r}) - e \Phi(\mathbf{r})$$

In equilibrium, $\tilde{\mu}_n$ is spatially uniform throughout the sample (otherwise charge would flow).

For holes (charge $+e$), the electrochemical potential is:

$$\tilde{\mu}_p(\mathbf{r}) = \mu_p + E_v(\mathbf{r}) + e \Phi(\mathbf{r})$$

2.3 The Fermi Level in Semiconductor Heterojunctions

At a heterojunction interface where two semiconductors meet (e.g., AlGaAs/GaAs), the conduction and valence band edges shift due to band offsets. The electrochemical potential must be continuous across the interface (no charge accumulation at interfaces at equilibrium). This is the physical basis for band bending and the built-in potential.


3. Formal Definition of Quasi-Fermi Levels

3.1 Quasi-Fermi Level for Electrons

When a semiconductor is under illumination or forward bias, electrons are not in true equilibrium. However, if intraband thermalization is fast compared to interband recombination (typical in most semiconductors), electrons form a quasi-equilibrium population characterized by a single quasi-Fermi level $E_{Fn}$.

The occupation of electronic states near a given energy $E$ is described by a local Fermi–Dirac distribution:

$$f_n(E, \mathbf{r}) = \frac{1}{1 + e^{(E - E_{Fn}(\mathbf{r}))/k_B T}}$$

where $E_{Fn}(\mathbf{r})$ is the quasi-Fermi level for electrons and may vary spatially.

The electron concentration at position $\mathbf{r}$ is then:

$$n(\mathbf{r}) = \int_0^{\infty} N_c(E) f_n(E) dE = N_c(T) \exp\left( -\frac{E_c(\mathbf{r}) - E_{Fn}(\mathbf{r})}{k_B T} \right)$$

3.2 Quasi-Fermi Level for Holes

Similarly, holes are described by a quasi-Fermi level $E_{Fp}(\mathbf{r})$, with hole concentration:

$$p(\mathbf{r}) = \int_0^{\infty} N_v(E) [1 - f_p(E)] dE = N_v(T) \exp\left( -\frac{E_{Fp}(\mathbf{r}) - E_v(\mathbf{r})}{k_B T} \right)$$

3.3 Splitting of Quasi-Fermi Levels

The quasi-Fermi level splitting (or imref, "inverse of the metal-referenced Fermi level") is:

$$\Delta E_F = E_{Fn} - E_{Fp}$$

At equilibrium: $\Delta E_F = 0$ (single Fermi level everywhere).

Under excitation or forward bias: $\Delta E_F > 0$ (electrons and holes are separated in energy space).

Physical meaning: $\Delta E_F$ is the maximum electrical work that can be extracted from the non-equilibrium carrier population.


4. Relationship Between Quasi-Fermi Levels and Applied Voltage

4.1 Forward-Biased Diode: The PN Junction

For a forward-biased p-n junction with applied voltage $V_a$, the electrochemical potentials on either side of the junction must differ by the applied voltage:

At the p-side interface: $\tilde{\mu}_p^- = \mu_p + E_v^- + e\Phi^-$

At the n-side interface: $\tilde{\mu}_n^+ = \mu_n + E_c^+ - e\Phi^+$

At equilibrium (zero bias), $\tilde{\mu}^- = \tilde{\mu}^+$ everywhere.

Under forward bias $V_a > 0$, the electrochemical potential of the metal contact on the p-side is raised by $-e V_a$ (conventional sign), creating a gradient.

The result is that the electrochemical potentials of electrons and holes are separated by:

$$E_{Fn} - E_{Fp} = q V_a$$

where $q = e$ is the elementary charge and $V_a$ is the applied voltage.

Important: This is not the same as the bandgap! The quasi-Fermi level splitting equals the applied voltage at the contacts.

4.2 Spatial Distribution of Quasi-Fermi Levels

Within the device, the quasi-Fermi levels vary spatially due to: 1. Drift of carriers in the electric field (carried by the built-in potential gradient) 2. Diffusion of carriers down concentration gradients 3. Recombination removing excess carriers

Under steady-state conditions, the continuity equations for electrons and holes must be satisfied:

$$\frac{\partial n}{\partial t} + \nabla \cdot \mathbf{J}_n = G - R$$

where $G$ is generation rate and $R$ is recombination rate.

The current density is given by the drift-diffusion equation:

$$\mathbf{J}_n = -e \mu_n n \mathbf{E} + e D_n \nabla n$$

where $\mu_n$ is the electron mobility and $D_n$ is the diffusion coefficient (related by Einstein relation: $D_n = \frac{k_B T}{e} \mu_n$).

In terms of the quasi-Fermi level, this becomes:

$$\mathbf{J}_n = e \mu_n N_c e^{-E_c/k_B T} \nabla E_{Fn}$$

Similarly for holes:

$$\mathbf{J}_p = -e \mu_p N_v e^{-E_v/k_B T} \nabla E_{Fp}$$

5. Carrier Concentrations Under Non-Equilibrium: Modified Fermi–Dirac Distribution

5.1 Generalized Fermi–Dirac Distributions

Under non-equilibrium with quasi-Fermi levels $E_{Fn}$ and $E_{Fp}$:

$$n(E) = N_c(T) \exp\left( -\frac{E_c - E_{Fn}}{k_B T} \right) = N_c e^{-(E_c - E_{Fn})/k_B T}$$
$$p(E) = N_v(T) \exp\left( -\frac{E_{Fp} - E_v}{k_B T} \right) = N_v e^{-(E_{Fp} - E_v)/k_B T}$$

5.2 Modified Law of Mass Action

The product of electron and hole concentrations under non-equilibrium is:

$$np = N_c N_v e^{-(E_c - E_{Fn})/k_B T} \cdot e^{-(E_{Fp} - E_v)/k_B T}$$
$$= N_c N_v e^{-(E_c - E_v + E_{Fn} - E_{Fp})/k_B T}$$
$$= n_i^2 e^{(E_{Fn} - E_{Fp})/k_B T}$$

where $n_i^2 = N_c N_v e^{-E_g/k_B T}$.

Rearranging:

$$\boxed{np = n_i^2 e^{\Delta E_F/k_B T}}$$

where $\Delta E_F = E_{Fn} - E_{Fp}$ is the quasi-Fermi level splitting.

Physical interpretation:

5.3 Excess Carrier Generation

Under photonic excitation with photon flux $\Phi$ and collection efficiency $\eta_c$:

$$G = \eta_c \Phi(x)$$

where $\Phi(x)$ decays exponentially: $\Phi(x) = \Phi_0 e^{-\alpha x}$ with absorption coefficient $\alpha$.

The excess carriers generated per unit time per unit volume must be balanced by recombination at steady state:

$$G - R = 0 \quad \Rightarrow \quad R = G$$

6. Recombination Rates and Quasi-Fermi Level Splitting

6.1 Shockley–Read–Hall (SRH) Recombination

SRH recombination involves non-radiative recombination through deep-level traps. The recombination rate is:

$$R_{\text{SRH}} = \frac{np - n_i^2}{\tau_n(p + p_1) + \tau_p(n + n_1)}$$

where $\tau_n$ and $\tau_p$ are the electron and hole lifetimes, and $n_1, p_1$ are related to trap density and position.

Using the modified mass action law $np = n_i^2 e^{\Delta E_F / k_B T}$:

$$R_{\text{SRH}} = n_i \frac{e^{\Delta E_F / 2k_B T} - 1}{\tau_n(p + p_1) + \tau_p(n + n_1)}$$

In the limit of high injection ($n, p \gg n_i$):

$$R_{\text{SRH}} \approx n_i \frac{e^{\Delta E_F / 2k_B T}}{\tau_{\text{eff}}(n + p)}$$

6.2 Radiative Recombination

Direct (radiative) recombination emits a photon:

$$R_{\text{rad}} = B (np - n_i^2)$$

where $B$ is the radiative recombination coefficient.

Using the modified mass action law:

$$R_{\text{rad}} = B n_i^2 (e^{\Delta E_F / k_B T} - 1)$$

At room temperature ($k_B T \approx 26$ meV):

6.3 Connection to Open-Circuit Voltage

For a photovoltaic cell under steady-state illumination:

$$G = R_{\text{total}}$$

At open circuit ($I = 0$), all photogenerated current is lost to recombination:

$$J_{\text{photo}} = J_{\text{recomb}} = \frac{qR_{\text{rad}}}{1}$$

This leads to the open-circuit voltage:

$$V_{oc} = \frac{k_B T}{q} \ln\left(\frac{J_L}{J_0} + 1\right) \approx \frac{k_B T}{q} \ln\left(\frac{J_L}{J_0}\right)$$

where $J_L$ is the light-generated current and $J_0$ is the dark saturation current (set by SRH recombination).

Equivalently, at open circuit:

$$\boxed{\Delta E_F = q V_{oc} = k_B T \ln\left(\frac{J_L}{J_0}\right)}$$

7. Optical Generation: Photovoltages and Photocurrents

7.1 Photon Absorption and Excess Carrier Generation

When light of wavelength $\lambda < \lambda_g$ (where $E_g = hc/\lambda_g$) is incident on the semiconductor, photons are absorbed and create electron–hole pairs:

$$\text{photon} + \text{valence e}^- \rightarrow \text{conduction e}^- + \text{hole}$$

The generation rate in a thin film or at depth $x$ is:

$$G(x) = G_0 e^{-\alpha x}$$

where $\alpha$ is the absorption coefficient and $G_0 = \frac{\Phi_0}{hc/\lambda}$ is the generation rate at the surface.

7.2 Photogenerated Current and Quasi-Fermi Level Splitting

In a solar cell, the photocurrent density is:

$$J_L = \int_0^W G(x) dx$$

where $W$ is the depletion width.

The photocurrent drives the quasi-Fermi levels apart. At a given quasi-Fermi level splitting $\Delta E_F$, the recombination current is:

$$J_{\text{rec}} = J_0 e^{\Delta E_F / k_B T}$$

The net current is:

$$J = J_L - J_0 e^{\Delta E_F / k_B T}$$

At open circuit ($J = 0$):

$$\Delta E_F = \frac{k_B T}{q} \ln\left(1 + \frac{J_L}{J_0}\right)$$

7.3 The Shockley–Queisser Limit

The Shockley–Queisser (S–Q) limit is the theoretical maximum efficiency of a single-junction solar cell, determined by thermodynamic arguments related to the quasi-Fermi level splitting under illumination.

The S–Q limit depends on: 1. Bandgap ($E_g$): Determines which photons are absorbed. 2. Carrier temperature ($T_e \approx T_h$): Usually assumed equal to lattice temperature. 3. Quasi-Fermi level splitting at open circuit ($\Delta E_F^{\text{oc}}$).

For a given bandgap at 1-sun illumination (1000 W/m²), the maximum efficiency is:

$$\eta_{\text{max}}(E_g) = \frac{FF \cdot V_{oc} \cdot J_{sc}}{P_{in}}$$

where $V_{oc} \sim 0.7-0.9$ V, independent of bandgap (surprisingly), but $J_{sc}$ decreases with increasing $E_g$. The S–Q limit is maximized at $E_g \approx 1.3-1.4$ eV, yielding $\eta \approx 33\%$.


8. Non-Equilibrium Thermodynamics: Free Energy and Driving Forces

8.1 Non-Equilibrium Free Energy

Under non-equilibrium with populations $n \neq n_0$ and $p \neq p_0$, the free energy of excess carriers can be written as:

$$\Delta F = (E_{Fn} - E_{Fp}) (n - n_0) + \text{higher-order terms}$$

The quasi-Fermi level splitting $\Delta E_F = E_{Fn} - E_{Fp}$ represents the thermodynamic driving force for current flow and recombination.

8.2 Electrochemical Potential Gradients as Driving Force

The drift of electrons down a concentration gradient is driven by the gradient of the electrochemical potential:

$$\mathbf{F}_n = -\nabla \tilde{\mu}_n = -\nabla(E_c - e\Phi) = e\mathbf{E} + k_B T \nabla \ln n$$

The second term, $-k_B T \nabla \ln n$, is the diffusion force arising from the entropy change.

Using $n = N_c \exp(-(E_c - E_{Fn})/k_B T)$:

$$\mathbf{F}_n = e\mathbf{E} - \nabla E_{Fn}$$

For steady-state current to flow, $\mathbf{F}_n$ must be non-zero, requiring $E_{Fn}$ to have a spatial gradient.

8.3 Thermodynamic Efficiency: The Carnot Limit and Beyond

The fundamental efficiency limit of any energy conversion device is set by the Carnot efficiency:

$$\eta_{\text{Carnot}} = 1 - \frac{T_{\text{cold}}}{T_{\text{hot}}}$$

For solar cells, carriers are generated at the photon energy (effective temperature $T_{\text{photon}} \sim 5800$ K) and cooled to lattice temperature $T = 300$ K before extraction. The theoretical limit is lower than Carnot because of entropy production.


9. Exciton Formation and Quasi-Fermi Level Engineering

9.1 Excitons and Quasi-Fermi Level Splitting

When $\Delta E_F > E_{\text{bind}}$ (binding energy of excitons, typically 10–100 meV), the quasi-Fermi level splitting exceeds the exciton binding energy. Excitons are ionized into free electrons and holes.

Conversely, for $\Delta E_F < E_{\text{bind}}$, a significant fraction of photogenerated carriers form bound excitons, reducing the photocurrent.

9.2 Optical Gain and Lasing Threshold

For stimulated emission (laser operation), optical gain is achieved when:

$$g(\nu) = B_{21} (N_2 - N_1) > \alpha_{\text{abs}}$$

where $N_2$ and $N_1$ are populations of upper and lower laser levels, and $\alpha_{\text{abs}}$ is the absorption coefficient.

In terms of quasi-Fermi levels, population inversion (gain $> 0$) occurs when the quasi-Fermi level splitting exceeds the laser transition energy:

$$\Delta E_F > E_{\text{laser}} = E_2 - E_1$$

9.3 Bandgap Engineering: Type I, Type II, and Broken-Gap Alignments

In heterostructures (e.g., AlGaAs/GaAs), the band alignment at the interface is engineered to confine carriers or facilitate carrier flow.

The quasi-Fermi levels must bend at interfaces to maintain continuity of electrochemical potential, creating band bending.


10. Device Applications: Lasers, LEDs, Solar Cells, and Transistors

10.1 Light-Emitting Diodes (LEDs)

In a forward-biased LED junction:

The external quantum efficiency (photons out / electrons in) is limited by:

10.2 Laser Diodes

Laser diodes operate under forward bias with very high injection current. The quasi-Fermi level splitting reaches $\Delta E_F \sim E_g + E_{\text{bind}}$, creating population inversion.

Threshold current density is:

$$J_{\text{th}} = J_0 e^{\Delta E_{F,\text{th}} / k_B T}$$

where $\Delta E_{F,\text{th}} \sim E_g$ is the quasi-Fermi level splitting needed for gain $>$ loss.

10.3 Solar Cells

In a solar cell:

Maximum power point occurs when $J \times V$ is maximized, usually at $V \sim 0.7 V_{oc}$ and $J \sim 0.85 J_{sc}$.

10.4 Transistors

In a field-effect transistor (FET):

In a bipolar junction transistor (BJT):


11. Numerical Calculations and Simulations

11.1 Python: Quasi-Fermi Level Calculation in a Forward-Biased Diode

import numpy as np
import matplotlib.pyplot as plt
from scipy import constants as const
from scipy.integrate import odeint

# Physical constants
k_B = 1.381e-23     # J/K (Boltzmann constant)
e = 1.602e-19       # C (elementary charge)
hbar = 1.055e-34    # J·s

# Parameters
T = 300             # Temperature in K
N_c = 2.8e25        # Conduction band DOS (m^-3) for GaAs
N_v = 1.04e25       # Valence band DOS (m^-3) for GaAs
E_g = 1.519 * e     # Bandgap energy (J) for GaAs
tau_n = 1e-9        # Electron lifetime (s)
tau_p = 1e-9        # Hole lifetime (s)

# Compute intrinsic carrier concentration
n_i = np.sqrt(N_c * N_v) * np.exp(-E_g / (2 * k_B * T))
print(f"Intrinsic carrier concentration n_i: {n_i:.3e} cm^-3 ({n_i/1e6:.3e} m^-3)")

# Applied voltage
V_a = np.linspace(0, 1.0, 100)  # V

# Quasi-Fermi level splitting equals applied voltage (approximately)
Delta_E_F = V_a * e  # J

# Modified law of mass action: np = n_i^2 * exp(Delta_E_F / k_B T)
np_product = n_i**2 * np.exp(Delta_E_F / (k_B * T))

# For a symmetric junction, n = p under forward bias
n_exc = np.sqrt(np_product)
p_exc = n_exc

# Excess carriers
delta_n = n_exc - n_i
delta_p = p_exc - n_i

# Recombination current (Shockley diode equation)
J_0 = q * n_i**2 * (1/tau_p/N_a + 1/tau_n/N_d)  # Simplified
# For simplicity, use empirical J_0
J_0_empirical = 1e-12 * e  # A/cm^2 converted to A/m^2
J_0_empirical = 1e-6  # A/m^2

# Current as function of voltage
J_diode = J_0_empirical * (np.exp(V_a * e / (k_B * T)) - 1)

# Plot
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# Left: Quasi-Fermi levels
ax1.plot(V_a, (Delta_E_F / e) * 1000, 'r-', linewidth=2, label='$\\Delta E_F = q V_a$')
ax1.axhline(E_g / e * 1000, color='k', linestyle='--', alpha=0.5, label='$E_g$')
ax1.set_xlabel('Applied Voltage (V)')
ax1.set_ylabel('Quasi-Fermi Level Splitting (meV)')
ax1.set_title('Forward-Biased Diode: QFL Splitting vs. Applied Voltage')
ax1.legend()
ax1.grid(alpha=0.3)

# Right: Diode I-V characteristic
ax2.semilogy(V_a, np.abs(J_diode) + 1e-10, 'b-', linewidth=2)
ax2.set_xlabel('Applied Voltage (V)')
ax2.set_ylabel('Current Density (A/m$^2$, log scale)')
ax2.set_title('Shockley Diode Equation: I(V) Characteristic')
ax2.grid(alpha=0.3, which='both')

plt.tight_layout()
plt.savefig('qfl_forward_bias.png', dpi=150, bbox_inches='tight')
plt.show()

print(f"\nFor forward bias V_a = 0.6 V:")
V_test = 0.6
J_test = J_0_empirical * (np.exp(V_test * e / (k_B * T)) - 1)
print(f"  Current density: {J_test:.3e} A/m^2")
print(f"  Modified mass action: n*p = {n_i**2 * np.exp(V_test * e / (k_B * T)):.3e} m^-6")

11.2 Python: Solar Cell with Photocurrent and Quasi-Fermi Levels

def solar_cell_simulation(V_bias, J_L, J_0, k_B=1.381e-23, T=300, e=1.602e-19):
    """
    Solar cell I-V curve: J = J_L - J_0(exp(qV/kT) - 1)
    
    Args:
        V_bias: Applied bias voltage (V)
        J_L: Light-generated current density (A/m^2)
        J_0: Saturation current density (A/m^2)
        k_B, T, e: Physical constants
    
    Returns:
        J_net: Net current density
        V_oc: Open-circuit voltage
        P: Power density (W/m^2)
    """
    J_net = J_L - J_0 * (np.exp(e * V_bias / (k_B * T)) - 1)
    
    # Open-circuit voltage (J = 0)
    if J_L > 0:
        V_oc = (k_B * T / e) * np.log(J_L / J_0 + 1)
    else:
        V_oc = 0
    
    # Power density
    P = -J_net * V_bias  # Power delivered (negative current convention)
    
    return J_net, V_oc, P

# Solar cell parameters
J_L = 40e3  # A/m^2 (realistic for good Si or GaAs cell)
J_0 = 0.1   # A/m^2

# Bias voltage sweep
V_sweep = np.linspace(0, 0.8, 200)
J_sweep, V_oc, P_sweep = solar_cell_simulation(V_sweep, J_L, J_0)

# Find maximum power point
idx_max_P = np.argmax(P_sweep)
V_mp = V_sweep[idx_max_P]
P_max = P_sweep[idx_max_P]
J_mp = J_sweep[idx_max_P]

# Fill factor and efficiency
FF = (V_mp * np.abs(J_mp)) / (V_oc * J_L)
eta = P_max / (1000 * 1000)  # 1000 W/m^2 incident power

print(f"Solar Cell Characteristics:")
print(f"  J_sc (short-circuit current): {J_L:.3e} A/m^2")
print(f"  V_oc (open-circuit voltage): {V_oc:.3f} V")
print(f"  V_mp (max power point voltage): {V_mp:.3f} V")
print(f"  J_mp (max power point current): {np.abs(J_mp):.3e} A/m^2")
print(f"  P_max (max power): {P_max:.3e} W/m^2")
print(f"  Fill Factor: {FF:.1%}")
print(f"  Efficiency (1000 W/m^2): {eta:.1%}")

# Quasi-Fermi level splitting at V_oc
Delta_E_F_oc = e * V_oc
print(f"  $\\Delta E_F$ at V_oc: {Delta_E_F_oc/e*1000:.1f} meV")

# Plot
fig, ax = plt.subplots(figsize=(10, 6))
ax.fill_between(V_sweep, J_sweep*1e-3, alpha=0.3, label='I-V curve')
ax.plot(V_sweep, J_sweep*1e-3, 'b-', linewidth=2)
ax.plot(V_mp, J_mp*1e-3, 'ro', markersize=10, label=f'MPP ({V_mp:.2f} V, {J_mp*1e-3:.1f} A/m$^2$)')
ax.axhline(0, color='k', linestyle='-', alpha=0.2)
ax.axvline(0, color='k', linestyle='-', alpha=0.2)
ax.axvline(V_oc, color='g', linestyle='--', alpha=0.5, label=f'V$_{{oc}}$ = {V_oc:.3f} V')
ax.set_xlabel('Applied Voltage (V)')
ax.set_ylabel('Current Density (kA/m$^2$)')
ax.set_title(f'Solar Cell I-V Curve: $\\eta$ = {eta:.1%}, FF = {FF:.1%}')
ax.legend(loc='lower left')
ax.grid(alpha=0.3)

plt.tight_layout()
plt.savefig('qfl_solar_cell.png', dpi=150, bbox_inches='tight')
plt.show()

11.3 Python: Quasi-Fermi Level Profiles in a Heterojunction

def quasiFermiProfile_heterojunction(x, V_a, N_d, N_a, E_g_wide, E_g_narrow, BC_wide, BC_narrow):
    """
    Solve for quasi-Fermi level profiles in a wide-gap / narrow-gap heterojunction.
    
    Simplified 1D model: AlGaAs(wide) | GaAs(narrow) junction
    """
    # Simplified: assume linear drop across depletion region
    # Full solution requires solving Poisson + continuity equations
    
    E_c_wide = 0  # Reference
    E_v_wide = -E_g_wide
    
    # Band offset (example: 0.3 eV for AlGaAs/GaAs)
    band_offset_c = 0.3  # eV
    band_offset_v = E_g_wide - band_offset_c - E_g_narrow
    
    E_c_narrow = band_offset_c  # eV
    E_v_narrow = E_c_narrow - E_g_narrow
    
    # Contact voltage constraint
    V_contact = V_a  # Applied voltage
    
    # Quasi-Fermi levels (simplified linear profile)
    if x < 0.5e-6:  # Wide-gap side
        E_Fn_x = -0.5 * V_contact + (0.5 * V_contact) * (x / 0.5e-6)
        E_Fp_x = 0.5 * V_contact + (-0.5 * V_contact) * (x / 0.5e-6)
    else:  # Narrow-gap side
        E_Fn_x = -0.5 * V_contact + (0.5 * V_contact) * ((x - 0.5e-6) / 0.5e-6)
        E_Fp_x = 0.5 * V_contact + (-0.5 * V_contact) * ((x - 0.5e-6) / 0.5e-6)
    
    return E_Fn_x, E_Fp_x, E_c_wide if x < 0.5e-6 else E_c_narrow

# Position and bias
x_array = np.linspace(-1, 1, 200) * 1e-6  # -1 to +1 μm
V_bias = 0.6  # V

E_Fn_array = []
E_Fp_array = []
Delta_EF_array = []

for x in x_array:
    E_Fn, E_Fp, _ = quasiFermiProfile_heterojunction(x, V_bias, None, None, 1.8, 1.4, None, None)
    E_Fn_array.append(E_Fn)
    E_Fp_array.append(E_Fp)
    Delta_EF_array.append(E_Fn - E_Fp)

# Plot
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# Left: Band structure with QFLs
ax1.plot(x_array*1e6, E_Fn_array, 'r-', linewidth=2, label='$E_{Fn}$')
ax1.plot(x_array*1e6, E_Fp_array, 'b-', linewidth=2, label='$E_{Fp}$')
ax1.axvline(0, color='k', linestyle='--', alpha=0.3, label='AlGaAs|GaAs interface')
ax1.fill_between([-1, 0], -0.5, 1.5, alpha=0.1, color='gray', label='AlGaAs (wide gap)')
ax1.fill_between([0, 1], -0.5, 1.5, alpha=0.1, color='yellow', label='GaAs (narrow gap)')
ax1.set_xlabel('Position (μm)')
ax1.set_ylabel('Energy (eV)')
ax1.set_title(f'Heterojunction Quasi-Fermi Levels (V$_a$ = {V_bias} V)')
ax1.legend(loc='upper left', fontsize=9)
ax1.grid(alpha=0.3)
ax1.set_ylim([-0.5, 1.0])

# Right: QFL splitting
ax2.plot(x_array*1e6, Delta_EF_array, 'g-', linewidth=2)
ax2.axvline(0, color='k', linestyle='--', alpha=0.3)
ax2.axhline(V_bias, color='r', linestyle='--', alpha=0.5, label='Applied voltage')
ax2.set_xlabel('Position (μm)')
ax2.set_ylabel('$\\Delta E_F = E_{Fn} - E_{Fp}$ (V)')
ax2.set_title('Quasi-Fermi Level Splitting Across Heterojunction')
ax2.legend()
ax2.grid(alpha=0.3)

plt.tight_layout()
plt.savefig('qfl_heterojunction.png', dpi=150, bbox_inches='tight')
plt.show()

12. Experimental Measurement Techniques

12.1 Photoluminescence (PL) Spectroscopy

Photoluminescence directly measures the quasi-Fermi level splitting. Under excitation, the PL intensity is proportional to the recombination rate:

$$I_{\text{PL}}(\nu) \propto R(\nu) = B (np - n_i^2) \propto n_i^2 e^{\Delta E_F / k_B T}$$

The PL peak energy is approximately:

$$E_{\text{PL}} \approx E_g - \frac{\Delta E_F}{2}$$

for low-injection conditions (when $\Delta E_F \ll E_g$).

By measuring PL intensity vs. excitation power, one can extract $\Delta E_F(G)$ and infer recombination mechanisms.

12.2 Electroluminescence (EL)

EL measures the emission from a forward-biased junction. The EL intensity is:

$$I_{\text{EL}}(\nu) \propto J_0 e^{\Delta E_F / k_B T}$$

EL spectroscopy is used to diagnose defects and recombination in LEDs and solar cells.

12.3 Electroabsorption Spectroscopy

The absorption coefficient $\alpha(\omega)$ depends on the joint DOS weighted by the Fermi–Dirac distributions. Under forward bias, the absorption edge shifts and broadens due to band filling (increasing $\Delta E_F$).

This effect is exploited in electroabsorption modulators, where a changing electric field (voltage) directly modulates the optical absorption.


13. References & Further Reading

1. Shockley, W. (1949). "The Theory of p-n Junctions in Semiconductors and p-n Junction Transistors." Bell System Technical Journal, 28, 435–489. 2. Sah, C. T. (1991). Fundamentals of Solid-State Electronics. World Scientific. 3. Sze, S. M., & Ng, K. K. (2006). Physics of Semiconductor Devices (3rd ed.). Wiley-Interscience. 4. Kittel, C. (2005). Introduction to Solid State Physics (8th ed.). Wiley. 5. Nelson, J. (2003). The Physics of Solar Cells. Imperial College Press. 6. Bastard, G. (1988). Wave Mechanics Applied to Semiconductors. Les Éditions de Physique. 7. Chuang, S. L. (2009). Physics of Photonic Devices (2nd ed.). Wiley. 8. Green, M. A. (2003). Third Generation Photovoltaics: Advanced Solar Energy Conversion. Springer. 9. Shur, M. (1990). Physics of Semiconductor Devices. Prentice Hall.


Word Count: ~20,000 bytes | Keywords: Quasi-Fermi Levels, Non-Equilibrium Thermodynamics, Electrochemical Potential, Solar Cells, LEDs, Laser Diodes, Recombination, Band Bending, Shockley–Queisser Limit, Photovoltaic Efficiency

quasi-fermi levelsnon-equilibrium thermodynamicsquasi-fermi splitting efn efpelectrochemical potential gradientp-n junction bias kineticsshockley-queisser efficiency solar cellmodified mass action law

Explore 500+ Semiconductor & AI Topics

From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.