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

 ==> Download Software
 nextnano³ documentation

 Copyright notice
 About us
 Useful Links
 Publications
 
 * password protected

 

 
 

Numerical routines

Eigenvalue problems

Arnoldi

Real symmetric problem for extreme eigenvalues

The Arnoldi method for real symmetric eigenvalue problems for extreme eigenvalues is implemented in subroutine eigensolver_real_arpack in MODULE mod_eigensolver_real_arpack. One has to provide a subroutine for matrix-vector-multiplication and a subroutine to solve a linear equation (this is only used for the shift-invert-option).
They are contained in MODULE eigensolver_arpack_routines.

  • SUBROUTINE matvec_sg_arpack
    calculates yV = D^(1/2)*H*D^(1/2)*xV, where D^(1/2) is the diagonal matrix stored in diag_sgV in MODULE normalization_factors_sg and H is the Hamilton-matrix stored in MODULE sparse_matrix_rout_real.
  • SUBROUTINE lin_equation_solver_arnoldi: dummy subroutine since option 'shift-invert' is not used.

This method can be used for calculation of the Eigenvalues of the single-band Hamiltonian.

Complex hermitian problem for extreme eigenvalues

The Arnoldi method for complex hermitian eigenvalue problems for extreme eigenvalues is implemented in subroutine arnoldi_complex in MODULE mod_eigensolver_complex_arpack. One has to provide a subroutine for matrix-vector-multiplication and a subroutine to solve a linear equation (this is only used for the shift-invert-option).

They are contained in MODULE eigensolver_arpack_routines and are used for calculation of the single-band Hamiltonmatrix with magnetic field:

  • SUBROUTINE matvec_magnsg_arpack
    calculates yV = D^(1/2)*H*D^(1/2)*xV, where D^(1/2) is the diagonal matrix stored in diag_sgV in MODULE normalization_factors_sg and H is the Hamilton-matrix stored in MODULE sparse_matrix_rout.
  • SUBROUTINE m_lin_equation_solver_arnoldi: dummy subroutine since option 'shift-invert' is not used.

This method is also used for diagonalization of the 6x6-kp-Hamiltonian. The subroutines are contained in MODULE arnoldi_complex_routines:

  • SUBROUTINE matvec_arnoldi_complex
    calculates yV = D^(1/2)*H*D^(1/2)*xV, where D^(1/2) is the diagonal matrix stored in diag_kpV in MODULE normalization_factors_sg and H is the Hamilton-matrix stored in MODULE sparse_matrix_rout.
  • SUBROUTINE lin_equation_solver_arnoldi_c: dummy subroutine since option 'shift-invert' is not used.

 

Conjugate Gradients

Complex hermitian problem for extreme eigenvalues

Extreme eigenvalues of a complex hermitian matrix can be calculated employing a conjugate gradient scheme. This method is contained in subroutine eigensolver_hermitian in MODULE mod_eigensolver_hermitian.

This method can be used for diagonalization of the 6x6-kp-Hamiltonian. The subroutines are contained in MODULE eigensolver_iter_routines:

  • SUBROUTINE matrix_vector_eigencg
    calculates yV = D^(1/2)*H*D^(1/2)*xV, where D^(1/2) is the diagonal matrix stored in diag_kpV in MODULE normalization_factors_sg and H is the Hamilton-matrix stored in MODULE sparse_matrix_rout.
  • SUBROUTINE precond_eigencg:  preconditioner
    Note: Only the 1D preconditioner is implemented.
  • SUBROUTINE inner_product_eigencg: inner product is the standard dot product

For this method there exists also a version for real, symmetric matrices: subroutine eigensolver_realsym in MODULE mod_eigensolver_realsym.

 

Chebychev-Arnoldi

Real symmetric problem for extreme eigenvalues

(by A. Trellakis)

Complex hermitian problem for extreme eigenvalues

(by A. Trellakis)

   
Last modified: 09-Jun-2011