Skip to content

Commit 6f82ec1

Browse files
authored
Merge pull request brucefan1983#1415 from luowh35/qtb
take into account the quantum effects of atomic nuclei in calculations based on the quantum thermal bath method
2 parents d5ff6e2 + 2f22241 commit 6f82ec1

File tree

8 files changed

+1082
-0
lines changed

8 files changed

+1082
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
.. _kw_ensemble_qtb:
2+
.. index::
3+
single: nvt_qtb (keyword in run.in)
4+
single: npt_qtb (keyword in run.in)
5+
single: Quantum Thermal Bath
6+
7+
:attr:`ensemble` (QTB)
8+
======================
9+
10+
The variants of the :attr:`ensemble` keyword described on this page implement the Quantum Thermal Bath (QTB) method [Dammak2009]_.
11+
The QTB thermostat is a Langevin-type thermostat that uses colored noise with a quantum Bose-Einstein energy spectrum instead of classical white noise.
12+
This allows approximate inclusion of nuclear quantum effects (zero-point energy and quantum heat capacity) in otherwise classical MD simulations.
13+
14+
The :attr:`npt_qtb` variant combines the QTB thermostat with the Parrinello-Rahman (MTTK) barostat [Martyna1994]_, equivalent to LAMMPS ``fix nph`` + ``fix qtb``.
15+
16+
17+
Syntax
18+
------
19+
20+
:attr:`nvt_qtb`
21+
^^^^^^^^^^^^^^^
22+
23+
Run an NVT simulation with the QTB thermostat::
24+
25+
ensemble nvt_qtb <T_1> <T_2> <T_coup> [f_max <value>] [N_f <value>]
26+
27+
* :attr:`<T_1>` and :attr:`<T_2>`: Initial and final target temperature (K). The target temperature varies linearly during the run.
28+
* :attr:`<T_coup>`: Thermostat coupling parameter (in units of timestep). Controls the friction coefficient: :math:`\gamma = 1 / (\text{T\_coup} \times dt)`.
29+
* :attr:`f_max`: (Optional, default 200) Maximum frequency of the QTB filter in ps\ :sup:`-1`. Should be larger than the highest phonon frequency in the system.
30+
* :attr:`N_f`: (Optional, default 100) Number of frequency points in the filter. The filter uses :math:`2 N_f` points total.
31+
32+
:attr:`npt_qtb`
33+
^^^^^^^^^^^^^^^
34+
35+
Run an NPT simulation with the QTB thermostat and Parrinello-Rahman (MTTK) barostat::
36+
37+
ensemble npt_qtb <direction> <p_1> <p_2> temp <T_1> <T_2> tperiod <tau_T> pperiod <tau_p> [f_max <value>] [N_f <value>]
38+
39+
Pressure control parameters:
40+
41+
* :attr:`<direction>`: One or more of ``iso``, ``aniso``, ``tri``, ``x``, ``y``, ``z``. Same syntax as :ref:`npt_mttk <mttk>`.
42+
* :attr:`<p_1>` and :attr:`<p_2>`: Initial and final target pressure (GPa).
43+
44+
Temperature and coupling parameters:
45+
46+
* :attr:`temp <T_1> <T_2>`: Initial and final target temperature (K).
47+
* :attr:`tperiod <tau_T>`: QTB thermostat coupling period (in units of timestep). Controls friction: :math:`\gamma = 1 / (\text{tperiod} \times dt)`.
48+
* :attr:`pperiod <tau_p>`: Barostat coupling period (in units of timestep, must be :math:`\geq 200`).
49+
50+
QTB-specific optional parameters (same as :attr:`nvt_qtb`):
51+
52+
* :attr:`f_max`: Maximum frequency (ps\ :sup:`-1`, default 200).
53+
* :attr:`N_f`: Number of frequency points (default 100).
54+
55+
56+
Examples
57+
--------
58+
59+
NVT-QTB
60+
^^^^^^^^
61+
62+
.. code-block:: rst
63+
64+
ensemble nvt_qtb 300 300 100
65+
66+
Run at 300 K with QTB thermostat. The coupling parameter is 100 timesteps.
67+
68+
.. code-block:: rst
69+
70+
ensemble nvt_qtb 300 300 100 f_max 150 N_f 200
71+
72+
Same as above but with custom filter parameters.
73+
74+
NPT-QTB
75+
^^^^^^^^
76+
77+
.. code-block:: rst
78+
79+
ensemble npt_qtb iso 0 0 temp 300 300 tperiod 100 pperiod 1000
80+
81+
Run at 300 K and 0 GPa with isotropic pressure control.
82+
83+
.. code-block:: rst
84+
85+
ensemble npt_qtb aniso 0 0 temp 300 300 tperiod 100 pperiod 1000 f_max 200 N_f 100
86+
87+
Anisotropic pressure control with explicit QTB parameters.
88+
89+
.. code-block:: rst
90+
91+
ensemble npt_qtb x 5 5 y 0 0 z 0 0 temp 300 300 tperiod 100 pperiod 1000
92+
93+
Apply 5 GPa along x and 0 GPa along y and z.
94+
95+
96+
Notes
97+
-----
98+
99+
* The QTB method generates colored noise whose power spectrum matches the quantum energy distribution :math:`E(\omega) = \hbar\omega[\frac{1}{2} + n_{BE}(\omega, T)]`, where :math:`n_{BE}` is the Bose-Einstein distribution.
100+
* The kinetic temperature reported in ``thermo.out`` will be higher than the target temperature due to zero-point energy contributions. This is expected behavior.
101+
* For liquid water at 300 K, the kinetic temperature is typically around 1000-1100 K.
102+
* The :attr:`npt_qtb` ensemble uses the MTTK (Martyna-Tuckerman-Tobias-Klein) integrator for pressure control, which is the same as :ref:`npt_mttk <mttk>` but with the Nosé-Hoover chain thermostat replaced by the QTB thermostat.
103+
* The :attr:`f_max` parameter should be set larger than the highest phonon frequency in the system. For water, 200 ps\ :sup:`-1` is sufficient.
104+
105+
106+
References
107+
----------
108+
109+
.. [Dammak2009] H. Dammak, Y. Chalopin, M. Laroche, M. Hayoun, and J.-J. Greffet, *Quantum Thermal Bath for Molecular Dynamics Simulation*, Phys. Rev. Lett. **103**, 190601 (2009).

doc/gpumd/input_parameters/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Below you can find a listing of keywords for the ``run.in`` input file.
2323
ensemble
2424
ensemble_standard
2525
ensemble_mttk
26+
ensemble_qtb
2627
ensemble_heat
2728
ensemble_pimd
2829
ensemble_ti_liquid

0 commit comments

Comments
 (0)