scf Module

HFS and HF calculation for the molecular system using the LCAO written by Yajiang Hao, Ludger Inhester in 2014-2016 at DESY CFEL Mulliken atomic population analysis was written by Sang-Kil, Son in Sep 2014. This module contains the core part of DFT calculation, i.e. SCF procedure. During SCF we use DIIS to accelate the convergency.



Subroutines

public subroutine scf_procedure(p, a, g, b, f)

main SCF prodedure if( .NOT. (P%yes_soscf .and. iter>3 .and. ( iSOSCF>0 .or. F%d_rho < P%SOSCF_start(2) )) ) then << this is wrong : we have to check if SOSCF is actually started (see return value of soscf_driver) if( allocated(F%apply_looser_threshold) )then; if( F%apply_looser_threshold(j,i) .and. iter>=acceptable_convergenceAt_old(j,i)-1 .and. iter<acceptable_convergenceAt_old(j,i)+6 )then; write(*,'(a,i4,2f12.6,a,2es12.4,a,2i2)')"#SCF:apply_lower check convergence around expected point:",iter, dE, F%d_rho,"/",eTHR,dTHR,":",j,i endif; endif --- minimal print option for MC ---

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(atom_set), intent(in) :: a(:)
type(grid3d), intent(in) :: g
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f

public subroutine print_orbitals(p, b, f, string)

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(basis), intent(in) :: b
type(wf_data), intent(in) :: f
character(len=*), intent(in) :: string

public subroutine prepare_initial_guess(p, a, g, b, f)

prepares the initial guess

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(atom_set), intent(in) :: a(:)
type(grid3d), intent(in) :: g
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f

public subroutine construct_h0_matrix(g, b, f)

calculates the H0 matrix for given basis B: hkin+v_ext contribution

Arguments

Type IntentOptional Attributes Name
type(grid3d), intent(in) :: g
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f

public subroutine stability_analysis(p, a, g, b, f)

performs stability analysis by inspecting numerical derivatives of the Fock matrix

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(atom_set), intent(in) :: a(:)
type(grid3d), intent(in) :: g
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f