351 lines
13 KiB
ReStructuredText
351 lines
13 KiB
ReStructuredText
.. index:: pair_style edpd
|
|
.. index:: pair_style edpd/gpu
|
|
.. index:: pair_style mdpd
|
|
.. index:: pair_style mdpd/gpu
|
|
.. index:: pair_style mdpd/rhosum
|
|
.. index:: pair_style tdpd
|
|
|
|
pair_style edpd command
|
|
=======================
|
|
|
|
Accelerator Variants: *edpd/gpu*
|
|
|
|
pair_style mdpd command
|
|
=======================
|
|
|
|
Accelerator Variants: *mdpd/gpu*
|
|
|
|
pair_style mdpd/rhosum command
|
|
==============================
|
|
|
|
pair_style tdpd command
|
|
=======================
|
|
|
|
Syntax
|
|
""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
pair_style style args
|
|
|
|
* style = *edpd* or *mdpd* or *mdpd/rhosum* or *tdpd*
|
|
* args = list of arguments for a particular style
|
|
|
|
.. parsed-literal::
|
|
|
|
*edpd* args = cutoff seed
|
|
cutoff = global cutoff for eDPD interactions (distance units)
|
|
seed = random # seed (integer) (if <= 0, eDPD will use current time as the seed)
|
|
*mdpd* args = T cutoff seed
|
|
T = temperature (temperature units)
|
|
cutoff = global cutoff for mDPD interactions (distance units)
|
|
seed = random # seed (integer) (if <= 0, mDPD will use current time as the seed)
|
|
*mdpd/rhosum* args =
|
|
*tdpd* args = T cutoff seed
|
|
T = temperature (temperature units)
|
|
cutoff = global cutoff for tDPD interactions (distance units)
|
|
seed = random # seed (integer) (if <= 0, tDPD will use current time as the seed)
|
|
|
|
Examples
|
|
""""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
pair_style edpd 1.58 9872598
|
|
pair_coeff * * 18.75 4.5 0.41 1.58 1.42E-5 2.0 1.58
|
|
pair_coeff 1 1 18.75 4.5 0.41 1.58 1.42E-5 2.0 1.58 power 10.54 -3.66 3.44 -4.10
|
|
pair_coeff 1 1 18.75 4.5 0.41 1.58 1.42E-5 2.0 1.58 power 10.54 -3.66 3.44 -4.10 kappa -0.44 -3.21 5.04 0.00
|
|
|
|
pair_style hybrid/overlay mdpd/rhosum mdpd 1.0 1.0 65689
|
|
pair_coeff 1 1 mdpd/rhosum 0.75
|
|
pair_coeff 1 1 mdpd -40.0 25.0 18.0 1.0 0.75
|
|
|
|
pair_style tdpd 1.0 1.58 935662
|
|
pair_coeff * * 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0
|
|
pair_coeff 1 1 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0 3.0 1.0E-5 2.0
|
|
|
|
Description
|
|
"""""""""""
|
|
|
|
The *edpd* style computes the pairwise interactions and heat fluxes
|
|
for eDPD particles following the formulations in
|
|
:ref:`(Li2014_JCP) <Li2014_JCP>` and :ref:`Li2015_CC <Li2015_CC>`. The time
|
|
evolution of an eDPD particle is governed by the conservation of
|
|
momentum and energy given by
|
|
|
|
.. math::
|
|
|
|
\frac{\mathrm{d}^2 \mathbf{r}_i}{\mathrm{d} t^2}=
|
|
\frac{\mathrm{d} \mathbf{v}_i}{\mathrm{d} t}
|
|
=\mathbf{F}_{i}=\sum_{i\neq j}(\mathbf{F}_{ij}^{C}+\mathbf{F}_{ij}^{D}+\mathbf{F}_{ij}^{R}) \\
|
|
C_v\frac{\mathrm{d} T_i}{\mathrm{d} t}= q_{i} = \sum_{i\neq j}(q_{ij}^{C}+q_{ij}^{V}+q_{ij}^{R}),
|
|
|
|
where the three components of :math:`F_{i}` including the conservative
|
|
force :math:`F_{ij}^C`, dissipative force :math:`F_{ij}^D` and random
|
|
force :math:`F_{ij}^R` are expressed as
|
|
|
|
.. math::
|
|
|
|
\mathbf{F}_{ij}^{C} & = \alpha_{ij}{\omega_{C}}(r_{ij})\mathbf{e}_{ij} \\
|
|
\mathbf{F}_{ij}^{D} & = -\gamma {\omega_{D}}(r_{ij})(\mathbf{e}_{ij} \cdot \mathbf{v}_{ij})\mathbf{e}_{ij} \\
|
|
\mathbf{F}_{ij}^{R} & = \sigma {\omega_{R}}(r_{ij}){\xi_{ij}}\Delta t^{-1/2} \mathbf{e}_{ij} \\
|
|
\omega_{C}(r) & = 1 - r/r_c \\
|
|
\alpha_{ij} & = A\cdot k_B(T_i + T_j)/2 \\
|
|
\omega_{D}(r) & = \omega^2_{R}(r) = (1-r/r_c)^s \\
|
|
\sigma_{ij}^2 & = 4\gamma k_B T_i T_j/(T_i + T_j)
|
|
|
|
in which the exponent of the weighting function *s* can be defined as a
|
|
temperature-dependent variable. The heat flux between particles
|
|
accounting for the collisional heat flux :math:`q^C`, viscous heat flux
|
|
:math:`q^V`, and random heat flux :math:`q^R` are given by
|
|
|
|
.. math::
|
|
|
|
q_i^C & = \sum_{j \ne i} k_{ij} \omega_{CT}(r_{ij}) \left( \frac{1}{T_i} - \frac{1}{T_j} \right) \\
|
|
q_i^V & = \frac{1}{2 C_v}\sum_{j \ne i}{ \left\{ \omega_D(r_{ij})\left[\gamma_{ij} \left( \mathbf{e}_{ij} \cdot \mathbf{v}_{ij} \right)^2 - \frac{\left( \sigma _{ij} \right)^2}{m}\right] - \sigma _{ij} \omega_R(r_{ij})\left( \mathbf{e}_{ij} \cdot \mathbf{v}_{ij} \right){\xi_{ij}} \right\} } \\
|
|
q_i^R & = \sum_{j \ne i} \beta _{ij} \omega_{RT}(r_{ij}) d {t^{ - 1/2}} \xi_{ij}^e \\
|
|
\omega_{CT}(r) & =\omega_{RT}^2(r)=\left(1-r/r_{ct}\right)^{s_T} \\
|
|
k_{ij} & =C_v^2\kappa(T_i + T_j)^2/4k_B \\
|
|
\beta_{ij}^2 & = 2k_Bk_{ij}
|
|
|
|
where the mesoscopic heat friction :math:`\kappa` is given by
|
|
|
|
.. math::
|
|
|
|
\kappa = \frac{315k_B\upsilon }{2\pi \rho C_v r_{ct}^5}\frac{1}{Pr},
|
|
|
|
with :math:`\upsilon` being the kinematic viscosity. For more details,
|
|
see Eq.(15) in :ref:`(Li2014_JCP) <Li2014_JCP>`.
|
|
|
|
The following coefficients must be defined in eDPD system for each
|
|
pair of atom types via the :doc:`pair_coeff <pair_coeff>` command as in
|
|
the examples above.
|
|
|
|
* A (force units)
|
|
* :math:`\gamma` (force/velocity units)
|
|
* power_f (positive real)
|
|
* cutoff (distance units)
|
|
* kappa (thermal conductivity units)
|
|
* power_T (positive real)
|
|
* cutoff_T (distance units)
|
|
* optional keyword = power or kappa
|
|
|
|
The keyword *power* or *kappa* is optional. Both "power" and "kappa"
|
|
require 4 parameters :math:`c_1, c_2, c_3, c_4` showing the temperature
|
|
dependence of the exponent :math:`s(T) = \mathrm{power}_f ( 1+c_1
|
|
(T-1) + c_2 (T-1)^2 + c_3 (T-1)^3 + c_4 (T-1)^4 )` and of the mesoscopic
|
|
heat friction :math:`s_T(T) = \kappa (1 + c_1 (T-1) + c_2 (T-1)^2 + c_3
|
|
(T-1)^3 + c_4 (T-1)^4)`. If the keyword *power* or *kappa* is not
|
|
specified, the eDPD system will use constant power_f and
|
|
:math:`\kappa`, which is independent to temperature changes.
|
|
|
|
----------
|
|
|
|
The *mdpd/rhosum* style computes the local particle mass density
|
|
:math:`\rho` for mDPD particles by kernel function interpolation.
|
|
|
|
The following coefficients must be defined for each pair of atom types
|
|
via the :doc:`pair_coeff <pair_coeff>` command as in the examples above.
|
|
|
|
* cutoff (distance units)
|
|
|
|
----------
|
|
|
|
The *mdpd* style computes the many-body interactions between mDPD
|
|
particles following the formulations in
|
|
:ref:`(Li2013_POF) <Li2013_POF>`. The dissipative and random forces are in
|
|
the form same as the classical DPD, but the conservative force is
|
|
local density dependent, which are given by
|
|
|
|
.. math::
|
|
|
|
\mathbf{F}_{ij}^C & = Aw_c(r_{ij})\mathbf{e}_{ij} + B(\rho_i+\rho_j)w_d(r_{ij})\mathbf{e}_{ij} \\
|
|
\mathbf{F}_{ij}^{D} & = -\gamma {\omega_{D}}(r_{ij})(\mathbf{e}_{ij} \cdot \mathbf{v}_{ij})\mathbf{e}_{ij} \\
|
|
\mathbf{F}_{ij}^{R} & = \sigma {\omega_{R}}(r_{ij}){\xi_{ij}}\Delta t^{-1/2} \mathbf{e}_{ij}
|
|
|
|
where the first term in :math:`F_C` with a negative coefficient :math:`A
|
|
< 0` stands for an attractive force within an interaction range
|
|
:math:`r_c`, and the second term with :math:`B > 0` is the
|
|
density-dependent repulsive force within an interaction range
|
|
:math:`r_d`.
|
|
|
|
The following coefficients must be defined for each pair of atom types via the
|
|
:doc:`pair_coeff <pair_coeff>` command as in the examples above.
|
|
|
|
* A (force units)
|
|
* B (force units)
|
|
* :math:`\gamma` (force/velocity units)
|
|
* cutoff_c (distance units)
|
|
* cutoff_d (distance units)
|
|
|
|
----------
|
|
|
|
The *tdpd* style computes the pairwise interactions and chemical
|
|
concentration fluxes for tDPD particles following the formulations in
|
|
:ref:`(Li2015_JCP) <Li2015_JCP>`. The time evolution of a tDPD particle is
|
|
governed by the conservation of momentum and concentration given by
|
|
|
|
.. math::
|
|
|
|
\frac{\mathrm{d}^2 \mathbf{r}_i}{\mathrm{d} t^2} & = \frac{\mathrm{d} \mathbf{v}_i}{\mathrm{d} t}=\mathbf{F}_{i}=\sum_{i\neq j}(\mathbf{F}_{ij}^{C}+\mathbf{F}_{ij}^{D}+\mathbf{F}_{ij}^{R}) \\
|
|
\frac{\mathrm{d} C_{i}}{\mathrm{d} t} & = Q_{i} = \sum_{i\neq j}(Q_{ij}^{D}+Q_{ij}^{R}) + Q_{i}^{S}
|
|
|
|
where the three components of :math:`F_{i}` including the conservative
|
|
force :math:`F_{ij}^C`, dissipative force :math:`F_{ij}^C` and random
|
|
force :math:`F_{ij}^C` are expressed as
|
|
|
|
.. math::
|
|
|
|
\mathbf{F}_{ij}^{C} & = A{\omega_{C}}(r_{ij})\mathbf{e}_{ij} \\
|
|
\mathbf{F}_{ij}^{D} & = -\gamma {\omega_{D}}(r_{ij})(\mathbf{e}_{ij} \cdot \mathbf{v}_{ij})\mathbf{e}_{ij} \\
|
|
\mathbf{F}_{ij}^{R} & = \sigma {\omega_{R}}(r_{ij}){\xi_{ij}}\Delta t^{-1/2} \mathbf{e}_{ij} \\
|
|
\omega_{C}(r) & = 1 - r/r_c \\
|
|
\omega_{D}(r) & = \omega^2_{R}(r) = (1-r/r_c)^\mathrm{power_f} \\
|
|
\sigma^2 = 2\gamma k_B T
|
|
|
|
The concentration flux between two tDPD particles includes the Fickian
|
|
flux :math:`Q_{ij}^D` and random flux :math:`Q_{ij}^R`, which are given
|
|
by
|
|
|
|
.. math::
|
|
|
|
Q_{ij}^D & = -\kappa_{ij} w_{DC}(r_{ij}) \left( C_i - C_j \right) \\
|
|
Q_{ij}^R & = \epsilon_{ij}\left( C_i + C_j \right) w_{RC}(r_{ij}) \xi_{ij} \\
|
|
w_{DC}(r_{ij}) & =w^2_{RC}(r_{ij}) = (1 - r/r_{cc})^\mathrm{power_{cc}} \\
|
|
\epsilon_{ij}^2 & = m_s^2\kappa_{ij}\rho
|
|
|
|
where the parameters kappa and epsilon determine the strength of the
|
|
Fickian and random fluxes. :math:`m_s` is the mass of a single solute
|
|
molecule. In general, :math:`m_s` is much smaller than the mass of a
|
|
tDPD particle *m*\ . For more details, see :ref:`(Li2015_JCP)
|
|
<Li2015_JCP>`.
|
|
|
|
The following coefficients must be defined for each pair of atom types via the
|
|
:doc:`pair_coeff <pair_coeff>` command as in the examples above.
|
|
|
|
* A (force units)
|
|
* :math:`\gamma` (force/velocity units)
|
|
* power_f (positive real)
|
|
* cutoff (distance units)
|
|
* cutoff_CC (distance units)
|
|
* :math:`\kappa_i` (diffusivity units)
|
|
* :math:`\epsilon_i` (diffusivity units)
|
|
* power_cc_i (positive real)
|
|
|
|
The last 3 values must be repeated Nspecies times, so that values for
|
|
each of the Nspecies chemical species are specified, as indicated by
|
|
the "I" suffix. In the first pair_coeff example above for pair_style
|
|
tdpd, Nspecies = 1. In the second example, Nspecies = 2, so 3
|
|
additional coeffs are specified (for species 2).
|
|
|
|
----------
|
|
|
|
Example scripts
|
|
"""""""""""""""
|
|
|
|
There are example scripts for using all these pair styles in
|
|
examples/PACKAGES/mesodpd. The example for an eDPD simulation models heat
|
|
conduction with source terms analog of periodic Poiseuille flow
|
|
problem. The setup follows Fig.12 in :ref:`(Li2014_JCP) <Li2014_JCP>`. The
|
|
output of the short eDPD simulation (about 2 minutes on a single core)
|
|
gives a temperature and density profiles as
|
|
|
|
.. image:: JPG/examples_edpd.jpg
|
|
:align: center
|
|
|
|
The example for a mDPD simulation models the oscillations of a liquid
|
|
droplet started from a liquid film. The mDPD parameters are adopted
|
|
from :ref:`(Li2013_POF) <Li2013_POF>`. The short mDPD run (about 2 minutes
|
|
on a single core) generates a particle trajectory which can
|
|
be visualized as follows.
|
|
|
|
.. only:: html
|
|
|
|
.. image:: JPG/examples_mdpd.gif
|
|
:align: center
|
|
|
|
.. image:: JPG/examples_mdpd_first.jpg
|
|
:align: center
|
|
|
|
.. image:: JPG/examples_mdpd_last.jpg
|
|
:align: center
|
|
|
|
The first image is the initial state of the simulation. If you
|
|
click it a GIF movie should play in your browser. The second image
|
|
is the final state of the simulation.
|
|
|
|
The example for a tDPD simulation computes the effective diffusion
|
|
coefficient of a tDPD system using a method analogous to the periodic
|
|
Poiseuille flow. The tDPD system is specified with two chemical
|
|
species, and the setup follows Fig.1 in
|
|
:ref:`(Li2015_JCP) <Li2015_JCP>`. The output of the short tDPD simulation
|
|
(about one and a half minutes on a single core) gives the
|
|
concentration profiles of the two chemical species as
|
|
|
|
.. image:: JPG/examples_tdpd.jpg
|
|
:align: center
|
|
|
|
----------
|
|
|
|
.. include:: accel_styles.rst
|
|
|
|
----------
|
|
|
|
Mixing, shift, table, tail correction, restart, rRESPA info
|
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
|
|
The styles *edpd*, *mdpd*, *mdpd/rhosum* and *tdpd* do not support
|
|
mixing. Thus, coefficients for all I,J pairs must be specified explicitly.
|
|
|
|
The styles *edpd*, *mdpd*, *mdpd/rhosum* and *tdpd* do not support
|
|
the :doc:`pair_modify <pair_modify>` shift, table, and tail options.
|
|
|
|
The styles *edpd*, *mdpd*, *mdpd/rhosum* and *tdpd* do not write
|
|
information to :doc:`binary restart files <restart>`. Thus, you need
|
|
to re-specify the pair_style and pair_coeff commands in an input script
|
|
that reads a restart file.
|
|
|
|
Restrictions
|
|
""""""""""""
|
|
|
|
The pair styles *edpd*, *mdpd*, *mdpd/rhosum* and *tdpd* are part of
|
|
the DPD-MESO package. They are only enabled if LAMMPS was built with
|
|
that package. See the :doc:`Build package <Build_package>` page for
|
|
more info.
|
|
|
|
Related commands
|
|
""""""""""""""""
|
|
|
|
:doc:`pair_coeff <pair_coeff>`, :doc:`fix mvv/dpd <fix_mvv_dpd>`,
|
|
:doc:`fix mvv/edpd <fix_mvv_dpd>`, :doc:`fix mvv/tdpd <fix_mvv_dpd>`,
|
|
:doc:`fix edpd/source <fix_dpd_source>`, :doc:`fix tdpd/source <fix_dpd_source>`,
|
|
:doc:`compute edpd/temp/atom <compute_edpd_temp_atom>`,
|
|
:doc:`compute tdpd/cc/atom <compute_tdpd_cc_atom>`
|
|
|
|
Default
|
|
"""""""
|
|
|
|
none
|
|
|
|
----------
|
|
|
|
.. _Li2014_JCP:
|
|
|
|
**(Li2014_JCP)** Li, Tang, Lei, Caswell, Karniadakis, J Comput Phys,
|
|
265: 113-127 (2014). DOI: 10.1016/j.jcp.2014.02.003.
|
|
|
|
.. _Li2015_CC:
|
|
|
|
**(Li2015_CC)** Li, Tang, Li, Karniadakis, Chem Commun, 51: 11038-11040
|
|
(2015). DOI: 10.1039/C5CC01684C.
|
|
|
|
.. _Li2013_POF:
|
|
|
|
**(Li2013_POF)** Li, Hu, Wang, Ma, Zhou, Phys Fluids, 25: 072103 (2013).
|
|
DOI: 10.1063/1.4812366.
|
|
|
|
.. _Li2015_JCP:
|
|
|
|
**(Li2015_JCP)** Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys,
|
|
143: 014101 (2015). DOI: 10.1063/1.4923254.
|