[ Home ] [ News ] [ Contact ] [ Search ]

 ==> Download Software
 nextnano³ documentation

 Copyright notice
 About us
 Useful Links
 Publications
 
 * password protected

 

 
 

Nonlinear Poisson equation

The subroutine non_linear_poisson calculates for given Fermi levels (MODULE fermi_level) the new potential. The value in phiV in MODULE potentials is taken as starting value and is finally overwritten with the calculated value. The subroutine non_linear_poisson may only be called after call of subroutine define_poisson_clusters. On return, no additional arrays are allocated, so the allocation status is left unchanged.

The input variable caseC may be 'class'  or  'fully', i.e. a classical or a quantum mechanical calculation.

  • If caseC is 'class',
    the Poisson equation is solved with Thomas-Fermi densities throughout the whole device, i.e. quantum clusters are ignored. The nonlinear Poisson equation is solved with a Newton method, which is capable of finding the roots of an n-dimensional functional. Three subroutines must be provided:
       -  calc_fct_newt_non_lin_pois
       - calc_grad_newt_non_lin_pois
       -    newton_corr_non_lin_pois

     
  • If caseC is  'fully',
    the Schrödinger-Poisson equation is solved self-consistently for the given Fermi levels.
    This is done using a predictor-corrector approach (A. Trellakis et al., J. Appl. Phys. 81, 7880 (1997)):
    The eigenvalues are calculated for the given potential (calculate_eigenstates). With the calculated eigenstates a perturbative expression for the density (predictor density) exists, which only depends on the potential (and the fixed Fermi levels). With this density the nonlinear Poisson equation is calculated. This cycle is repeated until convergence of the potential is achieved. The subroutines used by the Newton method are:
       -  calc_fct_newt_sg_pois
       - calc_grad_newt_sg_pois
       -    newton_corr_sg_pois


    For the evaluation of the predictor density a potential shift is needed. So the potential of the preceeding step is stored in potV_old in MODULE pass_over_mod.

    The actual precision in the predictor-corrector loop is delta (relative deviation of the actual potential from the preceeding potential).

    The variable stage says how many orders of magnitude the actual precision differs from the required precision (stored in precision_sg_poisson_pece in MODULE numeric_control.

    The precision for the eigensolvers Arnoldi is chosen to be epsilon_ev_rel_to_precision (MODULE numeric_control) orders of magnitude smaller than the actual precision delta.

    The parameters for the conjugate gradient method for extreme eigenvalues are chosen according to a fixed scheme in dependence of the variable stage.

    The options for the eigenvalue solvers (including convergence parameters) can be adjusted with the keyword $numeric_control.
   
Last modified: 09-Jun-2011