(git:34ef472)
dm_ls_scf_methods Module Reference

lower level routines for linear scaling SCF More...

Functions/Subroutines

subroutine, public ls_scf_init_matrix_s (matrix_s, ls_scf_env)
 initialize S matrix related properties (sqrt, inverse...) Might be factored-out since this seems common code with the other SCF. More...
 
subroutine, public compute_matrix_preconditioner (matrix_s, preconditioner_type, ls_mstruct, matrix_bs_sqrt, matrix_bs_sqrt_inv, threshold, order, eps_lanczos, max_iter_lanczos)
 compute for a block positive definite matrix s (bs) the sqrt(bs) and inv(sqrt(bs)) More...
 
subroutine, public apply_matrix_preconditioner (matrix, direction, matrix_bs_sqrt, matrix_bs_sqrt_inv)
 apply a preconditioner either forward (precondition) inv(sqrt(bs)) * A * inv(sqrt(bs)) backward (restore to old form) sqrt(bs) * A * sqrt(bs) More...
 
subroutine, public density_matrix_sign (matrix_p, mu, fixed_mu, sign_method, sign_order, matrix_ks, matrix_s, matrix_s_inv, nelectron, threshold, sign_symmetric, submatrix_sign_method, matrix_s_sqrt_inv)
 compute the density matrix with a trace that is close to nelectron. take a mu as input, and improve by bisection as needed. More...
 
subroutine, public density_matrix_sign_fixed_mu (matrix_p, trace, mu, sign_method, sign_order, matrix_ks, matrix_s, matrix_s_inv, threshold, sign_symmetric, submatrix_sign_method, matrix_s_sqrt_inv)
 for a fixed mu, compute the corresponding density matrix and its trace More...
 
subroutine, public density_matrix_trs4 (matrix_p, matrix_ks, matrix_s_sqrt_inv, nelectron, threshold, e_homo, e_lumo, e_mu, dynamic_threshold, matrix_ks_deviation, max_iter_lanczos, eps_lanczos, converged)
 compute the density matrix using a trace-resetting algorithm More...
 
subroutine, public density_matrix_tc2 (matrix_p, matrix_ks, matrix_s_sqrt_inv, nelectron, threshold, e_homo, e_lumo, non_monotonic, eps_lanczos, max_iter_lanczos)
 compute the density matrix using a non monotonic trace conserving algorithm based on SIAM DOI. 10.1137/130911585. 2014.04 created [Jonathan Mullin] More...
 
subroutine, public compute_homo_lumo (matrix_k, matrix_p, eps_min, eps_max, threshold, max_iter_lanczos, eps_lanczos, homo, lumo, unit_nr)
 compute the homo and lumo given a KS matrix and a density matrix in the orthonormalized basis and the eps_min and eps_max, min and max eigenvalue of the ks matrix More...
 

Detailed Description

lower level routines for linear scaling SCF

History
2010.10 created [Joost VandeVondele]
Author
Joost VandeVondele

Function/Subroutine Documentation

◆ ls_scf_init_matrix_s()

subroutine, public dm_ls_scf_methods::ls_scf_init_matrix_s ( type(dbcsr_type)  matrix_s,
type(ls_scf_env_type)  ls_scf_env 
)

initialize S matrix related properties (sqrt, inverse...) Might be factored-out since this seems common code with the other SCF.

Parameters
matrix_s...
ls_scf_env...
History
2010.10 created [Joost VandeVondele]
Author
Joost VandeVondele

Definition at line 71 of file dm_ls_scf_methods.F.

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

◆ compute_matrix_preconditioner()

subroutine, public dm_ls_scf_methods::compute_matrix_preconditioner ( type(dbcsr_type), intent(inout)  matrix_s,
integer  preconditioner_type,
type(ls_mstruct_type)  ls_mstruct,
type(dbcsr_type), intent(inout)  matrix_bs_sqrt,
type(dbcsr_type), intent(inout)  matrix_bs_sqrt_inv,
real(kind=dp)  threshold,
integer  order,
real(kind=dp)  eps_lanczos,
integer  max_iter_lanczos 
)

compute for a block positive definite matrix s (bs) the sqrt(bs) and inv(sqrt(bs))

Parameters
matrix_s...
preconditioner_type...
ls_mstruct...
matrix_bs_sqrt...
matrix_bs_sqrt_inv...
threshold...
order...
eps_lanczos...
max_iter_lanczos...
History
2010.10 created [Joost VandeVondele]
Author
Joost VandeVondele

Definition at line 213 of file dm_ls_scf_methods.F.

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

◆ apply_matrix_preconditioner()

subroutine, public dm_ls_scf_methods::apply_matrix_preconditioner ( type(dbcsr_type), intent(inout)  matrix,
character(len=*)  direction,
type(dbcsr_type), intent(inout)  matrix_bs_sqrt,
type(dbcsr_type), intent(inout)  matrix_bs_sqrt_inv 
)

apply a preconditioner either forward (precondition) inv(sqrt(bs)) * A * inv(sqrt(bs)) backward (restore to old form) sqrt(bs) * A * sqrt(bs)

Parameters
matrix...
direction...
matrix_bs_sqrt...
matrix_bs_sqrt_inv...
History
2010.10 created [Joost VandeVondele]
Author
Joost VandeVondele

Definition at line 315 of file dm_ls_scf_methods.F.

Here is the caller graph for this function:

◆ density_matrix_sign()

subroutine, public dm_ls_scf_methods::density_matrix_sign ( type(dbcsr_type), intent(inout)  matrix_p,
real(kind=dp), intent(inout)  mu,
logical  fixed_mu,
integer  sign_method,
integer  sign_order,
type(dbcsr_type), intent(inout)  matrix_ks,
type(dbcsr_type), intent(inout)  matrix_s,
type(dbcsr_type), intent(inout)  matrix_s_inv,
integer, intent(in)  nelectron,
real(kind=dp), intent(in)  threshold,
logical, optional  sign_symmetric,
integer, optional  submatrix_sign_method,
type(dbcsr_type), intent(in), optional  matrix_s_sqrt_inv 
)

compute the density matrix with a trace that is close to nelectron. take a mu as input, and improve by bisection as needed.

Parameters
matrix_p...
mu...
fixed_mu...
sign_method...
sign_order...
matrix_ks...
matrix_s...
matrix_s_inv...
nelectron...
threshold...
sign_symmetric...
submatrix_sign_method...
matrix_s_sqrt_inv...
History
2010.10 created [Joost VandeVondele] 2020.07 support for methods with internal mu adjustment [Michael Lass]
Author
Joost VandeVondele

Definition at line 371 of file dm_ls_scf_methods.F.

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

◆ density_matrix_sign_fixed_mu()

subroutine, public dm_ls_scf_methods::density_matrix_sign_fixed_mu ( type(dbcsr_type), intent(inout)  matrix_p,
real(kind=dp), intent(out)  trace,
real(kind=dp), intent(inout)  mu,
integer  sign_method,
integer  sign_order,
type(dbcsr_type), intent(inout)  matrix_ks,
type(dbcsr_type), intent(inout)  matrix_s,
type(dbcsr_type), intent(inout)  matrix_s_inv,
real(kind=dp), intent(in)  threshold,
logical  sign_symmetric,
integer  submatrix_sign_method,
type(dbcsr_type), intent(in), optional  matrix_s_sqrt_inv 
)

for a fixed mu, compute the corresponding density matrix and its trace

Parameters
matrix_p...
trace...
mu...
sign_method...
sign_order...
matrix_ks...
matrix_s...
matrix_s_inv...
threshold...
sign_symmetric...
submatrix_sign_method...
matrix_s_sqrt_inv...
History
2010.10 created [Joost VandeVondele]
Author
Joost VandeVondele

Definition at line 481 of file dm_ls_scf_methods.F.

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

◆ density_matrix_trs4()

subroutine, public dm_ls_scf_methods::density_matrix_trs4 ( type(dbcsr_type), intent(inout)  matrix_p,
type(dbcsr_type), intent(in)  matrix_ks,
type(dbcsr_type), intent(in)  matrix_s_sqrt_inv,
integer, intent(in)  nelectron,
real(kind=dp), intent(in)  threshold,
real(kind=dp), intent(inout)  e_homo,
real(kind=dp), intent(inout)  e_lumo,
real(kind=dp), intent(inout)  e_mu,
logical, intent(in), optional  dynamic_threshold,
type(dbcsr_type), intent(inout), optional  matrix_ks_deviation,
integer, intent(in)  max_iter_lanczos,
real(kind=dp), intent(in)  eps_lanczos,
logical, intent(out), optional  converged 
)

compute the density matrix using a trace-resetting algorithm

Parameters
matrix_p...
matrix_ks...
matrix_s_sqrt_inv...
nelectron...
threshold...
e_homo...
e_lumo...
e_mu...
dynamic_threshold...
matrix_ks_deviation...
max_iter_lanczos...
eps_lanczos...
converged...
History
2012.06 created [Florian Thoele]
Author
Florian Thoele

Definition at line 719 of file dm_ls_scf_methods.F.

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

◆ density_matrix_tc2()

subroutine, public dm_ls_scf_methods::density_matrix_tc2 ( type(dbcsr_type), intent(inout)  matrix_p,
type(dbcsr_type), intent(in)  matrix_ks,
type(dbcsr_type), intent(in)  matrix_s_sqrt_inv,
integer, intent(in)  nelectron,
real(kind=dp), intent(in)  threshold,
real(kind=dp), intent(inout)  e_homo,
real(kind=dp), intent(inout)  e_lumo,
logical, intent(in), optional  non_monotonic,
real(kind=dp), intent(in)  eps_lanczos,
integer, intent(in)  max_iter_lanczos 
)

compute the density matrix using a non monotonic trace conserving algorithm based on SIAM DOI. 10.1137/130911585. 2014.04 created [Jonathan Mullin]

Parameters
matrix_p...
matrix_ks...
matrix_s_sqrt_inv...
nelectron...
threshold...
e_homo...
e_lumo...
non_monotonic...
eps_lanczos...
max_iter_lanczos...
Author
Jonathan Mullin

Definition at line 1015 of file dm_ls_scf_methods.F.

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

◆ compute_homo_lumo()

subroutine, public dm_ls_scf_methods::compute_homo_lumo ( type(dbcsr_type)  matrix_k,
type(dbcsr_type)  matrix_p,
real(kind=dp)  eps_min,
real(kind=dp)  eps_max,
real(kind=dp)  threshold,
integer, intent(in)  max_iter_lanczos,
real(kind=dp), intent(in)  eps_lanczos,
real(kind=dp)  homo,
real(kind=dp)  lumo,
integer  unit_nr 
)

compute the homo and lumo given a KS matrix and a density matrix in the orthonormalized basis and the eps_min and eps_max, min and max eigenvalue of the ks matrix

Parameters
matrix_k...
matrix_p...
eps_min...
eps_max...
threshold...
max_iter_lanczos...
eps_lanczos...
homo...
lumo...
unit_nr...
History
2012.06 created [Florian Thoele]
Author
Florian Thoele

Definition at line 1281 of file dm_ls_scf_methods.F.

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