Definition of custom collective variablesΒΆ
Apart from the List of collective variables already implemented in the metafalcon
package, it is
possible to define own variables to be used as metadynamics CVs. For each new CV, it is necessary to
provide a file that contains two functions, customcv()
for
the calculation of the variable values from the current coordinates and dcustomcv()
for the calculation of its gradient. In order to copy a template
cvcustom.py for the definition of these two functions into your working directory, run:
metaFALCON custom
It is important that function names, arguments and returns are not modified. Modifications should
only occur in the designated places in customcv()
:
### modify the following code
custom = 0.0
### end modify
and in dcustomcv()
:
### modify the following code
dcustom = np.zeros_like(coords)
### end modify
However, you can create help functions or import other modules within the cvcustom
module without any problems. Additional parameters needed for the
calculation can be provided in meta-config.json using the "parameters"
keyword:
{
"name": "user-defined variable",
"type": "custom",
"filename": "cvcustom",
"width": 1.0,
"parameters": {
"key1": value1,
"key2": value2,
...
}
The dictionary that contains "key1"
and "key2"
is given to customcv()
and dcustomcv()
through the
prm
argument. The "filename"
keyword is optional and only needed, if files other than
cvcustom.py are used, for example because multiple user-defined variables are used in the same
simulation.
In the metafalcon
package, lengths and energies are internally handled in atomic units. If
a different unit of the variable should be used in the user input and output (e.g. the Gaussian
width given in the meta-config.json file), a conversion factor is needed. Edit the line
au2unit = 1.0
so that au2unit
by multiplication converts atomic units into the unit of your variable. For
example, if you define a bond length in Angstrom, use:
au2unit = 0.529
See also
Further information on user-defined CVs is found here.