DRR
This is part of the drr module
It is only available if you configure PLUMED with ./configure –enable-modules=drr . Furthermore, this feature is still being developed so take care when using it and report any problems on the mailing list.

Used to performed extended-system adaptive biasing force(eABF) [60] method on one or more collective variables. This method is also called dynamic reference restraining(DRR) [98] .

For each collective variable \(\xi_i\), a fictitious variable \(\lambda_i\) is attached through a spring. The fictitious variable \(\lambda_i\) undergoes overdamped langevin dynamics jusk like EXTENDED_LAGRANGIAN. The ABF algorithm applies bias force on \(\lambda_i\). The bias force acts on \(\lambda_i\) is the negative average spring force on \(\lambda_i\), which enhances the sampling of \(\lambda_i\).

\[ F_{bias}(\lambda_i)=k(\lambda_i-\langle\xi_i\rangle_{\lambda_i}) \]

If spring force constant k is large enough, then \(\xi_i\) synchronizes with \(\lambda_i\). The naive(ABF) estimator is just the negative average spring force of \(\lambda_i\).

The naive(ABF) estimator is biased. There are unbiased estimators such as CZAR(Corrected z-averaged restraint) [61] and UI(Umbrella Integration). The CZAR estimates the gradients as:

\[ \frac{\partial{A}}{\partial{\xi_i}}\left({\xi}\right)=-\frac{1}{\beta}\frac{\partial\ln\tilde{\rho}\left(\xi\right)}{\partial{\xi_i}}+k\left(\langle\lambda_i\rangle_\xi-\xi_i\right) \]

The UI estimates the gradients as:

\[ A'(\xi^*)=\frac{{\sum_\lambda}N\left(\xi^*,\lambda\right)\left[\frac{\xi^*-\langle\xi\rangle_\lambda}{\beta\sigma_\lambda^2}-k(\xi^*-\lambda)\right]}{{\sum_\lambda}N\left(\xi^*,\lambda\right)} \]

The code performing UI(colvar_UIestimator.h) is contributed by Haohao Fu [42] . It may be slow. I only change the boltzmann constant and output precision in it. For new version and issues, please see: https://github.com/fhh2626/colvars

After running eABF/DRR, the drr_tool utility can be used to extract the gradients and counts files from .drrstate. Naive(ABF) estimator's result is in .abf.grad and .abf.count files and CZAR estimator's result is in .czar.grad and .czar.count files. To get PMF, the abf_integrate(https://github.com/Colvars/colvars/tree/master/colvartools) is useful.

Description of components

By default this Action calculates the following quantities. These quanties can be referenced elsewhere in the input by using this Action's label followed by a dot and the name of the quantity required from the list below.

Quantity Description
bias the instantaneous value of the bias potential
_fict one or multiple instances of this quantity will be refereceable elsewhere in the input file. These quantities will named with the arguments of the bias followed by the character string _tilde. It is possible to add forces on these variable.
_vfict one or multiple instances of this quantity will be refereceable elsewhere in the input file. These quantities will named with the arguments of the bias followed by the character string _tilde. It is NOT possible to add forces on these variable.
_biasforce The bias force from eABF/DRR of the fictitious particle.
Compulsory keywords
TAU ( default=0.5 ) specifies relaxation time on each of variables are, similar to extendedTimeConstant in Colvars
FRICTION ( default=8.0 ) add a friction to the variable, similar to extendedLangevinDamping in Colvars
GRID_MIN the lower bounds for the grid (GRID_BIN or GRID_SPACING should be specified)
GRID_MAX the upper bounds for the grid (GRID_BIN or GRID_SPACING should be specified)
FULLSAMPLES ( default=500 ) number of samples in a bin prior to application of the ABF
OUTPUTFREQ write results to a file every N steps
Options
NUMERICAL_DERIVATIVES ( default=off ) calculate the derivatives for these quantities numerically
NOCZAR ( default=off ) disable the CZAR estimator
UI ( default=off ) enable the umbrella integration estimator
NOBIAS ( default=off ) DO NOT apply bias forces.
TEXTOUTPUT

( default=off ) use text output for grad and count files instead of boost::serialization binary output

ARG the input for this action is the scalar output from one or more other actions. The particular scalars that you will use are referenced using the label of the action. If the label appears on its own then it is assumed that the Action calculates a single scalar value. The value of this scalar is thus used as the input to this new action. If * or *.* appears the scalars calculated by all the proceding actions in the input file are taken. Some actions have multi-component outputs and each component of the output has a specific label. For example a DISTANCE action labelled dist may have three componets x, y and z. To take just the x component you should use dist.x, if you wish to take all three components then use dist.*.More information on the referencing of Actions can be found in the section of the manual on the PLUMED Getting Started. Scalar values can also be referenced using POSIX regular expressions as detailed in the section on Regular Expressions. To use this feature you you must compile PLUMED with the appropriate flag. You can use multiple instances of this keyword i.e. ARG1, ARG2, ARG3...
KAPPA specifies that the restraint is harmonic and what the values of the force constants on each of the variables are (default to kbt/(GRID_SPACING)^2)
GRID_BIN the number of bins for the grid
GRID_SPACING the approximate grid spacing (to be used as an alternative or together with GRID_BIN)
HISTORYFREQ save history to a file every N steps
UIRESTARTPREFIX specify the restart files for umbrella integration
OUTPUTPREFIX specify the output prefix (default to the label name)
TEMP the system temperature - needed when FRICTION is present. If not provided will be taken from MD code (if available)
EXTTEMP the temperature of extended variables (default to system temperature)
DRR_RFILE

specifies the restart file (.drrstate file)

Examples

The following input tells plumed to perform a eABF/DRR simulation on two torsional angles.

phi: TORSION ATOMS=5,7,9,15
psi: TORSION ATOMS=7,9,15,17

DRR ...
LABEL=eabf
ARG=phi,psi
FULLSAMPLES=500
GRID_MIN=-pi,-pi
GRID_MAX=pi,pi
GRID_BIN=180,180
FRICTION=8.0,8.0
TAU=0.5,0.5
OUTPUTFREQ=50000
HISTORYFREQ=500000
... DRR

# monitor the two variables, their fictitious variables and applied forces.
PRINT STRIDE=10 ARG=phi,psi,eabf.phi_fict,eabf.psi_fict,eabf.phi_biasforce,eabf.psi_biasforce FILE=COLVAR

The following input tells plumed to perform a eABF/DRR simulation on the distance of atom 10 and 92. The distance is restraint by LOWER_WALLS and UPPER_WALLS.

dist1: DISTANCE ATOMS=10,92
eabf_winall: DRR ARG=dist1 FULLSAMPLES=2000 GRID_MIN=1.20 GRID_MAX=3.20 GRID_BIN=200 FRICTION=8.0 TAU=0.5 OUTPUTFREQ=5000 HISTORYFREQ=500000
uwall: UPPER_WALLS ARG=eabf_winall.dist1_fict AT=3.2 KAPPA=418.4
lwall: LOWER_WALLS ARG=eabf_winall.dist1_fict AT=1.2 KAPPA=418.4
PRINT STRIDE=10 ARG=dist1,eabf_winall.dist1_fict,eabf_winall.dist1_biasforce FILE=COLVAR