[gmx-developers] Implementation of Bennet estimator for chemical potential

JR Schmidt schmidt at chem.wisc.edu
Tue Jul 14 21:28:19 CEST 2009

I am currently doing some chemical potential in GROMACS using the 
particle insertion method.  (For a variety of technical reasons related 
to the eventual system of interest, I would like to avoid thermodynamic 
integration.)  I would like to implement the Bennet estimator of 
chemical potential, which is the minimum variance estimator [see, for 
example, JCP, 123, 054105 (2005)].

Fundamentally, this requires doing BOTH trial insertions into an N 
particular ensemble, and particle DELETIONS from a N+1 particle 
ensemble, and accumulating the average of f(\beta*\Delta U), where f is 
a Fermi function.  (In practice, as long as N is large enough, both can 
be done from the same N particle trajectory.)  The former is already 
implemented in GROMACS via the TPI method.  I would like to implement 
the latter.

I located the do_tpi subroutine in minimize.c, and I follow the basic 
logic of it.  However, what I do NOT understand is how the call to 
"do_force" in minimize.c somehow returns in  enerd->term[F_EPOT] the 
component of the energy corresponding to the Nth particle, rather than 
the total energy of the system.  Obviously this is due to one of the 
arguments, but through the maze of subsequent function calls I can't 
track it down.

I would appreciate any guidance from the more experienceddevelopers.  I 
am an seasoned coder, but not familiar at all with the innards of 
GROMACS.  Yet I think this should be a rather simple addition if I can 
simply figure out this particular issue.

Thank you in advance.

J.R. Schmidt
Assistant Professor of Chemistry
Room 8305D
Department of Chemistry
University of Wisconsin-Madison
1101 University Ave
Madison, WI 53706

Phone: (608) 262-2996
Fax: (608) 262-9918
E-mail: schmidt at chem.wisc.edu

More information about the gromacs.org_gmx-developers mailing list