(git:6a2e663)
qs_scf_methods Module Reference

groups fairly general SCF methods, so that modules other than qs_scf can use them too split off from qs_scf to reduce dependencies More...

Functions/Subroutines

subroutine, public scf_env_density_mixing (p_mix_new, mixing_store, rho_ao, para_env, iter_delta, iter_count, diis, invert)
 perform (if requested) a density mixing More...
 
subroutine, public eigensolver (matrix_ks_fm, mo_set, ortho, work, cholesky_method, do_level_shift, level_shift, matrix_u_fm, use_jacobi)
 Diagonalise the Kohn-Sham matrix to get a new set of MO eigen- vectors and MO eigenvalues. ks will be modified. More...
 
subroutine, public eigensolver_dbcsr (matrix_ks, matrix_ks_fm, mo_set, ortho_dbcsr, ksbuf1, ksbuf2)
 ... More...
 
subroutine, public eigensolver_symm (matrix_ks_fm, mo_set, ortho, work, do_level_shift, level_shift, matrix_u_fm, use_jacobi, jacobi_threshold)
 ... More...
 
subroutine, public eigensolver_simple (matrix_ks, mo_set, work, do_level_shift, level_shift, use_jacobi, jacobi_threshold)
 ... More...
 
subroutine, public cp_sm_mix (m1, m2, p_mix, delta, para_env, m3)
 Perform a mixing of the given matrixes into the first matrix m1 = m2 + p_mix (m1-m2) More...
 

Detailed Description

groups fairly general SCF methods, so that modules other than qs_scf can use them too split off from qs_scf to reduce dependencies

History
  • Joost VandeVondele (03.2006)
  • combine_ks_matrices added (05.04.06,MK)
  • second ROKS scheme added (15.04.06,MK)
  • MO occupation management moved (29.08.2008,MK)
  • correct_mo_eigenvalues was moved from qs_mo_types; new subroutine shift_unocc_mos (03.2016, Sergey Chulkov)

Function/Subroutine Documentation

◆ scf_env_density_mixing()

subroutine, public qs_scf_methods::scf_env_density_mixing ( type(dbcsr_p_type), dimension(:, :), pointer  p_mix_new,
type(mixing_storage_type), pointer  mixing_store,
type(dbcsr_p_type), dimension(:, :), pointer  rho_ao,
type(mp_para_env_type), pointer  para_env,
real(kind=dp), intent(inout)  iter_delta,
integer, intent(in)  iter_count,
logical, intent(in), optional  diis,
logical, intent(in), optional  invert 
)

perform (if requested) a density mixing

Parameters
p_mix_newNew density matrices
mixing_store...
rho_aoDensity environment
para_env...
iter_delta...
iter_count...
diis...
invertInvert mixing
History
02.2003 created [fawzi] 08.2014 adapted for kpoints [JGH]
Author
fawzi

Definition at line 95 of file qs_scf_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ eigensolver()

subroutine, public qs_scf_methods::eigensolver ( type(cp_fm_type), intent(in)  matrix_ks_fm,
type(mo_set_type), intent(in)  mo_set,
type(cp_fm_type), intent(in)  ortho,
type(cp_fm_type), intent(in)  work,
integer, intent(inout)  cholesky_method,
logical, intent(in)  do_level_shift,
real(kind=dp), intent(in)  level_shift,
type(cp_fm_type), intent(in), optional  matrix_u_fm,
logical, intent(in)  use_jacobi 
)

Diagonalise the Kohn-Sham matrix to get a new set of MO eigen- vectors and MO eigenvalues. ks will be modified.

Parameters
matrix_ks_fm...
mo_set...
ortho...
work...
cholesky_method...
do_level_shiftactivate the level shifting technique
level_shiftamount of shift applied (in a.u.)
matrix_u_fmmatrix U : S (overlap matrix) = U^T * U
use_jacobi...
Date
01.05.2001
Author
Matthias Krack
Version
1.0

Definition at line 165 of file qs_scf_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ eigensolver_dbcsr()

subroutine, public qs_scf_methods::eigensolver_dbcsr ( type(dbcsr_type), pointer  matrix_ks,
type(cp_fm_type), intent(in)  matrix_ks_fm,
type(mo_set_type), intent(in)  mo_set,
type(dbcsr_type), pointer  ortho_dbcsr,
type(dbcsr_type), pointer  ksbuf1,
type(dbcsr_type), pointer  ksbuf2 
)

...

Parameters
matrix_ks...
matrix_ks_fm...
mo_set...
ortho_dbcsr...
ksbuf1...
ksbuf2...

Definition at line 267 of file qs_scf_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ eigensolver_symm()

subroutine, public qs_scf_methods::eigensolver_symm ( type(cp_fm_type), intent(in)  matrix_ks_fm,
type(mo_set_type), intent(in)  mo_set,
type(cp_fm_type), intent(in)  ortho,
type(cp_fm_type), intent(in)  work,
logical, intent(in)  do_level_shift,
real(kind=dp), intent(in)  level_shift,
type(cp_fm_type), intent(in), optional  matrix_u_fm,
logical, intent(in)  use_jacobi,
real(kind=dp), intent(in)  jacobi_threshold 
)

...

Parameters
matrix_ks_fm...
mo_set...
ortho...
work...
do_level_shiftactivate the level shifting technique
level_shiftamount of shift applied (in a.u.)
matrix_u_fmmatrix U : S (overlap matrix) = U^T * U
use_jacobi...
jacobi_threshold...

Definition at line 326 of file qs_scf_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ eigensolver_simple()

subroutine, public qs_scf_methods::eigensolver_simple ( type(cp_fm_type), intent(in)  matrix_ks,
type(mo_set_type), intent(in)  mo_set,
type(cp_fm_type), intent(in)  work,
logical, intent(in)  do_level_shift,
real(kind=dp), intent(in)  level_shift,
logical, intent(in)  use_jacobi,
real(kind=dp), intent(in)  jacobi_threshold 
)

...

Parameters
matrix_ks...
mo_set...
work...
do_level_shiftactivate the level shifting technique
level_shiftamount of shift applied (in a.u.)
use_jacobi...
jacobi_threshold...

Definition at line 403 of file qs_scf_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cp_sm_mix()

subroutine, public qs_scf_methods::cp_sm_mix ( type(dbcsr_type), pointer  m1,
type(dbcsr_type), pointer  m2,
real(kind=dp), intent(in)  p_mix,
real(kind=dp), intent(out)  delta,
type(mp_para_env_type), pointer  para_env,
type(dbcsr_type), optional, pointer  m3 
)

Perform a mixing of the given matrixes into the first matrix m1 = m2 + p_mix (m1-m2)

Parameters
m1first (new) matrix, is modified
m2the second (old) matrix
p_mixhow much m1 is conserved (0: none, 1: all)
deltamaximum norm of m1-m2
para_env...
m3...
History
02.2003 rewamped [fawzi]
Author
fawzi
Note
if you what to store the result in m2 swap m1 and m2 an use (1-pmix) as pmix para_env should be removed (embedded in matrix)

Definition at line 477 of file qs_scf_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function: