SimulationParameter{ }

Calling sequence

SimulationParameter{ ... }

Dependencies
Functionality

Specifies parameters related to physical assumptions and numerics. Please refer to Coherence length, Electronic band structure, Axial energy cut-off, Green’s functions and Convergence for the model description.

Example
SimulationParameter{
    # coherence length
    CoherenceLengthInPeriods = 1
    CoherenceLengthInNm = 20
    CoherenceLengthSelfEnergy = 10

    # basis state calculation
    BiasForInitialElectronicModes = 200
    SpatialGridSpacing = 0.2
    nLateralPeriodsForBandStructure = 1

    # axial energy cut-off by energy value
    EnergyRangeAxial = 300

    # lateral energy cut-off
    EnergyRangeLateral = 300

    # energy range of Green's functions
    EnergyGridSpacing = 5
    EminShift = 0
    EmaxShift = 0

    # convergence
    ConvergenceValueGF = 1e-4
    ConvergenceValueCurrent = 1e-5
    NMaxIterations = 500

    StartFromEquilibrium = yes

    Interband{
        ...
    }
}

CoherenceLengthInPeriods

Calling sequence

SimulationParameter{ CoherenceLengthInPeriods = }

Properties
  • type: integer

  • values: {0, 1, 2, 3, ...}

Functionality

Sets the accounted coherence length of electrons in numbers of period. 1 should be enough for almost all existing QCL designs. In contrast, a larger number is needed for superlattices. See Coherence length for the model description.

Note

The gain spectra should be independent of the number of periods since the material gain is averaged over one period.


CoherenceLengthInNm

Calling sequence

SimulationParameter{ CoherenceLengthInNm = }

Properties
  • type: realnumber

  • values: [0.0, ...)

  • unit: nm

Functionality

Further limits the coherence length [nm] of the Green’s functions (this command has only an effect if the value is below the length corresponding to CoherenceLengthInPeriods, i.e. this number of periods times the period length) This will speed up the calculation of the Dyson and Keldysh equations. On the other hand, this can reduce the accuracy of the Green’s functions if this length is below the actual coherence length in the simulated device. It is recommended to assess the accuracy of such approximation by comparing to the results from different coherence lengths.


CoherenceLengthSelfEnergy

Calling sequence

SimulationParameter{ CoherenceLengthSelfEnergy = }

Properties
  • type: realnumber

  • values: [0.0, ...)

  • unit: nm

Functionality

— Limits the self-energy coherence length below CoherenceLengthInPeriods (this command has only an effect if the value is below the length corresponding to CoherenceLengthInPeriods, i.e. this number of periods times the period length). This will speed up the calculation of the self-energies. On the other hand, this can reduce the accuracy of the scattering processes if this length is below the actual correlation length of the scattering processes. It is recommended to assess the accuracy of such approximation by comparing to the results from different coherence lengths. If not specified, the self-energy coherence length is taken equal to the Green’s function coherence length `` CoherenceLengthInNm `` .


BiasForInitialElectronicModes

Calling sequence

SimulationParameter{ BiasForInitialElectronicModes = ... }

Properties
Functionality

Overwrites the voltage at which the electronic states are visualized in Init_Electron_Modes folder.


SpatialGridSpacing

Calling sequence

SimulationParameter{ SpatialGridSpacing = }

Properties
  • type: realnumber

  • values: [0.0, ...)

  • unit: nm

Functionality

Sets the real space grid spacing in the growth (z) direction.

Note

How should I choose the grid spacing?

Usually the electrons in heterostructures are confined in layers having thicknesses of in the range 1 - 10 nm. Typical values of grid spacing are in the range 0.1 - 0.5 nm. For QCLs, values of 0.2 - 0.3 nm are typically used. It should be checked for the structure under investigation, that using a slightly smaller value does not affect the results significantly.

Note

This parameter only affects the basis state calculation time. They are not critical for the total calculation time since the NEGF self-consistent loop is usually the most time-consuming part.


nLateralPeriodsForBandStructure

Calling sequence

SimulationParameter{ nLateralPeriodsForBandStructure = }

Properties
  • type: integer

  • values: {0, 1, 2, 3, ...}

Functionality

For periodic devices such as QCLs, sets the number of periods next to the central period. If we denote N this parameter, 2N+1 periods are used in the Schrödinger equation, which is solved at the beginning of the simulation (models described in Electronic band structure). The spectrum will contain 2N+1 states per miniband. (The number of grid points) * (2N+1) should not exceed 104 for fast calculation. A large N can be used for accurate calculation of the energy levels and wave functions that are plotted in the folder EnergyEigenstates.

Note

This parameter only affects the basis state calculation time. They are not critical for the total calculation time since the NEGF self-consistent loop is usually the most time-consuming part.


SmoothingLengthKP

Calling sequence

SimulationParameter{ SmoothingLengthKP = }

Properties
  • type: realnumber

  • values: [0.0, ...)

  • unit: nm

Functionality


ContinuousValenceBand

Calling sequence

SimulationParameter{ ContinuousValenceBand = }

Properties
  • choices: yes; no

  • default: no

Functionality

Switches between two different discretization schemes when NumberOfBands is 8.


EnergyRangeAxial

Calling sequence

SimulationParameter{ EnergyRangeAxial = }

Properties
  • type: realnumber

  • unit: meV

Functionality

Sets the energy cut-off for the mode selection in the conduction band along the growth axis (z direction). It is evaluated from the lowest energy state in the conduction band.

Note

This choice is critical for the NEGF calculation time: the axial energy range needs to be large enough to cover all relevant carrier dynamics, but small enough to save computation time.


EnergyRangeAxialValence

Calling sequence

SimulationParameter{ EnergyRangeAxialValence = }

Properties
  • type: realnumber

  • unit: meV

Functionality

Sets a energy cut-off for the mode selection in the valence band along the growth axis (z direction). It is evaluated from the highest energy state in the valence band.

Note

This choice is critical for the NEGF calculation time: the axial energy range needs to be large enough to cover all relevant carrier dynamics, but small enough to save computation time.


NumberOfConductionSubbands

Calling sequence

SimulationParameter{ NumberOfConductionSubbands = }

Properties
  • type: integer

  • values: {0, 1, 2, 3, ...}

Functionality

Specifies the number of subbands for the mode selection in the conduction band. This is an alternative to specifying EnergyRangeAxial

Note

This choice is critical for the NEGF calculation time: the axial energy range needs to be large enough to cover all relevant carrier dynamics, but small enough to save computation time.


NumberOfValenceSubbands

Calling sequence

SimulationParameter{ NumberOfValenceSubbands = }

Properties
  • type: integer

  • values: {0, 1, 2, 3, ...}

Functionality

Specifies the number of subbands for the mode selection in the valence band. This is an alternative to specifying EnergyRangeAxialValence

Note

This choice is critical for the NEGF calculation time: the axial energy range needs to be large enough to cover all relevant carrier dynamics, but small enough to save computation time.


EnergyRangeLateral

Calling sequence

SimulationParameter{ EnergyRangeLateral = }

Properties
  • type: realnumber

  • values: [0.0, ...)

  • unit: meV

Functionality

Sets the energy range of the in-plane dispersion. The energy reference is the bottom of the ground state subband.

Note

This choice is critical for the NEGF calculation time: the in-plane energy range needs to be large enough to cover all relevant nonradiative scattering processes, but not too large to save computation time.


EnergyGridSpacing

Calling sequence

SimulationParameter{ EnergyGridSpacing = }

Properties
  • type: realnumber

  • values: [0.0, ...)

  • unit: meV

Functionality

Sets the homogeneous energy grid spacing for the Green’s functions and self-energies.

Note

This choice is critical for the NEGF calculation time: the energy grid needs to be fine enough to resolve the peaks of the Green’s functions, but coarse enough to save computation time. Higher temperature leads to larger broadening, in which case fewer energy grid points are sufficient.


EminShift

Calling sequence

SimulationParameter{ EminShift = }

Properties
  • type: realnumber

  • unit: meV

Functionality

Shifts the lower bound of the energy range for the Green’s functions. Negative value increases the energy range. See Energy range of the Green’s functions for details.


EmaxShift

Calling sequence

SimulationParameter{ EmaxShift = }

Properties
  • type: realnumber

  • unit: meV

Functionality

Shifts the upper bound of the energy range for the Green’s functions. Positive value increases the energy range. See Energy range of the Green’s functions for details.


EnergyReference

Calling sequence

SimulationParameter{ EnergyReference = }

Properties
  • type: realnumber

  • unit: eV

Functionality

Shift all energies by the specified value (i.e. change the energy reference)


ConvergenceValueGF

Calling sequence

SimulationParameter{ ConvergenceValueGF = }

Properties
  • type: realnumber

  • values: [0.0, ...)

Functionality

Sets the target relative residue for the Green’s functions. The relative consecutive change in Green’s functions need to be smaller than this value to be considered as converged.

Note

Small values for the convergence values, together with sufficiently large NMaxIterations, will give the most accurate results.


ConvergenceMinimum

Calling sequence

SimulationParameter{ ConvergenceMinimum }

Properties
  • type: realnumber

  • values: [0.0, ...)

Functionality

Minimum convergence value for the Green’s function to be considered as partial convergence.


ConvergenceValueCurrent

Calling sequence

SimulationParameter{ ConvergenceValueCurrent = }

Properties
  • type: realnumber

  • values: [0.0, ...)

Functionality

Sets the target relative residue for the current density. The relative consecutive change in current density needs to be smaller than this value to be considered as converged.

Note

Small values for the convergence values, together with sufficiently large NMaxIterations, will give the most accurate results.


ConvergenceValuePoisson

Calling sequence

SimulationParameter{ ConvergenceValuePoisson = }

Properties
  • type: realnumber

  • values: [0.0, ...)

Functionality

Sets the target relative residue for the electric potential. The relative consecutive change in electrostatic potential needs to be smaller than this value for Poisson’s equation to be considered as converged.


ChargeNormalizationResidual

Calling sequence

SimulationParameter{ ChargeNormalizationResidual = }

Properties
  • type: realnumber

  • values: [0.0, ...)

  • default: 1e-2

Functionality

In charge-neutral device, if the charge density deviates from the doping density relatively by more than this value, stay in the Self-consistent solver loop. This is to ensure charge conservation.


NMaxIterations

Calling sequence

SimulationParameter{ NMaxIterations = }

Properties
  • type: integer

  • values: {1, 2, 3, 4, ...}

Functionality

Sets the maximum number of NEGF iterations.

Note

Small values for the convergence values, together with sufficiently large NMaxIterations, will give the most accurate results.


ConvergFactInit

Calling sequence

SimulationParameter{ ConvergFactInit = }

Properties
  • type: realnumber

Functionality

Initial value of the convergence mixing factor for the Green’s functions


ConvergFactMin

Calling sequence

SimulationParameter{ ConvergFactMin = }

Properties
  • type: realnumber

Functionality

Minimum value of the convergence mixing factor for the Green’s functions


ConvergFactMax

Calling sequence

SimulationParameter{ ConvergFactMax = }

Properties
  • type: realnumber

Functionality

Maximum value of the convergence mixing factor for the Green’s functions


FactPoisson

Calling sequence

SimulationParameter{ FactPoisson = }

Properties
  • type: realnumber

  • values: [0.0, 1.0]

Functionality

Mixing factor for Poisson equation (electrostatics)


AdaptivePoissonConvergence

Calling sequence

SimulationParameter{ AdaptivePoissonConvergence = }

Properties
  • choices: yes; no

  • default: no

Functionality

Automatically adjusts the Poisson mixing convergence factor (FactPoisson) during the convergence scheme


NMaxThreads

Calling sequence

SimulationParameter{ NMaxThreads = }

Properties
  • type: integer

  • values: {1, 2, 3, 4, ...}

Functionality

Sets the maximum number of threads to be used for the parallelization of the calculation of Green’s functions, self-energies, and other linear algebra.

Warning

This setting is overridden if the command line parameter --threads (Command Line) exists.


StartFromEquilibrium

Calling sequence

SimulationParameter{ StartFromEquilibrium = }

Properties
  • choices: yes; no

  • default: no

Functionality
  • If yes, first calculates equilibrium (quasi-equilibrium for interband devices), which is used as an initial guess of the subsequent non-equilibrium calculation

  • If NumberOfBands is 8 and Equilibrium{ } is absent, the default is yes.


BroadenLevels

Calling sequence

SimulationParameter{ BroadenLevels = }

Properties
  • type: realnumber

  • values: [0.0, ...)

  • unit: meV

Functionality

Adds an additionnal broadening to all states.


Interband{ }

Calling sequence

SimulationParameter{ Interband{ ... } }

Functionality

Specifies numerics-related parameters for interband devices.

Examples
SimulationParameter{
    Interband{
        EnergyBorderElectronHole = 1.9
        AssumeIntrinsicNeutrality = yes
    }
}
SimulationParameter{
    Interband{
        SetEnergyBorderByBandEdges = yes
        AssumeIntrinsicNeutrality = yes
    }
}

Interband{ EnergyBorderElectronHole }

Calling sequence

SimulationParameter{ Interband{ EnergyBorderElectronHole = } }

Properties
  • type: realnumber

  • unit: eV

Functionality

Sets the energy border for distinguishing electrons and holes. While the NEGF calculation is performed in the electron picture (Figure 4.2.2), the electron-hole distinction is necessary to:

  • check charge neutrality in a charge-neutral device,

  • determine whether a state should be populated with electron- or hole-quasi Fermi levels if they are split by the settings in Equilibrium{ },

  • calculate the background density if Interband{ AssumeIntrinsicNeutrality } is yes.


Interband{ SetEnergyBorderByBandEdges }

Calling sequence

SimulationParameter{ Interband{ SetEnergyBorderByBandEdges = } }

Properties
  • choices: yes; no

Functionality

If yes and if min(conduction band edge) is above max(valence band edge), set the energy border for distinguishing electrons and holes to the average of min(conduction band edge) and max(valence band edge). If yes and if min(conduction band edge) is below max(valence band edge), set the energy border for distinguishing electrons and holes to max(valence band edge). If no, the energy border will be determined from the spectral function. If unspecified, the program selects a default method based on the structure.

Note

Alternatively, you can set the energy border by value using Interband{ EnergyBorderElectronHole }.


Interband{ AssumeIntrinsicNeutrality }

Calling sequence

SimulationParameter{ Interband{ AssumeIntrinsicNeutrality = } }

Properties
  • choices: yes; no

  • default: no

Functionality

Only relevant if NumberOfBands is 8 and valence band states are selected. If yes, calculate the initial background density by summing up the states between the lowest selected axial energy and the 6Nr-th eigenvalue of the Hamiltonian, where Nr is the total number of real space grid points. If no, calculate it by summing up the states from the bottom of the full spectrum up to the lower axial energy cut-off.


Last update: 20/02/2025