Documentation for module qs_scf_loop_utils

Utility routines for qs_scf

source: qs_scf_loop_utils.F
Loading...

public Subroutines/Functions:

checks whether exit conditions for inner loop are satisfied
checks whether exit conditions for outer loop are satisfied
Performs the requested density mixing if any needed
Performes the necessary steps before leaving innner scf loop
takes known energy and derivatives and produces new wfns and or density matrix
Updates MOs and density matrix using diagonalization Kpoint code
Performes the updates rho (takes care of mixing as well)
computes properties for a given hamiltonian using the current wfn

SUBROUTINEqs_scf_check_inner_exit(qs_env, scf_env, scf_control, should_stop, exit_inner_loop, inner_loop_converged, output_unit)

checks whether exit conditions for inner loop are satisfied

Arguments:
POINTER
:: qs_env ...
POINTER
:: scf_env ...
POINTER
:: scf_control ...
LOGICAL
:: should_stop ...
LOGICAL
:: exit_inner_loop ...
LOGICAL
:: inner_loop_converged ...
INTEGER
:: output_unit ...

SUBROUTINEqs_scf_check_outer_exit(qs_env, scf_env, scf_control, should_stop, outer_loop_converged, exit_outer_loop)

checks whether exit conditions for outer loop are satisfied

Arguments:
POINTER
:: qs_env ...
POINTER
:: scf_env ...
POINTER
:: scf_control ...
LOGICAL
:: should_stop ...
LOGICAL
:: outer_loop_converged ...
LOGICAL
:: exit_outer_loop ...

SUBROUTINEqs_scf_density_mixing(scf_env, rho, para_env, diis_step)

Performs the requested density mixing if any needed

Arguments:
POINTER
:: scf_env Holds SCF environment information
POINTER
:: rho All data for the electron density
POINTER
:: para_env Parallel environment
LOGICAL
:: diis_step Did we do a DIIS step?

SUBROUTINEqs_scf_inner_finalize(scf_env, qs_env, diis_step, output_unit)

Performes the necessary steps before leaving innner scf loop

Arguments:
POINTER
:: scf_env ...
POINTER
:: qs_env ...
LOGICAL
:: diis_step ...
INTEGER,
INTENT(in)
:: output_unit ...

SUBROUTINEqs_scf_new_mos(qs_env, scf_env, scf_control, scf_section, diis_step, energy_only)

takes known energy and derivatives and produces new wfns and or density matrix

Arguments:
POINTER
:: qs_env ...
POINTER
:: scf_env ...
POINTER
:: scf_control ...
POINTER
:: scf_section ...
LOGICAL
:: diis_step ...
LOGICAL
:: energy_only ...

SUBROUTINEqs_scf_new_mos_kp(qs_env, scf_env, scf_control, diis_step)

Updates MOs and density matrix using diagonalization Kpoint code

Arguments:
POINTER
:: qs_env ...
POINTER
:: scf_env ...
POINTER
:: scf_control ...
LOGICAL
:: diis_step ...

SUBROUTINEqs_scf_rho_update(rho, qs_env, scf_env, ks_env, mix_rho)

Performes the updates rho (takes care of mixing as well)

Arguments:
POINTER
:: rho ...
POINTER
:: qs_env ...
POINTER
:: scf_env ...
POINTER
:: ks_env ...
LOGICAL,
INTENT(in)
:: mix_rho ...

SUBROUTINEqs_scf_set_loop_flags(scf_env, diis_step, energy_only, just_energy, exit_inner_loop)

computes properties for a given hamiltonian using the current wfn

Arguments:
POINTER
:: scf_env ...
LOGICAL
:: diis_step ...
LOGICAL
:: energy_only ...
LOGICAL
:: just_energy ...
LOGICAL
:: exit_inner_loop ...