d3_lowrank_c6 Derived Type

type, public :: d3_lowrank_c6

Separable representation of the reference C6 coefficients


Components

Type Visibility Attributes Name Initial
real(kind=wp), public :: error = 0.0_wp

Maximum relative error of the reconstructed reference C6 coefficients

real(kind=wp), public :: kcut = 0.0_wp

Reciprocal space cutoff, zero selects the cutoff from the damping radii

real(kind=wp), public, allocatable :: lambda(:)

Eigenvalues of the reference C6 matrix

integer, public :: mesh = 0

Number of mesh points for the particle mesh evaluation

integer, public :: rank = 0

Number of terms in the separable expansion

real(kind=wp), public, allocatable :: vec(:,:,:)

Eigenvectors resolved by reference system and species


Type-Bound Procedures

procedure, public :: get_atomic_c6

Assemble the pair C6 coefficients from the separable factors

  • private subroutine get_atomic_c6(self, mol, ghost, gwvec, gwdcn, c6, dc6dcn)

    Assemble the pair C6 coefficients and their derivatives w.r.t. the coordination number from the separable factors.

    Arguments

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

    Instance of the separable representation

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

    Molecular structure data

    logical, intent(in) :: ghost(:)

    Atoms excluded from the dispersion calculation

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

    Weighting function for the atomic reference systems

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

    Derivative of the weighting function w.r.t. the coordination number

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

    C6 coefficients for all atom pairs

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

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

procedure, public :: get_weights

Contract the eigenvectors with the reference system weights

  • private subroutine get_weights(self, mol, ghost, gwvec, c6l, gwdcn, dc6ldcn)

    Contract the eigenvectors with the Gaussian weights of the reference systems to obtain the atom centered factors of the separable expansion.

    Arguments

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

    Instance of the separable representation

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

    Molecular structure data

    logical, intent(in) :: ghost(:)

    Atoms excluded from the dispersion calculation

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

    Weighting function for the atomic reference systems

    real(kind=wp), intent(out) :: c6l(:,:)

    Atom centered factors of the separable expansion

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

    Derivative of the weighting function w.r.t. the coordination number

    real(kind=wp), intent(out), optional :: dc6ldcn(:,:)

    Derivative of the atomic factors w.r.t. the coordination number

Source Code

   type :: d3_lowrank_c6

      !> Number of terms in the separable expansion
      integer :: rank = 0

      !> Maximum relative error of the reconstructed reference C6 coefficients
      real(wp) :: error = 0.0_wp

      !> Reciprocal space cutoff, zero selects the cutoff from the damping radii
      real(wp) :: kcut = 0.0_wp

      !> Number of mesh points for the particle mesh evaluation
      integer :: mesh = 0

      !> Eigenvalues of the reference C6 matrix
      real(wp), allocatable :: lambda(:)

      !> Eigenvectors resolved by reference system and species
      real(wp), allocatable :: vec(:, :, :)

   contains

      !> Contract the eigenvectors with the reference system weights
      procedure :: get_weights

      !> Assemble the pair C6 coefficients from the separable factors
      procedure :: get_atomic_c6

   end type d3_lowrank_c6