(git:6a2e663)
qs_tddfpt2_operators Module Reference

Functions/Subroutines

subroutine, public tddfpt_apply_energy_diff (Aop_evects, evects, S_evects, gs_mos, matrix_ks)
 Apply orbital energy difference term: Aop_evects(spin,state) += KS(spin) * evects(spin,state) - S * evects(spin,state) * diag(evals_occ(spin)) More...
 
subroutine, public tddfpt_apply_coulomb (A_ia_rspace, rho_ia_g, local_rho_set, hartree_local, qs_env, sub_env, gapw, work_v_gspace, work_v_rspace)
 Update v_rspace by adding coulomb term. More...
 
subroutine, public tddfpt_apply_xc (A_ia_rspace, kernel_env, rho_ia_struct, is_rks_triplets, pw_env, work_v_xc, work_v_xc_tau)
 Driver routine for applying fxc (analyic vs. finite difference for testing. More...
 
subroutine, public tddfpt_apply_xc_potential (A_ia_rspace, fxc_rspace, rho_ia_struct, is_rks_triplets)
 Routine for applying fxc potential. More...
 
subroutine, public tddfpt_apply_hfx (Aop_evects, evects, gs_mos, do_admm, qs_env, work_rho_ia_ao_symm, work_hmat_symm, work_rho_ia_ao_asymm, work_hmat_asymm, wfm_rho_orb)
 Update action of TDDFPT operator on trial vectors by adding exact-exchange term. More...
 
subroutine, public tddfpt_apply_hfxsr_kernel (Aop_evects, evects, gs_mos, qs_env, admm_env, hfx_section, x_data, symmetry, recalc_integrals, work_rho_ia_ao, work_hmat, wfm_rho_orb)
 Update action of TDDFPT operator on trial vectors by adding exact-exchange term. More...
 
subroutine, public tddfpt_apply_hfxlr_kernel (qs_env, sub_env, rcut, hfx_scale, work, X, res)
 ...Calculate the HFXLR kernel contribution by contracting the Lowdin MO coefficients – transition charges with the exchange-type integrals using the sTDA approximation More...
 

Function/Subroutine Documentation

◆ tddfpt_apply_energy_diff()

subroutine, public qs_tddfpt2_operators::tddfpt_apply_energy_diff ( type(cp_fm_type), dimension(:, :), intent(in)  Aop_evects,
type(cp_fm_type), dimension(:, :), intent(in)  evects,
type(cp_fm_type), dimension(:, :), intent(in)  S_evects,
type(tddfpt_ground_state_mos), dimension(:), intent(in)  gs_mos,
type(dbcsr_p_type), dimension(:), intent(in)  matrix_ks 
)

Apply orbital energy difference term: Aop_evects(spin,state) += KS(spin) * evects(spin,state) - S * evects(spin,state) * diag(evals_occ(spin))

Parameters
Aop_evectsaction of TDDFPT operator on trial vectors (modified on exit)
evectstrial vectors C_{1,i}
S_evectsS * C_{1,i}
gs_mosmolecular orbitals optimised for the ground state (only occupied orbital energies [component evals_occ] are needed)
matrix_ksKohn-Sham matrix
History
  • 05.2016 initialise all matrix elements in one go [Sergey Chulkov]
  • 03.2017 renamed from tddfpt_init_energy_diff(), altered prototype [Sergey Chulkov]
Note
Based on the subroutine p_op_l1() which was originally created by Thomas Chassaing on 08.2002.

Definition at line 101 of file qs_tddfpt2_operators.F.

Here is the call graph for this function:

◆ tddfpt_apply_coulomb()

subroutine, public qs_tddfpt2_operators::tddfpt_apply_coulomb ( type(pw_r3d_rs_type), dimension(:), intent(inout)  A_ia_rspace,
type(pw_c1d_gs_type), intent(inout)  rho_ia_g,
type(local_rho_type), pointer  local_rho_set,
type(hartree_local_type), pointer  hartree_local,
type(qs_environment_type), pointer  qs_env,
type(tddfpt_subgroup_env_type), intent(in)  sub_env,
logical, intent(in)  gapw,
type(pw_c1d_gs_type), intent(inout)  work_v_gspace,
type(pw_r3d_rs_type), intent(inout)  work_v_rspace 
)

Update v_rspace by adding coulomb term.

Parameters
A_ia_rspaceaction of TDDFPT operator on the trial vector expressed in a plane wave representation (modified on exit)
rho_ia_gresponse density in reciprocal space for the given trial vector
local_rho_set...
hartree_local...
qs_env...
sub_envthe full sub_environment needed for calculation
gapwFlag indicating GAPW cacluation
work_v_gspacework reciprocal-space grid to store Coulomb potential (modified on exit)
work_v_rspacework real-space grid to store Coulomb potential (modified on exit)
History
  • 05.2016 compute all coulomb terms in one go [Sergey Chulkov]
  • 03.2017 proceed excited states sequentially; minimise the number of conversions between DBCSR and FM matrices [Sergey Chulkov]
  • 06.2018 return the action expressed in the plane wave representation instead of the one in the atomic basis set representation
Note
Based on the subroutine kpp1_calc_k_p_p1() which was originally created by Mohamed Fawzi on 10.2002.

Definition at line 170 of file qs_tddfpt2_operators.F.

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

◆ tddfpt_apply_xc()

subroutine, public qs_tddfpt2_operators::tddfpt_apply_xc ( type(pw_r3d_rs_type), dimension(:), intent(inout)  A_ia_rspace,
type(full_kernel_env_type), intent(in)  kernel_env,
type(qs_rho_type), pointer  rho_ia_struct,
logical, intent(in)  is_rks_triplets,
type(pw_env_type), pointer  pw_env,
type(pw_r3d_rs_type), dimension(:), pointer  work_v_xc,
type(pw_r3d_rs_type), dimension(:), pointer  work_v_xc_tau 
)

Driver routine for applying fxc (analyic vs. finite difference for testing.

Parameters
A_ia_rspaceaction of TDDFPT operator on trial vectors expressed in a plane wave representation (modified on exit)
kernel_envkernel environment
rho_ia_structresponse density for the given trial vector
is_rks_tripletsindicates that the triplet excited states calculation using spin-unpolarised molecular orbitals has been requested
pw_envplain wave environment
work_v_xcwork real-space grid to store the gradient of the exchange-correlation potential with respect to the response density (modified on exit)
work_v_xc_tau...

Definition at line 246 of file qs_tddfpt2_operators.F.

Here is the caller graph for this function:

◆ tddfpt_apply_xc_potential()

subroutine, public qs_tddfpt2_operators::tddfpt_apply_xc_potential ( type(pw_r3d_rs_type), dimension(:), intent(inout)  A_ia_rspace,
type(pw_r3d_rs_type), dimension(:), pointer  fxc_rspace,
type(qs_rho_type), pointer  rho_ia_struct,
logical, intent(in)  is_rks_triplets 
)

Routine for applying fxc potential.

Parameters
A_ia_rspaceaction of TDDFPT operator on trial vectors expressed in a plane wave representation (modified on exit)
fxc_rspace...
rho_ia_structresponse density for the given trial vector
is_rks_triplets...

Definition at line 283 of file qs_tddfpt2_operators.F.

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

◆ tddfpt_apply_hfx()

subroutine, public qs_tddfpt2_operators::tddfpt_apply_hfx ( type(cp_fm_type), dimension(:, :), intent(in)  Aop_evects,
type(cp_fm_type), dimension(:, :), intent(in)  evects,
type(tddfpt_ground_state_mos), dimension(:), intent(in)  gs_mos,
logical, intent(in)  do_admm,
type(qs_environment_type), pointer  qs_env,
type(dbcsr_p_type), dimension(:), intent(inout)  work_rho_ia_ao_symm,
type(dbcsr_p_type), dimension(:), intent(inout), target  work_hmat_symm,
type(dbcsr_p_type), dimension(:), intent(inout)  work_rho_ia_ao_asymm,
type(dbcsr_p_type), dimension(:), intent(inout), target  work_hmat_asymm,
type(cp_fm_type), intent(in)  wfm_rho_orb 
)

Update action of TDDFPT operator on trial vectors by adding exact-exchange term.

Parameters
Aop_evectsaction of TDDFPT operator on trial vectors (modified on exit)
evectstrial vectors
gs_mosmolecular orbitals optimised for the ground state (only occupied molecular orbitals [component mos_occ] are needed)
do_admmperform auxiliary density matrix method calculations
qs_envQuickstep environment
work_rho_ia_ao_symm...
work_hmat_symm...
work_rho_ia_ao_asymm...
work_hmat_asymm...
wfm_rho_orb...
History
  • 05.2016 compute all exact-exchange terms in one go [Sergey Chulkov]
  • 03.2017 code related to ADMM correction is now moved to tddfpt_apply_admm_correction() in order to compute this correction within parallel groups [Sergey Chulkov]
Note
Based on the subroutine kpp1_calc_k_p_p1() which was originally created by Mohamed Fawzi on 10.2002.

Definition at line 494 of file qs_tddfpt2_operators.F.

Here is the call graph for this function:

◆ tddfpt_apply_hfxsr_kernel()

subroutine, public qs_tddfpt2_operators::tddfpt_apply_hfxsr_kernel ( type(cp_fm_type), dimension(:, :), intent(in)  Aop_evects,
type(cp_fm_type), dimension(:, :), intent(in)  evects,
type(tddfpt_ground_state_mos), dimension(:), intent(in)  gs_mos,
type(qs_environment_type), pointer  qs_env,
type(admm_type), pointer  admm_env,
type(section_vals_type), pointer  hfx_section,
type(hfx_type), dimension(:, :), pointer  x_data,
integer, intent(in)  symmetry,
logical, intent(in)  recalc_integrals,
type(dbcsr_p_type), dimension(:), intent(inout)  work_rho_ia_ao,
type(dbcsr_p_type), dimension(:), intent(inout), target  work_hmat,
type(cp_fm_type), intent(in)  wfm_rho_orb 
)

Update action of TDDFPT operator on trial vectors by adding exact-exchange term.

Parameters
Aop_evectsaction of TDDFPT operator on trial vectors (modified on exit)
evectstrial vectors
gs_mosmolecular orbitals optimised for the ground state (only occupied molecular orbitals [component mos_occ] are needed)
qs_envQuickstep environment
admm_env...
hfx_section...
x_data...
symmetry...
recalc_integrals...
work_rho_ia_ao...
work_hmat...
wfm_rho_orb...

Definition at line 660 of file qs_tddfpt2_operators.F.

Here is the call graph for this function:

◆ tddfpt_apply_hfxlr_kernel()

subroutine, public qs_tddfpt2_operators::tddfpt_apply_hfxlr_kernel ( type(qs_environment_type), pointer  qs_env,
type(tddfpt_subgroup_env_type)  sub_env,
real(kind=dp), intent(in)  rcut,
real(kind=dp), intent(in)  hfx_scale,
type(tddfpt_work_matrices)  work,
type(cp_fm_type), dimension(:), intent(in)  X,
type(cp_fm_type), dimension(:), intent(in)  res 
)

...Calculate the HFXLR kernel contribution by contracting the Lowdin MO coefficients – transition charges with the exchange-type integrals using the sTDA approximation

Parameters
qs_env...
sub_env...
rcut...
hfx_scale...
work...
X...
res... vector AX with A being the sTDA matrix and X the Davidson trial vector of the eigenvalue problem A*X = omega*X

Definition at line 744 of file qs_tddfpt2_operators.F.

Here is the call graph for this function: