quantum_current_poisson{ }¶
- Calling sequence
run{ quantum_current_poisson{ } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
items: \(\mathrm{maximum\;1}\)
- Dependencies
The quantum{ } must be defined.
The currents{ } must be defined.
The poisson{ } must be defined.
- Functionality
It solves the Schrödinger-Current-Poisson equations self-consistently. When
quantum_current_poisson{ }
is desired, note that additionally eitherpoisson{ }
orcurrent_poisson{ }
is required andcurrent_poisson
must be defined in the input file..- Example
run{ quantum_current_poisson{} } poisson{} currents{} quantum{}
Nested keywords
residual¶
- Calling sequence
run{ quantum_current_poisson{ residual } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{real\;number}\)
values:
[0.0, ...)
default:
1e5
for 1D;1e3
for 2D;1e-3
for 3Dunit: \(\mathrm{cm^{-2}\,}\) (1D) / \(\mathrm{cm^{-1}\,}\) (2D) / \(\mathrm{none\,}\) (3D)
- Functionality
Defines requested residual of the integrated total charge carrier density changes. Note that this is dimension dependent and default is: 1e5/cm2 (1D), 1e3/cm (2D), 1e-3[dimensionless] (3D). This applies to exact Schrödinger equation, not to subspace Schrödinger equation
Note
If you do not include enough eigenstates, the convergence behavior might be affected as the occupation of the eigenstates is not considered in a useful way.
- Example
run{ quantum_current_poisson{ residual = 1e4 } } poisson{} currents{} quantum{}
iterations¶
- Calling sequence
run{ quantum_current_poisson{ iterations } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{integer}\)
values:
{0, 1, 2, 3, ...}
default:
30
unit: \(\mathrm{-}\)
- Functionality
Maximum number of iterations, i.e. self-consistency cycles
- Example
run{ quantum_current_poisson{ iterations = 50 } } poisson{} currents{} quantum{}
use_subspace¶
- Calling sequence
run{ quantum_current_poisson{ use_subspace } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{choice}\)
choices:
yes
;no
default:
yes
- Functionality
Solve Schrödinger equation within subspace of eigenvectors of previous iteration as long as achieved residual is larger than desired
residual * residual_factor
and at least in every second iteration- Example
run{ quantum_current_poisson{ use_subspace = no } } poisson{} currents{} quantum{}
subspace_iterations¶
- Calling sequence
run{ quantum_current_poisson{ subspace_iterations } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{integer}\)
values:
{1, 2, 3, ..., 1000}
default:
1
unit: \(\mathrm{-}\)
- Functionality
Number of subspace iterations
- Example
run{ quantum_current_poisson{ subspace_iterations = 3 } } poisson{} currents{} quantum{}
subspace_residual_factor¶
- Calling sequence
run{ quantum_current_poisson{ subspace_residual_factor } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{real\;number}\)
values:
[2.0, ...)
default:
1e12
unit: \(\mathrm{-}\)
- Functionality
Residual factor for subspace iterations
- Example
run{ quantum_current_poisson{ subspace_residual_factor = 1e11 } } poisson{} currents{} quantum{}
fermi_limit¶
- Calling sequence
run{ quantum_current_poisson{ fermi_limit } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{real\;number}\)
values:
[0.0, 10.0]
default:
2.0
unit: \(\mathrm{eV}\)
- Functionality
—
- Example
run{ quantum_current_poisson{ fermi_limit = 0.7 } } poisson{} currents{} quantum{}
current_repetitions¶
- Calling sequence
run{ quantum_current_poisson{ current_repetitions } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{integer}\)
values:
{1, 2, 3, 4, ...}
default:
2
unit: \(\mathrm{-}\)
- Functionality
number of current-density iterations. The current equation is repeatedly solved for the quasi-Fermi levels. For each iteration, the densities are adjusted according to the new quasi-Fermi levels of the previous iteration.
current_repetitions
defines number of these repetitions. If generation/recombination is present, using a value > 1 (e.g. 5) may stabilize the iteration and sometimes enable faster convergence (largeralpha_fermi
may also be possible then).- Example
run{ quantum_current_poisson{ current_repetitions = 4 } } poisson{} currents{} quantum{}
limit_repetitions¶
- Calling sequence
run{ quantum_current_poisson{ limit_repetitions } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{choice}\)
choices:
yes
;no
default:
no
- Functionality
If enabled, the current-density loop is exited early as soon as
residual_fermi
is reached by the quasi-Fermi levels.- Example
run{ quantum_current_poisson{ limit_repetitions = yes } } poisson{} currents{} quantum{}
residual_fermi¶
- Calling sequence
run{ quantum_current_poisson{ residual_fermi } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{real\;number}\)
values:
[0.0, ...)
default:
1e-5
unit: \(\mathrm{eV}\)
- Functionality
—
- Example
run{ quantum_current_poisson{ residual_fermi = 1e-6 } } poisson{} currents{} quantum{}
alpha_fermi¶
- Calling sequence
run{ quantum_current_poisson{ alpha_fermi } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{real\;number}\)
values:
[1e-5, 1.0]
default:
1.0
unit: \(\mathrm{-}\)
- Functionality
The Fermi level is under-relaxed between repetitions using an under-relaxation parameter for the Fermi levels. It should be used once an oscillation of residuals is observed while self-consistently solving the Poisson and Schrödinger (and current) equations to improve convergence. For further information, please read comments on
alpha_fermi
parameter above- Example
run{ quantum_current_poisson{ alpha_fermi = 0.2 } } poisson{} currents{} quantum{}
alpha_iterations¶
- Calling sequence
run{ quantum_current_poisson{ alpha_iterations } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{integer}\)
values:
{1, 2, 3, 4, ...}
default:
1000
unit: \(\mathrm{-}\)
- Functionality
number of alpha iterations
- Example
run{ quantum_current_poisson{ alpha_iterations = 100 } } poisson{} currents{} quantum{}
alpha_scale¶
- Calling sequence
run{ quantum_current_poisson{ alpha_scale } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{real\;number}\)
values:
[0.1, 1.0]
default:
0.998
unit: \(\mathrm{-}\)
- Functionality
Both for classical and for quantum iterations,
alpha_fermi
will be reduced further asalpha_fermi <- max( alpha_fermi * alpha_scale , 1e-5)
at each iteration step once the number of iterations exceeds alpha_iterations. Use this feature to improve convergence (particularly convergence of Fermi levels) towards the end of the iteration. Note that decreasingalpha_fermi
too fast (a problem with older versions) will result in the iteration stalling (only the residuals of the densities but none of the Fermi levels decrease). The total current equation may then not be properly conserved.- Example
run{ quantum_current_poisson{ alpha_scale = 0.995 } } poisson{} currents{} quantum{}
alpha_potential¶
- Calling sequence
run{ quantum_current_poisson{ alpha_potential } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{real\;number}\)
values:
[1e-3, 1.0]
default:
1.0
unit: \(\mathrm{-}\)
- Functionality
In case of stubborn convergence problems which do not appear to have any root cause such as not enough eigenvalues and which appear not to respond to any change in other parameters, try using a mildly smaller value than 1.0 such as 0.5.
Using values smaller than 1.0 per default is not recommended, as the run time is expected to increase as 1/
alpha_potential
for normally converging input files.- Example
run{ quantum_current_poisson{ alpha_potential = 0.5 } } currents{} quantum{}
output_log¶
- Calling sequence
run{ quantum_current_poisson{ output_log } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{choice}\)
choices:
yes
;no
default:
yes
- Functionality
Output of convergence of (quantum) current-Poisson equation (residuals for
quantum_current_poisson
) into the logfile iteration_quantum_current_poisson.dat- Example
run{ quantum_current_poisson{ output_log = no } } currents{} quantum{}
output_local_residuals¶
- Calling sequence
run{ quantum_current_poisson{ output_local_residuals } }
- Properties
using: \(\mathrm{\textcolor{ForestGreen}{optional\;within\;the\;scope}}\)
type: \(\mathrm{choice}\)
choices:
yes
;no
default:
no
- Functionality
Outputs residuals as functions of position when
output_local_residuals = yes
. In case the attribute is enabled for both classical and quantum iterations, the quantum iteration overwrites the respective files of the classical iteration.Note
Both conditions specified by
residual
andresidual_fermi
are only checked between iterations but not between repetitions.- Example
run{ quantum_current_poisson{ output_local_residuals = yes } } currents{} quantum{}