From a096938d607050ae023465dfc220e8d3864bb006 Mon Sep 17 00:00:00 2001
From: sjplimp
Date: Wed, 14 May 2008 21:40:02 +0000
Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@1794
f3b2605a-c512-4ea7-a41b-209d697bcdaa
---
doc/Section_commands.html | 4 +-
doc/Section_commands.txt | 1 +
doc/fix.html | 1 +
doc/fix.txt | 2 +
doc/fix_thermal_conductivity.html | 153 ++++++++++++++++++++++++++++++
doc/fix_thermal_conductivity.txt | 139 +++++++++++++++++++++++++++
doc/fix_viscosity.html | 7 +-
doc/fix_viscosity.txt | 7 +-
8 files changed, 304 insertions(+), 10 deletions(-)
create mode 100644 doc/fix_thermal_conductivity.html
create mode 100644 doc/fix_thermal_conductivity.txt
diff --git a/doc/Section_commands.html b/doc/Section_commands.html
index 6f0414ebc8..a716bc5559 100644
--- a/doc/Section_commands.html
+++ b/doc/Section_commands.html
@@ -323,8 +323,8 @@ of each style or click on the style itself for a full description:
| npt/asphere | npt/sphere | nve | nve/asphere | nve/limit | nve/noforce | nve/sphere | nvt |
| nvt/asphere | nvt/sllod | nvt/sphere | orient/fcc | planeforce | poems | pour | press/berendsen |
| print | rdf | recenter | rigid | setforce | shake | spring | spring/rg |
-| spring/self | temp/berendsen | temp/rescale | tmd | viscosity | viscous | wall/gran | wall/lj126 |
-| wall/lj93 | wall/reflect | wiggle
+ |
| spring/self | temp/berendsen | temp/rescale | thermal/conductivity | tmd | viscosity | viscous | wall/gran |
+| wall/lj126 | wall/lj93 | wall/reflect | wiggle
|
diff --git a/doc/Section_commands.txt b/doc/Section_commands.txt
index 933cfd871c..b6f3ac81e2 100644
--- a/doc/Section_commands.txt
+++ b/doc/Section_commands.txt
@@ -426,6 +426,7 @@ of each style or click on the style itself for a full description:
"spring/self"_fix_spring_self.html,
"temp/berendsen"_fix_temp_berendsen.html,
"temp/rescale"_fix_temp_rescale.html,
+"thermal/conductivity"_fix_thermal_conductivity.html,
"tmd"_fix_tmd.html,
"viscosity"_fix_viscosity.html,
"viscous"_fix_viscous.html,
diff --git a/doc/fix.html b/doc/fix.html
index cf7936ccaf..3ba5fabbcd 100644
--- a/doc/fix.html
+++ b/doc/fix.html
@@ -154,6 +154,7 @@ list of fix styles available in LAMMPS:
spring/self - spring from each atom to its origin
temp/berendsen - temperature control by Berendsen thermostat
temp/rescale - temperature control by velocity rescaling
+thermal/conductivity - Muller-Plathe kinetic energy exchange for thermal conductivity calculation
tmd - guide a group of atoms to a new configuration
viscosity - Muller-Plathe momentum exchange for viscosity calculation
viscous - viscous damping for granular simulations
diff --git a/doc/fix.txt b/doc/fix.txt
index 14ec4c91c2..258846fba4 100644
--- a/doc/fix.txt
+++ b/doc/fix.txt
@@ -160,6 +160,8 @@ list of fix styles available in LAMMPS:
Berendsen thermostat
"temp/rescale"_fix_temp_rescale.html - temperature control by \
velocity rescaling
+"thermal/conductivity"_fix_thermal_conductivity.html - Muller-Plathe kinetic energy exchange for \
+ thermal conductivity calculation
"tmd"_fix_tmd.html - guide a group of atoms to a new configuration
"viscosity"_fix_viscosity.html - Muller-Plathe momentum exchange for \
viscosity calculation
diff --git a/doc/fix_thermal_conductivity.html b/doc/fix_thermal_conductivity.html
new file mode 100644
index 0000000000..6a887fdd56
--- /dev/null
+++ b/doc/fix_thermal_conductivity.html
@@ -0,0 +1,153 @@
+
+LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands
+
+
+
+
+
+
+
+
+
+fix thermal/conductivity command
+
+Syntax:
+
+fix ID group-ID thermal/conductivity N edim Nbin keyword value ...
+
+
+Examples:
+
+fix 1 all thermal/conductivity 100 z 20
+fix 1 all thermal/conductivity 50 z 20 swap 2
+
+Description:
+
+Use the Muller-Plathe algorithm described in this
+paper 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 a thermal conductivity of the fluid to be calculated. This
+algorithm is sometimes called a reverse non-equilibrium MD (reverse
+NEMD) approach to computing thermal conductivity. This is because the
+usual NEMD approach is to impose a temperature gradient on the system
+and measure the response as the resulting heat flux. In the
+Muller-Plathe method, the heat flux is imposed, and the temperature
+gradient is the system's response.
+
+The simulation box is divided into Nbin layers in the edim
+direction. Every N steps, Nswap pairs of atoms are chosen in the
+following manner. Only atoms in the fix group are considered. The
+hottest Nswap atoms in the bottom layer are selected. Similarly, the
+coldest Nswap atoms in the middle later are selected. The two sets of
+Nswap atoms are paired up and their velocities are exchanged. This
+effectively swaps their kinetic energies, assuming their masses are
+the same. Over time, this induces a temperature gradient in the
+system which can be measured using commands such as the following,
+which writes the temperature profile (assuming z = edim) to the file
+tmp.profile:
+
+compute ke all ke/atom
+variable temp atom c_ke/1.5
+fix 3 all ave/spatial 10 100 1000 z lower 0.05 v_temp &
+ file tmp.profile units reduced
+
+Note that by default, Nswap = 1, though this can be changed by the
+optional swap keyword. Setting this parameter appropriately, in
+conjunction with the swap rate N, allows the heat flux to be adjusted
+across a wide range of values, and the kinetic energy to be exchanged
+in large chunks or more smoothly.
+
+As described below, the total kinetic energy transferred by these
+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 the thermal conductivity of the fluid,
+in appopriate units. See the Muller-Plathe paper for
+details.
+
+IMPORTANT NOTE: After equilibration, if the temperature gradient you
+observe is not linear, then you are likely swapping energy too
+frequently and are not in a regime of linear response. In this case
+you cannot accurately infer a thermal conductivity and should try
+increasing the Nevery parameter.
+
+Restart, fix_modify, output, run start/stop, minimize info:
+
+No information about this fix is written to binary restart
+files. None of the fix_modify options
+are relevant to this fix.
+
+The cummulative kinetic energy transferred between the bottom and
+middle of the simulation box (in the edim direction) is stored as a
+scalar quantity by this fix. This quantity is zeroed when the fix is
+defined and accumlates thereafter, once every N steps. The units of
+the quantity are energy; see the units command for
+details. This quantity can be accessed by various output
+commands, such as thermo_style
+custom. The scalar value calculated by this fix is
+"intensive", meaning it is independent of the number of atoms in the
+simulation.
+
+No parameter of this fix can be used with the start/stop keywords of
+the run command. This fix is not invoked during energy
+minimization.
+
+Restrictions:
+
+LAMMPS does not check, but the masses of all exchanged atom pairs
+should be the same to use this fix in a way that conserves both
+momentum and kinetic energy. Thus you should not need to thermostat
+the system. If you do use a thermostat, you may want to apply it only
+to the non-swapped dimensions (other than vdim).
+
+LAMMPS does not check, but you should not use this fix to swap the
+kinetic energy of atoms that are in constrained molecules, e.g. via
+fix shake or fix rigid. This is
+because application of the constraints will alter the amount of
+transferred momentum. You should, however, be able to use flexible
+molecules. See the Zhang paper for a discussion and results
+of this idea.
+
+When running a simulation with large, massive particles or molecules
+in a background solvent, you may want to only exchange kinetic energy
+bewteen solvent particles.
+
+Related commands:
+
+fix ave/spatial
+
+Default:
+
+The option defaults are swap = 1.
+
+
+
+
+
+(Muller-Plathe) Muller-Plathe and Reith, Computational and
+Theoretical Polymer Science, 9, 203-209 (1999).
+
+
+
+(Zhang) Zhang, Lussetti, de Souza, Muller-Plathe, J Phys Chem B,
+109, 15060-15067 (2005).
+
+
diff --git a/doc/fix_thermal_conductivity.txt b/doc/fix_thermal_conductivity.txt
new file mode 100644
index 0000000000..ce61ce45fd
--- /dev/null
+++ b/doc/fix_thermal_conductivity.txt
@@ -0,0 +1,139 @@
+"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 thermal/conductivity command :h3
+
+[Syntax:]
+
+fix ID group-ID thermal/conductivity N edim Nbin keyword value ... :pre
+
+ID, group-ID are documented in "fix"_fix.html command :ulb,l
+thermal/conductivity = style name of this fix command :l
+N = perform kinetic energy exchange every N steps :l
+edim = {x} or {y} or {z} = direction of kinetic energy transfer :l
+Nbin = # of layers in edim direction :l
+
+zero or more keyword/value pairs may be appended :l
+keyword = {swap} :l
+ {swap} value = Nswap = number of swaps to perform every N steps :pre
+:ule
+
+[Examples:]
+
+fix 1 all thermal/conductivity 100 z 20
+fix 1 all thermal/conductivity 50 z 20 swap 2 :pre
+
+[Description:]
+
+Use the Muller-Plathe algorithm described in "this
+paper"_#Muller-Plathe 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 a thermal conductivity of the fluid to be calculated. This
+algorithm is sometimes called a reverse non-equilibrium MD (reverse
+NEMD) approach to computing thermal conductivity. This is because the
+usual NEMD approach is to impose a temperature gradient on the system
+and measure the response as the resulting heat flux. In the
+Muller-Plathe method, the heat flux is imposed, and the temperature
+gradient is the system's response.
+
+The simulation box is divided into {Nbin} layers in the {edim}
+direction. Every N steps, Nswap pairs of atoms are chosen in the
+following manner. Only atoms in the fix group are considered. The
+hottest Nswap atoms in the bottom layer are selected. Similarly, the
+coldest Nswap atoms in the middle later are selected. The two sets of
+Nswap atoms are paired up and their velocities are exchanged. This
+effectively swaps their kinetic energies, assuming their masses are
+the same. Over time, this induces a temperature gradient in the
+system which can be measured using commands such as the following,
+which writes the temperature profile (assuming z = edim) to the file
+tmp.profile:
+
+compute ke all ke/atom
+variable temp atom c_ke[]/1.5
+fix 3 all ave/spatial 10 100 1000 z lower 0.05 v_temp &
+ file tmp.profile units reduced :pre
+
+Note that by default, Nswap = 1, though this can be changed by the
+optional {swap} keyword. Setting this parameter appropriately, in
+conjunction with the swap rate N, allows the heat flux to be adjusted
+across a wide range of values, and the kinetic energy to be exchanged
+in large chunks or more smoothly.
+
+As described below, the total kinetic energy transferred by these
+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 the thermal conductivity of the fluid,
+in appopriate units. See the "Muller-Plathe paper"_#Muller-Plathe for
+details.
+
+IMPORTANT NOTE: After equilibration, if the temperature gradient you
+observe is not linear, then you are likely swapping energy too
+frequently and are not in a regime of linear response. In this case
+you cannot accurately infer a thermal conductivity and should try
+increasing the Nevery parameter.
+
+[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.
+
+The cummulative kinetic energy transferred between the bottom and
+middle of the simulation box (in the {edim} direction) is stored as a
+scalar quantity by this fix. This quantity is zeroed when the fix is
+defined and accumlates thereafter, once every N steps. The units of
+the quantity are energy; see the "units"_units.html command for
+details. This quantity can be accessed by various "output
+commands"_Section_howto.html#4_15, such as "thermo_style
+custom"_thermo_style.html. The scalar value calculated by this fix is
+"intensive", meaning it is independent of the number of atoms in the
+simulation.
+
+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:]
+
+LAMMPS does not check, but the masses of all exchanged atom pairs
+should be the same to use this fix in a way that conserves both
+momentum and kinetic energy. Thus you should not need to thermostat
+the system. If you do use a thermostat, you may want to apply it only
+to the non-swapped dimensions (other than {vdim}).
+
+LAMMPS does not check, but you should not use this fix to swap the
+kinetic energy of atoms that are in constrained molecules, e.g. via
+"fix shake"_fix_shake.html or "fix rigid"_fix_rigid.html. This is
+because application of the constraints will alter the amount of
+transferred momentum. You should, however, be able to use flexible
+molecules. See the "Zhang paper"_#Zhang for a discussion and results
+of this idea.
+
+When running a simulation with large, massive particles or molecules
+in a background solvent, you may want to only exchange kinetic energy
+bewteen solvent particles.
+
+[Related commands:]
+
+"fix ave/spatial"_fix_ave_spatial.html
+
+[Default:]
+
+The option defaults are swap = 1.
+
+:line
+
+:link(Muller-Plathe)
+[(Muller-Plathe)] Muller-Plathe and Reith, Computational and
+Theoretical Polymer Science, 9, 203-209 (1999).
+
+:link(Zhang)
+[(Zhang)] Zhang, Lussetti, de Souza, Muller-Plathe, J Phys Chem B,
+109, 15060-15067 (2005).
diff --git a/doc/fix_viscosity.html b/doc/fix_viscosity.html
index c7c6363a8d..be9de3737b 100644
--- a/doc/fix_viscosity.html
+++ b/doc/fix_viscosity.html
@@ -70,8 +70,8 @@ time, this induces a shear velocity profile in the system which can be
measured using commands such as the following, which writes the
profile to the file tmp.profile:
-fix f1 all ave/spatial 100 10 1000 z lower 0.05 vx &
- file tmp.profile units reduced
+fix f1 all ave/spatial 100 10 1000 z lower 0.05 vx &
+ file tmp.profile units reduced
Note that by default, Nswap = 1 and vtarget = INF, though this can be
changed by the optional swap and vtarget keywords. When vtarget =
@@ -144,8 +144,7 @@ solvent particles.
Related commands:
-fix ave/spatial, fix
-nvt/sllod
+
fix ave/spatial
Default:
diff --git a/doc/fix_viscosity.txt b/doc/fix_viscosity.txt
index c45bf71c19..0be053f698 100644
--- a/doc/fix_viscosity.txt
+++ b/doc/fix_viscosity.txt
@@ -59,8 +59,8 @@ time, this induces a shear velocity profile in the system which can be
measured using commands such as the following, which writes the
profile to the file tmp.profile:
-fix f1 all ave/spatial 100 10 1000 z lower 0.05 vx &
- file tmp.profile units reduced :pre
+fix f1 all ave/spatial 100 10 1000 z lower 0.05 vx &
+ file tmp.profile units reduced :pre
Note that by default, Nswap = 1 and vtarget = INF, though this can be
changed by the optional {swap} and {vtarget} keywords. When vtarget =
@@ -133,8 +133,7 @@ solvent particles.
[Related commands:]
-"fix ave/spatial"_fix_ave_spatial.html, "fix
-nvt/sllod"_fix_nvt_sllod.html
+"fix ave/spatial"_fix_ave_spatial.html
[Default:]