(git:6a2e663)
hfx_exx Module Reference

Routines to calculate EXX in RPA and energy correction methods. More...

Functions/Subroutines

subroutine, public calculate_exx (qs_env, unit_nr, hfx_sections, x_data, do_gw, do_admm, calc_forces, reuse_hfx, do_im_time, E_ex_from_GW, E_admm_from_GW, t3)
 ... More...
 
subroutine, public add_exx_to_rhs (rhs, qs_env, ext_hfx_section, x_data, recalc_integrals, do_admm, do_ec, do_exx, reuse_hfx)
 Add the EXX contribution to the RHS of the Z-vector equation, namely the HF Hamiltonian. More...
 
subroutine, public calc_exx_admm_xc_contributions (qs_env, matrix_prim, matrix_aux, x_data, exc, exc_aux_fit, calc_forces, use_virial)
 Calculate the RI_RPAHF / EC_ENVHF ADMM XC contributions to the KS matrices and the respective energies. More...
 
subroutine, public exx_pre_hfx (ext_hfx_section, x_data, reuse_hfx)
 Prepare the external x_data for integration. Simply change the HFX fraction in case the qs_envx_data is reused. More...
 
subroutine, public exx_post_hfx (qs_env, x_data, reuse_hfx)
 Revert back to the proper HFX fraction in case qs_envx_data is reused. More...
 

Detailed Description

Routines to calculate EXX in RPA and energy correction methods.

History
07.2020 separated from mp2.F [F. Stein, code by Jan Wilhelm] 06.2022 EXX contribution to the forces [A. Bussy] 03.2023 Generalized for energy correction methods
Author
Jan Wilhelm, Frederick Stein, Augustin Bussy, Fabian Belleflamme

Function/Subroutine Documentation

◆ calculate_exx()

subroutine, public hfx_exx::calculate_exx ( type(qs_environment_type), pointer  qs_env,
integer, intent(in)  unit_nr,
type(section_vals_type), pointer  hfx_sections,
type(hfx_type), dimension(:, :), pointer  x_data,
logical, intent(in)  do_gw,
logical, intent(in)  do_admm,
logical, intent(in)  calc_forces,
logical, intent(in)  reuse_hfx,
logical, intent(in)  do_im_time,
real(kind=dp), intent(in)  E_ex_from_GW,
real(kind=dp), dimension(2), intent(in)  E_admm_from_GW,
real(kind=dp), intent(in)  t3 
)

...

Parameters
qs_env...
unit_nr...
hfx_sections...
x_data...
do_gw...
do_admm...
calc_forces...
reuse_hfx...
do_im_time...
E_ex_from_GW...
E_admm_from_GW...
t3...

Definition at line 103 of file hfx_exx.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_exx_to_rhs()

subroutine, public hfx_exx::add_exx_to_rhs ( type(dbcsr_p_type), dimension(:), intent(in)  rhs,
type(qs_environment_type), pointer  qs_env,
type(section_vals_type), pointer  ext_hfx_section,
type(hfx_type), dimension(:, :), pointer  x_data,
logical, intent(in), optional  recalc_integrals,
logical, intent(in), optional  do_admm,
logical, intent(in), optional  do_ec,
logical, intent(in), optional  do_exx,
logical, intent(in), optional  reuse_hfx 
)

Add the EXX contribution to the RHS of the Z-vector equation, namely the HF Hamiltonian.

Parameters
rhs...
qs_env...
ext_hfx_section...
x_data...
recalc_integrals...
do_admm...
do_ec...
do_exx...
reuse_hfx...

Definition at line 323 of file hfx_exx.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calc_exx_admm_xc_contributions()

subroutine, public hfx_exx::calc_exx_admm_xc_contributions ( type(qs_environment_type), pointer  qs_env,
type(dbcsr_p_type), dimension(:), pointer  matrix_prim,
type(dbcsr_p_type), dimension(:), pointer  matrix_aux,
type(hfx_type), dimension(:, :), pointer  x_data,
real(dp), intent(inout)  exc,
real(dp), intent(inout)  exc_aux_fit,
logical, intent(in)  calc_forces,
logical, intent(in)  use_virial 
)

Calculate the RI_RPAHF / EC_ENVHF ADMM XC contributions to the KS matrices and the respective energies.

Parameters
qs_env...
matrix_prim...
matrix_aux...
x_data...
exc...
exc_aux_fit...
calc_forces...
use_virial...

Definition at line 627 of file hfx_exx.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exx_pre_hfx()

subroutine, public hfx_exx::exx_pre_hfx ( type(section_vals_type), pointer  ext_hfx_section,
type(hfx_type), dimension(:, :), pointer  x_data,
logical  reuse_hfx 
)

Prepare the external x_data for integration. Simply change the HFX fraction in case the qs_envx_data is reused.

Parameters
ext_hfx_section...
x_data...
reuse_hfx...

Definition at line 734 of file hfx_exx.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exx_post_hfx()

subroutine, public hfx_exx::exx_post_hfx ( type(qs_environment_type), pointer  qs_env,
type(hfx_type), dimension(:, :), pointer  x_data,
logical  reuse_hfx 
)

Revert back to the proper HFX fraction in case qs_envx_data is reused.

Parameters
qs_env...
x_data...
reuse_hfx...

Definition at line 759 of file hfx_exx.F.

Here is the call graph for this function:
Here is the caller graph for this function: