|
| 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). |
0 commit comments