Reciprocal space evaluation of the two-body dispersion energy.
With a separable representation of the C6 coefficients the lattice sum
E = -1/2 sum_l lambda_l sum_T sum_ij C_li C_lj phi(|r_ij + T|)
becomes a product of structure factors in reciprocal space. The damped pair potential is bounded at the origin, so no real space complement is required and the reciprocal sum alone converges exponentially. The self interaction of the unrestricted double sum is removed by the value of the potential at the origin.
Evaluate the two-body dispersion energy by summation over the reciprocal lattice
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(structure_type), | intent(in) | :: | mol |
Molecular structure data |
||
| class(d3_lowrank_c6), | intent(in) | :: | lowrank |
Separable representation of the C6 coefficients |
||
| logical, | intent(in) | :: | ghost(:) |
Atoms excluded from the dispersion calculation |
||
| type(fourier_term), | intent(in) | :: | terms(:,:,:) |
Terms of the damped pair potential for each pair of species |
||
| integer, | intent(in) | :: | nterm(:,:) |
Number of terms for each pair of species |
||
| real(kind=wp), | intent(in) | :: | kcut |
Reciprocal space cutoff |
||
| 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(inout) | :: | energies(:) |
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 reciprocal space summation |