quantum_current_poisson{ }

Calling sequence

run{ quantum_current_poisson{ } }

Properties
  • using: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: \(\mathrm{maximum\;1}\)

Dependencies
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
  • using: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: \(\mathrm{real\;number}\)

  • values: \([0.0, \ldots)\)

  • default: \(10^{5}\,\) (1D) / \(10^{3}\,\) (2D) / \(10^{-3}\,\) (3D)

  • unit: \(\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}}\)

  • type: \(\mathrm{integer}\)

  • values: \(\{0,1,2,3,\ldots\}\)

  • 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}}\)

  • type: \(\mathrm{choice}\)

  • choices: \(\mathrm{yes\;/\;no}\)

  • default: \(\mathrm{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}}\)

  • type: \(\mathrm{integer}\)

  • values: \(\{1,2,3,\ldots,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}}\)

  • type: \(\mathrm{real\;number}\)

  • values: \([2.0, \ldots)\)

  • default: \(10^{12}\)

  • 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}}\)

  • 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}}\)

  • type: \(\mathrm{integer}\)

  • values: \(\{1,2,3,4,\ldots\}\)

  • 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 (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
  • using: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: \(\mathrm{choice}\)

  • choices: \(\mathrm{yes\;/\;no}\)

  • default: \(\mathrm{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}}\)

  • type: \(\mathrm{real\;number}\)

  • values: \([0.0, \ldots)\)

  • default: \(10^{-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}}\)

  • type: \(\mathrm{real\;number}\)

  • values: \([10^{-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}}\)

  • type: \(\mathrm{integer}\)

  • values: \(\{1,2,3,4,\ldots\}\)

  • 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}}\)

  • 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 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
  • using: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: \(\mathrm{real\;number}\)

  • values: \([10^{-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}}\)

  • type: \(\mathrm{choice}\)

  • choices: \(\mathrm{yes\;/\;no}\)

  • default: \(\mathrm{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}}\)

  • type: \(\mathrm{choice}\)

  • choices: \(\mathrm{yes\;/\;no}\)

  • default: \(\mathrm{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{}