Tutorial 11: 1D Schroedinger-Poisson-Drift-Diffusion

In this tutorial we will see an example of self-consistent calculation of Poisson and driftdiffusion model together with EFA Schroedinger calculations (through the models efaschroedinger and quantumdensity).
This example is an extension of Tutorial 8.
First we will bring a AlGaAs /GaAs quantum well based pn-diode to a bias point where the well levels are suitable populated; then we will calculate the self consistent charge density in the GaAs quantum well.
A predictor-corrector method is applied to improve the convergence of the self-consistence cycle; besides, an embracing region is considered inside the quantum region, in order to improve the smoothness of the solution.

 

The following files should be present in the working directory:

 

 

Device structure

The structure is as follows:

  1. a barrier of AlGaAs
  2. a 10 nm GaAs quantum well
  3. a barrier of AlGaAs

Here is, for example, the Region well

 

Region well
{
material = GaAs
doping = 1e15
doping_type = acceptor
doping_level = 0.025
}


We define a quantum Cluster which comprises the well region and two regions beside it

Cluster quantum
{
mesh_regions = (well, buffer_quantum)
}

 

Simulation models


We define the simulations:

  • str (macrostrain model ) for the strain calculation with AlGaN reference substrate
  • dd (driftdiffusion model) for Poisson calculation; no boundary conditions are defined, so that the default flat band b.c. is assumed (see Tutorial 6)
  • quantum_el (efaschroedinger model) for schroedinger solution in the quantum cluster (will be used to calculate quantum charge density).
  • quantum_hl (efaschroedinger model) for schroedinger solution of holes in the quantum cluster

model efaschroedinger
{
options
{
simulation_name = quantum_el
physical_regions = quantum
}
}

 

  • dens_el (quantumdensity model) for the calculation of quantum electron charge density.
  • dens_hl (quantumdensity model) for the calculation of quantum hole charge density.

model quantumdensity
{
options
{
simulation_name = dens_el
physical_regions = quantum
}
}

f or electrons, and a similar declaration for holes.

 

Quantum calculations

First, let's see how to set the quantum simulations to get the quantum charge density, then we'll see how to implement a self consistent cycle between the quantum charge and the classical 'Poisson-Drift-Diffusion' calculation.

1. Schroedinger solution

To solve Schroedinger equation in the quantum regions we set quantum_el and quantum_hl simulations as in Tutorial 8

  • In Physics section, single band model for conduction band is selected:

quantum_el
{
model = conduction_band
}

and a kp 6x6 model for valence band:

quantum_hl
{
particle = hl
model = kp   #  k.p  for  valence  band
kp_model = 6x6
}

 

2. Quantum density

To calculate quantum charge density, we set the parameters for the simulations dens_el and dens_hl (quantum density model):

In Solver section we can select:

  • which efaschroedinger simulation calculates eigenstates: (e.g. quantum_simulation = quantum_el)
  • calculation with analytical formula (faster) : analytic = true
  • parameters for k-space integration

See Tutorial 8 for more details.

 

Self consistent Poisson-Schroedinger including current equation

 

TiberCAD is able to perform selfconsistent Schroedinger-Poisson ( see Tutorial 8) or Schroedinger-Drift-Diffusion calculations. For this purpose, in the Drift-Diffusion block of Physics section, electron_quantum_density and/or hole_quantum_density has to be specified for at least one Region. Besides, a selfconsistent simulation should be defined in the Selfconsistent block.

  • First, we have to define, in Physics section, which quantumdensity simulation provides the quantum density to the driftdiffusion simulation, which in turn will calculate the potential for the next step of quantum calculation:

$Physics
{
driftdiffusion
{
electron_quantum_density = dens_el
hole_quantum_density = dens_hl

The following options – specified in the Physics section – control the behaviour of the selfconsistent simulation.

use_density_predictor = true
embracing_length = 8e-9
plot_embracing_regions = true

  • When use_density_predictor is set to true, a predictor-corrector scheme will be adopted in the selfconsistent cycle. The Poisson/Drift-Diffusion solver does not just take the particle densities as given by the Schroedinger calculation, but it will assume a dependency from the quantum and classical density at the previoius step (see the manual).
  • embracing_length: When the domain of the quantum simulation is smaller than the domain of the full simulation, the boundary conditions for the Schroedinger equation will disturb the transfer from classical to quantum density.
    By defining an embracing region of a certain extension (specified in meters), a gradual transition from classical to quantum density will be done instead of an abrupt one, using as effective density the one given by a mixing of quantum and classical densities. The default is no embracing region at all (zero extension).
  • plot_embracing_regions = true plots the embracing region and the mixing coefficient x (more interesting in 2D).
Let's go now to the Selfconsistent block , in Solver section

Selfconsistent
{
EFA_dd     
{
simulations = (dens_el, dens_hl, dd)
# we do not use relaxation, but a predictor-corrector scheme
#relaxation_factor = 0.5
max_iterations = 10
abs_tolerance = 1e-4
rel_tolerance = 1e-8
monitor = true
#xmonitor = true
}
}

Here, we select which simulations have to be run in a self-consistent cycle called EFA_dd:

simulations = (dens_el, dens_hl, dd);

In this way, at each step of the cycle, electron and hole charge densities, as calculated by the Quantumdensity model , are used to perform poisson calculation together with current transport; the potentials and charges thus found are sent back again to the EFA model for a new quantum calculation. The cycle is repeated until the set tolerances are satisfied.

Note that the quantum density calculation makes sense only if there are populated levels in the quantum well; this is why, in this example, we will set, in solve declaration, first a drift-diffusion sweep, and then, when the desired polarization bias for the pn diode is reached, the self-consistence cycle.

So , in the solve declaration, we specify the selfconsistent cycle EFA_dd after the strain and sweep_dd calculations:

$Simulation
{
solve = (str, sweep_dd , EFA_dd)

 

Run simulations


tibercad quantum_well.tib

 


 

Output

  • str_elemental.dat: strain tensor components
  • dd_elemental.dat: drift-diffusion (Poisson) elemental quantities
  • dd_nodal.dat: drift-diffusion (Poisson) nodal quantities
  • dens_el_elemental.dat: electron density
  • dens_hl_elemental.dat: hole density

Here are the conduction and valence band profiles (in black, from the output file dd_nodal.dat ) and electron and hole densities (blue and red, respectively, from dens_el_elemental.dat and dens_hl_elemental.dat ) obtained from the self-consistent calculations.







 




 

 


AttachmentSize
quantum_well.tib4.8 KB
quantum_well.geo636 bytes
quantum_well.msh13.93 KB