(git:f6c7e1d)
Loading...
Searching...
No Matches
qs_dispersion_nonloc Module Reference

Calculation of non local dispersion functionals Some routines adapted from: Copyright (C) 2001-2009 Quantum ESPRESSO group Copyright (C) 2009 Brian Kolb, Timo Thonhauser - Wake Forest University This file is distributed under the terms of the GNU General Public License. See the file `License' in the root directory of the present distribution, or http://www.gnu.org/copyleft/gpl.txt . More...

Functions/Subroutines

subroutine, public qs_dispersion_nonloc_init (dispersion_env, para_env)
 ...
subroutine, public calculate_vxc_nlvdw (vxc_r, rho, drho, edispersion, dispersion_env, energy_only, pw_pool, para_env, virial)
 Calculates the non-local vdW functional using the method of Soler For spin polarized cases we use E(a,b) = E(a+b), i.e. total density.
subroutine, public qs_fxc_nlvdw_apply (qs_env, xc_section, dispersion_env, rho0_r, rho1_r, fxc_rho)
 Second derivative of nl-vdW potential.
subroutine, public qs_fxc_nlvdw_fdiff (qs_env, dispersion_env, rho0_r, rho1_r, accuracy, epsrho, fxc_rho)
 Second derivative of nl-vdW potential using finite differences.
subroutine, public prepare_nlvdw_density (rho_r, rho, drho, pw_pool, xc_pw_pool)
 Transform the input density to a 1d grid used by the nl-vdW routines.
subroutine, public return_nlvdw_potential (vxc_rho, vxc_r, pw_pool, xc_pw_pool)
 Take the nl-vdW potential and return it on the XC grid and for all spin channels.

Detailed Description

Calculation of non local dispersion functionals Some routines adapted from: Copyright (C) 2001-2009 Quantum ESPRESSO group Copyright (C) 2009 Brian Kolb, Timo Thonhauser - Wake Forest University This file is distributed under the terms of the GNU General Public License. See the file `License' in the root directory of the present distribution, or http://www.gnu.org/copyleft/gpl.txt .

Author
JGH

Function/Subroutine Documentation

◆ qs_dispersion_nonloc_init()

subroutine, public qs_dispersion_nonloc::qs_dispersion_nonloc_init ( type(qs_dispersion_type), pointer dispersion_env,
type(mp_para_env_type), pointer para_env )

...

Parameters
dispersion_env...
para_env...

Definition at line 80 of file qs_dispersion_nonloc.F.

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

◆ calculate_vxc_nlvdw()

subroutine, public qs_dispersion_nonloc::calculate_vxc_nlvdw ( type(pw_r3d_rs_type) vxc_r,
real(kind=dp), dimension(:) rho,
real(kind=dp), dimension(:, :) drho,
real(kind=dp), intent(out) edispersion,
type(qs_dispersion_type), pointer dispersion_env,
logical, intent(in) energy_only,
type(pw_pool_type), pointer pw_pool,
type(mp_para_env_type), pointer para_env,
type(virial_type), optional, pointer virial )

Calculates the non-local vdW functional using the method of Soler For spin polarized cases we use E(a,b) = E(a+b), i.e. total density.

Parameters
vxc_r...
rho...
drho...
edispersion...
dispersion_env...
energy_only...
pw_pool...
para_env...
virial...

Definition at line 162 of file qs_dispersion_nonloc.F.

Here is the caller graph for this function:

◆ qs_fxc_nlvdw_apply()

subroutine, public qs_dispersion_nonloc::qs_fxc_nlvdw_apply ( type(qs_environment_type), pointer qs_env,
type(section_vals_type), pointer xc_section,
type(qs_dispersion_type), pointer dispersion_env,
type(pw_r3d_rs_type), dimension(:), pointer rho0_r,
type(pw_r3d_rs_type), dimension(:), pointer rho1_r,
type(pw_r3d_rs_type), dimension(:), pointer fxc_rho )

Second derivative of nl-vdW potential.

Parameters
qs_env...
xc_section...
dispersion_env...
rho0_r...
rho1_r...
fxc_rho...

Definition at line 356 of file qs_dispersion_nonloc.F.

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

◆ qs_fxc_nlvdw_fdiff()

subroutine, public qs_dispersion_nonloc::qs_fxc_nlvdw_fdiff ( type(qs_environment_type), pointer qs_env,
type(qs_dispersion_type), pointer dispersion_env,
type(pw_r3d_rs_type), dimension(:), pointer rho0_r,
type(pw_r3d_rs_type), dimension(:), pointer rho1_r,
integer, intent(in) accuracy,
real(kind=dp), intent(in) epsrho,
type(pw_r3d_rs_type), dimension(:), pointer fxc_rho )

Second derivative of nl-vdW potential using finite differences.

Parameters
qs_env...
dispersion_env...
rho0_r...
rho1_r...
accuracy...
epsrho...
fxc_rho...

https://en.wikipedia.org/wiki/Finite_difference_coefficient

Derivative Accuracy 4 3 2 1 0 1 2 3 4

1 2 -1/2 0 1/2 4 1/12 -2/3 0 2/3 -1/12 6 -1/60 3/20 -3/4 0 3/4 -3/20 1/60

8 1/280 -4/105 1/5 -4/5 0 4/5 -1/5 4/105 -1/280

2 2 1 -2 1 4 -1/12 4/3 -5/2 4/3 -1/12 6 1/90 -3/20 3/2 -49/18 3/2 -3/20 1/90

8 -1/560 8/315 -1/5 8/5 -205/72 8/5 -1/5 8/315 -1/560

Definition at line 429 of file qs_dispersion_nonloc.F.

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

◆ prepare_nlvdw_density()

subroutine, public qs_dispersion_nonloc::prepare_nlvdw_density ( type(pw_r3d_rs_type), dimension(:), pointer rho_r,
real(kind=dp), dimension(:) rho,
real(kind=dp), dimension(:, :) drho,
type(pw_pool_type), pointer pw_pool,
type(pw_pool_type), pointer xc_pw_pool )

Transform the input density to a 1d grid used by the nl-vdW routines.

Parameters
rho_r...
rho...
drho...
pw_pool...
xc_pw_pool...

Definition at line 534 of file qs_dispersion_nonloc.F.

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

◆ return_nlvdw_potential()

subroutine, public qs_dispersion_nonloc::return_nlvdw_potential ( type(pw_r3d_rs_type), dimension(:), pointer vxc_rho,
type(pw_r3d_rs_type) vxc_r,
type(pw_pool_type), pointer pw_pool,
type(pw_pool_type), pointer xc_pw_pool )

Take the nl-vdW potential and return it on the XC grid and for all spin channels.

Parameters
vxc_rho...
vxc_r...
pw_pool...
xc_pw_pool...

Definition at line 682 of file qs_dispersion_nonloc.F.

Here is the caller graph for this function: