![]() |
(git:53a46e8)
|
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. | |
| 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)) | |
| 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) | |
| 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. | |
| 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 | |
| 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, iounit) |
| compute the density matrix using a trace-resetting algorithm | |
| 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, iounit) |
| compute the density matrix using a non monotonic trace conserving algorithm based on SIAM DOI. 10.1137/130911585. 2014.04 created [Jonathan Mullin] | |
| 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 | |
lower level routines for linear scaling SCF
| 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.
| matrix_s | ... |
| ls_scf_env | ... |
Definition at line 73 of file dm_ls_scf_methods.F.
| 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))
| matrix_s | ... |
| preconditioner_type | ... |
| ls_mstruct | ... |
| matrix_bs_sqrt | ... |
| matrix_bs_sqrt_inv | ... |
| threshold | ... |
| order | ... |
| eps_lanczos | ... |
| max_iter_lanczos | ... |
Definition at line 216 of file dm_ls_scf_methods.F.
| 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)
| matrix | ... |
| direction | ... |
| matrix_bs_sqrt | ... |
| matrix_bs_sqrt_inv | ... |
Definition at line 318 of file dm_ls_scf_methods.F.
| 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.
| 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 | ... |
Definition at line 374 of file dm_ls_scf_methods.F.
| 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
| 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 | ... |
Definition at line 484 of file dm_ls_scf_methods.F.
| 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, | ||
| integer, intent(in), optional | iounit | ||
| ) |
compute the density matrix using a trace-resetting algorithm
| 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 | ... |
| iounit | ... |
Definition at line 725 of file dm_ls_scf_methods.F.
| 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, | ||
| integer, intent(in), optional | iounit | ||
| ) |
compute the density matrix using a non monotonic trace conserving algorithm based on SIAM DOI. 10.1137/130911585. 2014.04 created [Jonathan Mullin]
| matrix_p | ... |
| matrix_ks | ... |
| matrix_s_sqrt_inv | ... |
| nelectron | ... |
| threshold | ... |
| e_homo | ... |
| e_lumo | ... |
| non_monotonic | ... |
| eps_lanczos | ... |
| max_iter_lanczos | ... |
| iounit | ... |
Definition at line 1027 of file dm_ls_scf_methods.F.
| 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
| matrix_k | ... |
| matrix_p | ... |
| eps_min | ... |
| eps_max | ... |
| threshold | ... |
| max_iter_lanczos | ... |
| eps_lanczos | ... |
| homo | ... |
| lumo | ... |
| unit_nr | ... |
Definition at line 1298 of file dm_ls_scf_methods.F.