scf_converger Module


Uses

  • module~~scf_converger~~UsesGraph module~scf_converger scf_converger module~precision precision module~scf_converger->module~precision iso_fortran_env iso_fortran_env module~precision->iso_fortran_env

Used by

  • module~~scf_converger~~UsedByGraph module~scf_converger scf_converger proc~scf_driver scf_driver proc~scf_driver->module~scf_converger

Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: conv_none = 1
integer, public, parameter :: conv_cdiis = 2
integer, public, parameter :: conv_ediis = 3
integer, public, parameter :: conv_adiis = 4
integer, public, parameter :: conv_dtype_fock = 1
integer, public, parameter :: conv_dtype_err = 2
integer, public, parameter :: conv_dtype_density = 3
integer, public, parameter :: conv_dtype_energy = 4
integer, public, parameter :: conv_state_not_initialized = 0
integer, public, parameter :: conv_state_initialized = 1
integer, public, parameter :: conv_name_maxlen = 32

Derived Types

type, public ::  scf_conv_result

@brief Base type for SCF converger results @detail It is used by main SCF convergence driver scf_conv The extending type should provide the following interfaces: init : preliminary initialization of internal subconverger data clean : destructor setup : setting-up of the sub-converger equations, taking into the account the new data added in main SCF driver run : solving the equations, returns scf_conv_result datatype. Multiple subsequent calls to this procedure without re-running setup should not change internal state and have to give same results

Components

Type Visibility Attributes Name Initial
integer, public :: ierr = 5
real(kind=dp), public :: error = 1.0e99_dp
type(converger_data), public, pointer :: dat => null()
character(len=conv_name_maxlen), public :: active_converger_name = ''

Type-Bound Procedures

procedure, public, pass :: get_fock => conv_result_dummy_get_fock
procedure, public, pass :: get_density => conv_result_dummy_get_density

type, public ::  scf_conv

@brief Main driver for converging SCF problems @detail Manages and runs different real convergers depending on the current state of SCF optimization

Components

Type Visibility Attributes Name Initial
integer, public :: step
real(kind=dp), public, pointer :: overlap(:,:) => null()
real(kind=dp), public, pointer :: overlap_sqrt(:,:) => null()
type(converger_data), public :: dat
type(subconverger_), public, allocatable :: sconv(:)
real(kind=dp), public, allocatable :: thresholds(:)
integer, public :: iter_space_size = 10
integer, public :: verbose = 0
integer, public :: state = 0
real(kind=dp), public :: current_error = 1.0e99_dp

Type-Bound Procedures

procedure, public, pass :: init => scf_conv_init
procedure, public, pass :: clean => scf_conv_clean
procedure, public, pass :: add_data => scf_conv_add_data
procedure, public, pass :: run => scf_conv_run