(this part of the manual is based on Using special syntax for multiple replicas).
In many cases, we need to run multiple replicas with almost identical PLUMED files. These files might be prepared with cut-and-paste, which is very error prone, or could be set up with some smart bash or python script. Additionally, one can take advantage of the INCLUDE keyword so as to have a shared input file with common definitions and specific input files with replica-dependent keywords. However, as of PLUMED 2.4, we introduced a simpler manner to manipulate multiple replica inputs with tiny differences. Look at the following example:
#SETTINGS NREPLICAS=3 # Compute a distance d: DISTANCEATOMS=1,2 # Apply a restraint. RESTRAINTthe pair of atom that we are calculating the distance between.ARG=dthe input for this action is the scalar output from one or more other actions.AT=@replicas:1.0,1.1,1.2compulsory keyword the position of the restraintKAPPA=1.0 # On replica 0, this means: # RESTRAINT ARG=d AT=1.0 KAPPA=1.0 # On replica 1, this means: # RESTRAINT ARG=d AT=1.1 KAPPA=1.0 # On replica 2, this means: # RESTRAINT ARG=d AT=1.2 KAPPA=1.0compulsory keyword ( default=0.0 ) specifies that the restraint is harmonic and what the values of the force constants on each of the variables are
If you prepare a single plumed.dat file like this one and feeds it to PLUMED while using 3 replicas, the 3 replicas will see the very same input except for the AT keyword, that sets the position of the restraint. Replica 0 will see a restraint centered at 1.0, replica 1 centered at 1.1, and replica 2 centered at 1.2.
The @replicas: keyword is not special for RESTRAINT or for the AT keyword. Any keyword in PLUMED can accept that syntax. For instance, the following single input file can be used to setup a bias exchange metadynamics [piana] simulations:
#SETTINGS NREPLICAS=2 # Compute distance between atoms 1 and 2 d: DISTANCEATOMS=1,2 # Compute a torsional angle t: TORSIONthe pair of atom that we are calculating the distance between.ATOMS=30,31,32,33 # Metadynamics. METAD ...the four atoms involved in the torsional angleARG=@replicas:d,tthe input for this action is the scalar output from one or more other actions.HEIGHT=1.0the heights of the Gaussian hills.PACE=100compulsory keyword the frequency for hill additionSIGMA=@replicas:0.1,0.3compulsory keyword the widths of the Gaussian hillsGRID_MIN=@replicas:0.0,-pithe lower bounds for the gridGRID_MAX=@replicas:2.0,pi ... # On replica 0, this means: # METAD ARG=d HEIGHT=1.0 PACE=100 SIGMA=0.1 GRID_MIN=0.0 GRID_MAX=2.0 # On replica 1, this means: # METAD ARG=t HEIGHT=1.0 PACE=100 SIGMA=0.3 GRID_MIN=-pi GRID_MAX=pithe upper bounds for the grid
This would be a typical setup for a bias exchange simulation. Notice that even though variables d and t are both read in both replicas, d is only computed on replica 0 (and t is only computed on replica 1). This is because variables that are defined but not used are n