2-diode equation

This is the simplest method for simulating the behaviour of a solar cell, using electrical components to model the different transport and recombination mechanisms of the device. The 2D model is widely applied when modelling solar cells at the most engineering end of the topic, when a detailed knowledge of the solar cell structure (layers, absorption coefficient, etc.) are not known or sought. It is often used to fit experimental IV curves and find approximate, general information on the solar cell quality without entering on the fundamental processes. It can provide valuable information to engineers, when designing solar modules for example, or for diagnostic purposes The complete form of the equation is:

J = J_{sc} & - J_{01} \left( e^ \frac{q(V-R_sJ)}{n_1 k_b T} - 1 \right) \\
& - J_{02} \left( e^ \frac{q(V-R_sJ)}{n_2 k_b T} - 1 \right) \\
& - \frac{V-R_sJ}{R_{sh}}

Generally, the photocurrent is modelled as a current source (J_{sc}), with radiative and non-radiative recombination modelled as two diodes with reverse saturation currents J_{01} and J_{02}, and ideality factors n_1\approx 1 and n_2\approx 2, respectively. The shunt resistance R_{sh} accounts for alternative current paths between the contacts of the solar cell, being infinite in the ideal case, and the series resistance R_s accounts for the other transport losses. The values of the saturation currents and ideality factors can, ultimately, be calculated from the material properties and device structure, as is done in the depletion approximation model, but the 2D model allows them to be provided directly as input, obtained from a fit to experimental data, for example. They can also be calculated internally, using the DB solver to obtain J_{01} and J_{sc}, and then using a radiative efficiency coefficient to obtain J_{02}. The radiative efficiency \eta is defined as the fraction of radiative current J_{rad} at a given reference total current J_{ref}:

\eta = \frac{J_{rad}}{J_{ref}} = \frac{J_{01}}{J_{ref}} \left( e ^{\frac{qV_{ref}}{n_1k_bT}} - 1 \right)

The reference voltage V_{ref} can be written as a function of \eta and J_{ref} as:

V_{ref} = \frac{n_1k_bT}{q} \log \left( \frac{\eta J_{ref}}{J_{01}} + 1 \right)

On the other hand, the radiative coefficient can also be written as:

\eta = \frac{J_{ref} - J_{nrad} - V_{ref}/R_{sh}}{J_{ref}}

Combining the last two equations and using the expression for the diode with ideality factor n_2, J_{02} can be written as:

J_{02} = \frac{(1-\eta) J_{ref} - V_{ref} / R_{sh}}{e^ {\frac{qV_{ref}}{n_2k_bT} } - 1 }

In the common situation of very large shunt resistance and V_{ref} >> k_bT/q, this equation further simplifies to:

J_{02} = (1-\eta) J_{ref} \left( \frac{J_{01} }{ J_{ref} \eta } \right)^{n_1/n_2}

This process can, of course, be reversed to use knowledge of J_{01} and J_{02} at a given reference current to calculate the radiative efficiency of a solar cell, which is useful to compare different materials, technologies or processing methods. This was done by Chan et al. using J_{ref} = 30 mA/cm^2, obtaining \eta values of 20% for InGaP, 22% for GaAs, and 27% for InGaAs devices ([1]). It should be pointed out that this method is only valid under the assumption that J_{01} corresponds only to radiative recombination and J_{02} only to non-radiative recombination, which is generally true for QW solar cells and some III-V solar cells, like those made of GaAs or InGaP, but not for Si or Ge, for example. Other definitions of the radiative efficiency are based on the external quantum efficiency, the I_{sc} and V_{oc} of the cell, as described by Green (2011) ([2]).

Despite the simplicity of the 2-diode model, it is very useful to guide the design of new solar cells and explore the performance of new materials, such as dilute bismuth alloys ([3]), or to asses the performance of large arrays of solar cells ([4]).

2-diode equation functions

solcore.analytic_solar_cells.diode_equation.iv_2diode(junction, options)[source]

Calculates the IV curve of a junction object using the 2-diode equation. All parameters needed for the calculation need to be included in the junction object. Series resistance is included at solar cell level, not at junction level. The junction is then updated with an “iv” function that calculates the IV curve at any voltage.

  • junction – A junction object.
  • options – Solver options.


solcore.analytic_solar_cells.diode_equation.calculate_J01(Eg_in_eV, T, n)[source]

Calculate the reverse saturation current J01, assumed radiative, considering an absorption equal to 1 above the bandgap. Light trapping is included by considering the refractive index of the material:

J_{01} = \frac {q n^2 k_b T} {2 \pi ^2 c^2 \hbar ^3} e^{\frac{-E_g}{k_b T}} (E_g^2 + 2 k_b T E_g + 2 k_b^2 T^2)

  • Eg_in_eV – Bandgap in eV
  • T – Cell temperature
  • n – Refractive index of the material

The reverse saturation current J01

solcore.analytic_solar_cells.diode_equation.calculate_J02_from_Voc(J01, Jsc, Voc, T, R_shunt=1000000000000000.0)[source]

Calculates J02 based on the J01, Jsc and the Voc. It is just the result of solving the 2-diode equation for J02. Ideality factors n1 and n2 are assumed to be equal to 1 and 2, respectively.

  • J01 – Reverse saturation current J01, typically the radiative component
  • Jsc – Short circuit current (=photocurrent)
  • Voc – Open circuit voltage
  • T – Temperature
  • R_shunt – Shunt resistance (default = 1e15)

The reverse saturation current J02

solcore.analytic_solar_cells.diode_equation.calculate_J02_from_rad_eff(J01, radiative_efficiency, V, T, R_shunt=1000000000000000.0)[source]

Calculates J02 based on J01 and a radiative efficiency at a given voltage and temperature. Ideality factors n1 and n2 are assumed to be equal to 1 and 2, respectively.

  • J01 – Reverse saturation current J01, typically the radiative component
  • radiative_efficiency – Fraction of the dark current that is radiative
  • V – Operating voltage
  • T – Temperature
  • R_shunt – Shunt resistance (default = 1e15)

solcore.analytic_solar_cells.diode_equation.calculate_j02_from_J01_Jsc_reference_radiative_efficiency(J01, Jsc_ref, radiative_efficiency, T)[source]
solcore.analytic_solar_cells.diode_equation.update_j0(junctions, T, Tref)[source]

Updates the reverse saturation currents for the target temperature knowing their values at a reference temperature.

  • junctions – List of junctions
  • T – Target temperature
  • Tref – Working temperature

List of junctions with their saturation currents updated for the new temperatures


[1]Chan, N.L.A., Ekins-Daukes, N.J., Adams, J.G.J., Lumb, M.P., Gonzalez, M., Jenkins, P.P., Vurgaftman, I., Meyer, J.R., Walters, R.J.: Optimal bandgap combinations—does material quality mat- ter? IEEE J. Photovolt. 2(2), 202–208 (2012)
[2]Green, M.A.: Radiative efficiency of state-of-the-art photovoltaic cells. Prog. Photovolt. Res. Appl. 20(4), 472–476 (2011)
[3]Thomas, T., Mellor, A., Hylton, N.P., Führer, M., Alonso-Álvarez, D., Braun, A., Ekins-Daukes, N.J., David, J.P.R., Sweeney, S.J.: Requirements for a GaAsBi 1 eV sub-cell in a GaAs-based multi- junction solar cell. Semicond. Sci. Technol. 30(9), 094010-6 (2015)
[4]Ekins-Daukes, N.J., Kemmoku, Y., Araki, K., Betts, T.R., Gottschalg, R., Infield, D.G., Yamaguchi, M.: The design specifica- tion for Syracuse; a multi-junction concentrator system computer model. In: Proceedings of the 19th European Photovoltaic Solar Energy Conference, pp. 1–4 (2004)