# How can the current-voltage relationship of a series of tunneling junctions be most easily computed?

I'm working on a research project with my professor where we're trying to figure out how to determine the necessary semiconductor composition for a solar cell to have a particular bandgap in order to maximize the power efficiency. Specifically, we're attempting to simulate the effect of using alternating layers of AlGaAs and GaInAs, with varying percentages of Al and In.

The problem is that the Python library we're using (Solcore) only seems able to calculate the current for a given semiconductor structure if given the voltage or vice versa. But what we're interested in is the general $$IV$$ relationship for a given structure (assume we know the doping concentrations, thicknesses of each side of the junction, etc.). How can this relationship, or at least a reasonable approximation of it, most easily be determined?

From speaking with the professor, as well as searching online, it seems the usual approach for this type of thing is to use the WKB approximation. But he said the problem with doing it that way is that you need to know what the potential function is, and that it will be pretty complicated in this case because the extreme thinness of the barriers means there will be a lot wavefunction overlap.

Here's a plot of the wavefunctions for one of the structures we're trying to simulate so you can see what I mean:

This is the Python code used to create it:

from solcore import si, material
from solcore.structure import Layer, Structure
import solcore.quantum_mechanics as QM

# First we create the materials we need
top = material("GaAs")(T=293, strained = False)
barrier = material("GaAsP")(T=293, P = 0.32, strained = False)
well = material("GaInAs")(T=293, In = 0.11, strained = False)
bottom = material("AlGaAs")(T=293, Al = 0.5, Strained = False)

# As well as some of the layers
top_layer = Layer(width=si("10nm"), material=top)
barrier_layer = Layer(width=si("2.5nm"), material=barrier)
well_layer = Layer(width=si("8.5nm"), material=well)
bottom_barrier_layer = Layer(width=si("50nm"), material=bottom)
bottom_layer = Layer(width=si("50nm"), material=top)

# Layered quantum wells
layers = [top_layer, barrier_layer] + 10 * [well_layer, barrier_layer] + [bottom_barrier_layer, bottom_layer]

test_structure_1 = Structure(layers, substrate=top)
output_1 = QM.schrodinger(test_structure_1, quasiconfined=0, graphtype='potentials', num_eigenvalues=20, show=True)


Is there a reasonably efficient way to at least approximate the $$IV$$ relationship for this sort of structure, either by perhaps approximating the potential function with a relatively simple function or using a method that doesn't require using the potential function?