Yukawa pair potential

This module implements the Yukawa pair potential, which corresponds to a screened Coulomb potential,

\[U^{(ij)}_\text{Yukawa}\left(r\right) = \frac{A_{ij} \mathrm{-r / \sigma_{ij}}}{r}\]

for the interaction between two particles of species \(i\) and \(j\) with the (Debye) screening length \(\sigma_{ij}\). In the context of electrolytes, the amplitude \(\sigma_{ij} = q_i q_j\) is given by the product of the effective charges of the two particles (in Gaussian units).

The corresponding source files contain FIXME markers where adjustments to a specific potential are needed. These files are:

halmd/mdsim/gpu/potentials/pair/custom.cpp
halmd/mdsim/gpu/potentials/pair/custom.hpp
halmd/mdsim/gpu/potentials/pair/custom_kernel.cu
halmd/mdsim/gpu/potentials/pair/custom_kernel.hpp
test/unit/mdsim/potentials/pair/custom.cpp

The last file contains a unit test, where reference values for \(U^{(ij)}_\text{custom}(r)\) must be provided for a number of distances \(r\) and a few combinations of potential parameters. The Python script compute_potential_reference.py in the same folder can generate such values.

class halmd.mdsim.potentials.pair.yukawa(args)

Construct Yukawa potential.

Parameters:
  • args (table) – keyword arguments

  • args – keyword arguments

  • args.amplitude (table) – matrix with elements \(A_{ij}\) (default: 1)

  • args.sigma (table) – matrix with elements \(\sigma_{ij}\) (default: 1)

  • args.species (number) – number of particle species (optional)

  • args.memory (string) – select memory location (optional)

  • args.label (string) – instance label (optional)

If the argument species is omitted, it is inferred from the first dimension of the parameter matrices.

If all elements of a matrix are equal, a scalar value may be passed instead which is promoted to a square matrix of size given by the number of particle species.

The supported values for memory are “host” and “gpu”. If memory is not specified, the memory location is selected according to the compute device.

amplitude

Matrix with elements \(A_{ij}\).

sigma

Matrix with elements \(\sigma_{ij}\).

description

Name of potential for profiler.

memory

Device where the particle memory resides.

truncate(args)

Truncate potential. See Potential truncations for available truncations.

Parameters:
  • args (table) – keyword argument

  • args[1] (string) – name of truncation type

  • cutoff (table) – matrix with elements \(r_{\text{c}, ij}\)

  • args.* (any) – additional arguments depend on the truncation type

Returns:

truncated potential

Example:

potential = potential:truncate({"smooth_r4", cutoff = 5, h = 0.05})
modify(args)

Apply potential modification. See Potential modifications for available modifications.

Parameters:
  • args (table) – keyword argument

  • args[1] (string) – name of modification type

  • args.* (any) – additional arguments depend on the modification type

Returns:

modified potential

Example:

potential = potential:modify({"hard_core", radius = 0.5})