(git:f7b9015)
Loading...
Searching...
No Matches
qs_scf_diagonalization Module Reference

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.

Detailed Description

Different diagonalization schemes that can be used for the iterative solution of the eigenvalue problem.

History
started from routines previously located in the qs_scf module 05.2009

Function/Subroutine Documentation

◆ adiis_candidate_shift()

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.

Parameters
scf_envCurrent SCF state.
Returns
...

Definition at line 218 of file qs_scf_diagonalization.F.

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

◆ general_eigenproblem()

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

Parameters
scf_env...
mos...
matrix_ks...
matrix_s...
scf_control...
scf_section...
diis_step...
History
03.2006 created [Joost VandeVondele]

Definition at line 319 of file qs_scf_diagonalization.F.

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

◆ do_general_diag()

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 )

...

Parameters
scf_env...
mos...
matrix_ks...
matrix_s...
scf_control...
scf_section...
diis_step...
probe...

Definition at line 633 of file qs_scf_diagonalization.F.

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

◆ do_general_diag_kp()

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.

Parameters
matrix_ksKohn-sham matrices (RS indices, global)
matrix_sOverlap matrices (RS indices, global)
kpointsKpoint environment
scf_envSCF environment
scf_controlSCF control variables
update_p...
diis_step...
diis_error...
qs_env...
probe...
added_mos_auto_growtrue when the adaptive virtual-space buffer must grow
potentialFixed Lowdin orbital potential for non-self-consistent k points.
History
08.2014 created [JGH]

Definition at line 706 of file qs_scf_diagonalization.F.

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

◆ diag_kp_basic()

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.

Parameters
matrix_ksKohn-sham matrices (RS indices, global)
matrix_sOverlap matrices (RS indices, global)
kpointsKpoint environment
fmworkglobal-layout FM template in the first array entry
History
08.2014 created [JGH]

Definition at line 1580 of file qs_scf_diagonalization.F.

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

◆ do_scf_diag_subspace()

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

Parameters
qs_env...
scf_env...
subspace_env...
mos...
rho...
ks_env...
scf_section...
scf_control...
History
09.2009 created [MI]
Note
it is assumed that when diagonalization is used, also some mixing procedure is active

Definition at line 1703 of file qs_scf_diagonalization.F.

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

◆ diag_subspace_allocate()

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 )

...

Parameters
subspace_env...
qs_env...
mos...

Definition at line 1918 of file qs_scf_diagonalization.F.

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

◆ do_special_diag()

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

Parameters
scf_env...
mos...
matrix_ks...
scf_control...
scf_section...
diis_step...
History
03.2006 created [Joost VandeVondele]

Definition at line 1987 of file qs_scf_diagonalization.F.

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

◆ do_ot_diag()

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

Parameters
scf_env...
mos...
matrix_ks...
matrix_s...
scf_control...
scf_section...
diis_step...
History
10.2008 created [JGH]

Definition at line 2090 of file qs_scf_diagonalization.F.

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

◆ do_ot_diag_kp()

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

Parameters
matrix_ksreal-space Kohn-Sham matrices
matrix_sreal-space overlap matrices
matrix_t...
kpointsK-point environment
scf_envSCF environment
scf_controlSCF controls
diis_stepset false; density mixing remains the outer accelerator
added_mos_auto_growrequest a larger adaptive virtual-space buffer

Definition at line 2190 of file qs_scf_diagonalization.F.

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

◆ do_roks_diag()

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.

Parameters
scf_env...
mos...
matrix_ks...
matrix_s...
scf_control...
scf_section...
diis_step...
orthogonal_basis...
History
04.2006 created [MK] Revised (01.05.06,MK)
Note
this is only a high-spin ROKS.

Definition at line 2351 of file qs_scf_diagonalization.F.

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

◆ do_block_krylov_diag()

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

Parameters
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.

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

◆ do_block_davidson_diag()

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

Parameters
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.

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

◆ do_block_davidson_diag_kp()

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

Parameters
qs_env...
scf_env...
matrix_ks_kpreal-space Kohn-Sham matrices, dbcsr image set
matrix_s_kpreal-space overlap matrix, dbcsr image set
kpoints...
scf_control...
added_mos_auto_grow...

Definition at line 2953 of file qs_scf_diagonalization.F.

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

◆ do_block_krylov_diag_kp()

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.

Parameters
qs_env...
scf_env...
matrix_ks_kpreal-space Kohn-Sham matrix, dbcsr image set
matrix_s_kpreal-space overlap matrix, dbcsr image set
kpoints...
scf_control...
check_moconv_onlyonly report the convergence statistics
added_mos_auto_growsignals 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.

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

◆ diag_kp_smat()

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.

Parameters
matrix_sOverlap matrices (RS indices, global)
kpointsKpoint environment
fmworkfull matrices distributed over all groups
lowdin_forcesretain the overlap spectrum for Lowdin force/stress derivatives
History
02.2026 created [JGH]

Definition at line 3734 of file qs_scf_diagonalization.F.

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