mirror of https://github.com/lammps/lammps.git
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15021 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
parent
1463cb2598
commit
59e44bf4bf
|
@ -618,13 +618,13 @@ This is indicated by additional letters in parenthesis: c = USER-CUDA,
|
|||
g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.</p>
|
||||
<table border="1" class="docutils">
|
||||
<colgroup>
|
||||
<col width="12%" />
|
||||
<col width="15%" />
|
||||
<col width="13%" />
|
||||
<col width="11%" />
|
||||
<col width="12%" />
|
||||
<col width="11%" />
|
||||
<col width="16%" />
|
||||
<col width="11%" />
|
||||
<col width="12%" />
|
||||
</colgroup>
|
||||
<tbody valign="top">
|
||||
|
@ -652,116 +652,116 @@ g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.</p>
|
|||
<td><a class="reference internal" href="fix_drag.html"><span class="doc">drag</span></a></td>
|
||||
<td><a class="reference internal" href="fix_dt_reset.html"><span class="doc">dt/reset</span></a></td>
|
||||
<td><a class="reference internal" href="fix_efield.html"><span class="doc">efield</span></a></td>
|
||||
<td><a class="reference internal" href="fix_ehex.html"><span class="doc">ehex</span></a></td>
|
||||
<td><a class="reference internal" href="fix_enforce2d.html"><span class="doc">enforce2d (c)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_evaporate.html"><span class="doc">evaporate</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_external.html"><span class="doc">external</span></a></td>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_evaporate.html"><span class="doc">evaporate</span></a></td>
|
||||
<td><a class="reference internal" href="fix_external.html"><span class="doc">external</span></a></td>
|
||||
<td><a class="reference internal" href="fix_freeze.html"><span class="doc">freeze (c)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_gcmc.html"><span class="doc">gcmc</span></a></td>
|
||||
<td><a class="reference internal" href="fix_gld.html"><span class="doc">gld</span></a></td>
|
||||
<td><a class="reference internal" href="fix_gravity.html"><span class="doc">gravity (co)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_heat.html"><span class="doc">heat</span></a></td>
|
||||
<td><a class="reference internal" href="fix_indent.html"><span class="doc">indent</span></a></td>
|
||||
<td><a class="reference internal" href="fix_langevin.html"><span class="doc">langevin (k)</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_lineforce.html"><span class="doc">lineforce</span></a></td>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_langevin.html"><span class="doc">langevin (k)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_lineforce.html"><span class="doc">lineforce</span></a></td>
|
||||
<td><a class="reference internal" href="fix_momentum.html"><span class="doc">momentum</span></a></td>
|
||||
<td><a class="reference internal" href="fix_move.html"><span class="doc">move</span></a></td>
|
||||
<td><a class="reference internal" href="fix_msst.html"><span class="doc">msst</span></a></td>
|
||||
<td><a class="reference internal" href="fix_neb.html"><span class="doc">neb</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nh.html"><span class="doc">nph (ko)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nphug.html"><span class="doc">nphug (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nph_asphere.html"><span class="doc">nph/asphere (o)</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_nph_body.html"><span class="doc">nph/body</span></a></td>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_nph_asphere.html"><span class="doc">nph/asphere (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nph_body.html"><span class="doc">nph/body</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nph_sphere.html"><span class="doc">nph/sphere (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nh.html"><span class="doc">npt (ckio)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_npt_asphere.html"><span class="doc">npt/asphere (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_npt_body.html"><span class="doc">npt/body</span></a></td>
|
||||
<td><a class="reference internal" href="fix_npt_sphere.html"><span class="doc">npt/sphere (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nve.html"><span class="doc">nve (ckio)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nve_asphere.html"><span class="doc">nve/asphere (i)</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_nve_asphere_noforce.html"><span class="doc">nve/asphere/noforce</span></a></td>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_nve_asphere.html"><span class="doc">nve/asphere (i)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nve_asphere_noforce.html"><span class="doc">nve/asphere/noforce</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nve_body.html"><span class="doc">nve/body</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nve_limit.html"><span class="doc">nve/limit</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nve_line.html"><span class="doc">nve/line</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nve_noforce.html"><span class="doc">nve/noforce</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nve_sphere.html"><span class="doc">nve/sphere (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nve_tri.html"><span class="doc">nve/tri</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nh.html"><span class="doc">nvt (ciko)</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_nvt_asphere.html"><span class="doc">nvt/asphere (o)</span></a></td>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_nh.html"><span class="doc">nvt (ciko)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nvt_asphere.html"><span class="doc">nvt/asphere (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nvt_body.html"><span class="doc">nvt/body</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nvt_sllod.html"><span class="doc">nvt/sllod (io)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_nvt_sphere.html"><span class="doc">nvt/sphere (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_oneway.html"><span class="doc">oneway</span></a></td>
|
||||
<td><a class="reference internal" href="fix_orient_fcc.html"><span class="doc">orient/fcc</span></a></td>
|
||||
<td><a class="reference internal" href="fix_planeforce.html"><span class="doc">planeforce</span></a></td>
|
||||
<td><a class="reference internal" href="fix_poems.html"><span class="doc">poems</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_pour.html"><span class="doc">pour</span></a></td>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_poems.html"><span class="doc">poems</span></a></td>
|
||||
<td><a class="reference internal" href="fix_pour.html"><span class="doc">pour</span></a></td>
|
||||
<td><a class="reference internal" href="fix_press_berendsen.html"><span class="doc">press/berendsen</span></a></td>
|
||||
<td><a class="reference internal" href="fix_print.html"><span class="doc">print</span></a></td>
|
||||
<td><a class="reference internal" href="fix_property_atom.html"><span class="doc">property/atom</span></a></td>
|
||||
<td><a class="reference internal" href="fix_qeq_comb.html"><span class="doc">qeq/comb (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_qeq.html"><span class="doc">qeq/dynamic</span></a></td>
|
||||
<td><a class="reference internal" href="fix_qeq.html"><span class="doc">qeq/fire</span></a></td>
|
||||
<td><a class="reference internal" href="fix_qeq.html"><span class="doc">qeq/point</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_qeq.html"><span class="doc">qeq/shielded</span></a></td>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_qeq.html"><span class="doc">qeq/point</span></a></td>
|
||||
<td><a class="reference internal" href="fix_qeq.html"><span class="doc">qeq/shielded</span></a></td>
|
||||
<td><a class="reference internal" href="fix_qeq.html"><span class="doc">qeq/slater</span></a></td>
|
||||
<td><a class="reference internal" href="fix_shake.html"><span class="doc">rattle</span></a></td>
|
||||
<td><a class="reference internal" href="fix_reax_bonds.html"><span class="doc">reax/bonds</span></a></td>
|
||||
<td><a class="reference internal" href="fix_recenter.html"><span class="doc">recenter</span></a></td>
|
||||
<td><a class="reference internal" href="fix_restrain.html"><span class="doc">restrain</span></a></td>
|
||||
<td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/nph (o)</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/npt (o)</span></a></td>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/nph (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/npt (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/nve (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/nvt (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/small (o)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/small/nph</span></a></td>
|
||||
<td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/small/npt</span></a></td>
|
||||
<td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/small/nve</span></a></td>
|
||||
<td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/small/nvt</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_setforce.html"><span class="doc">setforce (ck)</span></a></td>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_rigid.html"><span class="doc">rigid/small/nvt</span></a></td>
|
||||
<td><a class="reference internal" href="fix_setforce.html"><span class="doc">setforce (ck)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_shake.html"><span class="doc">shake (c)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_spring.html"><span class="doc">spring</span></a></td>
|
||||
<td><a class="reference internal" href="fix_spring_rg.html"><span class="doc">spring/rg</span></a></td>
|
||||
<td><a class="reference internal" href="fix_spring_self.html"><span class="doc">spring/self</span></a></td>
|
||||
<td><a class="reference internal" href="fix_srd.html"><span class="doc">srd</span></a></td>
|
||||
<td><a class="reference internal" href="fix_store_force.html"><span class="doc">store/force</span></a></td>
|
||||
<td><a class="reference internal" href="fix_store_state.html"><span class="doc">store/state</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_temp_berendsen.html"><span class="doc">temp/berendsen (c)</span></a></td>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_store_state.html"><span class="doc">store/state</span></a></td>
|
||||
<td><a class="reference internal" href="fix_temp_berendsen.html"><span class="doc">temp/berendsen (c)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_temp_csvr.html"><span class="doc">temp/csld</span></a></td>
|
||||
<td><a class="reference internal" href="fix_temp_csvr.html"><span class="doc">temp/csvr</span></a></td>
|
||||
<td><a class="reference internal" href="fix_temp_rescale.html"><span class="doc">temp/rescale (c)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_tfmc.html"><span class="doc">tfmc</span></a></td>
|
||||
<td><a class="reference internal" href="fix_thermal_conductivity.html"><span class="doc">thermal/conductivity</span></a></td>
|
||||
<td><a class="reference internal" href="fix_tmd.html"><span class="doc">tmd</span></a></td>
|
||||
<td><a class="reference internal" href="fix_ttm.html"><span class="doc">ttm</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_tune_kspace.html"><span class="doc">tune/kspace</span></a></td>
|
||||
<tr class="row-even"><td><a class="reference internal" href="fix_ttm.html"><span class="doc">ttm</span></a></td>
|
||||
<td><a class="reference internal" href="fix_tune_kspace.html"><span class="doc">tune/kspace</span></a></td>
|
||||
<td><a class="reference internal" href="fix_vector.html"><span class="doc">vector</span></a></td>
|
||||
<td><a class="reference internal" href="fix_viscosity.html"><span class="doc">viscosity</span></a></td>
|
||||
<td><a class="reference internal" href="fix_viscous.html"><span class="doc">viscous (c)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_wall.html"><span class="doc">wall/colloid</span></a></td>
|
||||
<td><a class="reference internal" href="fix_wall_gran.html"><span class="doc">wall/gran</span></a></td>
|
||||
<td><a class="reference internal" href="fix_wall.html"><span class="doc">wall/harmonic</span></a></td>
|
||||
<td><a class="reference internal" href="fix_wall.html"><span class="doc">wall/lj1043</span></a></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_wall.html"><span class="doc">wall/lj126</span></a></td>
|
||||
<tr class="row-odd"><td><a class="reference internal" href="fix_wall.html"><span class="doc">wall/lj1043</span></a></td>
|
||||
<td><a class="reference internal" href="fix_wall.html"><span class="doc">wall/lj126</span></a></td>
|
||||
<td><a class="reference internal" href="fix_wall.html"><span class="doc">wall/lj93</span></a></td>
|
||||
<td><a class="reference internal" href="fix_wall_piston.html"><span class="doc">wall/piston</span></a></td>
|
||||
<td><a class="reference internal" href="fix_wall_reflect.html"><span class="doc">wall/reflect (k)</span></a></td>
|
||||
<td><a class="reference internal" href="fix_wall_region.html"><span class="doc">wall/region</span></a></td>
|
||||
<td><a class="reference internal" href="fix_wall_srd.html"><span class="doc">wall/srd</span></a></td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -2001,15 +2001,17 @@ periodic box. By holding the two regions at different temperatures
|
|||
with a <a class="reference internal" href="#howto-13"><span class="std std-ref">thermostatting fix</span></a>, the energy
|
||||
added to the hot region should equal the energy subtracted from the
|
||||
cold region and be proportional to the heat flux moving between the
|
||||
regions. See the paper by <a class="reference internal" href="#ikeshoji"><span class="std std-ref">Ikeshoji and Hafskjold</span></a> for
|
||||
details of this idea. Note that thermostatting fixes such as <a class="reference internal" href="fix_nh.html"><span class="doc">fix nvt</span></a>, <a class="reference internal" href="fix_langevin.html"><span class="doc">fix langevin</span></a>, and <a class="reference internal" href="fix_temp_rescale.html"><span class="doc">fix temp/rescale</span></a> store the cumulative energy they
|
||||
regions. See the papers by <a class="reference internal" href="#howto-ikeshoji"><span class="std std-ref">Ikeshoji and Hafskjold</span></a>
|
||||
and <a class="reference internal" href="#howto-wirnsberger"><span class="std std-ref">Wirnsberger et al</span></a> for details of this idea.
|
||||
Note that thermostatting fixes such as <a class="reference internal" href="fix_nh.html"><span class="doc">fix nvt</span></a>, <a class="reference internal" href="fix_langevin.html"><span class="doc">fix langevin</span></a>, and <a class="reference internal" href="fix_temp_rescale.html"><span class="doc">fix temp/rescale</span></a> store the cumulative energy they
|
||||
add/subtract.</p>
|
||||
<p>Alternatively, as a second method, the <a class="reference internal" href="fix_heat.html"><span class="doc">fix heat</span></a>
|
||||
command can used in place of thermostats on each of two regions to
|
||||
add/subtract specified amounts of energy to both regions. In both
|
||||
cases, the resulting temperatures of the two regions can be monitored
|
||||
with the “compute temp/region” command and the temperature profile of
|
||||
the intermediate region can be monitored with the <a class="reference internal" href="fix_ave_spatial.html"><span class="doc">fix ave/spatial</span></a> and <a class="reference internal" href="compute_ke_atom.html"><span class="doc">compute ke/atom</span></a> commands.</p>
|
||||
<p>Alternatively, as a second method, the <a class="reference internal" href="fix_heat.html"><span class="doc">fix heat</span></a> or
|
||||
<a class="reference internal" href="fix_ehex.html"><span class="doc">fix ehex</span></a> commands can be used in place of thermostats
|
||||
on each of two regions to add/subtract specified amounts of energy to
|
||||
both regions. In both cases, the resulting temperatures of the two
|
||||
regions can be monitored with the “compute temp/region” command and
|
||||
the temperature profile of the intermediate region can be monitored
|
||||
with the <a class="reference internal" href="fix_ave_spatial.html"><span class="doc">fix ave/spatial</span></a> and <a class="reference internal" href="compute_ke_atom.html"><span class="doc">compute ke/atom</span></a> commands.</p>
|
||||
<p>The third method is to perform a reverse non-equilibrium MD simulation
|
||||
using the <a class="reference internal" href="fix_thermal_conductivity.html"><span class="doc">fix thermal/conductivity</span></a>
|
||||
command which implements the rNEMD algorithm of Muller-Plathe.
|
||||
|
@ -2782,8 +2784,10 @@ too close, which can cause numerical issues.</p>
|
|||
Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).</p>
|
||||
<p id="horn"><strong>(Horn)</strong> Horn, Swope, Pitera, Madura, Dick, Hura, and Head-Gordon,
|
||||
J Chem Phys, 120, 9665 (2004).</p>
|
||||
<p id="ikeshoji"><strong>(Ikeshoji)</strong> Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261
|
||||
<p id="howto-ikeshoji"><strong>(Ikeshoji)</strong> Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261
|
||||
(1994).</p>
|
||||
<p id="howto-wirnsberger"><strong>(Wirnsberger)</strong> Wirnsberger, Frenkel, and Dellago, J Chem Phys, 143, 124104
|
||||
(2015).</p>
|
||||
<p id="howto-mackerell"><strong>(MacKerell)</strong> MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
|
||||
Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).</p>
|
||||
<p id="howto-mayo"><strong>(Mayo)</strong> Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
|
||||
|
|
|
@ -457,37 +457,37 @@ with the :doc:`appropriate accelerated package <Section_accelerate>`.
|
|||
This is indicated by additional letters in parenthesis: c = USER-CUDA,
|
||||
g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
|
||||
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`adapt <fix_adapt>` | :doc:`addforce (c) <fix_addforce>` | :doc:`append/atoms <fix_append_atoms>` | :doc:`atom/swap <fix_atom_swap>` | :doc:`aveforce (c) <fix_aveforce>` | :doc:`ave/atom <fix_ave_atom>` | :doc:`ave/chunk <fix_ave_chunk>` | :doc:`ave/correlate <fix_ave_correlate>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`ave/histo <fix_ave_histo>` | :doc:`ave/histo/weight <fix_ave_histo>` | :doc:`ave/spatial <fix_ave_spatial>` | :doc:`ave/time <fix_ave_time>` | :doc:`balance <fix_balance>` | :doc:`bond/break <fix_bond_break>` | :doc:`bond/create <fix_bond_create>` | :doc:`bond/swap <fix_bond_swap>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`box/relax <fix_box_relax>` | :doc:`deform (k) <fix_deform>` | :doc:`deposit <fix_deposit>` | :doc:`drag <fix_drag>` | :doc:`dt/reset <fix_dt_reset>` | :doc:`efield <fix_efield>` | :doc:`enforce2d (c) <fix_enforce2d>` | :doc:`evaporate <fix_evaporate>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`external <fix_external>` | :doc:`freeze (c) <fix_freeze>` | :doc:`gcmc <fix_gcmc>` | :doc:`gld <fix_gld>` | :doc:`gravity (co) <fix_gravity>` | :doc:`heat <fix_heat>` | :doc:`indent <fix_indent>` | :doc:`langevin (k) <fix_langevin>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`lineforce <fix_lineforce>` | :doc:`momentum <fix_momentum>` | :doc:`move <fix_move>` | :doc:`msst <fix_msst>` | :doc:`neb <fix_neb>` | :doc:`nph (ko) <fix_nh>` | :doc:`nphug (o) <fix_nphug>` | :doc:`nph/asphere (o) <fix_nph_asphere>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`nph/body <fix_nph_body>` | :doc:`nph/sphere (o) <fix_nph_sphere>` | :doc:`npt (ckio) <fix_nh>` | :doc:`npt/asphere (o) <fix_npt_asphere>` | :doc:`npt/body <fix_npt_body>` | :doc:`npt/sphere (o) <fix_npt_sphere>` | :doc:`nve (ckio) <fix_nve>` | :doc:`nve/asphere (i) <fix_nve_asphere>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`nve/asphere/noforce <fix_nve_asphere_noforce>` | :doc:`nve/body <fix_nve_body>` | :doc:`nve/limit <fix_nve_limit>` | :doc:`nve/line <fix_nve_line>` | :doc:`nve/noforce <fix_nve_noforce>` | :doc:`nve/sphere (o) <fix_nve_sphere>` | :doc:`nve/tri <fix_nve_tri>` | :doc:`nvt (ciko) <fix_nh>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`nvt/asphere (o) <fix_nvt_asphere>` | :doc:`nvt/body <fix_nvt_body>` | :doc:`nvt/sllod (io) <fix_nvt_sllod>` | :doc:`nvt/sphere (o) <fix_nvt_sphere>` | :doc:`oneway <fix_oneway>` | :doc:`orient/fcc <fix_orient_fcc>` | :doc:`planeforce <fix_planeforce>` | :doc:`poems <fix_poems>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`pour <fix_pour>` | :doc:`press/berendsen <fix_press_berendsen>` | :doc:`print <fix_print>` | :doc:`property/atom <fix_property_atom>` | :doc:`qeq/comb (o) <fix_qeq_comb>` | :doc:`qeq/dynamic <fix_qeq>` | :doc:`qeq/fire <fix_qeq>` | :doc:`qeq/point <fix_qeq>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`qeq/shielded <fix_qeq>` | :doc:`qeq/slater <fix_qeq>` | :doc:`rattle <fix_shake>` | :doc:`reax/bonds <fix_reax_bonds>` | :doc:`recenter <fix_recenter>` | :doc:`restrain <fix_restrain>` | :doc:`rigid (o) <fix_rigid>` | :doc:`rigid/nph (o) <fix_rigid>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`rigid/npt (o) <fix_rigid>` | :doc:`rigid/nve (o) <fix_rigid>` | :doc:`rigid/nvt (o) <fix_rigid>` | :doc:`rigid/small (o) <fix_rigid>` | :doc:`rigid/small/nph <fix_rigid>` | :doc:`rigid/small/npt <fix_rigid>` | :doc:`rigid/small/nve <fix_rigid>` | :doc:`rigid/small/nvt <fix_rigid>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`setforce (ck) <fix_setforce>` | :doc:`shake (c) <fix_shake>` | :doc:`spring <fix_spring>` | :doc:`spring/rg <fix_spring_rg>` | :doc:`spring/self <fix_spring_self>` | :doc:`srd <fix_srd>` | :doc:`store/force <fix_store_force>` | :doc:`store/state <fix_store_state>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`temp/berendsen (c) <fix_temp_berendsen>` | :doc:`temp/csld <fix_temp_csvr>` | :doc:`temp/csvr <fix_temp_csvr>` | :doc:`temp/rescale (c) <fix_temp_rescale>` | :doc:`tfmc <fix_tfmc>` | :doc:`thermal/conductivity <fix_thermal_conductivity>` | :doc:`tmd <fix_tmd>` | :doc:`ttm <fix_ttm>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`tune/kspace <fix_tune_kspace>` | :doc:`vector <fix_vector>` | :doc:`viscosity <fix_viscosity>` | :doc:`viscous (c) <fix_viscous>` | :doc:`wall/colloid <fix_wall>` | :doc:`wall/gran <fix_wall_gran>` | :doc:`wall/harmonic <fix_wall>` | :doc:`wall/lj1043 <fix_wall>` |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
| :doc:`wall/lj126 <fix_wall>` | :doc:`wall/lj93 <fix_wall>` | :doc:`wall/piston <fix_wall_piston>` | :doc:`wall/reflect (k) <fix_wall_reflect>` | :doc:`wall/region <fix_wall_region>` | :doc:`wall/srd <fix_wall_srd>` | | |
|
||||
+------------------------------------------------------+----------------------------------------------+----------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+--------------------------------------+------------------------------------------+
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`adapt <fix_adapt>` | :doc:`addforce (c) <fix_addforce>` | :doc:`append/atoms <fix_append_atoms>` | :doc:`atom/swap <fix_atom_swap>` | :doc:`aveforce (c) <fix_aveforce>` | :doc:`ave/atom <fix_ave_atom>` | :doc:`ave/chunk <fix_ave_chunk>` | :doc:`ave/correlate <fix_ave_correlate>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`ave/histo <fix_ave_histo>` | :doc:`ave/histo/weight <fix_ave_histo>` | :doc:`ave/spatial <fix_ave_spatial>` | :doc:`ave/time <fix_ave_time>` | :doc:`balance <fix_balance>` | :doc:`bond/break <fix_bond_break>` | :doc:`bond/create <fix_bond_create>` | :doc:`bond/swap <fix_bond_swap>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`box/relax <fix_box_relax>` | :doc:`deform (k) <fix_deform>` | :doc:`deposit <fix_deposit>` | :doc:`drag <fix_drag>` | :doc:`dt/reset <fix_dt_reset>` | :doc:`efield <fix_efield>` | :doc:`ehex <fix_ehex>` | :doc:`enforce2d (c) <fix_enforce2d>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`evaporate <fix_evaporate>` | :doc:`external <fix_external>` | :doc:`freeze (c) <fix_freeze>` | :doc:`gcmc <fix_gcmc>` | :doc:`gld <fix_gld>` | :doc:`gravity (co) <fix_gravity>` | :doc:`heat <fix_heat>` | :doc:`indent <fix_indent>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`langevin (k) <fix_langevin>` | :doc:`lineforce <fix_lineforce>` | :doc:`momentum <fix_momentum>` | :doc:`move <fix_move>` | :doc:`msst <fix_msst>` | :doc:`neb <fix_neb>` | :doc:`nph (ko) <fix_nh>` | :doc:`nphug (o) <fix_nphug>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`nph/asphere (o) <fix_nph_asphere>` | :doc:`nph/body <fix_nph_body>` | :doc:`nph/sphere (o) <fix_nph_sphere>` | :doc:`npt (ckio) <fix_nh>` | :doc:`npt/asphere (o) <fix_npt_asphere>` | :doc:`npt/body <fix_npt_body>` | :doc:`npt/sphere (o) <fix_npt_sphere>` | :doc:`nve (ckio) <fix_nve>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`nve/asphere (i) <fix_nve_asphere>` | :doc:`nve/asphere/noforce <fix_nve_asphere_noforce>` | :doc:`nve/body <fix_nve_body>` | :doc:`nve/limit <fix_nve_limit>` | :doc:`nve/line <fix_nve_line>` | :doc:`nve/noforce <fix_nve_noforce>` | :doc:`nve/sphere (o) <fix_nve_sphere>` | :doc:`nve/tri <fix_nve_tri>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`nvt (ciko) <fix_nh>` | :doc:`nvt/asphere (o) <fix_nvt_asphere>` | :doc:`nvt/body <fix_nvt_body>` | :doc:`nvt/sllod (io) <fix_nvt_sllod>` | :doc:`nvt/sphere (o) <fix_nvt_sphere>` | :doc:`oneway <fix_oneway>` | :doc:`orient/fcc <fix_orient_fcc>` | :doc:`planeforce <fix_planeforce>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`poems <fix_poems>` | :doc:`pour <fix_pour>` | :doc:`press/berendsen <fix_press_berendsen>` | :doc:`print <fix_print>` | :doc:`property/atom <fix_property_atom>` | :doc:`qeq/comb (o) <fix_qeq_comb>` | :doc:`qeq/dynamic <fix_qeq>` | :doc:`qeq/fire <fix_qeq>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`qeq/point <fix_qeq>` | :doc:`qeq/shielded <fix_qeq>` | :doc:`qeq/slater <fix_qeq>` | :doc:`rattle <fix_shake>` | :doc:`reax/bonds <fix_reax_bonds>` | :doc:`recenter <fix_recenter>` | :doc:`restrain <fix_restrain>` | :doc:`rigid (o) <fix_rigid>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`rigid/nph (o) <fix_rigid>` | :doc:`rigid/npt (o) <fix_rigid>` | :doc:`rigid/nve (o) <fix_rigid>` | :doc:`rigid/nvt (o) <fix_rigid>` | :doc:`rigid/small (o) <fix_rigid>` | :doc:`rigid/small/nph <fix_rigid>` | :doc:`rigid/small/npt <fix_rigid>` | :doc:`rigid/small/nve <fix_rigid>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`rigid/small/nvt <fix_rigid>` | :doc:`setforce (ck) <fix_setforce>` | :doc:`shake (c) <fix_shake>` | :doc:`spring <fix_spring>` | :doc:`spring/rg <fix_spring_rg>` | :doc:`spring/self <fix_spring_self>` | :doc:`srd <fix_srd>` | :doc:`store/force <fix_store_force>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`store/state <fix_store_state>` | :doc:`temp/berendsen (c) <fix_temp_berendsen>` | :doc:`temp/csld <fix_temp_csvr>` | :doc:`temp/csvr <fix_temp_csvr>` | :doc:`temp/rescale (c) <fix_temp_rescale>` | :doc:`tfmc <fix_tfmc>` | :doc:`thermal/conductivity <fix_thermal_conductivity>` | :doc:`tmd <fix_tmd>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`ttm <fix_ttm>` | :doc:`tune/kspace <fix_tune_kspace>` | :doc:`vector <fix_vector>` | :doc:`viscosity <fix_viscosity>` | :doc:`viscous (c) <fix_viscous>` | :doc:`wall/colloid <fix_wall>` | :doc:`wall/gran <fix_wall_gran>` | :doc:`wall/harmonic <fix_wall>` |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
| :doc:`wall/lj1043 <fix_wall>` | :doc:`wall/lj126 <fix_wall>` | :doc:`wall/lj93 <fix_wall>` | :doc:`wall/piston <fix_wall_piston>` | :doc:`wall/reflect (k) <fix_wall_reflect>` | :doc:`wall/region <fix_wall_region>` | :doc:`wall/srd <fix_wall_srd>` | |
|
||||
+------------------------------------------+------------------------------------------------------+----------------------------------------------+---------------------------------------+--------------------------------------------+--------------------------------------+--------------------------------------------------------+------------------------------------------+
|
||||
|
||||
These are additional fix styles in USER packages, which can be used if
|
||||
:ref:`LAMMPS is built with the appropriate package <start_3>`.
|
||||
|
|
|
@ -2139,16 +2139,18 @@ periodic box. By holding the two regions at different temperatures
|
|||
with a :ref:`thermostatting fix <howto_13>`, the energy
|
||||
added to the hot region should equal the energy subtracted from the
|
||||
cold region and be proportional to the heat flux moving between the
|
||||
regions. See the paper by :ref:`Ikeshoji and Hafskjold <Ikeshoji>` for
|
||||
details of this idea. Note that thermostatting fixes such as :doc:`fix nvt <fix_nh>`, :doc:`fix langevin <fix_langevin>`, and :doc:`fix temp/rescale <fix_temp_rescale>` store the cumulative energy they
|
||||
regions. See the papers by :ref:`Ikeshoji and Hafskjold <howto-Ikeshoji>`
|
||||
and :ref:`Wirnsberger et al <howto-Wirnsberger>` for details of this idea.
|
||||
Note that thermostatting fixes such as :doc:`fix nvt <fix_nh>`, :doc:`fix langevin <fix_langevin>`, and :doc:`fix temp/rescale <fix_temp_rescale>` store the cumulative energy they
|
||||
add/subtract.
|
||||
|
||||
Alternatively, as a second method, the :doc:`fix heat <fix_heat>`
|
||||
command can used in place of thermostats on each of two regions to
|
||||
add/subtract specified amounts of energy to both regions. In both
|
||||
cases, the resulting temperatures of the two regions can be monitored
|
||||
with the "compute temp/region" command and the temperature profile of
|
||||
the intermediate region can be monitored with the :doc:`fix ave/spatial <fix_ave_spatial>` and :doc:`compute ke/atom <compute_ke_atom>` commands.
|
||||
Alternatively, as a second method, the :doc:`fix heat <fix_heat>` or
|
||||
:doc:`fix ehex <fix_ehex>` commands can be used in place of thermostats
|
||||
on each of two regions to add/subtract specified amounts of energy to
|
||||
both regions. In both cases, the resulting temperatures of the two
|
||||
regions can be monitored with the "compute temp/region" command and
|
||||
the temperature profile of the intermediate region can be monitored
|
||||
with the :doc:`fix ave/spatial <fix_ave_spatial>` and :doc:`compute ke/atom <compute_ke_atom>` commands.
|
||||
|
||||
The third method is to perform a reverse non-equilibrium MD simulation
|
||||
using the :doc:`fix thermal/conductivity <fix_thermal_conductivity>`
|
||||
|
@ -3051,13 +3053,20 @@ Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
|
|||
**(Horn)** Horn, Swope, Pitera, Madura, Dick, Hura, and Head-Gordon,
|
||||
J Chem Phys, 120, 9665 (2004).
|
||||
|
||||
.. _Ikeshoji:
|
||||
.. _howto-Ikeshoji:
|
||||
|
||||
|
||||
|
||||
**(Ikeshoji)** Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261
|
||||
(1994).
|
||||
|
||||
.. _howto-Wirnsberger:
|
||||
|
||||
|
||||
|
||||
**(Wirnsberger)** Wirnsberger, Frenkel, and Dellago, J Chem Phys, 143, 124104
|
||||
(2015).
|
||||
|
||||
.. _howto-MacKerell:
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,248 @@
|
|||
.. index:: fix ehex
|
||||
|
||||
fix ehex command
|
||||
================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
fix ID group-ID ehex nevery F keyword value
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* ehex = style name of this fix command
|
||||
* nevery = add/subtract heat every this many timesteps
|
||||
* F = energy flux into the reservoir (energy/time units)
|
||||
* zero or more keyword/value pairs may be appended to args
|
||||
* keyword = *region* or *constrain* or *com* or *hex*
|
||||
.. parsed-literal::
|
||||
|
||||
*region* value = region-ID
|
||||
region-ID = ID of region (reservoir) atoms must be in for added thermostatting force
|
||||
*constrain* value = none
|
||||
apply the constraint algorithm (SHAKE or RATTLE) again at the end of the timestep
|
||||
*com* value = none
|
||||
rescale all sites of a constrained cluster of atom if its COM is in the reservoir
|
||||
*hex* value = none
|
||||
omit the coordinate correction to recover the HEX algorithm
|
||||
|
||||
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
# Lennard-Jones, from examples/in.ehex.lj
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
fix fnve all nve
|
||||
# specify regions rhot and rcold
|
||||
...
|
||||
fix fhot all ehex 1 0.15 region rhot
|
||||
fix fcold all ehex 1 -0.15 region rcold
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
# SPC/E water, from examples/in.ehex.spce
|
||||
fix fnve all nve
|
||||
# specify regions rhot and rcold
|
||||
...
|
||||
fix fhot all ehex 1 0.075 region rhot constrain com
|
||||
fix fcold all ehex 1 -0.075 region rcold constrain com
|
||||
fix frattle all rattle 1e-10 400 0 b 1 a 1
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
This fix implements the asymmetric version of the enhanced heat
|
||||
exchange algorithm :ref:`(Wirnsberger) <Wirnsberger>`. The eHEX algorithm is
|
||||
an extension of the heat exchange algorithm :ref:`(Ikeshoji) <Ikeshoji>` and
|
||||
adds an additional coordinate integration to account for higher-order
|
||||
truncation terms in the operator splitting. The original HEX
|
||||
algorithm (implemented as :doc:`fix heat <fix_heat>`) is known to
|
||||
exhibit a slight energy drift limiting the accessible simulation times
|
||||
to a few nanoseconds. This issue is greatly improved by the new
|
||||
algorithm decreasing the energy drift by at least a factor of a
|
||||
hundred (LJ and SPC/E water) with little computational overhead.
|
||||
|
||||
In both algorithms (non-translational) kinetic energy is constantly
|
||||
swapped between regions (reservoirs) to impose a heat flux onto the
|
||||
system. The equations of motion are therefore modified if a particle
|
||||
*i* is located inside a reservoir
|
||||
|
||||
.. image:: Eqs/fix_ehex01.jpg
|
||||
:align: center
|
||||
|
||||
where
|
||||
|
||||
.. image:: Eqs/fix_ehex02.jpg
|
||||
:align: center
|
||||
|
||||
We use
|
||||
|
||||
.. image:: Eqs/fix_ehex03.jpg
|
||||
:align: center
|
||||
|
||||
to label those parts of the simulation box which are not
|
||||
thermostatted.) The input parameter *region-ID* of this fix
|
||||
corresponds to *k*\ . The energy swap is modelled by introducing an
|
||||
additional thermostatting force to the equations of motion, such that
|
||||
the time evolution of coordinates and momenta of particle *i* becomes
|
||||
:ref:`(Wirnsberger) <Wirnsberger>`
|
||||
|
||||
.. image:: Eqs/fix_ehex04.jpg
|
||||
:align: center
|
||||
|
||||
The thermostatting force is given by
|
||||
|
||||
.. image:: Eqs/fix_ehex05.jpg
|
||||
:align: center
|
||||
|
||||
where
|
||||
|
||||
.. image:: Eqs/fix_ehex06.jpg
|
||||
:align: center
|
||||
|
||||
is the mass and
|
||||
|
||||
.. image:: Eqs/fix_ehex07.jpg
|
||||
:align: center
|
||||
|
||||
maps the particle position to the respective reservoir. The quantity
|
||||
|
||||
.. image:: Eqs/fix_ehex08.jpg
|
||||
:align: center
|
||||
|
||||
corresponds to the input parameter *F*\ , which is the energy flux into
|
||||
the reservoir. Furthermore,
|
||||
|
||||
.. image:: Eqs/fix_ehex09.jpg
|
||||
:align: center
|
||||
|
||||
and
|
||||
|
||||
.. image:: Eqs/fix_ehex10.jpg
|
||||
:align: center
|
||||
|
||||
denote the non-translational kinetic
|
||||
energy and the centre of mass velocity of that reservoir. The
|
||||
thermostatting force does not affect the centre of mass velocities of
|
||||
the individual reservoirs and the entire simulation box. A derivation
|
||||
of the equations and details on the numerical implementation with
|
||||
velocity Verlet in LAMMPS can be found in reference
|
||||
"(Wirnsberger)"#_Wirnsberger.
|
||||
|
||||
.. note::
|
||||
|
||||
This fix only integrates the thermostatting force and must be
|
||||
combined with another integrator, such as :doc:`fix nve <fix_nve>`, to
|
||||
solve the full equations of motion.
|
||||
|
||||
This fix is different from a thermostat such as :doc:`fix nvt <fix_nh>`
|
||||
or :doc:`fix temp/rescale <fix_temp_rescale>` in that energy is
|
||||
added/subtracted continually. Thus if there isn't another mechanism
|
||||
in place to counterbalance this effect, the entire system will heat or
|
||||
cool continuously.
|
||||
|
||||
.. note::
|
||||
|
||||
If heat is subtracted from the system too aggressively so that
|
||||
the group's kinetic energy would go to zero, then LAMMPS will halt
|
||||
with an error message. Increasing the value of *nevery* means that
|
||||
heat is added/subtracted less frequently but in larger portions. The
|
||||
resulting temperature profile will therefore be the same.
|
||||
|
||||
This fix will default to :doc:`fix_heat <fix_heat>` (HEX algorithm) if
|
||||
the keyword *hex* is specified.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
**Compatibility with SHAKE and RATTLE (rigid molecules)**\ :
|
||||
|
||||
This fix is compatible with :doc:`fix shake <fix_shake>` and :doc:`fix rattle <fix_rattle>`. If either of these constraining algorithms is
|
||||
specified in the input script and the keyword *constrain* is set, the
|
||||
bond distances will be corrected a second time at the end of the
|
||||
integration step. It is recommended to specify the keyword *com* in
|
||||
addition to the keyword *constrain*\ . With this option all sites of a
|
||||
constrained cluster are rescaled, if its centre of mass is located
|
||||
inside the region. Rescaling all sites of a cluster by the same factor
|
||||
does not introduce any velocity components along fixed bonds. No
|
||||
rescaling takes place if the centre of mass lies outside the region.
|
||||
|
||||
.. note::
|
||||
|
||||
You can only use the keyword *com* along with *constrain*\ .
|
||||
|
||||
To achieve the highest accuracy it is recommended to use :doc:`fix rattle <fix_rattle>` with the keywords *constrain* and *com* as
|
||||
shown in the second example. Only if RATTLE is employed, the velocity
|
||||
constraints will be satisfied.
|
||||
|
||||
.. note::
|
||||
|
||||
Even if RATTLE is used and the keywords *com* and *constrain*
|
||||
are both set, the coordinate constraints will not necessarily be
|
||||
satisfied up to the target precision. The velocity constraints are
|
||||
satisfied as long as all sites of a cluster are rescaled (keyyword
|
||||
*com*\ ) and the cluster does not span adjacent reservoirs. The current
|
||||
implementation of the eHEX algorithm introduces a small error in the
|
||||
bond distances, which goes to zero with order three in the
|
||||
timestep. For example, in a simulation of SPC/E water with a timestep
|
||||
of 2 fs the maximum relative error in the bond distances was found to
|
||||
be on the order of :c,image(Eqs/fix_ehex07.jpg) for relatively large
|
||||
temperature gradients. A higher precision can be achieved by
|
||||
decreasing the timestep.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
|
||||
are relevant to this fix.
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
|
||||
This fix is part of the RIGID package. It is only enabled if LAMMPS
|
||||
was built with that package. See the :ref:`Making LAMMPS <start_3>` section for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix heat <fix_heat>`, :doc:`fix thermal/conductivity <fix_thermal_conductivity>`,
|
||||
:doc:`compute temp <compute_temp>`, :doc:`compute temp/region <compute_temp_region>`
|
||||
|
||||
**Default:** none
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
.. _Ikeshoji:
|
||||
|
||||
|
||||
|
||||
**(Ikeshoji)** Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 (1994).
|
||||
|
||||
.. _Wirnsberger:
|
||||
|
||||
|
||||
|
||||
**(Wirnsberger)** Wirnsberger, Frenkel, and Dellago, J Chem Phys, 143,
|
||||
124104 (2015).
|
||||
|
||||
|
||||
.. _lws: http://lammps.sandia.gov
|
||||
.. _ld: Manual.html
|
||||
.. _lc: Section_commands.html#comm
|
|
@ -59,6 +59,13 @@ number of atoms in the group. Note that since *eflux* has per-time
|
|||
units (i.e. it is a flux), this means that a larger value of N will
|
||||
add/subtract a larger amount of energy each time the fix is invoked.
|
||||
|
||||
.. note::
|
||||
|
||||
The heat-exchange (HEX) algorithm implemented by this fix is
|
||||
known to exhibit a pronounced energy drift. An improved algorithm
|
||||
(eHEX) is available as a :doc:`fix ehex <fix_ehex>` command and might be
|
||||
preferable if energy conservation is important.
|
||||
|
||||
If *eflux* is specified as an atom-style variable (see below), then
|
||||
the variable computes one value per atom. In this case, each value is
|
||||
the energy flux for a single atom, again in units of energy per unit
|
||||
|
@ -126,7 +133,7 @@ Restrictions
|
|||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`compute temp <compute_temp>`, :doc:`compute temp/region <compute_temp_region>`
|
||||
:doc:`fix ehex <fix_ehex>`, :doc:`compute temp <compute_temp>`, :doc:`compute temp/region <compute_temp_region>`
|
||||
|
||||
**Default:** none
|
||||
|
||||
|
|
|
@ -154,6 +154,7 @@ bewteen solvent particles.
|
|||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix ehex <fix_ehex>`, :doc:`fix heat <fix_heat>`,
|
||||
:doc:`fix ave/spatial <fix_ave_spatial>`, :doc:`fix viscosity <fix_viscosity>`, :doc:`compute heat/flux <compute_heat_flux>`
|
||||
|
||||
Default
|
||||
|
|
|
@ -0,0 +1,365 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>fix ehex command — LAMMPS documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
<link rel="top" title="LAMMPS documentation" href="index.html"/>
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav" role="document">
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-nav-search">
|
||||
|
||||
|
||||
|
||||
<a href="Manual.html" class="icon icon-home"> LAMMPS
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="Manual.html">LAMMPS</a>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="Manual.html">Docs</a> »</li>
|
||||
|
||||
<li>fix ehex command</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="http://lammps.sandia.gov">Website</a>
|
||||
<a href="Section_commands.html#comm">Commands</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="fix-ehex-command">
|
||||
<span id="index-0"></span><h1>fix ehex command</h1>
|
||||
<div class="section" id="syntax">
|
||||
<h2>Syntax</h2>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="n">ID</span> <span class="n">group</span><span class="o">-</span><span class="n">ID</span> <span class="n">ehex</span> <span class="n">nevery</span> <span class="n">F</span> <span class="n">keyword</span> <span class="n">value</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> command</li>
|
||||
<li>ehex = style name of this fix command</li>
|
||||
<li>nevery = add/subtract heat every this many timesteps</li>
|
||||
<li>F = energy flux into the reservoir (energy/time units)</li>
|
||||
<li>zero or more keyword/value pairs may be appended to args</li>
|
||||
<li>keyword = <em>region</em> or <em>constrain</em> or <em>com</em> or <em>hex</em></li>
|
||||
</ul>
|
||||
<pre class="literal-block">
|
||||
<em>region</em> value = region-ID
|
||||
region-ID = ID of region (reservoir) atoms must be in for added thermostatting force
|
||||
<em>constrain</em> value = none
|
||||
apply the constraint algorithm (SHAKE or RATTLE) again at the end of the timestep
|
||||
<em>com</em> value = none
|
||||
rescale all sites of a constrained cluster of atom if its COM is in the reservoir
|
||||
<em>hex</em> value = none
|
||||
omit the coordinate correction to recover the HEX algorithm
|
||||
</pre>
|
||||
</div>
|
||||
<div class="section" id="examples">
|
||||
<h2>Examples</h2>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># Lennard-Jones, from examples/in.ehex.lj</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="n">fnve</span> <span class="nb">all</span> <span class="n">nve</span>
|
||||
<span class="c1"># specify regions rhot and rcold</span>
|
||||
<span class="o">...</span>
|
||||
<span class="n">fix</span> <span class="n">fhot</span> <span class="nb">all</span> <span class="n">ehex</span> <span class="mi">1</span> <span class="mf">0.15</span> <span class="n">region</span> <span class="n">rhot</span>
|
||||
<span class="n">fix</span> <span class="n">fcold</span> <span class="nb">all</span> <span class="n">ehex</span> <span class="mi">1</span> <span class="o">-</span><span class="mf">0.15</span> <span class="n">region</span> <span class="n">rcold</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># SPC/E water, from examples/in.ehex.spce</span>
|
||||
<span class="n">fix</span> <span class="n">fnve</span> <span class="nb">all</span> <span class="n">nve</span>
|
||||
<span class="c1"># specify regions rhot and rcold</span>
|
||||
<span class="o">...</span>
|
||||
<span class="n">fix</span> <span class="n">fhot</span> <span class="nb">all</span> <span class="n">ehex</span> <span class="mi">1</span> <span class="mf">0.075</span> <span class="n">region</span> <span class="n">rhot</span> <span class="n">constrain</span> <span class="n">com</span>
|
||||
<span class="n">fix</span> <span class="n">fcold</span> <span class="nb">all</span> <span class="n">ehex</span> <span class="mi">1</span> <span class="o">-</span><span class="mf">0.075</span> <span class="n">region</span> <span class="n">rcold</span> <span class="n">constrain</span> <span class="n">com</span>
|
||||
<span class="n">fix</span> <span class="n">frattle</span> <span class="nb">all</span> <span class="n">rattle</span> <span class="mi">1</span><span class="n">e</span><span class="o">-</span><span class="mi">10</span> <span class="mi">400</span> <span class="mi">0</span> <span class="n">b</span> <span class="mi">1</span> <span class="n">a</span> <span class="mi">1</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="description">
|
||||
<h2>Description</h2>
|
||||
<p>This fix implements the asymmetric version of the enhanced heat
|
||||
exchange algorithm <a class="reference internal" href="#wirnsberger"><span class="std std-ref">(Wirnsberger)</span></a>. The eHEX algorithm is
|
||||
an extension of the heat exchange algorithm <a class="reference internal" href="#ikeshoji"><span class="std std-ref">(Ikeshoji)</span></a> and
|
||||
adds an additional coordinate integration to account for higher-order
|
||||
truncation terms in the operator splitting. The original HEX
|
||||
algorithm (implemented as <a class="reference internal" href="fix_heat.html"><span class="doc">fix heat</span></a>) is known to
|
||||
exhibit a slight energy drift limiting the accessible simulation times
|
||||
to a few nanoseconds. This issue is greatly improved by the new
|
||||
algorithm decreasing the energy drift by at least a factor of a
|
||||
hundred (LJ and SPC/E water) with little computational overhead.</p>
|
||||
<p>In both algorithms (non-translational) kinetic energy is constantly
|
||||
swapped between regions (reservoirs) to impose a heat flux onto the
|
||||
system. The equations of motion are therefore modified if a particle
|
||||
<em>i</em> is located inside a reservoir</p>
|
||||
<img alt="Eqs/fix_ehex01.jpg" class="align-center" src="Eqs/fix_ehex01.jpg" />
|
||||
<p>where</p>
|
||||
<img alt="Eqs/fix_ehex02.jpg" class="align-center" src="Eqs/fix_ehex02.jpg" />
|
||||
<p>We use</p>
|
||||
<img alt="Eqs/fix_ehex03.jpg" class="align-center" src="Eqs/fix_ehex03.jpg" />
|
||||
<p>to label those parts of the simulation box which are not
|
||||
thermostatted.) The input parameter <em>region-ID</em> of this fix
|
||||
corresponds to <em>k</em>. The energy swap is modelled by introducing an
|
||||
additional thermostatting force to the equations of motion, such that
|
||||
the time evolution of coordinates and momenta of particle <em>i</em> becomes
|
||||
<a class="reference internal" href="#wirnsberger"><span class="std std-ref">(Wirnsberger)</span></a></p>
|
||||
<img alt="Eqs/fix_ehex04.jpg" class="align-center" src="Eqs/fix_ehex04.jpg" />
|
||||
<p>The thermostatting force is given by</p>
|
||||
<img alt="Eqs/fix_ehex05.jpg" class="align-center" src="Eqs/fix_ehex05.jpg" />
|
||||
<p>where</p>
|
||||
<img alt="Eqs/fix_ehex06.jpg" class="align-center" src="Eqs/fix_ehex06.jpg" />
|
||||
<p>is the mass and</p>
|
||||
<img alt="Eqs/fix_ehex07.jpg" class="align-center" src="Eqs/fix_ehex07.jpg" />
|
||||
<p>maps the particle position to the respective reservoir. The quantity</p>
|
||||
<img alt="Eqs/fix_ehex08.jpg" class="align-center" src="Eqs/fix_ehex08.jpg" />
|
||||
<p>corresponds to the input parameter <em>F</em>, which is the energy flux into
|
||||
the reservoir. Furthermore,</p>
|
||||
<img alt="Eqs/fix_ehex09.jpg" class="align-center" src="Eqs/fix_ehex09.jpg" />
|
||||
<p>and</p>
|
||||
<img alt="Eqs/fix_ehex10.jpg" class="align-center" src="Eqs/fix_ehex10.jpg" />
|
||||
<p>denote the non-translational kinetic
|
||||
energy and the centre of mass velocity of that reservoir. The
|
||||
thermostatting force does not affect the centre of mass velocities of
|
||||
the individual reservoirs and the entire simulation box. A derivation
|
||||
of the equations and details on the numerical implementation with
|
||||
velocity Verlet in LAMMPS can be found in reference
|
||||
“(Wirnsberger)”#_Wirnsberger.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">This fix only integrates the thermostatting force and must be
|
||||
combined with another integrator, such as <a class="reference internal" href="fix_nve.html"><span class="doc">fix nve</span></a>, to
|
||||
solve the full equations of motion.</p>
|
||||
</div>
|
||||
<p>This fix is different from a thermostat such as <a class="reference internal" href="fix_nh.html"><span class="doc">fix nvt</span></a>
|
||||
or <a class="reference internal" href="fix_temp_rescale.html"><span class="doc">fix temp/rescale</span></a> in that energy is
|
||||
added/subtracted continually. Thus if there isn’t another mechanism
|
||||
in place to counterbalance this effect, the entire system will heat or
|
||||
cool continuously.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">If heat is subtracted from the system too aggressively so that
|
||||
the group’s kinetic energy would go to zero, then LAMMPS will halt
|
||||
with an error message. Increasing the value of <em>nevery</em> means that
|
||||
heat is added/subtracted less frequently but in larger portions. The
|
||||
resulting temperature profile will therefore be the same.</p>
|
||||
</div>
|
||||
<p>This fix will default to <a class="reference internal" href="fix_heat.html"><span class="doc">fix_heat</span></a> (HEX algorithm) if
|
||||
the keyword <em>hex</em> is specified.</p>
|
||||
<hr class="docutils" />
|
||||
<p><strong>Compatibility with SHAKE and RATTLE (rigid molecules)</strong>:</p>
|
||||
<p>This fix is compatible with <a class="reference internal" href="fix_shake.html"><span class="doc">fix shake</span></a> and <span class="xref doc">fix rattle</span>. If either of these constraining algorithms is
|
||||
specified in the input script and the keyword <em>constrain</em> is set, the
|
||||
bond distances will be corrected a second time at the end of the
|
||||
integration step. It is recommended to specify the keyword <em>com</em> in
|
||||
addition to the keyword <em>constrain</em>. With this option all sites of a
|
||||
constrained cluster are rescaled, if its centre of mass is located
|
||||
inside the region. Rescaling all sites of a cluster by the same factor
|
||||
does not introduce any velocity components along fixed bonds. No
|
||||
rescaling takes place if the centre of mass lies outside the region.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">You can only use the keyword <em>com</em> along with <em>constrain</em>.</p>
|
||||
</div>
|
||||
<p>To achieve the highest accuracy it is recommended to use <span class="xref doc">fix rattle</span> with the keywords <em>constrain</em> and <em>com</em> as
|
||||
shown in the second example. Only if RATTLE is employed, the velocity
|
||||
constraints will be satisfied.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">Even if RATTLE is used and the keywords <em>com</em> and <em>constrain</em>
|
||||
are both set, the coordinate constraints will not necessarily be
|
||||
satisfied up to the target precision. The velocity constraints are
|
||||
satisfied as long as all sites of a cluster are rescaled (keyyword
|
||||
<em>com</em>) and the cluster does not span adjacent reservoirs. The current
|
||||
implementation of the eHEX algorithm introduces a small error in the
|
||||
bond distances, which goes to zero with order three in the
|
||||
timestep. For example, in a simulation of SPC/E water with a timestep
|
||||
of 2 fs the maximum relative error in the bond distances was found to
|
||||
be on the order of :c,image(Eqs/fix_ehex07.jpg) for relatively large
|
||||
temperature gradients. A higher precision can be achieved by
|
||||
decreasing the timestep.</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="docutils" />
|
||||
<div class="section" id="restart-fix-modify-output-run-start-stop-minimize-info">
|
||||
<h2>Restart, fix_modify, output, run start/stop, minimize info</h2>
|
||||
<p>No information about this fix is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. None of the <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></a> options
|
||||
are relevant to this fix.</p>
|
||||
<p>No parameter of this fix can be used with the <em>start/stop</em> keywords of
|
||||
the <a class="reference internal" href="run.html"><span class="doc">run</span></a> command. This fix is not invoked during <a class="reference internal" href="minimize.html"><span class="doc">energy minimization</span></a>.</p>
|
||||
</div>
|
||||
<div class="section" id="restrictions">
|
||||
<h2>Restrictions</h2>
|
||||
<p>This fix is part of the RIGID package. It is only enabled if LAMMPS
|
||||
was built with that package. See the <a class="reference internal" href="Section_start.html#start-3"><span class="std std-ref">Making LAMMPS</span></a> section for more info.</p>
|
||||
</div>
|
||||
<div class="section" id="related-commands">
|
||||
<h2>Related commands</h2>
|
||||
<p><a class="reference internal" href="fix_heat.html"><span class="doc">fix heat</span></a>, <a class="reference internal" href="fix_thermal_conductivity.html"><span class="doc">fix thermal/conductivity</span></a>,
|
||||
<a class="reference internal" href="compute_temp.html"><span class="doc">compute temp</span></a>, <a class="reference internal" href="compute_temp_region.html"><span class="doc">compute temp/region</span></a></p>
|
||||
<p><strong>Default:</strong> none</p>
|
||||
<hr class="docutils" />
|
||||
<p id="ikeshoji"><strong>(Ikeshoji)</strong> Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 (1994).</p>
|
||||
<p id="wirnsberger"><strong>(Wirnsberger)</strong> Wirnsberger, Frenkel, and Dellago, J Chem Phys, 143,
|
||||
124104 (2015).</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2013 Sandia Corporation.
|
||||
</p>
|
||||
</div>
|
||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script>
|
||||
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script>
|
||||
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.StickyNav.enable();
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -175,6 +175,13 @@ eV/psec for <a class="reference internal" href="units.html"><span class="doc">me
|
|||
number of atoms in the group. Note that since <em>eflux</em> has per-time
|
||||
units (i.e. it is a flux), this means that a larger value of N will
|
||||
add/subtract a larger amount of energy each time the fix is invoked.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">The heat-exchange (HEX) algorithm implemented by this fix is
|
||||
known to exhibit a pronounced energy drift. An improved algorithm
|
||||
(eHEX) is available as a <a class="reference internal" href="fix_ehex.html"><span class="doc">fix ehex</span></a> command and might be
|
||||
preferable if energy conservation is important.</p>
|
||||
</div>
|
||||
<p>If <em>eflux</em> is specified as an atom-style variable (see below), then
|
||||
the variable computes one value per atom. In this case, each value is
|
||||
the energy flux for a single atom, again in units of energy per unit
|
||||
|
@ -234,7 +241,7 @@ the <a class="reference internal" href="run.html"><span class="doc">run</span></
|
|||
</div>
|
||||
<div class="section" id="related-commands">
|
||||
<h2>Related commands</h2>
|
||||
<p><a class="reference internal" href="compute_temp.html"><span class="doc">compute temp</span></a>, <a class="reference internal" href="compute_temp_region.html"><span class="doc">compute temp/region</span></a></p>
|
||||
<p><a class="reference internal" href="fix_ehex.html"><span class="doc">fix ehex</span></a>, <a class="reference internal" href="compute_temp.html"><span class="doc">compute temp</span></a>, <a class="reference internal" href="compute_temp_region.html"><span class="doc">compute temp/region</span></a></p>
|
||||
<p><strong>Default:</strong> none</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -153,7 +153,7 @@
|
|||
</div>
|
||||
<div class="section" id="description">
|
||||
<h2>Description</h2>
|
||||
<p>Use the Muller-Plathe algorithm described in <a class="reference internal" href="fix_viscosity.html#muller-plathe"><span class="std std-ref">this paper</span></a> to exchange kinetic energy between two particles
|
||||
<p>Use the Muller-Plathe algorithm described in <a class="reference internal" href="#muller-plathe"><span class="std std-ref">this paper</span></a> to exchange kinetic energy between two particles
|
||||
in different regions of the simulation box every N steps. This
|
||||
induces a temperature gradient in the system. As described below this
|
||||
enables the thermal conductivity of a material to be calculated. This
|
||||
|
@ -202,7 +202,7 @@ swaps is computed by the fix and can be output. Dividing this
|
|||
quantity by time and the cross-sectional area of the simulation box
|
||||
yields a heat flux. The ratio of heat flux to the slope of the
|
||||
temperature profile is proportional to the thermal conductivity of the
|
||||
fluid, in appropriate units. See the <a class="reference internal" href="fix_viscosity.html#muller-plathe"><span class="std std-ref">Muller-Plathe paper</span></a> for details.</p>
|
||||
fluid, in appropriate units. See the <a class="reference internal" href="#muller-plathe"><span class="std std-ref">Muller-Plathe paper</span></a> for details.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">If your system is periodic in the direction of the heat flux,
|
||||
|
@ -258,7 +258,8 @@ bewteen solvent particles.</p>
|
|||
</div>
|
||||
<div class="section" id="related-commands">
|
||||
<h2>Related commands</h2>
|
||||
<p><a class="reference internal" href="fix_ave_spatial.html"><span class="doc">fix ave/spatial</span></a>, <a class="reference internal" href="fix_viscosity.html"><span class="doc">fix viscosity</span></a>, <a class="reference internal" href="compute_heat_flux.html"><span class="doc">compute heat/flux</span></a></p>
|
||||
<p><a class="reference internal" href="fix_ehex.html"><span class="doc">fix ehex</span></a>, <a class="reference internal" href="fix_heat.html"><span class="doc">fix heat</span></a>,
|
||||
<a class="reference internal" href="fix_ave_spatial.html"><span class="doc">fix ave/spatial</span></a>, <a class="reference internal" href="fix_viscosity.html"><span class="doc">fix viscosity</span></a>, <a class="reference internal" href="compute_heat_flux.html"><span class="doc">compute heat/flux</span></a></p>
|
||||
</div>
|
||||
<div class="section" id="default">
|
||||
<h2>Default</h2>
|
||||
|
|
|
@ -1062,6 +1062,10 @@
|
|||
</dt>
|
||||
|
||||
|
||||
<dt><a href="fix_ehex.html#index-0">fix ehex</a>
|
||||
</dt>
|
||||
|
||||
|
||||
<dt><a href="fix_enforce2d.html#index-0">fix enforce2d</a>
|
||||
</dt>
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -507,6 +507,7 @@ g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
|
|||
"drag"_fix_drag.html,
|
||||
"dt/reset"_fix_dt_reset.html,
|
||||
"efield"_fix_efield.html,
|
||||
"ehex"_fix_ehex.html,
|
||||
"enforce2d (c)"_fix_enforce2d.html,
|
||||
"evaporate"_fix_evaporate.html,
|
||||
"external"_fix_external.html,
|
||||
|
|
|
@ -1957,19 +1957,20 @@ periodic box. By holding the two regions at different temperatures
|
|||
with a "thermostatting fix"_Section_howto.html#howto_13, the energy
|
||||
added to the hot region should equal the energy subtracted from the
|
||||
cold region and be proportional to the heat flux moving between the
|
||||
regions. See the paper by "Ikeshoji and Hafskjold"_#Ikeshoji for
|
||||
details of this idea. Note that thermostatting fixes such as "fix
|
||||
nvt"_fix_nh.html, "fix langevin"_fix_langevin.html, and "fix
|
||||
regions. See the papers by "Ikeshoji and Hafskjold"_#howto-Ikeshoji
|
||||
and "Wirnsberger et al"_#howto-Wirnsberger for details of this idea.
|
||||
Note that thermostatting fixes such as "fix nvt"_fix_nh.html, "fix
|
||||
langevin"_fix_langevin.html, and "fix
|
||||
temp/rescale"_fix_temp_rescale.html store the cumulative energy they
|
||||
add/subtract.
|
||||
|
||||
Alternatively, as a second method, the "fix heat"_fix_heat.html
|
||||
command can used in place of thermostats on each of two regions to
|
||||
add/subtract specified amounts of energy to both regions. In both
|
||||
cases, the resulting temperatures of the two regions can be monitored
|
||||
with the "compute temp/region" command and the temperature profile of
|
||||
the intermediate region can be monitored with the "fix
|
||||
ave/spatial"_fix_ave_spatial.html and "compute
|
||||
Alternatively, as a second method, the "fix heat"_fix_heat.html or
|
||||
"fix ehex"_fix_ehex.html commands can be used in place of thermostats
|
||||
on each of two regions to add/subtract specified amounts of energy to
|
||||
both regions. In both cases, the resulting temperatures of the two
|
||||
regions can be monitored with the "compute temp/region" command and
|
||||
the temperature profile of the intermediate region can be monitored
|
||||
with the "fix ave/spatial"_fix_ave_spatial.html and "compute
|
||||
ke/atom"_compute_ke_atom.html commands.
|
||||
|
||||
The third method is to perform a reverse non-equilibrium MD simulation
|
||||
|
@ -2786,10 +2787,14 @@ Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
|
|||
[(Horn)] Horn, Swope, Pitera, Madura, Dick, Hura, and Head-Gordon,
|
||||
J Chem Phys, 120, 9665 (2004).
|
||||
|
||||
:link(Ikeshoji)
|
||||
:link(howto-Ikeshoji)
|
||||
[(Ikeshoji)] Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261
|
||||
(1994).
|
||||
|
||||
:link(howto-Wirnsberger)
|
||||
[(Wirnsberger)] Wirnsberger, Frenkel, and Dellago, J Chem Phys, 143, 124104
|
||||
(2015).
|
||||
|
||||
:link(howto-MacKerell)
|
||||
[(MacKerell)] MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
|
||||
Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
|
||||
|
|
|
@ -0,0 +1,206 @@
|
|||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Section_commands.html#comm)
|
||||
|
||||
:line
|
||||
|
||||
fix ehex command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
fix ID group-ID ehex nevery F keyword value :pre
|
||||
|
||||
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||
ehex = style name of this fix command :l
|
||||
nevery = add/subtract heat every this many timesteps :l
|
||||
F = energy flux into the reservoir (energy/time units) :l
|
||||
zero or more keyword/value pairs may be appended to args :l
|
||||
keyword = {region} or {constrain} or {com} or {hex} :l
|
||||
{region} value = region-ID
|
||||
region-ID = ID of region (reservoir) atoms must be in for added thermostatting force
|
||||
{constrain} value = none
|
||||
apply the constraint algorithm (SHAKE or RATTLE) again at the end of the timestep
|
||||
{com} value = none
|
||||
rescale all sites of a constrained cluster of atom if its COM is in the reservoir
|
||||
{hex} value = none
|
||||
omit the coordinate correction to recover the HEX algorithm :pre
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
# Lennard-Jones, from examples/in.ehex.lj :pre
|
||||
fix fnve all nve
|
||||
# specify regions rhot and rcold
|
||||
...
|
||||
fix fhot all ehex 1 0.15 region rhot
|
||||
fix fcold all ehex 1 -0.15 region rcold :pre
|
||||
|
||||
# SPC/E water, from examples/in.ehex.spce
|
||||
fix fnve all nve
|
||||
# specify regions rhot and rcold
|
||||
...
|
||||
fix fhot all ehex 1 0.075 region rhot constrain com
|
||||
fix fcold all ehex 1 -0.075 region rcold constrain com
|
||||
fix frattle all rattle 1e-10 400 0 b 1 a 1 :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
This fix implements the asymmetric version of the enhanced heat
|
||||
exchange algorithm "(Wirnsberger)"_#Wirnsberger. The eHEX algorithm is
|
||||
an extension of the heat exchange algorithm "(Ikeshoji)"_#Ikeshoji and
|
||||
adds an additional coordinate integration to account for higher-order
|
||||
truncation terms in the operator splitting. The original HEX
|
||||
algorithm (implemented as "fix heat"_fix_heat.html) is known to
|
||||
exhibit a slight energy drift limiting the accessible simulation times
|
||||
to a few nanoseconds. This issue is greatly improved by the new
|
||||
algorithm decreasing the energy drift by at least a factor of a
|
||||
hundred (LJ and SPC/E water) with little computational overhead.
|
||||
|
||||
In both algorithms (non-translational) kinetic energy is constantly
|
||||
swapped between regions (reservoirs) to impose a heat flux onto the
|
||||
system. The equations of motion are therefore modified if a particle
|
||||
{i} is located inside a reservoir
|
||||
|
||||
:c,image(Eqs/fix_ehex01.jpg)
|
||||
|
||||
where
|
||||
|
||||
:c,image(Eqs/fix_ehex02.jpg)
|
||||
|
||||
We use
|
||||
|
||||
:c,image(Eqs/fix_ehex03.jpg)
|
||||
|
||||
to label those parts of the simulation box which are not
|
||||
thermostatted.) The input parameter {region-ID} of this fix
|
||||
corresponds to {k}. The energy swap is modelled by introducing an
|
||||
additional thermostatting force to the equations of motion, such that
|
||||
the time evolution of coordinates and momenta of particle {i} becomes
|
||||
"(Wirnsberger)"_#Wirnsberger
|
||||
|
||||
:c,image(Eqs/fix_ehex04.jpg)
|
||||
|
||||
The thermostatting force is given by
|
||||
|
||||
:c,image(Eqs/fix_ehex05.jpg)
|
||||
|
||||
where
|
||||
|
||||
:c,image(Eqs/fix_ehex06.jpg)
|
||||
|
||||
is the mass and
|
||||
|
||||
:c,image(Eqs/fix_ehex07.jpg)
|
||||
|
||||
maps the particle position to the respective reservoir. The quantity
|
||||
|
||||
:c,image(Eqs/fix_ehex08.jpg)
|
||||
|
||||
corresponds to the input parameter {F}, which is the energy flux into
|
||||
the reservoir. Furthermore,
|
||||
|
||||
:c,image(Eqs/fix_ehex09.jpg)
|
||||
|
||||
and
|
||||
|
||||
:c,image(Eqs/fix_ehex10.jpg)
|
||||
|
||||
denote the non-translational kinetic
|
||||
energy and the centre of mass velocity of that reservoir. The
|
||||
thermostatting force does not affect the centre of mass velocities of
|
||||
the individual reservoirs and the entire simulation box. A derivation
|
||||
of the equations and details on the numerical implementation with
|
||||
velocity Verlet in LAMMPS can be found in reference
|
||||
"(Wirnsberger)"#_Wirnsberger.
|
||||
|
||||
NOTE: This fix only integrates the thermostatting force and must be
|
||||
combined with another integrator, such as "fix nve"_fix_nve.html, to
|
||||
solve the full equations of motion.
|
||||
|
||||
This fix is different from a thermostat such as "fix nvt"_fix_nh.html
|
||||
or "fix temp/rescale"_fix_temp_rescale.html in that energy is
|
||||
added/subtracted continually. Thus if there isn't another mechanism
|
||||
in place to counterbalance this effect, the entire system will heat or
|
||||
cool continuously.
|
||||
|
||||
NOTE: If heat is subtracted from the system too aggressively so that
|
||||
the group's kinetic energy would go to zero, then LAMMPS will halt
|
||||
with an error message. Increasing the value of {nevery} means that
|
||||
heat is added/subtracted less frequently but in larger portions. The
|
||||
resulting temperature profile will therefore be the same.
|
||||
|
||||
This fix will default to "fix_heat"_fix_heat.html (HEX algorithm) if
|
||||
the keyword {hex} is specified.
|
||||
|
||||
:line
|
||||
|
||||
[Compatibility with SHAKE and RATTLE (rigid molecules)]:
|
||||
|
||||
This fix is compatible with "fix shake"_fix_shake.html and "fix
|
||||
rattle"_fix_rattle.html. If either of these constraining algorithms is
|
||||
specified in the input script and the keyword {constrain} is set, the
|
||||
bond distances will be corrected a second time at the end of the
|
||||
integration step. It is recommended to specify the keyword {com} in
|
||||
addition to the keyword {constrain}. With this option all sites of a
|
||||
constrained cluster are rescaled, if its centre of mass is located
|
||||
inside the region. Rescaling all sites of a cluster by the same factor
|
||||
does not introduce any velocity components along fixed bonds. No
|
||||
rescaling takes place if the centre of mass lies outside the region.
|
||||
|
||||
NOTE: You can only use the keyword {com} along with {constrain}.
|
||||
|
||||
To achieve the highest accuracy it is recommended to use "fix
|
||||
rattle"_fix_rattle.html with the keywords {constrain} and {com} as
|
||||
shown in the second example. Only if RATTLE is employed, the velocity
|
||||
constraints will be satisfied.
|
||||
|
||||
NOTE: Even if RATTLE is used and the keywords {com} and {constrain}
|
||||
are both set, the coordinate constraints will not necessarily be
|
||||
satisfied up to the target precision. The velocity constraints are
|
||||
satisfied as long as all sites of a cluster are rescaled (keyyword
|
||||
{com}) and the cluster does not span adjacent reservoirs. The current
|
||||
implementation of the eHEX algorithm introduces a small error in the
|
||||
bond distances, which goes to zero with order three in the
|
||||
timestep. For example, in a simulation of SPC/E water with a timestep
|
||||
of 2 fs the maximum relative error in the bond distances was found to
|
||||
be on the order of :c,image(Eqs/fix_ehex07.jpg) for relatively large
|
||||
temperature gradients. A higher precision can be achieved by
|
||||
decreasing the timestep.
|
||||
|
||||
:line
|
||||
|
||||
[Restart, fix_modify, output, run start/stop, minimize info:]
|
||||
|
||||
No information about this fix is written to "binary restart
|
||||
files"_restart.html. None of the "fix_modify"_fix_modify.html options
|
||||
are relevant to this fix.
|
||||
|
||||
No parameter of this fix can be used with the {start/stop} keywords of
|
||||
the "run"_run.html command. This fix is not invoked during "energy
|
||||
minimization"_minimize.html.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This fix is part of the RIGID package. It is only enabled if LAMMPS
|
||||
was built with that package. See the "Making
|
||||
LAMMPS"_Section_start.html#start_3 section for more info.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"fix heat"_fix_heat.html, "fix
|
||||
thermal/conductivity"_fix_thermal_conductivity.html,
|
||||
"compute temp"_compute_temp.html, "compute temp/region"_compute_temp_region.html
|
||||
|
||||
[Default:] none
|
||||
|
||||
:line
|
||||
|
||||
:link(Ikeshoji)
|
||||
[(Ikeshoji)] Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 (1994).
|
||||
|
||||
:link(Wirnsberger)
|
||||
[(Wirnsberger)] Wirnsberger, Frenkel, and Dellago, J Chem Phys, 143,
|
||||
124104 (2015).
|
||||
|
|
@ -54,6 +54,11 @@ number of atoms in the group. Note that since {eflux} has per-time
|
|||
units (i.e. it is a flux), this means that a larger value of N will
|
||||
add/subtract a larger amount of energy each time the fix is invoked.
|
||||
|
||||
NOTE: The heat-exchange (HEX) algorithm implemented by this fix is
|
||||
known to exhibit a pronounced energy drift. An improved algorithm
|
||||
(eHEX) is available as a "fix ehex"_fix_ehex.html command and might be
|
||||
preferable if energy conservation is important.
|
||||
|
||||
If {eflux} is specified as an atom-style variable (see below), then
|
||||
the variable computes one value per atom. In this case, each value is
|
||||
the energy flux for a single atom, again in units of energy per unit
|
||||
|
@ -118,7 +123,7 @@ minimization"_minimize.html.
|
|||
|
||||
[Related commands:]
|
||||
|
||||
"compute temp"_compute_temp.html, "compute
|
||||
"fix ehex"_fix_ehex.html, "compute temp"_compute_temp.html, "compute
|
||||
temp/region"_compute_temp_region.html
|
||||
|
||||
[Default:] none
|
||||
|
|
|
@ -145,6 +145,7 @@ bewteen solvent particles.
|
|||
|
||||
[Related commands:]
|
||||
|
||||
"fix ehex"_fix_ehex.html, "fix heat"_fix_heat.html,
|
||||
"fix ave/spatial"_fix_ave_spatial.html, "fix
|
||||
viscosity"_fix_viscosity.html, "compute
|
||||
heat/flux"_compute_heat_flux.html
|
||||
|
|
Loading…
Reference in New Issue