a question about constrained MD, shake algorithm and the free energy calculation using Lagrange multiplier
Fangyong Yan
yanfa... at gmail.com
Mon Jul 11 16:22:13 UTC 2016
Finally with the help from my advisor, I figured out the issue,
shake uses zeta** 2 = (ri - rj) **2, thus, zeta = |ri - rj|, which is
exactly in Ciccotti's paper, now the force on atom i is,
F_i_total = f_i - Lagrange multiplier * the first derivative of zeta versus
ri,
let the lagrange multiplier equal to lamda, and
the first derivative of zeta versus ri is equal to,
d|ri - rj| / d(r_i),
since it is the first derivative of the absolute value, it takes more care,
let y = |ri - rj| = (u**2)**1/2, and u = (ri - rj)
then d|ri - rj| / d(ri) = (dy / du) * (du / dri) = [1/2* 2* u * u' /
(u**2)**1/2] * du / d(ri) = [u * u' / (u**2)**1/2] * u' = (ri-rj) / |ri -
rj|,
and d|ri - rj| / d(rj) = (rj - ri) / |ri - rj|,
now the force F_i_total = f_i - lambda * (ri - rj) / |ri - rj|,
F_j_total = f_j - lambda * (rj - ri) / |ri - rj|,
and the total force on i and j, or on the constrained bond is,
F_j_total - F_i_total = (f_j - f_i) - lambda * 2 * (rj - ri) / |ri - rj|,
now projection the force on ij, we get this forces projection on the vector
ij, we get
|f_j - f_i| * cos_theta - lambda * 2, theta is the angle between force
vector f_j-f_i and position vector r_j-r_i, and cos_theta' for lambda is 1
since lambda lies at the same line with r_j-r_i. And it becomes total force
on the bond ij = |f_j - f_i| * cos_theta - 2 * lambda.
I am not good with math at all, so please correct me if you find some
mistake in these eqs. Thanks!
Fangyong
On Wednesday, July 6, 2016 at 12:05:25 PM UTC-4, Fangyong Yan wrote:
>
> Hi,
>
> I have a question about the free energy calculation using the constrained
> MD. For the simplest case, such as constraining a inter-molecular distance
> between two atoms, i and j, In the constrain MD in the NVT ensemble, CP2K
> uses shake algorithm to update the position and velocity, where the
> constrain follows the holonomic constrain,
>
> sigma = (ri - rj) ** 2 - dij ** 2, where dij is the constrain distance,
> and the total force is equal to F_i + G_i, G_i is the constrained force
> and is equal to, lamda * the first derivative of simga versus r_i, thus,
> G_i = -2 * lamda * r_i, (where these eq. borrows from the original shake
> paper, JEAN-PAUL RYCKAERT, GIOVANNI CICCOTTI, AND HERMAN J. C. BERENDSEN,
> JOURNAL OF COMPUTATIONAL. PHYSICS 23, 321-341 (1977)).
>
> In the free energy calculation, I think CP2K uses the eq. derived by
> Michiel Sprik and GIOVANNI CICCOTTI, Free energy from constrained molecular
> dynamics, J. Chem. Phys., Vol. 109, No. 18, 8 November 1998, where in this
> paper, the free energy uses a different constrain,
> where constrain is equal to |ri - rj| - dij = 0, "| |" represents the
> absolute value, and in this case, the constrained force G_i = - lamda, (see
> eq. 13 in the paper). The free energy is equal to
>
> dW / d Zeta' = < Z^(-1/2) * [ -lamda + kTG] > / < Z^(-1/2)>
>
> W is the free energy, Zeta is the constrained eq., in this case is equal
> to |ri - rj| - dij = 0, Zeta' represent different Zeta's; < > is the
> ensemble average, Z is a factor arises from the requirement that when Zeta
> is equal to zero for all times, the first derivative of Zeta (the velocity
> of this constrain) is also equal to zero for all times. (from E.A. CARTER,
> Giovanni CICCOTTI, James T. HYNES, Raymond KAPRAL, Chem. Phys. Lett. 156,
> 472 ~1989.); G is equal to
> G = (1 / Z^2) * (1/m_i * 1/m_j) * the first derivative of Zeta versus r_i
> * the second derivative of Zeta versus r_i and r_j * the first derivative
> of Zeta versus r_j,
> when Zeta = |r_i - r_j| - dij, the first derivative of Zeta versus r_i =
> the first derivative of Zeta versus r_j = 1, the second derivative of Zeta
> versus r_i and r_j = 0, thus, the free energy is equal to
>
> dW / d Zeta' = < Z^(-1/2) * [ -lamda + kTG] > / < Z^(-1/2)> = < Z^(-1/2) *
> [ -lamda] > / < Z^(-1/2)>, and Z is a constant in this simple case, thus,
> dW / d Zeta' = <-lamda>
>
> Now my question is, since shake uses Zeta = (r_i - r_J) ** 2 - dij**2 = 0,
> in this case, G wont disappear, and the constrained force G_i = - 2 * lamda
> * r_i. Since CP2K does use SHAKE algorithm, how does CP2K do the free
> energy calculation, do CP2K uses Zeta = (r_i - r_j) ** 2 - dij**2 =0, or
> Zeta = |r_i - r_j| - dij = 0, since these two cases the lagrange multiplier
> is different.
>
> Thanks for your patience for reading this, and I hope someone who can help
> me with this issue!
>
> Fangyong
>
>
>
>
>
>
>
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cp2k.org/archives/cp2k-user/attachments/20160711/b38f49c4/attachment.htm>
More information about the CP2K-user
mailing list