Atomic Density Distribution (ADD)#
Formulation#
To describe the distribution of guest molecules within the pore cavities, we used Gaussian convolution to obtain a smooth atomic density profile rather than using simple histograms of number of particles on grids. Generally, the atomic density is calculated by summing delta functions at each atomic position, as described in the equation below:
where \(\vec{u}_i^t\) is the position of atom \(i\) in configuration at step \(t\). The summation of delta function centered at every atom (\(i=1\sim N\)) was taken before averaging over \(T\) steps across trajectory. Numerically, we replaced the delta function with a normalized 3D-Gaussian function centered at \(\vec{u}_i^t\).
Assume that total population can be further sampled by the small population, in particular, the slow and fast waters as defined in the main text. For the sampling of density \(\rho ^ {\alpha} (\vec{x})\), one can calculate from the equation below
where \(G ^ {\alpha} [\varepsilon _ {i \in \mathrm{mol}}]\) is the distribution of the small population \(\alpha\) of interest represented in gaussian function form. For example, the weight of population is characterized by the norm of the velocities at the center of mass of molecule.
Input#
initstructurePath to reference structure to project average atimic density in.
trajformatFormat of trajjectory file.
trajstructuresA list pf paths to the trajectory
subfixA subfix for output density file
verbosityVerbosity of the standard output
outdirA name of directory containing the results of the calculation
gridGrid size for density calculation
supercellsizeSupercell size applied in trajectory
sigmaGaussian sigma
intervalSample snapshot every
lsymmetryUse symmetry or not
lspglibUse spglib library or not
symprecPrecision of the symmetry determination
molecules_per_unit_cellNumber of molecule per unit cell for normalization
int_ratioGive isosiurface value at integrated value of
ldeconvDeconcolute or not
derivativePerforme derivative of not
deconvparamsDeconvolution parameters in Gaussian function type
natomframeNumber of atoms to be skip
Example#
The averaged ADD#
This exameple will show the very beginning part of the ADD, where all atoms of interest will be averaged. Here, the symmetrization is not included, therefore, at the equivalent positions, the distribution will not be gaurantee to the equivalent. However, if our sampling number is large enough, we expect the convergence approaching the symmetrized ADD.
initstructure: ./data/calf-repeat.cif
trajformat: traj
trajstructures:
- ./data/retrajectory.traj
subfix: without
verbosity: high
outdir: ./output
grid: [30,30,30]
supercellsize: [1,1,1]
sigma: [0.5,0.5,0.5]
interval: 10
lsymmetry: true
lspglib: true
symprec: 0.1
molecules_per_unit_cell: 1
int_ratio: [0.5]
ldeconv: false
derivative: [2,"z"]
deconvparams:
- [ 1.74261517e+03, -5.08653734e-01, -1.69961484e-02]
- [ 2.26937431e+03, -4.66048546e-01, 2.11681681e-02]
- [ 1.02870494e+03, -4.28871212e-01, 1.40403790e-02]
natomframe: 44
The symmetrized ADD#
This exameple will show the the symmetrization of ADD, where all atoms of interest will be duplicated by symmetry operators. Then, the ADD will fulfil crystal symmetry. One great advantage of this method is the reduction of the sampling number, since the equivalent positions will eventually give the equivalent density.
The atomic-type decomposed ADD#
In this section, the atomic type decomposition will be demonstrated. The calculation will be done simply by the averaging on each atomic type found in the trajectory. By coloring the total ADD with atomic-type decomposed ADD, one can visualize the positions of each atomic type on the density surface.
initstructure: ./data/calf-repeat.cif
trajformat: traj
trajstructures:
- ./data/retrajectory.traj
subfix: without
verbosity: high
outdir: ./output
grid: [30,30,30]
supercellsize: [1,1,1]
sigma: [0.5,0.5,0.5]
interval: 10
lsymmetry: true
lspglib: true
symprec: 0.1
molecules_per_unit_cell: 1
int_ratio: [0.5]
ldeconv: false
derivative: [2,"z"]
deconvparams:
- [ 1.74261517e+03, -5.08653734e-01, -1.69961484e-02]
- [ 2.26937431e+03, -4.66048546e-01, 2.11681681e-02]
- [ 1.02870494e+03, -4.28871212e-01, 1.40403790e-02]
natomframe: 44
The velocity-deconvoluted ADD#
In this section, the velocity-deconvoluted ADD will be demonstrated. The deconvoluation is done by the equation shown in the introduction. Therefore, the infornation of the labelling must be provided within the trajectory. And the population characterized by Gaussian function is required.
initstructure: ./data/calf-repeat.cif
trajformat: traj
trajstructures:
- ./data/retrajectory.traj
subfix: without
verbosity: high
outdir: ./output
grid: [30,30,30]
supercellsize: [1,1,1]
sigma: [0.5,0.5,0.5]
interval: 10
lsymmetry: true
lspglib: true
symprec: 0.1
molecules_per_unit_cell: 1
int_ratio: [0.5]
ldeconv: false
derivative: [2,"z"]
deconvparams:
- [ 1.74261517e+03, -5.08653734e-01, -1.69961484e-02]
- [ 2.26937431e+03, -4.66048546e-01, 2.11681681e-02]
- [ 1.02870494e+03, -4.28871212e-01, 1.40403790e-02]
natomframe: 44
The energy-deconvoluted ADD#
In this section, the energy-deconvoluted ADD will be demonstrated. The deconvoluation is done by the equation shown in the introduction. Therefore, the infornation of the labelling must be provided within the trajectory. And the population characterized by Gaussian function is required.
The derivative of ADD#
One of the advantages of using Gaussian in ADD is the smoothness and differentiable property. The first and the second derivative of Gaussian function can be done simply analytically. Therefore, the derivative of ADD is acurate, when compared to the numerical derivative in Histogram-like manner.
initstructure: ./data/calf-repeat.cif
trajformat: traj
trajstructures:
- ./data/retrajectory.traj
subfix: without
verbosity: high
outdir: ./output
grid: [30,30,30]
supercellsize: [1,1,1]
sigma: [0.5,0.5,0.5]
interval: 10
lsymmetry: true
lspglib: true
symprec: 0.1
molecules_per_unit_cell: 1
int_ratio: [0.5]
ldeconv: false
derivative: [2,"z"]
deconvparams:
- [ 1.74261517e+03, -5.08653734e-01, -1.69961484e-02]
- [ 2.26937431e+03, -4.66048546e-01, 2.11681681e-02]
- [ 1.02870494e+03, -4.28871212e-01, 1.40403790e-02]
natomframe: 44
The ADD on fixed equivalent positions#
By using symmetry operators, one can move the atoms from pore to pore, to fixed the positions of the averaging center.