scf_conv Derived Type

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


Inherits

type~~scf_conv~~InheritsGraph type~scf_conv scf_conv type~converger_data converger_data type~scf_conv->type~converger_data dat type~subconverger_ subconverger_ type~scf_conv->type~subconverger_ sconv type~subconverger subconverger type~subconverger_->type~subconverger s type~subconverger->type~converger_data dat

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

  • private subroutine scf_conv_init(self, ldim, maxvec, subconvergers, thresholds, overlap, overlap_sqrt, num_focks, verbose)

    @brief Initializes the SCF converger driver @param[in] ldim Number of orbitals @param[in] maxvec Size of SCF converger linear space, e.g. number of DIIS vectors @param[in] subconvergers Array of SCF subconverger codes @param[in] thresholds Thresholds to initate subconverger subconvergers[i] runs when current error is less than thresholds[i] @param[in] overlap overlap matrix (S) in full format @param[in] overlap_sqrt S^(1/2) matrix in full format @param[in] num_focks 1 if R/ROHF, 2 if UHF @param[in] verbose sets verbosity

    Arguments

    Type IntentOptional Attributes Name
    class(scf_conv) :: self
    integer, intent(in) :: ldim
    integer, intent(in), optional :: maxvec
    integer, intent(in), optional :: subconvergers(:)
    real(kind=dp), intent(in), optional :: thresholds(:)
    real(kind=dp), intent(in), optional, target :: overlap(:,:)
    real(kind=dp), intent(in), optional, target :: overlap_sqrt(:,:)
    integer, intent(in), optional :: num_focks
    integer, intent(in), optional :: verbose

procedure, public, pass :: clean => scf_conv_clean

  • private subroutine scf_conv_clean(self)

    @brief Finalize scf_conv datatype

    Arguments

    Type IntentOptional Attributes Name
    class(scf_conv) :: self

procedure, public, pass :: add_data => scf_conv_add_data

  • private subroutine scf_conv_add_data(self, f, dens, e)

    @brief Store the data from the new SCF iteration @param[in] f Fock matrix/matrices @param[in] dens Density matrix/matrices @param[in] e SCF energy

    Arguments

    Type IntentOptional Attributes Name
    class(scf_conv), intent(inout) :: self
    real(kind=dp), intent(in) :: f(:,:)
    real(kind=dp), intent(in) :: dens(:,:)
    real(kind=dp), intent(in), optional :: e

procedure, public, pass :: run => scf_conv_run

  • private subroutine scf_conv_run(self, conv_result)

    @brief Computes the new guess to the SCF wavefunction @param[out] conv_result results of the calculation

    Arguments

    Type IntentOptional Attributes Name
    class(scf_conv), target :: self
    class(scf_conv_result), allocatable :: conv_result