get_dispersion3_hessian Subroutine

private subroutine get_dispersion3_hessian(self, mol, trans, cutoff, width, r4r2, c6, dc6dcn, d2c6dcn2, d2c6dcnij, hessian, dEdcn, dEdcndr, dEdcndcn, partition)

Evaluation of the ATM three-body contribution to the Hessian

Type Bound

rational_damping_param

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) :: 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, defaults to the complete work


Source Code

subroutine get_dispersion3_hessian(self, mol, trans, cutoff, width, r4r2, c6, dc6dcn, &
      & d2c6dcn2, d2c6dcnij, hessian, dEdcn, dEdcndr, dEdcndcn, partition)

   !> Damping parameters
   class(rational_damping_param), intent(in) :: self

   !> Molecular structure data
   class(structure_type), intent(in) :: mol

   !> Lattice points
   real(wp), intent(in) :: trans(:, :)

   !> Real space cutoff
   real(wp), intent(in) :: cutoff

   !> Width of smooth cutoff
   real(wp), intent(in) :: width

   !> Expectation values for r4 over r2 operator
   real(wp), intent(in) :: r4r2(:)

   !> C6 coefficients for all atom pairs
   real(wp), intent(in) :: c6(:, :)

   !> Derivatives of the C6 w.r.t. the coordination number
   real(wp), intent(in) :: dc6dcn(:, :), d2c6dcn2(:, :), d2c6dcnij(:, :)

   !> Second derivative of the energy w.r.t. the Cartesian coordinates
   real(wp), intent(inout) :: hessian(:, :)

   !> Derivative of the energy w.r.t. the coordination number
   real(wp), intent(inout) :: dEdcn(:)

   !> Mixed derivative w.r.t. coordination number and Cartesian coordinates
   real(wp), intent(inout) :: dEdcndr(:, :)

   !> Second derivative w.r.t. the coordination numbers
   real(wp), intent(inout) :: dEdcndcn(:, :)

   !> Work partition of the atom pairs, defaults to the complete work
   type(work_partition), intent(in), optional :: partition

   call get_atm_dispersion_hessian(mol, trans, cutoff, width, self%s9, self%a1, &
      & self%a2, self%alp, r4r2, c6, dc6dcn, d2c6dcn2, d2c6dcnij, hessian, &
      & dEdcn, dEdcndr, dEdcndcn, partition)

end subroutine get_dispersion3_hessian