quantum_current_poisson{ }

Calling sequence

run{ quantum_current_poisson{ } }

Properties

  • usage: optional

  • items: 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

  • usage: optional

  • type: real number

  • values: [0.0, ...)

  • default: r=105 for 1D; r=103 for 2D; r=103 for 3D

  • unit: cm2 for 1D; cm1 for 2D; none 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: optional

  • type: integer

  • values: z0

  • default: z=30

  • 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: optional

  • type: choice

  • values: yes or 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

  • usage: optional

  • type: integer

  • values: 1z1000

  • default: z=1

  • 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: optional

  • type: real number

  • values: [2.0, ...)

  • default: r=1e12

  • 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: optional

  • type: real number

  • values: 0.0r10.0

  • default: r=2.0

  • unit: 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

  • usage: optional

  • type: integer

  • values: z1

  • default: z=2

  • 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: optional

  • type: choice

  • values: yes or 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

  • usage: optional

  • type: real number

  • values: [0.0, ...)

  • default: r=1e5

  • unit: 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

  • usage: optional

  • type: real number

  • values: 105r1.0

  • default: r=1.0

  • 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: optional

  • type: integer

  • values: z1

  • default: z=1000

  • 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: optional

  • type: real number

  • values: 0.1r1.0

  • default: r=0.998

  • 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: optional

  • type: real number

  • values: 103r1.0

  • default: r=1.0

  • 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: optional

  • type: choice

  • values: yes or 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

  • usage: optional

  • type: choice

  • values: yes or 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 and residual_fermi are only checked between iterations but not between repetitions.

Example

run{
    quantum_current_poisson{
        output_local_residuals = yes
    }
}

currents{}
quantum{}