git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15021 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
sjplimp 2016-05-10 22:42:15 +00:00
parent 1463cb2598
commit 59e44bf4bf
17 changed files with 957 additions and 93 deletions

View File

@ -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>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>

View File

@ -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 &#8220;compute temp/region&#8221; 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 &#8220;compute temp/region&#8221; 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

View File

@ -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>`.

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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

365
doc/html/fix_ehex.html Normal file
View File

@ -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 &mdash; 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 &amp; 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 &amp; 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>
&nbsp;
</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> &raquo;</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
&#8220;(Wirnsberger)&#8221;#_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&#8217;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&#8217;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>
&copy; 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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -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,

View File

@ -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).

206
doc/src/fix_ehex.txt Normal file
View File

@ -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).

View File

@ -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

View File

@ -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