SimulationParameter{ }¶
- Calling sequence
SimulationParameter{ ... }
- Dependencies
The NumberOfConductionSubbands is not allowed to be defined if EnergyRangeAxial is defined.
The NumberOfValenceSubbands is not allowed to be defined if EnergyRangeAxialValence is defined.
- 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 = CoherenceLengthSelfEnergy = # basis state calculation BiasForInitialElectronicModes = 50 SpatialGridSpacing = 0.3 nLateralPeriodsForBandStructure = 1 SmoothingLengthKP = 0.1 ContinuousValenceBand = no AssumeIntrinsicNeutrality = no # axial energy cut-off by energy value EnergyRangeAxial = 60 EnergyRangeAxialValence = 50 # axial energy cut-off by number of subbands NumberOfConductionSubbands = 1 NumberOfValenceSubbands = 2 # lateral energy cut-off EnergyRangeLateral = 200 # energy range of Green's functions EnergyGridSpacing = 5 EminShift = 0 EmaxShift = 0 # convergence ConvergenceValueGF = ConvergenceValueCurrent = ConvergenceMinimum = NMaxIterations = 500 ConvergFactInit = ConvergFactMin = ConvergFactMax = ExitLoopIfNoConvergAfter = PhononConvergence = StartFromEquilibrium = yes }
CoherenceLengthInPeriods¶
- Calling sequence
SimulationParameter{ CoherenceLengthInPeriods }
- Properties
type: \(\mathrm{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: \(\mathrm{real\;number}\)
values:
[0.0, ...)
unit: \(\mathrm{nm}\)
- Functionality
Further limits the coherence length [nm] for which self-energies are considered. 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 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: \(\mathrm{real\;number}\)
values:
[0.0, ...)
unit: \(\mathrm{nm}\)
- Functionality
—
BiasForInitialElectronicModes¶
- Calling sequence
SimulationParameter{ SpatialGridSpacing }
- Properties
type: \(\mathrm{real\;number}\)
default is EnergyRangeAxial / 2.
- Functionality
Overwrites the voltage at which the states are visualized in Init_Electron_Modes folder.
SpatialGridSpacing¶
- Calling sequence
SimulationParameter{ SpatialGridSpacing }
- Properties
type: \(\mathrm{real\;number}\)
values:
[0.0, ...)
unit: \(\mathrm{nm}\)
- Functionality
Sets the real space grid spacing in the growth (\(z\)) direction.
Note
How should I choose the grid spacing?
Usually the layers in a QCL have thicknesses of around 1 nm, e.g. 1.3 nm and 1.7 nm. Therefore, in this case, grid spacing of 0.2 or 0.3 nm will not make a big difference in the results. This should, however, be checked for each structure. 0.2-0.3 nm is typically a reasonable number.
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: \(\mathrm{integer}\)
values:
{0, 1, 2, 3, ...}
- Functionality
Sets the number of periods next to the central period. If this parameter is
N
, 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 \(\sim 10^4\) for fast calculation. A largeN
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.
Note
How many periods should I define in my QCL input file?
It is sufficient for the standard user to specify N = 1
. Having more than that can be done for consistency test, but we do not see any physical interest in doing so (the calculation and convergence will only be longer).
If you want to account for longer coherence length only, CoherenceLengthInPeriods can be increased.
The gain spectra should be independent of the number of periods since the material gain is averaged over one period.
SmoothingLengthKP¶
- Calling sequence
SimulationParameter{ SmoothingLengthKP }
- Properties
type: \(\mathrm{real\;number}\)
values:
[0.0, ...)
unit: \(\mathrm{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: \(\mathrm{real\;number}\)
unit: \(\mathrm{meV}\)
- Functionality
Sets a 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: \(\mathrm{real\;number}\)
unit: \(\mathrm{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: \(\mathrm{integer}\)
values:
{0, 1, 2, 3, ...}
- Functionality
Specifies the number of subbands for the mode selection 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.
NumberOfValenceSubbands¶
- Calling sequence
SimulationParameter{ NumberOfValenceSubbands }
- Properties
type: \(\mathrm{integer}\)
values:
{0, 1, 2, 3, ...}
- Functionality
Specifies the number of subbands for the mode selection 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.
AssumeIntrinsicNeutrality¶
- Calling sequence
SimulationParameter{ 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 6N-th eigenvalue of the Hamiltonian, where N is the total number of real space grid points. Ifno
, calculate it by summing up the states from the bottom of the full spectrum up to the lower axial energy cut-off.
EnergyRangeLateral¶
- Calling sequence
SimulationParameter{ EnergyRangeLateral }
- Properties
type: \(\mathrm{real\;number}\)
values:
[0.0, ...)
unit: \(\mathrm{meV}\)
- Functionality
Sets the energy range of the in-plane dispersion. The energy reference is the bottom of the ground states.
Note
This choice is critical for the NEGF calculation time: the in-plane energy range needs to be large enough to cover all relevant carrier dynamics, but small enough to save computation time.
EnergyGridSpacing¶
- Calling sequence
SimulationParameter{ EnergyGridSpacing }
- Properties
type: \(\mathrm{real\;number}\)
values:
[0.0, ...)
unit: \(\mathrm{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: \(\mathrm{real\;number}\)
unit: \(\mathrm{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: \(\mathrm{real\;number}\)
unit: \(\mathrm{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: \(\mathrm{real\;number}\)
unit: \(\mathrm{eV}\)
- Functionality
—
ConvergenceValueGF¶
- Calling sequence
SimulationParameter{ ConvergenceValueGF }
- Properties
type: \(\mathrm{real\;number}\)
values:
[0.0, ...)
- Functionality
Sets the target relative residue for the Green’s functions.
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: \(\mathrm{real\;number}\)
values:
[0.0, ...)
- Functionality
—
ConvergenceValueCurrent¶
- Calling sequence
SimulationParameter{ ConvergenceValueCurrent }
- Properties
type: \(\mathrm{real\;number}\)
values:
[0.0, ...)
- Functionality
Sets the target relative residue for the current density.
Note
Small values for the convergence values, together with sufficiently large NMaxIterations, will give the most accurate results.
ConvergenceValueNorm¶
- Calling sequence
SimulationParameter{ ConvergenceValueNorm }
- Properties
type: \(\mathrm{real\;number}\)
values:
[0.0, ...)
default:
0.1
- Functionality
In charge-neutral device, if the charge density deviates from the doping density relatively by more than this value, stay in the NEGF formalism loop. This is to ensure charge conservation.
NMaxIterations¶
- Calling sequence
SimulationParameter{ NMaxIterations }
- Properties
type: \(\mathrm{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: \(\mathrm{real\;number}\)
- Functionality
—
ConvergFactMin¶
- Calling sequence
SimulationParameter{ ConvergFactMin }
- Properties
type: \(\mathrm{real\;number}\)
- Functionality
—
ConvergFactMax¶
- Calling sequence
SimulationParameter{ ConvergFactMax }
- Properties
type: \(\mathrm{real\;number}\)
- Functionality
—
ExitLoopIfNoConvergAfter¶
- Calling sequence
SimulationParameter{ ExitLoopIfNoConvergAfter }
- Properties
type: \(\mathrm{integer}\)
values:
{1, 2, 3, 4, ...}
- Functionality
—
PhononConvergence¶
- Calling sequence
SimulationParameter{ PhononConvergence }
- Properties
type: \(\mathrm{real\;number}\)
—
- Functionality
—
MagneticField¶
- Calling sequence
SimulationParameter{ MagneticField }
- Properties
type: \(\mathrm{real\;number}\)
—
- Functionality
—
NMaxThreads¶
- Calling sequence
SimulationParameter{ NMaxThreads }
- Properties
type: \(\mathrm{integer}\)
values:
{1, 2, 3, 4, ...}
- Functionality
Sets the maximum number of threads to be used for openMP 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 NumberOfBands is
8
and Equilibrium{ } is absent, the default isyes
.
StartFromPrevious¶
- Calling sequence
SimulationParameter{ StartFromPrevious }
- Properties
choices:
yes
;no
default:
no
- Functionality
—
BroadenLevels¶
- Calling sequence
SimulationParameter{ BroadenLevels }
- Properties
type: \(\mathrm{real\;number}\)
values:
[0.0, ...)
—
- Functionality
—
Last update: 28/10/2024