String Method
Source code update
As of Oct. 2014, the string methods are part of the developmental version of CHARMM. A source code patch to the distribution version c38b2, which was used at the 2014 CHARMM CECAM Workshop, is available here.
Introduction
The string method module is an algorithm for finding paths between different configurations of a molecular system. It is a`chain-of-states' method, similar in principle to the Replica Path and Nudged Elastic Band methods, in which a continuous transition path is 'discretized' into a finite collection of system replicas under the constraint of approximately equal spacing using a predefined distance metric such as root-mean-square distance between adjacent replicas.
Algorithm
The string methods are implemented according to the reference at the end of this document. For each replica, the 0-K string algorithm performs steepest descent (SD) evolution on the potential energy landscape (i.e. minimization) followed by a collective 'reparametrization' to maintain equal spacing between adjacent replicas. The String method in collective variables (SMCV) by default performs SD minimization on a multidimensional _free energy_ landscape of the chosen collective variables. The required free energy gradients are samples by molecular dynamics with restraints. The finite-temperature string method (FTSM) samples hyperplanes locally perpendicular to an average path, computing free energies by integrating the average force acting on the hyperplanes, or by sampling a tessellation of the conformational space defined on the basis of the average path.
CHARMM Implementation notes
The string method is a parallel simulation technique and requires that CHARMM be compiled in parallel (using the keyword 'M' for the message-passing interface and the keyword 'STRINGM' to compile the string method source code): $> ./install.com gnu gfortran stringm
Each bead on the string is represented by a group of processors which communicate internally via the standard communicator MPI_COMM_LOCAL (which is the same as COMM_CHARMM inside the program). The exchange of information between each processor group, as required during, e.g., the reparametrization step, occurs via an additional string communicator (MPI_COMM_STRNG), whose nodelist consists of the root processor in each local group. This communication scheme is set up using the module multicom at the beginning of each string calculation (see charmm documentation file stringm.doc).
Implementation references
Zero-temperature string method (SM0K):
[1] W. E, W. Ren, and E. Vanden-Eijnden, J. Chem. Phys. 126, 164103 (2007).
[2] V. Ovchinnikov, M. Karplus, and E. Vanden-Eijnden, J. Chem. Phys. 134, 085103 (2011).
[3] I. Khavrutskii, K. Arora, and C. Brooks III, J. Phys. Chem. 125, 174108 (2006).
Finite-temperature string method (FTSM):
[1] W. E, W. Ren, and E. Vanden-Eijnden, Phys. Rev. B. 66, 052301 (2002).
[2] E. Vanden-Eijnden and M. Venturoli, J. Chem. Phys. 131, 044120 (2009).
[3] V. Ovchinnikov and M. Karplus, J. Chem. Phys. 140, 175103 (2014).
String method in collective variables (SMCV):
[1] L. Maragliano, A. Fischer, E. Vanden-Eijnden, and G. Ciccotti, J. Chem.Phys. 125, 024106 (2006).
[2] L. Maragliano and E. Vanden-Eijnden, Chem. Phys. Lett. 426, 168 (2006).
[3] V. Ovchinnikov, M. Karplus, and E. Vanden-Eijnden, J. Chem. Phys. 134, 085103 (2011).