Notes on AMBER 12 interface
The AMBER 12 interface is based on pmemd rather than sander.
There are many limitations on pmemd, predominantly that it lacks:
- Analytical second derivatives;
- Smooth cutoffs;
- Non-periodic vacuum simulations.
However, it has built-in support for CUDA acceleration and its code is much, much simpler than the sander code.
Changes from pmemd code
amber_interface.F90
Based upon pmemd.F90, with the following changes:
- Split the code into 3 subroutines:
amber_setup,energy_and_gradient,amber_finish
smooth_cutoff.F90
The module is named smooth_cutoff_mod and keeps track of ifswitch.
Implementing force switching cut-offs. Important variables to keep track of:
ifswitch determines which style of cut-offs is used.
ifswitch = 1
rc = sqrt(cut), i.e.
In generalised Born simulations, cut is a private variable. The publicly accessible variable is gb_cutoff. Note that this is different from rgbmax, which determines the cut-off for calculating gb radii.
We switch on the additional terms at . This is arbitrarily set to 0.9 of the cut-off distance.
We have these other terms, term1(1:natom), term2(1:natom), term3(1:natom), which I shall represent as respectively.
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle c_2 = \begin{cases} 1.0, & \mbox{if }r \le r_\text{on} \\ (r_c^2-r^2)^2(r_c^2+2r^2-3r_\text{on}^2)\frac{1}{r_c^6}\frac{1}{(1-0.9^2)^3}, & \mbox{if }r > r_\text{on} \end{cases}}
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle c_3 = \begin{cases} 0.0, & \mbox{if }r \le r_\text{on} \\ -12(r_c^2-r^2)(r_\text{on}^2-r^2)\frac{1}{r_c^6}\frac{1}{(1-0.9^2)^3}, & \mbox{if }r > r_\text{on} \end{cases}}
The energies and their derivatives are given by:
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle E_\text{elec} = \frac{q_iq_j}{\epsilon_\text{int}r}c_2 \mbox{ and } \frac{-1}{r}\frac{dE_\text{elec}}{dr} = \frac{E_\text{elec}}{r^2} + E_\text{elec}c_1}
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle E_\text{gb} = E_\text{gb}c_2 \mbox{ and } \frac{dE_\text{gb}}{dr} = \frac{-1}{r}\frac{dE_\text{gb}}{dr}c_2 + E_\text{gb}c_1}
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle E_\text{vdW} = \left ( \frac{A}{r^{12}} - \frac{B}{r^6} \right ) c_2 \mbox{ and } \frac{-1}{r}\frac{dE_\text{vdW}}{dr} = \left (\frac{12A}{r^{12}} - \frac{6B}{r^6} \right )\frac{1}{r^2}c_2 + \left ( \frac{A}{r^{12}} - \frac{B}{r^6} \right ) c_3}
mdin_ctrl_dat.F90
- Line 31:
ifswitchadded to declaration - Line 45:
ifswitchadded to/ mdin_ctrl_int /common block - Line 49:
mdin_ctrl_int_cnt = 56(rather than 55, since there is one more integer variable now) - Line 216:
ifswitchadded/cntrl/namelist, for reading min.in files. - Line 434: initialised
ifswitch = 0