Constrained molecular dynamics: Difference between revisions

From VASP Wiki
No edit summary
No edit summary
Line 35: Line 35:
<div id="Slowgro"></div>
<div id="Slowgro"></div>


== How to ==
        
Geometric constraints are introduced by defining one or more entries with the STATUS parameter set to 0 in the {{FILE|ICONST}}-file. Constraints can be used within a standard NVT or NpT MD setting introduced by {{TAG|MDALGO}}=1|2|3. Note that fixing geometric parameters related to lattice vectors is not allowed within an NVT simulation (VASP would terminate with an error message). Constraints can be combined with restraints, time-dependent bias potentials ([[:Category:Metadynamics|Metadynamics]]), monitored coordinates and other elements available within the context of MD.        




Line 45: Line 44:
----
----


[[Category:Molecular dynamics]][[Category:Constrained molecular dynamics]][[Category:Theory]][[Category:Howto]]
[[Category:Constrained molecular dynamics]][[Category:Theory]]

Revision as of 09:41, 15 October 2024

Constrained molecular dynamics is performed using the SHAKE algorithm.[1]. In this algorithm, the Lagrangian for the system [math]\displaystyle{ \mathcal{L} }[/math] is extended as follows:

[math]\displaystyle{ \mathcal{L}^*(\mathbf{q,\dot{q}}) = \mathcal{L}(\mathbf{q,\dot{q}}) + \sum_{i=1}^{r} \lambda_i \sigma_i(q), }[/math]

where the summation is over r geometric constraints, [math]\displaystyle{ \mathcal{L}^* }[/math] is the Lagrangian for the extended system, and λi is a Lagrange multiplier associated with a geometric constraint σi:

[math]\displaystyle{ \sigma_i(q) = \xi_i({q})-\xi_i \; }[/math]

with ξi(q) being a geometric parameter and ξi is the value of ξi(q) fixed during the simulation.

In the SHAKE algorithm, the Lagrange multipliers λi are determined in the iterative procedure:

  1. Perform a standard MD step (leap-frog algorithm):
    [math]\displaystyle{ v^{t+{\Delta}t/2}_i = v^{t-{\Delta}t/2}_i + \frac{a^{t}_i}{m_i} {\Delta}t }[/math]
    [math]\displaystyle{ q^{t+{\Delta}t}_i = q^{t}_i + v^{t+{\Delta}t/2}_i{\Delta}t }[/math]
  2. Use the new positions q(tt) to compute Lagrange multipliers for all constraints:
    [math]\displaystyle{ {\lambda}_k= \frac{1}{{\Delta}t^2} \frac{\sigma_k(q^{t+{\Delta}t})}{\sum_{i=1}^N m_i^{-1} \bigtriangledown_i{\sigma}_k(q^{t}) \bigtriangledown_i{\sigma}_k(q^{t+{\Delta}t})} }[/math]
  3. Update the velocities and positions by adding a contribution due to restoring forces (proportional to λk):
    [math]\displaystyle{ v^{t+{\Delta}t/2}_i = v^{t-{\Delta}t/2}_i + \left( a^{t}_i-\sum_k \frac{{\lambda}_k}{m_i} \bigtriangledown_i{\sigma}_k(q^{t}) \right ) {\Delta}t }[/math]
    [math]\displaystyle{ q^{t+{\Delta}t}_i = q^{t}_i + v^{t+{\Delta}t/2}_i{\Delta}t }[/math]
  4. repeat steps 2-4 until either |σi(q)| are smaller than a predefined tolerance (determined by SHAKETOL), or the number of iterations exceeds SHAKEMAXITER.



References