quantum_current_poisson{ }
Calling sequence
run{ quantum_current_poisson{ } }
Properties
usage:
items: 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 either poisson{ }
or current_poisson{ }
is required and current_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
usage:
type: real number
values:
[0.0, ...)
default:
for 1D; for 2D; for 3Dunit:
for 1D; for 2D; for 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
usage:
type: integer
values:
default:
unit:
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
usage:
type: choice
values:
yes
orno
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
usage:
type: integer
values:
default:
unit:
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
usage:
type: real number
values:
[2.0, ...)
default:
unit:
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
usage:
type: real number
values:
default:
unit:
Functionality
—
Example
run{
quantum_current_poisson{
fermi_limit = 0.7
}
}
poisson{}
currents{}
quantum{}
current_repetitions
Calling sequence
run{ quantum_current_poisson{ current_repetitions } }
Properties
usage:
type: integer
values:
default:
unit:
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 (larger alpha_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
usage:
type: choice
values:
yes
orno
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
usage:
type: real number
values:
[0.0, ...)
default:
unit:
Functionality
—
Example
run{
quantum_current_poisson{
residual_fermi = 1e-6
}
}
poisson{}
currents{}
quantum{}
alpha_fermi
Calling sequence
run{ quantum_current_poisson{ alpha_fermi } }
Properties
usage:
type: real number
values:
default:
unit:
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
usage:
type: integer
values:
default:
unit:
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
usage:
type: real number
values:
default:
unit:
Functionality
Both for classical and for quantum iterations, alpha_fermi
will be reduced further as alpha_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 decreasing alpha_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
usage:
type: real number
values:
default:
unit:
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
usage:
type: choice
values:
yes
orno
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
usage:
type: choice
values:
yes
orno
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
and residual_fermi
are only
checked between iterations but not between repetitions.
Example
run{
quantum_current_poisson{
output_local_residuals = yes
}
}
currents{}
quantum{}