[gmx-users] Calculating the average separation between two multi-atom groups

Andrew DeYoung adeyoung at andrew.cmu.edu
Thu May 31 03:24:54 CEST 2012


I have a system in a slab geometry.  A surface exists at z = 0; many
hydrogens protrude from the surface, and these hydrogens are mostly (but not
precisely) immobile.  Above the surface, there is liquid, including the
anion BF4- (tetrahedral arrangement of fluorines around a central boron).
The liquid region is large, extending far from the surface, (far above the
surface, the liquid behaves like liquid in the bulk).  

There is hydrogen-like bonding between the hydrogens protruding from the
surface and the fluorines in BF4-.  I would like to calculate the "average"
H-F distance, where H atoms protrude from the stationary surface and F atoms
exist on the BF4- ions.  But saying that I want to compute the "average" H-F
distance is very vague.  I can think of at least two possible, hopefully
reasonable, ways to formulate the problem:

(i) For the purpose of calculating the average H-F separation, only consider
fluorines on BF4- ions which are within a certain perpendicular distance z0
from the surface.  In other words, consider the BF4- ions which lie in the
region 0 < z < z0 (where z0 is positive and very small compared to the z
dimension of the simulation box).  Then, using those BF4- ions, I calculate
the (time-averaged) H-F separation.  

(ii) For the purpose of calculating the average H-F separation, only
consider fluorines when they are a certain small distance from any hydrogen.

Are (i) or (ii) these feasible?  

For (i), I can think about using g_select to select BF4- ions which are a
distance of z0 or less from the surface at z = 0.  Maybe I would use a
selection like 'res_com of resname BF4 and z < 10' (where z0 = 10).  The
problem with this is that, I think, I would obtain an index file for each
simulation timestep.  So, I guess then if I have 200,000 simulation
timesteps, I would have to run g_bond 200,000 times!  (Or would g_dist be
appropriate here?)  Also, even my formulation in (i) is a little awkward;
fluorines at one edge of the xy dimension would be far from hydrogens
immobilized at the other side of the xy dimension, so I would get artifacts.

For (ii), it seems that g_hbond might be useful.  However, it does not seem
that fluorine is currently implemented as a hydrogen bond acceptor for use
in g_hbond.  I have never attempted to modify the Gromacs code and I am not
sure how easy this would be.  But if H-F is a hydrogen-like bond, then
(average) H-F bond length is what I am going after, I guess.

Do you know of any recipes with which to do this, or do you have any
suggestions?  Thanks so much!

Andrew DeYoung
Carnegie Mellon University

More information about the gromacs.org_gmx-users mailing list