Action: TOPOLOGY_MATRIX

Module adjmat
Description Usage
Adjacency matrix in which two atoms are adjacent if they are connected topologically used in 0 tutorialsused in 0 eggs
output value type
a matrix containing the weights for the bonds between each pair of atoms matrix

Output components

This action can calculate the values in the following table when the associated keyword is included in the input for the action. These values can be referenced elsewhere in the input by using this Action's label followed by a dot and the name of the value required from the list below.

Name Type Keyword Description
w matrix COMPONENTS a matrix containing the weights for the bonds between each pair of atoms
x matrix COMPONENTS the projection of the bond on the x axis
y matrix COMPONENTS the projection of the bond on the y axis
z matrix COMPONENTS the projection of the bond on the z axis

Input

The atoms that serve as the input for this action are specified using one or more of the keywords in the following table.

Keyword Type Description
GROUP atoms the atoms for which you would like to calculate the adjacency matrix
GROUPA atoms when you are calculating the adjacency matrix between two sets of atoms this keyword is used to specify the atoms along with the keyword GROUPB
GROUPB atoms when you are calculating the adjacency matrix between two sets of atoms this keyword is used to specify the atoms along with the keyword GROUPA
ATOMS atoms the atoms for which you would like to calculate the adjacency matrix
BACKGROUND_ATOMS atoms the list of atoms that should be considered as part of the background density

Further details and examples

Adjacency matrix in which two atoms are adjacent if they are connected topologically

The functionality in this action was developed as part of a project that attempted to study the nucleation of bubbles. The idea was to develop a criterion that would allow one to determine if two gas atoms i and j are part of the same bubble or not. This criterion would then be used to construct a adjacency matrix, which could be used in the same way that CONTACT_MATRIX is used in other methods.

The criterion that was developed to determine whether atom i and j are connected in this way works by determining if the density within a cylinder that is centered on the vector connecting atoms i and j is less than a certain threshold value. To make this determination we first determine whether any given atom k is within the cylinder centered on the vector connecting atoms i and j by using the following expression

f(rik,rij)=s1(|rij|2(rijrik|rij|)2)s2(rijrik|rij|)s2(rijrik|rij||rij|)

In this expression s1 and s2 are switching functions, while rlm is used to indicate the vector connecting atoms l and m.

We then calculate the density for a grid of M points along the vector connecting atom i and atom j using and find the maximum density on this grid using:

ρij=max

where is the D_MAX parameter of the switching function that appears in the next equation, is a kernal function and is used to represent a point in space that is from atom along the vector connecting atom to atom .

The final value that is stored in the element of the output matrix is:

where and are switching functions.

We ended up abandoning this method and the project (if you want drive bubble formation you are probably better off adding a bias on the volume of the simulation cell). However, if you would like to try this method an example input that uses this action would look like this:

Click on the labels of the actions for more information on what each action computes
tested on2.11
mat: TOPOLOGY_MATRIXAdjacency matrix in which two atoms are adjacent if they are connected topologically This action has hidden defaults. More details ...
    GROUPthe atoms for which you would like to calculate the adjacency matrix=1-85 BACKGROUND_ATOMSthe list of atoms that should be considered as part of the background density=86-210
    BIN_SIZEthe size to use for the bins=1.02 SIGMAthe width of the function to be used for kernel density estimation=0.17 KERNEL the type of kernel function to be used=triangular
    CYLINDER_SWITCHa switching function on ( r_ij . Options for this keyword are explained in the documentation for LESS_THAN.={RATIONAL R_0=0.5 D_MAX=1.0}
    SWITCHThis keyword is used if you want to employ an alternative to the continuous swiching function defined above. Options for this keyword are explained in the documentation for LESS_THAN.={RATIONAL D_0=30 R_0=0.5 D_MAX=32}
    RADIUSswtiching function that acts upon the radial distance of the atom from the center of the cylinder. Options for this keyword are explained in the documentation for LESS_THAN.={RATIONAL D_0=0.375 R_0=0.1 D_MAX=0.43}
    DENSITY_THRESHOLDa switching function that acts upon the maximum density in the cylinder. Options for this keyword are explained in the documentation for LESS_THAN.={RATIONAL R_0=0.1 D_MAX=0.5}
...

The switching functions , , and are specified using the RADIUS, CYLINDER_SWITCH, SWITCH and DENSITY_THRESHOLD keywords respectively. We loop over the atoms in the group specified using the BACKGROUND_ATOMS keyword when looping over in the formulas above. An matrix is output from the method as we are determining the connectivity between the atoms specified via the GROUP keyword.

References

More information about how this action can be used is available in the following articles: - G. A. Tribello, F. Giberti, G. C. Sosso, M. Salvalaglio, M. Parrinello, Analyzing and Driving Cluster Formation in Atomistic Simulations. Journal of Chemical Theory and Computation. 13, 1317–1327 (2017)

Syntax

The following table describes the keywords and options that can be used with this action

Keyword Type Default Description
GROUP input none the atoms for which you would like to calculate the adjacency matrix
GROUPA input none when you are calculating the adjacency matrix between two sets of atoms this keyword is used to specify the atoms along with the keyword GROUPB
GROUPB input none when you are calculating the adjacency matrix between two sets of atoms this keyword is used to specify the atoms along with the keyword GROUPA
ATOMS input none the atoms for which you would like to calculate the adjacency matrix
BACKGROUND_ATOMS input none the list of atoms that should be considered as part of the background density
NL_CUTOFF compulsory 0.0 The cutoff for the neighbor list
NL_STRIDE compulsory 1 The frequency with which we are updating the atoms in the neighbor list
SWITCH compulsory none This keyword is used if you want to employ an alternative to the continuous swiching function defined above. Options for this keyword are explained in the documentation for LESS_THAN.
RADIUS compulsory none swtiching function that acts upon the radial distance of the atom from the center of the cylinder. Options for this keyword are explained in the documentation for LESS_THAN.
CYLINDER_SWITCH compulsory none a switching function on ( r_ij . Options for this keyword are explained in the documentation for LESS_THAN.
BIN_SIZE compulsory none the size to use for the bins
DENSITY_THRESHOLD compulsory none a switching function that acts upon the maximum density in the cylinder. Options for this keyword are explained in the documentation for LESS_THAN.
SIGMA compulsory none the width of the function to be used for kernel density estimation
KERNEL compulsory gaussian the type of kernel function to be used
SERIAL optional false do the calculation in serial
COMPONENTS optional false also calculate the components of the vectors connecting the atoms in the contact matrix
NOPBC optional false don't use pbc