Files
lammps/doc/src/pair_lubricateU.rst
2024-08-16 16:29:45 -04:00

247 lines
9.9 KiB
ReStructuredText

.. index:: pair_style lubricateU
.. index:: pair_style lubricateU/poly
pair_style lubricateU command
=============================
pair_style lubricateU/poly command
==================================
Syntax
""""""
.. code-block:: LAMMPS
pair_style style mu flaglog cutinner cutoff gdot flagHI flagVF
* style = *lubricateU* or *lubricateU/poly*
* mu = dynamic viscosity (dynamic viscosity units)
* flaglog = 0/1 to exclude/include log terms in the lubrication approximation
* cutinner = inner cut off distance (distance units)
* cutoff = outer cutoff for interactions (distance units)
* gdot = shear rate (1/time units)
* flagHI (optional) = 0/1 to exclude/include 1/r hydrodynamic interactions
* flagVF (optional) = 0/1 to exclude/include volume fraction corrections in the long-range isotropic terms
Examples
""""""""
(all assume radius = 1)
.. code-block:: LAMMPS
pair_style lubricateU 1.5 1 2.01 2.5 0.01 1 1
pair_coeff 1 1 2.05 2.8
pair_coeff * *
Description
"""""""""""
Styles *lubricateU* and *lubricateU/poly* compute velocities and
angular velocities for finite-size spherical particles such that the
hydrodynamic interaction balances the force and torque due to all
other types of interactions.
The interactions have 2 components. The first is
Ball-Melrose lubrication terms via the formulas in :ref:`(Ball and Melrose) <Ball2>`
.. math::
W & = - a_{sq} | (v_1 - v_2) \bullet \mathbf{nn} |^2 -
a_{sh} | (\omega_1 + \omega_2) \bullet
(\mathbf{I} - \mathbf{nn}) - 2 \Omega_N |^2 - \\
& a_{pu} | (\omega_1 - \omega_2) \bullet (\mathbf{I} - \mathbf{nn}) |^2 -
a_{tw} | (\omega_1 - \omega_2) \bullet \mathbf{nn} |^2 \qquad r < r_c \\
& \\
\Omega_N & = \mathbf{n} \times (v_1 - v_2) / r
which represents the dissipation W between two nearby particles due to
their relative velocities in the presence of a background solvent with
viscosity *mu*\ . Note that this is dynamic viscosity which has units of
mass/distance/time, not kinematic viscosity.
The Asq (squeeze) term is the strongest and is included as long as
*flagHI* is set to 1 (default). It scales as 1/gap where gap is the
separation between the surfaces of the 2 particles. The Ash (shear)
and Apu (pump) terms are only included if *flaglog* is set to 1. They
are the next strongest interactions, and the only other singular
interaction, and scale as log(gap). Note that *flaglog* = 1 and
*flagHI* = 0 is invalid, and will result in a warning message, after
which *flagHI* will be set to 1. The Atw (twist) term is currently not
included. It is typically a very small contribution to the lubrication
forces.
The *flagHI* and *flagVF* settings are optional. Neither should be
used, or both must be defined.
*Cutinner* sets the minimum center-to-center separation that will be
used in calculations irrespective of the actual separation. *Cutoff*
is the maximum center-to-center separation at which an interaction is
computed. Using a *cutoff* less than 3 radii is recommended if
*flaglog* is set to 1.
The other component is due to the Fast Lubrication Dynamics (FLD)
approximation, described in :ref:`(Kumar) <Kumar2>`. The equation being
solved to balance the forces and torques is
.. math::
-R_{FU}(U-U^{\infty}) = -R_{FE}E^{\infty} - F^{rest}
where U represents the velocities and angular velocities of the
particles, :math:`U^{\infty}` represents the velocities and the angular
velocities of the undisturbed fluid, and :math:`E^{\infty}` represents
the rate of strain tensor of the undisturbed fluid flow with viscosity
*mu*\ . Again, note that this is dynamic viscosity which has units of
mass/distance/time, not kinematic viscosity. Volume fraction
corrections to R_FU are included if *flagVF* is set to 1 (default).
F\ *rest* represents the forces and torques due to all other types of
interactions, e.g. Brownian, electrostatic etc. Note that this
algorithm neglects the inertial terms, thereby removing the restriction
of resolving the small interial time scale, which may not be of interest
for colloidal particles. These pair styles solve for the velocity such
that the hydrodynamic force balances all other types of forces, thereby
resulting in a net zero force (zero inertia limit). When defining these
pair styles, they must be defined last so that when these styles are
invoked all other types of forces have already been computed. For the
same reason, they won't work if additional non-pair styles are defined
(such as bond or Kspace forces) as they are calculated in LAMMPS after
the pairwise interactions have been computed.
.. note::
When using these styles, the pair styles are designed to be used with
implicit time integration and a correspondingly larger timestep.
Thus either :doc:`fix nve/noforce <fix_nve_noforce>` should be used
for spherical particles defined via :doc:`atom_style sphere
<atom_style>` or :doc:`fix nve/asphere/noforce
<fix_nve_asphere_noforce>` should be used for spherical particles
defined via :doc:`atom_style ellipsoid <atom_style>`. This is
because the velocity and angular momentum of each particle is set by
the pair style, and should not be reset by the time integration fix.
Style *lubricateU* requires monodisperse spherical particles; style
*lubricateU/poly* allows for polydisperse spherical particles.
If the suspension is sheared via the :doc:`fix deform <fix_deform>`
command then the pair style uses the shear rate to adjust the
hydrodynamic interactions accordingly. Volume changes due to fix
deform are accounted for when computing the volume fraction
corrections to R_FU.
When computing the volume fraction corrections to R_FU, the presence of
walls (whether moving or stationary) will affect the volume fraction
available to colloidal particles. This is currently accounted for with
the following types of walls: :doc:`wall/lj93 <fix_wall>`,
:doc:`wall/lj126 <fix_wall>`, :doc:`wall/colloid <fix_wall>`, and
:doc:`wall/harmonic <fix_wall>`. For these wall styles, the correct
volume fraction will be used when walls do not coincide with the box
boundary, as well as when walls move and thereby cause a change in the
volume fraction. To use these wall styles with pair_style *lubricateU*
or *lubricateU/poly*, the *fld yes* option must be specified in the fix
wall command. Other wall styles may still work, but they will result
in the volume fraction being computed based on the box boundaries.
Several wall styles are not compatible with these pair styles and using
them will result in an error.
Since lubrication forces are dissipative, it is usually desirable to
thermostat the system at a constant temperature. If Brownian motion
(at a constant temperature) is desired, it can be set using the
:doc:`pair_style brownian <pair_brownian>` command. These pair styles
and the brownian style should use consistent parameters for *mu*,
*flaglog*, *flagfld*, *cutinner*, *cutoff*, *flagHI* and *flagVF*\ .
----------
The following coefficients must be defined for each pair of atoms
types via the :doc:`pair_coeff <pair_coeff>` command as in the examples
above, or in the data file or restart files read by the
:doc:`read_data <read_data>` or :doc:`read_restart <read_restart>`
commands, or by mixing as described below:
* cutinner (distance units)
* cutoff (distance units)
The two coefficients are optional. If neither is specified, the two
cutoffs specified in the pair_style command are used. Otherwise both
must be specified.
----------
Mixing, shift, table, tail correction, restart, rRESPA info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
For atom type pairs I,J and I != J, the two cutoff distances for this
pair style can be mixed. The default mix value is *geometric*\ . See
the "pair_modify" command for details.
These pair styles do not support the :doc:`pair_modify <pair_modify>`
shift option for the energy of the pair interaction.
The :doc:`pair_modify <pair_modify>` table option is not relevant
for these pair styles.
These pair styles do not support the :doc:`pair_modify <pair_modify>`
tail option for adding long-range tail corrections to energy and
pressure.
These pair styles write their information to :doc:`binary restart files
<restart>`, so pair_style and pair_coeff commands do not need to be
specified in an input script that reads a restart file.
These pair styles can only be used via the *pair* keyword of the
:doc:`run_style respa <run_style>` command. They does not support the
*inner*, *middle*, *outer* keywords.
----------
Restrictions
""""""""""""
These styles are part of the COLLOID package. They are only enabled if
LAMMPS was built with that package. See the :doc:`Build package
<Build_package>` page for more info.
Currently, these pair styles assume that all other types of
forces/torques on the particles have been already been computed when it
is invoked. This requires this style to be defined as the last of the
pair styles, and that no fixes apply additional constraint forces. One
exception is the :doc:`fix wall/colloid <fix_wall>` commands, which has
an "fld" option to apply their wall forces correctly.
Only spherical monodisperse particles are allowed for pair_style
lubricateU.
Only spherical particles are allowed for pair_style lubricateU/poly.
For sheared suspensions, it is assumed that the shearing is done in the
xy plane, with x being the velocity direction and y being the
velocity-gradient direction. In this case, one must use :doc:`fix deform
<fix_deform>` with the same rate of shear (erate).
These pair styles are only compatible with the following wall fixes:
doc:`fix wall/lj93, fix wall/lj126, fix wall/lj1043, fix wall/colloid,
fix wall/harmonic, fix wall/lepton, fix wall/morse, fix wall/table
<fix_wall>`.
Related commands
""""""""""""""""
:doc:`pair_coeff <pair_coeff>`, :doc:`pair_style lubricate <pair_lubricate>`
Default
"""""""
The default settings for the optional args are flagHI = 1 and flagVF =
1.
----------
.. _Ball2:
**(Ball)** Ball and Melrose, Physica A, 247, 444-472 (1997).
.. _Kumar2:
**(Kumar)** Kumar and Higdon, Phys Rev E, 82, 051401 (2010).