damping_param Derived Type

type, public, abstract :: damping_param


Type-Bound Procedures

generic, public :: get_dispersion2 => get_dispersion2_impl, get_dispersion2_compat

  • private subroutine get_dispersion2(self, mol, trans, cutoff, width, r4r2, c6, dc6dcn, dc6dq, energy, dEdcn, dEdq, gradient, sigma)

    Evaluation of the dispersion energy expression

    Arguments

    Type IntentOptional Attributes Name
    class(rational_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) :: r4r2(:)

    Expectation values for r4 over r2 operator

    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(in), optional :: dc6dq(:,:)

    Derivative of the C6 w.r.t. the partial charges

    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 :: dEdq(:)

    Derivative of the energy w.r.t. the partial charges

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

    Dispersion gradient

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

    Dispersion virial

  • public subroutine get_dispersion2_compat(self, mol, trans, cutoff, r4r2, c6, dc6dcn, dc6dq, energy, dEdcn, dEdq, gradient, sigma)

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

    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(in), optional :: dc6dq(:,:)

    Derivative of the C6 w.r.t. the partial charges

    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 :: dEdq(:)

    Derivative of the energy w.r.t. the partial charges

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

    Dispersion gradient

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

    Dispersion virial

procedure, public :: get_dispersion2_compat

  • public subroutine get_dispersion2_compat(self, mol, trans, cutoff, r4r2, c6, dc6dcn, dc6dq, energy, dEdcn, dEdq, gradient, sigma)

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

    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(in), optional :: dc6dq(:,:)

    Derivative of the C6 w.r.t. the partial charges

    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 :: dEdq(:)

    Derivative of the energy w.r.t. the partial charges

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

    Dispersion gradient

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

    Dispersion virial

procedure(dispersion_interface), public, deferred :: get_dispersion2_impl

  • subroutine dispersion_interface(self, mol, trans, cutoff, width, r4r2, c6, dc6dcn, dc6dq, energy, dEdcn, dEdq, gradient, sigma) Prototype

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

    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(in), optional :: dc6dq(:,:)

    Derivative of the C6 w.r.t. the partial charges

    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 :: dEdq(:)

    Derivative of the energy w.r.t. the partial charges

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

    Dispersion gradient

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

    Dispersion virial

generic, public :: get_dispersion3 => get_dispersion3_impl, get_dispersion3_compat

  • private subroutine get_dispersion3(self, mol, trans, cutoff, width, r4r2, c6, dc6dcn, dc6dq, energy, dEdcn, dEdq, gradient, sigma)

    Evaluation of the dispersion energy expression

    Arguments

    Type IntentOptional Attributes Name
    class(rational_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) :: r4r2(:)

    Expectation values for r4 over r2 operator

    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(in), optional :: dc6dq(:,:)

    Derivative of the C6 w.r.t. the partial charges

    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 :: dEdq(:)

    Derivative of the energy w.r.t. the partial charges

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

    Dispersion gradient

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

    Dispersion virial

  • public subroutine get_dispersion3_compat(self, mol, trans, cutoff, r4r2, c6, dc6dcn, dc6dq, energy, dEdcn, dEdq, gradient, sigma)

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

    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(in), optional :: dc6dq(:,:)

    Derivative of the C6 w.r.t. the partial charges

    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 :: dEdq(:)

    Derivative of the energy w.r.t. the partial charges

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

    Dispersion gradient

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

    Dispersion virial

procedure, public :: get_dispersion3_compat

  • public subroutine get_dispersion3_compat(self, mol, trans, cutoff, r4r2, c6, dc6dcn, dc6dq, energy, dEdcn, dEdq, gradient, sigma)

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

    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(in), optional :: dc6dq(:,:)

    Derivative of the C6 w.r.t. the partial charges

    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 :: dEdq(:)

    Derivative of the energy w.r.t. the partial charges

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

    Dispersion gradient

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

    Dispersion virial

procedure(dispersion_interface), public, deferred :: get_dispersion3_impl

  • subroutine dispersion_interface(self, mol, trans, cutoff, width, r4r2, c6, dc6dcn, dc6dq, energy, dEdcn, dEdq, gradient, sigma) Prototype

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

    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(in), optional :: dc6dq(:,:)

    Derivative of the C6 w.r.t. the partial charges

    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 :: dEdq(:)

    Derivative of the energy w.r.t. the partial charges

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

    Dispersion gradient

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

    Dispersion virial

generic, public :: get_pairwise_dispersion2 => get_pairwise_dispersion2_impl, get_pairwise_dispersion2_compat

  • private subroutine get_pairwise_dispersion2(self, mol, trans, cutoff, width, r4r2, c6, energy)

    Evaluation of the dispersion energy expression projected on atomic pairs

    Arguments

    Type IntentOptional Attributes Name
    class(rational_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) :: r4r2(:)

    Expectation values for r4 over r2 operator

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

    C6 coefficients for all atom pairs.

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

    Dispersion energy

  • public subroutine get_pairwise_dispersion2_compat(self, mol, trans, cutoff, r4r2, c6, energy)

    Evaluation of the pairwise representation of the dispersion energy

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

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

    C6 coefficients for all atom pairs.

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

    Pairwise representation of the dispersion energy

procedure, public :: get_pairwise_dispersion2_compat

  • public subroutine get_pairwise_dispersion2_compat(self, mol, trans, cutoff, r4r2, c6, energy)

    Evaluation of the pairwise representation of the dispersion energy

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

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

    C6 coefficients for all atom pairs.

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

    Pairwise representation of the dispersion energy

procedure(pairwise_dispersion_interface), public, deferred :: get_pairwise_dispersion2_impl

  • subroutine pairwise_dispersion_interface(self, mol, trans, cutoff, width, r4r2, c6, energy) Prototype

    Evaluation of the pairwise representation of the dispersion energy

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

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

    C6 coefficients for all atom pairs.

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

    Pairwise representation of the dispersion energy

generic, public :: get_pairwise_dispersion3 => get_pairwise_dispersion3_impl, get_pairwise_dispersion3_compat

  • private subroutine get_pairwise_dispersion3(self, mol, trans, cutoff, width, r4r2, c6, energy)

    Evaluation of the dispersion energy expression

    Arguments

    Type IntentOptional Attributes Name
    class(rational_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) :: r4r2(:)

    Expectation values for r4 over r2 operator

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

    C6 coefficients for all atom pairs.

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

    Dispersion energy

  • public subroutine get_pairwise_dispersion3_compat(self, mol, trans, cutoff, r4r2, c6, energy)

    Evaluation of the pairwise representation of the dispersion energy

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

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

    C6 coefficients for all atom pairs.

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

    Pairwise representation of the dispersion energy

procedure, public :: get_pairwise_dispersion3_compat

  • public subroutine get_pairwise_dispersion3_compat(self, mol, trans, cutoff, r4r2, c6, energy)

    Evaluation of the pairwise representation of the dispersion energy

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

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

    C6 coefficients for all atom pairs.

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

    Pairwise representation of the dispersion energy

procedure(pairwise_dispersion_interface), public, deferred :: get_pairwise_dispersion3_impl

  • subroutine pairwise_dispersion_interface(self, mol, trans, cutoff, width, r4r2, c6, energy) Prototype

    Evaluation of the pairwise representation of the dispersion energy

    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) :: r4r2(:)

    Expectation values for r4 over r2 operator

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

    C6 coefficients for all atom pairs.

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

    Pairwise representation of the dispersion energy

Source Code

   type, abstract :: damping_param
   contains
      generic :: get_dispersion2 => get_dispersion2_impl, get_dispersion2_compat
      procedure(dispersion_interface), deferred :: get_dispersion2_impl
      procedure :: get_dispersion2_compat
      generic :: get_dispersion3 => get_dispersion3_impl, get_dispersion3_compat
      procedure(dispersion_interface), deferred :: get_dispersion3_impl
      procedure :: get_dispersion3_compat
      generic :: get_pairwise_dispersion2 => get_pairwise_dispersion2_impl, get_pairwise_dispersion2_compat
      procedure(pairwise_dispersion_interface), deferred :: get_pairwise_dispersion2_impl
      procedure :: get_pairwise_dispersion2_compat
      generic :: get_pairwise_dispersion3 => get_pairwise_dispersion3_impl, get_pairwise_dispersion3_compat
      procedure(pairwise_dispersion_interface), deferred :: get_pairwise_dispersion3_impl
      procedure :: get_pairwise_dispersion3_compat
   end type damping_param