dftd3_damping Module



Abstract Interfaces

abstract interface

  • public subroutine dispersion_interface(self, mol, trans, cutoff, width, rvdw, r4r2, c6, dc6dcn, energy, dEdcn, gradient, sigma, partition)

    Evaluation of the dispersion energy expression

    Arguments

    Type IntentOptional Attributes Name
    class(damping_param), intent(in) :: self

    Damping parameters

    class(structure_type), intent(in) :: mol

    Molecular structure data

    real(kind=wp), intent(in) :: trans(:,:)

    Lattice points

    real(kind=wp), intent(in) :: cutoff

    Real space cutoff

    real(kind=wp), intent(in) :: width

    Width of smooth cutoff

    real(kind=wp), intent(in) :: rvdw(:,:)

    Van-der-Waals radii for damping function

    real(kind=wp), intent(in) :: r4r2(:)

    Expectation values for C8 extrapolation

    real(kind=wp), intent(in) :: c6(:,:)

    C6 coefficients for all atom pairs.

    real(kind=wp), intent(in), optional :: dc6dcn(:,:)

    Derivative of the C6 w.r.t. the coordination number

    real(kind=wp), intent(inout) :: energy(:)

    Dispersion energy

    real(kind=wp), intent(inout), optional :: dEdcn(:)

    Derivative of the energy w.r.t. the coordination number

    real(kind=wp), intent(inout), optional :: gradient(:,:)

    Dispersion gradient

    real(kind=wp), intent(inout), optional :: sigma(:,:)

    Dispersion virial

    type(work_partition), intent(in), optional :: partition

    Work partition of the atom pairs, defaults to the complete work


Derived Types

type, public, abstract ::  damping_param

Type-Bound Procedures

procedure(damping_kernel_interface), public, deferred :: get_damping_kernel

Pair kernel and its derivatives w.r.t. squared distance and C6 coefficient

generic, public :: get_dispersion2 => get_dispersion2_impl, get_dispersion2_compat
procedure, public :: get_dispersion2_compat
procedure, public :: get_dispersion2_ewald

Evaluate the two-body dispersion energy by Ewald summation

procedure(dispersion_interface), public, deferred :: get_dispersion2_impl
generic, public :: get_dispersion3 => get_dispersion3_impl, get_dispersion3_compat
procedure, public :: get_dispersion3_compat
procedure(dispersion3_hessian_interface), public, deferred :: get_dispersion3_hessian

Evaluate three-body contribution to the hessian

procedure(dispersion_interface), public, deferred :: get_dispersion3_impl
procedure, public :: get_fourier_terms

Reciprocal space representation of the damped pair potential

generic, public :: get_pairwise_dispersion2 => get_pairwise_dispersion2_impl, get_pairwise_dispersion2_compat
procedure, public :: get_pairwise_dispersion2_compat
procedure(pairwise_dispersion_interface), public, deferred :: get_pairwise_dispersion2_impl
generic, public :: get_pairwise_dispersion3 => get_pairwise_dispersion3_impl, get_pairwise_dispersion3_compat
procedure, public :: get_pairwise_dispersion3_compat
procedure(pairwise_dispersion_interface), public, deferred :: get_pairwise_dispersion3_impl
procedure, public :: has_threebody

Whether the three-body term contributes to the energy

procedure, public :: supports_ewald

Whether the damping function can be evaluated by Ewald summation


Subroutines

public subroutine get_dispersion2_hessian(self, mol, trans, cutoff, width, rvdw, r4r2, c6, dc6dcn, d2c6dcn2, d2c6dcnij, hessian, dEdcn, dEdcndr, dEdcndcn, partition)

Two-body contribution to the analytical Hessian.

Read more…

Arguments

Type IntentOptional Attributes Name
class(damping_param), intent(in) :: self

Damping parameters

class(structure_type), intent(in) :: mol

Molecular structure data

real(kind=wp), intent(in) :: trans(:,:)

Lattice points

real(kind=wp), intent(in) :: cutoff

Real space cutoff

real(kind=wp), intent(in) :: width

Width of smooth cutoff

real(kind=wp), intent(in) :: rvdw(:,:)

Van-der-Waals radii for damping function

real(kind=wp), intent(in) :: r4r2(:)

Expectation values for C8 extrapolation

real(kind=wp), intent(in) :: c6(:,:)

C6 coefficients for all atom pairs.

real(kind=wp), intent(in) :: dc6dcn(:,:)

Derivatives of the C6 w.r.t. the coordination number

real(kind=wp), intent(in) :: d2c6dcn2(:,:)

Derivatives of the C6 w.r.t. the coordination number

real(kind=wp), intent(in) :: d2c6dcnij(:,:)

Derivatives of the C6 w.r.t. the coordination number

real(kind=wp), intent(inout) :: hessian(:,:)

Second derivative of the energy w.r.t. the Cartesian coordinates

real(kind=wp), intent(inout) :: dEdcn(:)

Derivative of the energy w.r.t. the coordination number

real(kind=wp), intent(inout) :: dEdcndr(:,:)

Mixed derivative w.r.t. coordination number and Cartesian coordinates

real(kind=wp), intent(inout) :: dEdcndcn(:,:)

Second derivative w.r.t. the coordination numbers

type(work_partition), intent(in), optional :: partition

Work partition of the atom pairs