![]() |
(git:f7b9015)
|
Different diagonalization schemes that can be used for the iterative solution of the eigenvalue problem. More...
Functions/Subroutines | |
| real(kind=dp) function | adiis_candidate_shift (scf_env) |
| Fade candidate regularization through handover; never regularize a raw-map check. | |
| subroutine, public | general_eigenproblem (scf_env, mos, matrix_ks, matrix_s, scf_control, scf_section, diis_step) |
| the inner loop of scf, specific to diagonalization with S matrix basically, in goes the ks matrix out goes a new p matrix | |
| subroutine, public | do_general_diag (scf_env, mos, matrix_ks, matrix_s, scf_control, scf_section, diis_step, probe) |
| ... | |
| subroutine, public | do_general_diag_kp (matrix_ks, matrix_s, kpoints, scf_env, scf_control, update_p, diis_step, diis_error, qs_env, probe, added_mos_auto_grow, potential) |
| Kpoint diagonalization routine Transforms matrices to kpoint, distributes kpoint groups, performs general diagonalization (no storgae of overlap decomposition), stores MOs, calculates occupation numbers, calculates density matrices in kpoint representation, transforms density matrices to real space. | |
| subroutine, public | diag_kp_basic (matrix_ks, matrix_s, kpoints, fmwork) |
| Kpoint diagonalization routine Transforms matrices to kpoint, distributes kpoint groups, performs general diagonalization (no storgae of overlap decomposition), stores MOs, calculates occupation numbers, calculates density matrices in kpoint representation, transforms density matrices to real space. | |
| subroutine, public | do_scf_diag_subspace (qs_env, scf_env, subspace_env, mos, rho, ks_env, scf_section, scf_control) |
| inner loop within MOS subspace, to refine occupation and density, before next diagonalization of the Hamiltonian | |
| subroutine, public | diag_subspace_allocate (subspace_env, qs_env, mos) |
| ... | |
| subroutine, public | do_special_diag (scf_env, mos, matrix_ks, scf_control, scf_section, diis_step) |
| the inner loop of scf, specific to diagonalization without S matrix basically, in goes the ks matrix out goes a new p matrix | |
| subroutine, public | do_ot_diag (scf_env, mos, matrix_ks, matrix_s, scf_control, scf_section, diis_step) |
| the inner loop of scf, specific to iterative diagonalization using OT with S matrix; basically, in goes the ks matrix out goes a new p matrix | |
| subroutine, public | do_ot_diag_kp (matrix_ks, matrix_s, matrix_t, kpoints, scf_env, scf_control, diis_step, added_mos_auto_grow) |
| fixed-H OT diagonalization for real or complex K-point channels | |
| subroutine, public | do_roks_diag (scf_env, mos, matrix_ks, matrix_s, scf_control, scf_section, diis_step, orthogonal_basis) |
| Solve a set restricted open Kohn-Sham (ROKS) equations based on the alpha and beta Kohn-Sham matrices from unrestricted Kohn-Sham. | |
| subroutine, public | do_block_krylov_diag (scf_env, mos, matrix_ks, scf_control, scf_section, check_moconv_only) |
| iterative diagonalization using the block Krylov-space approach | |
| subroutine, public | do_block_davidson_diag (qs_env, scf_env, mos, matrix_ks, matrix_s, scf_control, scf_section, check_moconv_only) |
| iterative diagonalization using the block davidson space approach | |
| subroutine, public | do_block_davidson_diag_kp (qs_env, scf_env, matrix_ks_kp, matrix_s_kp, kpoints, scf_control, added_mos_auto_grow) |
| block-Davidson SCF step for complex K points, one channel per (local kpoint, spin); mirrors do_block_davidson_diag for the preconditioner scheduling and do_general_diag_kp for the H(k)/S(k) assembly and the density exit chain | |
| subroutine, public | do_block_krylov_diag_kp (qs_env, scf_env, matrix_ks_kp, matrix_s_kp, kpoints, scf_control, check_moconv_only, added_mos_auto_grow) |
| Block Krylov (Lanczos) refinement of the k-point MOS, the complex counterpart of do_block_krylov_diag: every channel (local kpoint, spin) is standardized with the Cholesky factor of S(k), refined by the complex block-Krylov kernel, and rotated back into the generalized problem. | |
| subroutine, public | diag_kp_smat (matrix_s, kpoints, fmwork, lowdin_forces) |
| Kpoint diagonalization routine Transforms matrices to kpoint, distributes kpoint groups, performs diagonalization. | |
Different diagonalization schemes that can be used for the iterative solution of the eigenvalue problem.
| real(kind=dp) function qs_scf_diagonalization::adiis_candidate_shift | ( | type(qs_scf_env_type), intent(in) | scf_env | ) |
Fade candidate regularization through handover; never regularize a raw-map check.
| scf_env | Current SCF state. |
Definition at line 218 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::general_eigenproblem | ( | type(qs_scf_env_type), pointer | scf_env, |
| type(mo_set_type), dimension(:), intent(in) | mos, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_ks, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_s, | ||
| type(scf_control_type), pointer | scf_control, | ||
| type(section_vals_type), pointer | scf_section, | ||
| logical, intent(inout) | diis_step ) |
the inner loop of scf, specific to diagonalization with S matrix basically, in goes the ks matrix out goes a new p matrix
| scf_env | ... |
| mos | ... |
| matrix_ks | ... |
| matrix_s | ... |
| scf_control | ... |
| scf_section | ... |
| diis_step | ... |
Definition at line 319 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::do_general_diag | ( | type(qs_scf_env_type), pointer | scf_env, |
| type(mo_set_type), dimension(:), intent(inout) | mos, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_ks, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_s, | ||
| type(scf_control_type), pointer | scf_control, | ||
| type(section_vals_type), pointer | scf_section, | ||
| logical, intent(inout) | diis_step, | ||
| type(hairy_probes_type), dimension(:), optional, pointer | probe ) |
...
| scf_env | ... |
| mos | ... |
| matrix_ks | ... |
| matrix_s | ... |
| scf_control | ... |
| scf_section | ... |
| diis_step | ... |
| probe | ... |
Definition at line 633 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::do_general_diag_kp | ( | type(dbcsr_p_type), dimension(:, :), pointer | matrix_ks, |
| type(dbcsr_p_type), dimension(:, :), pointer | matrix_s, | ||
| type(kpoint_type), pointer | kpoints, | ||
| type(qs_scf_env_type), pointer | scf_env, | ||
| type(scf_control_type), pointer | scf_control, | ||
| logical, intent(in) | update_p, | ||
| logical, intent(inout) | diis_step, | ||
| real(dp), intent(inout), optional | diis_error, | ||
| type(qs_environment_type), optional, pointer | qs_env, | ||
| type(hairy_probes_type), dimension(:), optional, pointer | probe, | ||
| logical, intent(out), optional | added_mos_auto_grow, | ||
| real(dp), dimension(:, :), intent(in), optional, target | potential ) |
Kpoint diagonalization routine Transforms matrices to kpoint, distributes kpoint groups, performs general diagonalization (no storgae of overlap decomposition), stores MOs, calculates occupation numbers, calculates density matrices in kpoint representation, transforms density matrices to real space.
| matrix_ks | Kohn-sham matrices (RS indices, global) |
| matrix_s | Overlap matrices (RS indices, global) |
| kpoints | Kpoint environment |
| scf_env | SCF environment |
| scf_control | SCF control variables |
| update_p | ... |
| diis_step | ... |
| diis_error | ... |
| qs_env | ... |
| probe | ... |
| added_mos_auto_grow | true when the adaptive virtual-space buffer must grow |
| potential | Fixed Lowdin orbital potential for non-self-consistent k points. |
Definition at line 706 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::diag_kp_basic | ( | type(dbcsr_p_type), dimension(:, :), pointer | matrix_ks, |
| type(dbcsr_p_type), dimension(:, :), pointer | matrix_s, | ||
| type(kpoint_type), pointer | kpoints, | ||
| type(cp_fm_type), dimension(:), pointer | fmwork ) |
Kpoint diagonalization routine Transforms matrices to kpoint, distributes kpoint groups, performs general diagonalization (no storgae of overlap decomposition), stores MOs, calculates occupation numbers, calculates density matrices in kpoint representation, transforms density matrices to real space.
| matrix_ks | Kohn-sham matrices (RS indices, global) |
| matrix_s | Overlap matrices (RS indices, global) |
| kpoints | Kpoint environment |
| fmwork | global-layout FM template in the first array entry |
Definition at line 1580 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::do_scf_diag_subspace | ( | type(qs_environment_type), pointer | qs_env, |
| type(qs_scf_env_type), pointer | scf_env, | ||
| type(subspace_env_type), pointer | subspace_env, | ||
| type(mo_set_type), dimension(:), intent(inout) | mos, | ||
| type(qs_rho_type), pointer | rho, | ||
| type(qs_ks_env_type), pointer | ks_env, | ||
| type(section_vals_type), pointer | scf_section, | ||
| type(scf_control_type), pointer | scf_control ) |
inner loop within MOS subspace, to refine occupation and density, before next diagonalization of the Hamiltonian
| qs_env | ... |
| scf_env | ... |
| subspace_env | ... |
| mos | ... |
| rho | ... |
| ks_env | ... |
| scf_section | ... |
| scf_control | ... |
Definition at line 1703 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::diag_subspace_allocate | ( | type(subspace_env_type), pointer | subspace_env, |
| type(qs_environment_type), pointer | qs_env, | ||
| type(mo_set_type), dimension(:), intent(in) | mos ) |
...
| subspace_env | ... |
| qs_env | ... |
| mos | ... |
Definition at line 1918 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::do_special_diag | ( | type(qs_scf_env_type), pointer | scf_env, |
| type(mo_set_type), dimension(:), intent(inout) | mos, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_ks, | ||
| type(scf_control_type), pointer | scf_control, | ||
| type(section_vals_type), pointer | scf_section, | ||
| logical, intent(inout) | diis_step ) |
the inner loop of scf, specific to diagonalization without S matrix basically, in goes the ks matrix out goes a new p matrix
| scf_env | ... |
| mos | ... |
| matrix_ks | ... |
| scf_control | ... |
| scf_section | ... |
| diis_step | ... |
Definition at line 1987 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::do_ot_diag | ( | type(qs_scf_env_type), pointer | scf_env, |
| type(mo_set_type), dimension(:), intent(inout) | mos, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_ks, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_s, | ||
| type(scf_control_type), pointer | scf_control, | ||
| type(section_vals_type), pointer | scf_section, | ||
| logical, intent(inout) | diis_step ) |
the inner loop of scf, specific to iterative diagonalization using OT with S matrix; basically, in goes the ks matrix out goes a new p matrix
| scf_env | ... |
| mos | ... |
| matrix_ks | ... |
| matrix_s | ... |
| scf_control | ... |
| scf_section | ... |
| diis_step | ... |
Definition at line 2090 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::do_ot_diag_kp | ( | type(dbcsr_p_type), dimension(:, :), pointer | matrix_ks, |
| type(dbcsr_p_type), dimension(:, :), pointer | matrix_s, | ||
| type(dbcsr_p_type), dimension(:, :), pointer | matrix_t, | ||
| type(kpoint_type), pointer | kpoints, | ||
| type(qs_scf_env_type), pointer | scf_env, | ||
| type(scf_control_type), pointer | scf_control, | ||
| logical, intent(inout) | diis_step, | ||
| logical, intent(out) | added_mos_auto_grow ) |
fixed-H OT diagonalization for real or complex K-point channels
| matrix_ks | real-space Kohn-Sham matrices |
| matrix_s | real-space overlap matrices |
| matrix_t | ... |
| kpoints | K-point environment |
| scf_env | SCF environment |
| scf_control | SCF controls |
| diis_step | set false; density mixing remains the outer accelerator |
| added_mos_auto_grow | request a larger adaptive virtual-space buffer |
Definition at line 2190 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::do_roks_diag | ( | type(qs_scf_env_type), pointer | scf_env, |
| type(mo_set_type), dimension(:), intent(in) | mos, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_ks, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_s, | ||
| type(scf_control_type), pointer | scf_control, | ||
| type(section_vals_type), pointer | scf_section, | ||
| logical, intent(inout) | diis_step, | ||
| logical, intent(in) | orthogonal_basis ) |
Solve a set restricted open Kohn-Sham (ROKS) equations based on the alpha and beta Kohn-Sham matrices from unrestricted Kohn-Sham.
| scf_env | ... |
| mos | ... |
| matrix_ks | ... |
| matrix_s | ... |
| scf_control | ... |
| scf_section | ... |
| diis_step | ... |
| orthogonal_basis | ... |
Definition at line 2351 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::do_block_krylov_diag | ( | type(qs_scf_env_type), pointer | scf_env, |
| type(mo_set_type), dimension(:), intent(inout) | mos, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_ks, | ||
| type(scf_control_type), pointer | scf_control, | ||
| type(section_vals_type), pointer | scf_section, | ||
| logical, intent(in), optional | check_moconv_only ) |
iterative diagonalization using the block Krylov-space approach
| scf_env | ... |
| mos | ... |
| matrix_ks | ... |
| scf_control | ... |
| scf_section | ... |
| check_moconv_only | ... |
par History 05.2009 created [MI]
Definition at line 2626 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::do_block_davidson_diag | ( | type(qs_environment_type), pointer | qs_env, |
| type(qs_scf_env_type), pointer | scf_env, | ||
| type(mo_set_type), dimension(:), intent(inout) | mos, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_ks, | ||
| type(dbcsr_p_type), dimension(:), pointer | matrix_s, | ||
| type(scf_control_type), pointer | scf_control, | ||
| type(section_vals_type), pointer | scf_section, | ||
| logical, intent(in), optional | check_moconv_only ) |
iterative diagonalization using the block davidson space approach
| qs_env | ... |
| scf_env | ... |
| mos | ... |
| matrix_ks | ... |
| matrix_s | ... |
| scf_control | ... |
| scf_section | ... |
| check_moconv_only | ... |
par History 05.2011 created [MI]
Definition at line 2834 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::do_block_davidson_diag_kp | ( | type(qs_environment_type), pointer | qs_env, |
| type(qs_scf_env_type), pointer | scf_env, | ||
| type(dbcsr_p_type), dimension(:, :), pointer | matrix_ks_kp, | ||
| type(dbcsr_p_type), dimension(:, :), pointer | matrix_s_kp, | ||
| type(kpoint_type), pointer | kpoints, | ||
| type(scf_control_type), pointer | scf_control, | ||
| logical, intent(out), optional | added_mos_auto_grow ) |
block-Davidson SCF step for complex K points, one channel per (local kpoint, spin); mirrors do_block_davidson_diag for the preconditioner scheduling and do_general_diag_kp for the H(k)/S(k) assembly and the density exit chain
| qs_env | ... |
| scf_env | ... |
| matrix_ks_kp | real-space Kohn-Sham matrices, dbcsr image set |
| matrix_s_kp | real-space overlap matrix, dbcsr image set |
| kpoints | ... |
| scf_control | ... |
| added_mos_auto_grow | ... |
Definition at line 2953 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::do_block_krylov_diag_kp | ( | type(qs_environment_type), pointer | qs_env, |
| type(qs_scf_env_type), pointer | scf_env, | ||
| type(dbcsr_p_type), dimension(:, :), pointer | matrix_ks_kp, | ||
| type(dbcsr_p_type), dimension(:, :), pointer | matrix_s_kp, | ||
| type(kpoint_type), pointer | kpoints, | ||
| type(scf_control_type), pointer | scf_control, | ||
| logical, intent(in), optional | check_moconv_only, | ||
| logical, intent(out), optional | added_mos_auto_grow ) |
Block Krylov (Lanczos) refinement of the k-point MOS, the complex counterpart of do_block_krylov_diag: every channel (local kpoint, spin) is standardized with the Cholesky factor of S(k), refined by the complex block-Krylov kernel, and rotated back into the generalized problem.
| qs_env | ... |
| scf_env | ... |
| matrix_ks_kp | real-space Kohn-Sham matrix, dbcsr image set |
| matrix_s_kp | real-space overlap matrix, dbcsr image set |
| kpoints | ... |
| scf_control | ... |
| check_moconv_only | only report the convergence statistics |
| added_mos_auto_grow | signals the outer loop that the virtual-space buffer must grow before this SCF step is redone |
Definition at line 3182 of file qs_scf_diagonalization.F.
| subroutine, public qs_scf_diagonalization::diag_kp_smat | ( | type(dbcsr_p_type), dimension(:, :), pointer | matrix_s, |
| type(kpoint_type), pointer | kpoints, | ||
| type(cp_fm_type), dimension(:) | fmwork, | ||
| logical, intent(in), optional | lowdin_forces ) |
Kpoint diagonalization routine Transforms matrices to kpoint, distributes kpoint groups, performs diagonalization.
| matrix_s | Overlap matrices (RS indices, global) |
| kpoints | Kpoint environment |
| fmwork | full matrices distributed over all groups |
| lowdin_forces | retain the overlap spectrum for Lowdin force/stress derivatives |
Definition at line 3734 of file qs_scf_diagonalization.F.