dft_one_e

This module defines the most important providers needed for the DFT and RSDFT calculations:

  • energy_x and energy_c : the exchange and correlation energy functionals (see e_xc_general.irp.f)

  • potential_x_alpha_ao and potential_x_beta_ao : the exchange potential for alpha/beta electrons (see pot_general.irp.f)

  • potential_c_alpha_ao and potential_c_beta_ao : the correlation potential for alpha/beta electrons (see pot_general.irp.f)

These providers are then used in the ks_scf and rs_ks_scf programs, together within some RSDFT external plugins (see https://gitlab.com/eginer/qp_plugins_eginer).

The flexibility of the functionals is handle by the two following keywords (see dft_keywords):

In the core modules of the Quantum Package, two functionals are implemented:

  • “LDA” or “short_range_LDA” for, respectively the LDA and its short-range version

  • “PBE” or “short_range_PBE” for, respectively the PBE and its short-range version

Providers

energy_c

File : dft_one_e/e_xc_general.irp.f

double precision, allocatable   :: energy_c     (N_states)

correlation and exchange energies general providers.

Needs:

  • correlation_functional

  • energy_c_lda

  • energy_c_none

  • energy_c_pbe

  • energy_c_sr_lda

  • energy_x_sr_pbe

  • n_states

Needed by:

  • e_correlation_dft

energy_x

File : dft_one_e/e_xc_general.irp.f

double precision, allocatable   :: energy_x     (N_states)

correlation energies general providers.

Needs:

  • energy_x_lda

  • energy_x_none

  • energy_x_pbe

  • energy_x_sr_lda

  • energy_x_sr_pbe

  • exchange_functional

  • n_states

Needed by:

  • e_exchange_dft

potential_c_alpha_ao

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_c_alpha_ao (ao_num,ao_num,N_states)
double precision, allocatable   :: potential_c_beta_ao  (ao_num,ao_num,N_states)

general providers for the alpha/beta correlation potentials on the AO basis

Needs:

  • ao_num

  • correlation_functional

  • n_states

  • potential_c_alpha_ao_lda

  • potential_c_alpha_ao_none

  • potential_c_alpha_ao_sr_lda

  • potential_c_beta_ao_none

  • potential_x_alpha_ao_pbe

  • potential_x_alpha_ao_sr_pbe

Needed by:

  • ao_potential_alpha_xc

  • potential_c_alpha_mo

potential_c_alpha_mo

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_c_alpha_mo (mo_num,mo_num,N_states)
double precision, allocatable   :: potential_c_beta_mo  (mo_num,mo_num,N_states)

general providers for the alpha/beta correlation potentials on the MO basis

Needs:

  • ao_num

  • mo_coef

  • mo_num

  • n_states

  • potential_c_alpha_ao

Needed by:

  • effective_one_e_potential

  • trace_v_xc

potential_c_beta_ao

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_c_alpha_ao (ao_num,ao_num,N_states)
double precision, allocatable   :: potential_c_beta_ao  (ao_num,ao_num,N_states)

general providers for the alpha/beta correlation potentials on the AO basis

Needs:

  • ao_num

  • correlation_functional

  • n_states

  • potential_c_alpha_ao_lda

  • potential_c_alpha_ao_none

  • potential_c_alpha_ao_sr_lda

  • potential_c_beta_ao_none

  • potential_x_alpha_ao_pbe

  • potential_x_alpha_ao_sr_pbe

Needed by:

  • ao_potential_alpha_xc

  • potential_c_alpha_mo

potential_c_beta_mo

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_c_alpha_mo (mo_num,mo_num,N_states)
double precision, allocatable   :: potential_c_beta_mo  (mo_num,mo_num,N_states)

general providers for the alpha/beta correlation potentials on the MO basis

Needs:

  • ao_num

  • mo_coef

  • mo_num

  • n_states

  • potential_c_alpha_ao

Needed by:

  • effective_one_e_potential

  • trace_v_xc

potential_x_alpha_ao

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_x_alpha_ao (ao_num,ao_num,N_states)
double precision, allocatable   :: potential_x_beta_ao  (ao_num,ao_num,N_states)

general providers for the alpha/beta exchange potentials on the AO basis

Needs:

  • ao_num

  • exchange_functional

  • n_states

  • potential_x_alpha_ao_lda

  • potential_x_alpha_ao_none

  • potential_x_alpha_ao_pbe

  • potential_x_alpha_ao_sr_lda

  • potential_x_alpha_ao_sr_pbe

  • potential_x_beta_ao_none

Needed by:

  • ao_potential_alpha_xc

  • potential_x_alpha_mo

potential_x_alpha_mo

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_x_alpha_mo (mo_num,mo_num,N_states)
double precision, allocatable   :: potential_x_beta_mo  (mo_num,mo_num,N_states)

general providers for the alpha/beta exchange potentials on the MO basis

Needs:

  • ao_num

  • mo_coef

  • mo_num

  • n_states

  • potential_x_alpha_ao

Needed by:

  • effective_one_e_potential

  • trace_v_xc

potential_x_beta_ao

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_x_alpha_ao (ao_num,ao_num,N_states)
double precision, allocatable   :: potential_x_beta_ao  (ao_num,ao_num,N_states)

general providers for the alpha/beta exchange potentials on the AO basis

Needs:

  • ao_num

  • exchange_functional

  • n_states

  • potential_x_alpha_ao_lda

  • potential_x_alpha_ao_none

  • potential_x_alpha_ao_pbe

  • potential_x_alpha_ao_sr_lda

  • potential_x_alpha_ao_sr_pbe

  • potential_x_beta_ao_none

Needed by:

  • ao_potential_alpha_xc

  • potential_x_alpha_mo

potential_x_beta_mo

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_x_alpha_mo (mo_num,mo_num,N_states)
double precision, allocatable   :: potential_x_beta_mo  (mo_num,mo_num,N_states)

general providers for the alpha/beta exchange potentials on the MO basis

Needs:

  • ao_num

  • mo_coef

  • mo_num

  • n_states

  • potential_x_alpha_ao

Needed by:

  • effective_one_e_potential

  • trace_v_xc

potential_xc_alpha_ao

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_xc_alpha_ao        (ao_num,ao_num,N_states)
double precision, allocatable   :: potential_xc_beta_ao (ao_num,ao_num,N_states)

general providers for the alpha/beta exchange/correlation potentials on the AO basis

Needs:

  • ao_num

  • exchange_functional

  • n_states

  • potential_xc_alpha_ao_lda

  • potential_xc_alpha_ao_none

  • potential_xc_alpha_ao_pbe

  • potential_xc_alpha_ao_sr_lda

  • potential_xc_alpha_ao_sr_pbe

  • potential_xc_beta_ao_none

Needed by:

  • ao_potential_alpha_xc

  • potential_xc_alpha_mo

potential_xc_alpha_mo

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_xc_alpha_mo        (mo_num,mo_num,N_states)
double precision, allocatable   :: potential_xc_beta_mo (mo_num,mo_num,N_states)

Needs:

  • ao_num

  • mo_coef

  • mo_num

  • n_states

  • potential_xc_alpha_ao

Needed by:

  • trace_v_xc_new

potential_xc_beta_ao

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_xc_alpha_ao        (ao_num,ao_num,N_states)
double precision, allocatable   :: potential_xc_beta_ao (ao_num,ao_num,N_states)

general providers for the alpha/beta exchange/correlation potentials on the AO basis

Needs:

  • ao_num

  • exchange_functional

  • n_states

  • potential_xc_alpha_ao_lda

  • potential_xc_alpha_ao_none

  • potential_xc_alpha_ao_pbe

  • potential_xc_alpha_ao_sr_lda

  • potential_xc_alpha_ao_sr_pbe

  • potential_xc_beta_ao_none

Needed by:

  • ao_potential_alpha_xc

  • potential_xc_alpha_mo

potential_xc_beta_mo

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: potential_xc_alpha_mo        (mo_num,mo_num,N_states)
double precision, allocatable   :: potential_xc_beta_mo (mo_num,mo_num,N_states)

Needs:

  • ao_num

  • mo_coef

  • mo_num

  • n_states

  • potential_xc_alpha_ao

Needed by:

  • trace_v_xc_new

trace_v_h

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: trace_v_xc   (N_states)
double precision, allocatable   :: trace_v_h    (N_states)
double precision, allocatable   :: trace_v_hxc  (N_states)

Trace_v_xc = sum_{i,j} (rho_{ij}_alpha v^{xc}_{ij}^alpha + rho_{ij}_beta v^{xc}_{ij}^beta) Trace_v_Hxc = sum_{i,j} v^{H}_{ij} (rho_{ij}_alpha + rho_{ij}_beta) Trace_v_Hxc = sum_{i,j} rho_{ij} v^{Hxc}_{ij}

Needs:

  • mo_num

  • n_states

  • one_e_dm_mo_alpha_for_dft

  • one_e_dm_mo_beta_for_dft

  • potential_c_alpha_mo

  • potential_x_alpha_mo

  • short_range_hartree_operator

trace_v_hxc

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: trace_v_xc   (N_states)
double precision, allocatable   :: trace_v_h    (N_states)
double precision, allocatable   :: trace_v_hxc  (N_states)

Trace_v_xc = sum_{i,j} (rho_{ij}_alpha v^{xc}_{ij}^alpha + rho_{ij}_beta v^{xc}_{ij}^beta) Trace_v_Hxc = sum_{i,j} v^{H}_{ij} (rho_{ij}_alpha + rho_{ij}_beta) Trace_v_Hxc = sum_{i,j} rho_{ij} v^{Hxc}_{ij}

Needs:

  • mo_num

  • n_states

  • one_e_dm_mo_alpha_for_dft

  • one_e_dm_mo_beta_for_dft

  • potential_c_alpha_mo

  • potential_x_alpha_mo

  • short_range_hartree_operator

trace_v_xc

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: trace_v_xc   (N_states)
double precision, allocatable   :: trace_v_h    (N_states)
double precision, allocatable   :: trace_v_hxc  (N_states)

Trace_v_xc = sum_{i,j} (rho_{ij}_alpha v^{xc}_{ij}^alpha + rho_{ij}_beta v^{xc}_{ij}^beta) Trace_v_Hxc = sum_{i,j} v^{H}_{ij} (rho_{ij}_alpha + rho_{ij}_beta) Trace_v_Hxc = sum_{i,j} rho_{ij} v^{Hxc}_{ij}

Needs:

  • mo_num

  • n_states

  • one_e_dm_mo_alpha_for_dft

  • one_e_dm_mo_beta_for_dft

  • potential_c_alpha_mo

  • potential_x_alpha_mo

  • short_range_hartree_operator

trace_v_xc_new

File : dft_one_e/pot_general.irp.f

double precision, allocatable   :: trace_v_xc_new       (N_states)

Trace_v_xc = sum_{i,j} (rho_{ij}_alpha v^{xc}_{ij}^alpha + rho_{ij}_beta v^{xc}_{ij}^beta)

Needs:

  • mo_num

  • n_states

  • one_e_dm_mo_alpha_for_dft

  • one_e_dm_mo_beta_for_dft

  • potential_xc_alpha_mo