Tutorial 08: 1D Schroedinger - Poisson

In this tutorial we will see a first example of self-consistent calculation of two simulation models, in this case Poisson (model driftdiffusion) and Schroedinger (models efaschroedinger and quantumdensity) equations. In this way, we will calculate the classical and quantum charge density in a AlGaAs /GaAs quantum well.

The following files should be present in the working directory:

 

 

Device structure

The structure is as follows:

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

Here is, for example, the Region well

 

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


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

Cluster Quantum_1
{
mesh_regions = (well ,barrier1_q, barrier2_q   )
}

 

Simulation models


We define the simulations:

  • str (macrostrain model ) for the strain calculation with GaAs 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).

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

 

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

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

 

Quantum calculations

Let's see first 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' charge.

1. Schroedinger solution

To solve Schroedinger equation in the quantum regions we set quantum_el simulation in this way:

  • In Solver section we choose electrons as particles (particle = el), the number_of_eigenstates (22) to be calculated, and the poisson and strain simulations to be associated to quantum_el (poisson_model_name = dd, strain_model_name = macrostrain):

quantum_el
{
Dirichlet_bc_everywhere = false
particle = el
number_of_eigenstates = 22
poisson_model_name = dd
strain_model_name = macrostrain
convergent_density = true
}

The default solver is used in this case.

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

quantum_el
{
model = conduction_band
}

 

2. Quantum density

To calculate quantum electron charge density, we set the parameters for the simulation dens_el (quantum density model):

In Solver section we can select:

  • which efaschroedinger simulation calculates eigenstates: quantum_simulation = quantum_el
  • calculation with analytical formula (faster) : analytic = true
  • if analytic = false, parameters for k-space integration, such as number_of_nodes of the k-space mesh, are needed :

dens_el
{
.....................
k_space_dimension = 2
k-space_basis = true
k1 = (0, 0, 0.1)
k2 = (0, 0.1, 0)
number_of_nodes = (4,4)
wedge = quarter
refine_fraction = 0.20
relative_accuracy = 0.01
refine_k_space = true
uniform_refinement = false
mesh_order = FIRST
initial_eigenstates_number = 10 #20
analytic = false
.....................................

 

Self consistent Poisson-Schroedinger

We can choose to calculate charge density:

  • with classical model: in Solver section, we set coupling = poisson for driftdiffusion model and we run only simulation dd
  • with quantum model: we run Poisson simulation dd and then dens_el to get quantum density in the quantum well
  • with a self-consistent calculation: Poisson dd and quantum density dens_el simulations are solved self-consistently until convergence is obtained.

Let's see in particular how to set a self-consistent calculation:

  • 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
use_density_predictor = true
....................

  • Then a selfconsistent block must be given:

Selfconsistent
{
poisson_schroedinger
{
simulations = (dens_el, dd)
max_iterations = 10
abs_tolerance = 1e-4
rel_tolerance = 1e-6
}
}

Here, we select which simulations have to be run in a self-consistent cycle called poisson_schroedinger: simulations = (dd,dens_el);
besides, we set the tolerances.

 

Last step is to specify the selfconsistent cycle poisson_schroedinger in the solve declaration:

$Simulation
{
solve = (str, dd, poisson_schroedinger)

 

Run simulations

To summarize, we have three possible choices for our calculations:

  1. solve = (str, poisson_schroedinger ) will solve, after strain, Poisson and quantum selfconsistently
  2. solve = (str,dd, dens_el) will solve, after strain, Poisson problem and then will calculate the quantum density without any self-consistency
  3. solve = (str, dd) will just solve, after strain, Poisson and will terminate.

tibercad quantum_poisson.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: quantum density

Here are the conduction band profiles (left, from the output file dd_nodal.dat ) and electron densities (right, from dd_nodal.dat and dens_el_elemental.dat ) obtained from two different calculations.




  • With solve = (str, dd) , we have calculated the classical Poisson solution for potential and charge density (red curves)
  • With solve = (str, poisson_schroedinger) we performed a self-consistent calculation of Poisson and Schroedinger problems, finding the quantum density at each step; black curves are the converged results for conduction band and electron density.

Quntum density has been calculated, in this case, with the analytical model (a parabolic parallel dispersion is considered), by setting analytic = true in Solver section.

Let's see now what happens if we set analytic = false: in this case an integration in k-space is performed for each calculation of the quantum density.

 


The comparison shows that the discrepancy with the more approximate calculation is not very large, especially for charge density. The analytical model is thus more convenient, for this example, being far less demanding in computational time.

 

 


AttachmentSize
quantum_poisson.tib3.05 KB
quantum_poisson.geo591 bytes
quantum_poisson.msh15.59 KB