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/aspherenpt/spherenvenve/aspherenve/limitnve/noforcenve/spherenvt nvt/aspherenvt/sllodnvt/sphereorient/fccplaneforcepoemspourpress/berendsen printrdfrecenterrigidsetforceshakespringspring/rg -spring/selftemp/berendsentemp/rescaletmdviscosityviscouswall/granwall/lj126 -wall/lj93wall/reflectwiggle +spring/selftemp/berendsentemp/rescalethermal/conductivitytmdviscosityviscouswall/gran +wall/lj126wall/lj93wall/reflectwiggle
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:]