[Pair] section

In the [Pair] section of the model definition, potential-forms are combined with parameters that tailor them to a given pair of species.

The basic form of an entry in this section is:

  • The label before the colon: SPECIES_A-SPECIES_B identifies the pair interaction being parametrised.
    • This label consists of two species identifiers (SPECIES_A and SPECIES_B) separated by a hyphen -.
    • The order in which the species labels are specified does not matter. That is, Au-Ag and Ag-Au would be equivalent.
    • The [Pair] section can only contain one entry per unique species pair.
  • The potential definition, specified after the colon, consists of the name of the potential-form (POTENTIAL_FORM) followed by the numeric parameters it requires.

Pre-defined potential-forms

A number of pre-defined potential forms are provided. These all have names pre-fixed by as.

Each entry in the list of potentials provides an entry called potable signature. This shows the order in which parameters should be given to create a potential.

For the Buckingham potential the potable signature is:

as.buck \(A\) \(\rho\) \(C\)

which is associated with the formula:

\[V(r_{ij}) = A \exp \left( - \frac{r_{ij}}{\rho} \right) - \frac{C}{r_{ij}^6}\]

This means that if we were defining a potential between Si and O that had \(A_{ij}\) = 18003, \(\rho_{ij}\) = 0.205 and \(C_{ij}\) = 133.36 then the entry in the [Pair] section would be:

Si-O = as.buck 18003.0 0.205 133.36

Please refer to the potable signature when using the as.* potential-forms; specifying parameters in the wrong order will cause you problems.

It is also possible to define your own potential-forms in the [Potential-Form] section of potable file. These are parametrised here in the [Pair] section in the same way as the pre-defined as.* potential-forms. This usage is documented later here: [Potential-Form] section.

Potential modifiers

If you followed the Quick-Start guide, you will have already seen a potential modifier. The [Pair] section from the basak.aspot used in the Quick-Start is repeated here:

O-O = as.buck 1633.010242995040 0.327022 3.948787
U-U = as.buck 294.640906285709 0.327022 0.0
O-U = sum(as.buck 693.650933805978 0.327022 0.0, 
		  as.morse 1.65 2.369 0.577189831995)

You can see that the O-O and U-U pairs use the basic definition we have just seen. The U-O interaction however uses the modified form:

O-U = sum(as.buck 693.650933805978 0.327022 0.0, 
		  as.morse 1.65 2.369 0.577189831995)

Here sum() takes two basic pair-definitions (one for as.buck and one for as.morse) and creates a pair-potential that is the sum of both. Here sum() is acting as a potential-modifier.

Potential-modifiers take the input or output of other potentials and produce outputs that have been altered in some way. A number of modifiers are provided with atsim.potentials and these are listed.

Multi-range potentials

The potential definition syntax used in the [Pair] section supports an extension which allows a series of potential-forms to be concatenated to each other, allowing each to act over a particular range of separations. These are defined as multi-range potentials. Concrete examples of where they are useful are provided in Multi-range potential examples however the basic syntax defining multi-range potentials is introduced here.

Suppose we want to define a potential acting between Mg and O using two potential-forms: pot_A and pot_B. The first is to be parametrised with values of 5.3 and 1.2 and pot_B with 9.6 and 2.4. Now say we want pot_A to act over the separations \(0 \geq r_{ij} \leq 3\) and pot_B \(3 < r_{ij} \leq 8\) and for the pair-potential to evaluate to zero when \(r_{ij} > 8\).


Fig. 2 Illustration of multi-range potential definition described in the text.

The multi-range potential just described is summarised in Fig. 2. This would be defined as follows in the potable input file:

Mg-O : >=0 pot_A 5.3 1.2 >3 pot_B 9.6 2.4 >8 as.zero

Notice that we used the as.zero potential-form to provide a constant value of 0.0 when \(r_{ij} > 8\) (equally as.constant 0.0 could have been used).

The syntax for a multi-range potential can be summarised as:

  • A series of single potential definitions delimited by range markers.

  • Range markers take the form:

    • >=R which indicates that the potential definition, following the marker, will be used at separations greater than or equal to the value specifid by R
    • >R which means the same but acts only for separations greater than R.


potable defines all potentials to have the initial range of >0 unless a range is explicitly defined. This is to avoid divide by zero errors when the potential is evaluated for \(r_{ij}\) = 0. As this separation is unimportant to most physically relevant simulation.

To include \(r_{ij}\) = 0 in you tabulations simply make sure that your potential starts with >=0


See also