lammps/doc/fix_viscosity.txt

133 lines
5.5 KiB
Plaintext

"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 viscosity command :h3
[Syntax:]
fix ID group-ID viscosity N vdim pdim Nbin :pre
ID, group-ID are documented in "fix"_fix.html command
viscosity = style name of this fix command
N = perform momentum exchange every N steps
vdim = {x} or {y} or {z} = which momentum component to exchange
pdim = {x} or {y} or {z} = direction of momentum transfer
Nbin = # of layers in pdim direction :ul
[Examples:]
fix 1 all viscosity 100 x z 20 :pre
[Description:]
Use the Muller-Plathe algorithm described in "this
paper"_#Muller-Plathe to exchange momenta between two particles in
different regions of the simulation box every N steps. This induces a
shear velocity profile in the system. As described below this enables
a viscosity of the fluid to be calculated. This algorithm is
sometimes called a reverse non-equilibrium MD (reverse NEMD) approach
to computing viscosity. This is because the usual NEMD approach is to
impose a shear velocity profile on the system and measure the response
via an off-diagonal component of the stress tensor, which is
proportional to the momentum flux. In the Muller-Plathe method, the
momentum flux is imposed, and the shear velocity profile is the
system's response.
The simulation box is divided into {Nbin} layers in the {pdim}
direction. Every N steps, two atoms are chosen in the following
manner. Only atoms in the fix group are considered. The atom in the
bottom layer with the most positive momentum component in the {vdim}
direction is the first atom. The atom in the middle later with the
most negative momentum component in the {vdim} direction is the second
atom. The {vdim} momenta components of these two atoms are swapped,
which resets their velocities, typically in opposite directions. Over
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:
compute c1 all attribute/atom vx
fix f1 all ave/spatial 100 10 1000 z lower 0.05 tmp.profile &
compute c1 units reduced :pre
As described below, the total momentum transferred by these velocity
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 momentum flux. The ratio of momentum flux to the slope of
the shear velocity profile is the viscosity of the fluid, in
appropriate units. See the "Muller-Plathe paper"_#Muller-Plathe for
details.
IMPORTANT NOTE: After equilibration, if the velocity profile you
observe is not linear, then you are likely swapping momentum too
frequently and are not in a regime of linear response. In this case
you cannot accurately infer a viscosity and should try increasing
the Nevery parameter.
An alternative method for calculating a viscosity is to run a NEMD
simulation, as described in "this section"_Section_howto.html#4_13 of
the manual. NEMD simulations deform the simulation box via the "fix
deform"_fix_deform.html command. Thus they cannot be run on a charged
system using a "PPPM solver"_kspace_style.html since PPPM does not
currently support non-orthogonal boxes. Using fix viscosity keeps the
box orthogonal; thus it does not suffer from this limitation.
[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 cumulative momentum transferred between the bottom and middle of
the simulation box (in the {pdim} direction) is stored as a scalar
quantity by this fix. This quantity is zeroed when the fix is defined
and accumulates thereafter, once every N steps. The units of the
quantity are momentum = mass*velocity. 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:]
If the masses of all exchange partners are the same, then swaps
conserve 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
velocities 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 "Maginn paper"_#Maginn for an example of using this algorithm
in a computation of alcohol molecule properties.
When running a simulation with large, massive particles or molecules
in a background solvent, you may want to only exchange momenta between
solvent particles.
[Related commands:]
"fix ave/spatial"_fix_ave_spatial.html, "fix
nvt/sllod"_fix_nvt_sllod.html
[Default:] none
:line
:link(Muller-Plathe)
[(Muller-Plathe)] Muller-Plathe, Phys Rev E, 59, 4894-4898 (1999).
:link(Maginn)
[(Maginn)] Kelkar, Rafferty, Maginn, Siepmann, Fluid Phase Equilibria,
260, 218-231 (2007).