![]() |
(git:f6c7e1d)
|
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. | |
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 .
| subroutine, public qs_dispersion_nonloc::qs_dispersion_nonloc_init | ( | type(qs_dispersion_type), pointer | dispersion_env, |
| type(mp_para_env_type), pointer | para_env ) |
...
| dispersion_env | ... |
| para_env | ... |
Definition at line 80 of file qs_dispersion_nonloc.F.
| 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.
| vxc_r | ... |
| rho | ... |
| drho | ... |
| edispersion | ... |
| dispersion_env | ... |
| energy_only | ... |
| pw_pool | ... |
| para_env | ... |
| virial | ... |
Definition at line 162 of file qs_dispersion_nonloc.F.
| 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.
| qs_env | ... |
| xc_section | ... |
| dispersion_env | ... |
| rho0_r | ... |
| rho1_r | ... |
| fxc_rho | ... |
Definition at line 356 of file qs_dispersion_nonloc.F.
| 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.
| qs_env | ... |
| dispersion_env | ... |
| rho0_r | ... |
| rho1_r | ... |
| accuracy | ... |
| epsrho | ... |
| fxc_rho | ... |
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
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
Definition at line 429 of file qs_dispersion_nonloc.F.
| 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.
| rho_r | ... |
| rho | ... |
| drho | ... |
| pw_pool | ... |
| xc_pw_pool | ... |
Definition at line 534 of file qs_dispersion_nonloc.F.
| 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.
| vxc_rho | ... |
| vxc_r | ... |
| pw_pool | ... |
| xc_pw_pool | ... |
Definition at line 682 of file qs_dispersion_nonloc.F.