update of DIELECTRIC package documentation and examples

This commit is contained in:
ali
2022-08-05 11:25:03 -05:00
parent 1e1311cf40
commit b3fa2b7c4f
5 changed files with 84 additions and 34 deletions

View File

@ -91,7 +91,7 @@ quantities.
+--------------+-----------------------------------------------------+--------------------------------------+ +--------------+-----------------------------------------------------+--------------------------------------+
| *charge* | charge | atomic system with charges | | *charge* | charge | atomic system with charges |
+--------------+-----------------------------------------------------+--------------------------------------+ +--------------+-----------------------------------------------------+--------------------------------------+
| *dielectric* | dipole, area, curvature | system with surface polarization | | *dielectric* | normx normy normz area_per_patch ed em epsilon curv | system with surface polarization |
+--------------+-----------------------------------------------------+--------------------------------------+ +--------------+-----------------------------------------------------+--------------------------------------+
| *dipole* | charge and dipole moment | system with dipolar particles | | *dipole* | charge and dipole moment | system with dipolar particles |
+--------------+-----------------------------------------------------+--------------------------------------+ +--------------+-----------------------------------------------------+--------------------------------------+
@ -180,16 +180,21 @@ vector with the 3 diameters of the ellipsoid and a quaternion 4-vector
with its orientation. with its orientation.
For the *dielectric* style, each particle can be either a physical For the *dielectric* style, each particle can be either a physical
particle (e.g. an ion), or an interface particle representing a particle (e.g. an ion), or an interface particle representing a boundary
boundary element. For physical particles, the per-particle properties element between two regions of different dielectric constant. For
are the same as atom_style full. For interface particles, in addition interface particles, in addition to the properties associated with
to these properties, each particle also has an area, a normal unit atom_style full, each particle also should be assigned a normal unit vector
vector, a mean local curvature, the mean and difference of the (defined by normx, normy, normz), an area (area_per_patch), the difference and
dielectric constants of two sides of the interface, and the local mean of the dielectric constants of two sides of the interface along the
dielectric constant at the boundary element. The distinction between direction of the normal vector (ed and em), the local dielectric constant at the
the physical and interface particles is only meaningful when :doc:`fix boundary element (epsilon), and a mean local curvature (curv).
polarize <fix_polarize>` commands are applied to the interface Physical particles must be assigned these values, as well,
particles. but only their local dielectric constants will be used; see documentation for
associated :doc:`pair styles <pair_dielectric>` and :doc:`fixes <fix_polarize>`.
The distinction between the physical and interface
particles is only meaningful when :doc:`fix polarize <fix_polarize>`
commands are applied to the interface particles. This style is part of the
DIELECTRIC package.
For the *dipole* style, a point dipole is defined for each point For the *dipole* style, a point dipole is defined for each point
particle. Note that if you wish the particles to be finite-size particle. Note that if you wish the particles to be finite-size

View File

@ -16,11 +16,11 @@ Syntax
.. parsed-literal:: .. parsed-literal::
fix ID group-ID style nevery tolerance ... fix ID group-ID style nevery tolerance
* ID, group-ID are documented in :doc:`fix <fix>` command * ID, group-ID are documented in :doc:`fix <fix>` command
* style = *polarize/bem/gmres* or *polarize/bem/icc* or *polarize/functional* * style = *polarize/bem/gmres* or *polarize/bem/icc* or *polarize/functional*
* Nevery = this fixed is invoked every this many timesteps * nevery = this fixed is invoked every this many timesteps
* tolerance = the relative tolerance for the iterative solver to stop * tolerance = the relative tolerance for the iterative solver to stop
@ -56,7 +56,7 @@ These fixes also require the use of :doc:`pair_style <pair_style>` and
At every time step, given a configuration of the physical charges in the system At every time step, given a configuration of the physical charges in the system
(such as atoms and charged particles) these fixes compute and update (such as atoms and charged particles) these fixes compute and update
the charge of the interface particles. The interfaces are allowed to move the charge of the interface particles. The interfaces are allowed to move
during the simulation with appropriate time integrators (for example, during the simulation if the appropriate time integrators are also set (for example,
with :doc:`fix_rigid <fix_rigid>`). with :doc:`fix_rigid <fix_rigid>`).
Consider an interface between two media: one with dielectric constant Consider an interface between two media: one with dielectric constant
@ -65,19 +65,25 @@ into 2000 boundary elements, each represented by an interface particle. Suppose
each interface particle has a normal unit vector pointing from the silica medium to water. each interface particle has a normal unit vector pointing from the silica medium to water.
The dielectric difference along the normal vector is then 78 - 4 = 74, The dielectric difference along the normal vector is then 78 - 4 = 74,
the mean dielectric value is (78 + 4) / 2 = 41. Each boundary element the mean dielectric value is (78 + 4) / 2 = 41. Each boundary element
also has its area and the local mean curvature (which is used by these fixes also has its area and the local mean curvature, which is used by these fixes
for computing a correction term in the local electric field). for computing a correction term in the local electric field.
To model charged interfaces, the interface particle will have a non-zero charge value, To model charged interfaces, the interface particle will have a non-zero charge value,
coming from its area and surface charge density. coming from its area and surface charge density.
For non-interface particles such as atoms and charged particles, For non-interface particles such as atoms and charged particles,
the interface normal vectors, element area, and dielectric mismatch are the interface normal vectors, element area, and dielectric mismatch are
irrelevant. Their local dielectric value is used to rescale their actual charge irrelevant. Their local dielectric value is used to rescale their given charge
when computing the Coulombic interactions. For instance, for a cation carrying when computing the Coulombic interactions. For instance, to simulate a cation
a charge of +2 (in charge unit) in an implicit solvent with dielectric constant of 40 carrying a charge of +2 (in simulation charge units) in an implicit solvent with
would have actual charge of +2, and a local dielectric constant value of 40. a dielectric constant of 40, the cation's charge should be set to +2/40 = +0.05 and
It is assumed that the particles cannot pass through the interface during the simulation its local dielectric constant property (defined in the
so that its local dielectric constant value does not change. :doc:`atom_style dielectric <atom_style>`) should be set to 40. This will produce
the proper force for any :doc:`pair_style <pair_style>` with the dielectric suffix.
As noted in :doc:`pair_style <pair_dielectric>`, the charge (+0.05) will be scaled by the
local dielectric constant (40) to produce the appropriate charge (+2) during
force computation. It is assumed that the particles cannot pass through the interface
during the simulation because the value of the local dielectric constant property
does not change.
There are some example scripts for using these fixes There are some example scripts for using these fixes
with LAMMPS in the ``examples/PACKAGES/dielectric`` directory. The README file with LAMMPS in the ``examples/PACKAGES/dielectric`` directory. The README file
@ -127,18 +133,40 @@ Restart, fix_modify, output, run start/stop, minimize info
No information about this fix is written to :doc:`binary restart files <restart>`. No information about this fix is written to :doc:`binary restart files <restart>`.
The :doc:`fix_modify <fix_modify>` command provides certain options to The :doc:`fix_modify <fix_modify>` command provides the ability to modify certain
control the induced charge solver and the initial values of the interface elements: settings:
.. parsed-literal:: .. parsed-literal::
*itr_max* arg *itr_max* arg
arg = maximum number of iterations for convergence arg = maximum number of iterations for convergence
*dielectrics* ediff emean epsilon area charge *dielectrics* ediff emean epsilon area charge
ediff = dielectric difference ediff = dielectric difference or NULL
emean = dielectric mean emean = dielectric mean or NULL
epsilon = local dielectric value epsilon = local dielectric value or NULL
aree = element area area = element area or NULL
charge = real interface charge charge = real interface charge or NULL
*kspace* arg = yes or no
*rand* max seed
max = range of random induced charges to be generated
seed = random number seed to use when generating random charge
*mr* arg
arg = maximum number of q-vectors to use when solving (GMRES only)
*omega* arg
arg = relaxation parameter to use when iterating (ICC only)
The *itr_max* keyword sets the max number of iterations to be used for solving each step.
The *dielectrics* keyword allows properties of the atoms in group *group-ID* to be modified. Values passed to any of the arguments (*ediff*, *emean*, *epsilon*, *area*, *charge*) will override existing values for all atoms in the group *group-ID*. Passing NULL to any of these arguments will preserve the existing value.
The *kspace* keyword turns on long range interactions.
If the argumnts of the *rand* keyword are set, then the atoms subject to this fix will be assigned a random initial charge in a uniform distribution from -*max*/2 to *max*/2, using random number seed *seed*.
The *mr* keyword only applies to *style* = *polarize/bem/gmres*. It is the maximum number of q-vectors to use when solving for the surface charge, see :ref:`(Barros) <Barros>`.
The *omega* keyword only applies when using *style* = *polarize/bem/icc*. It is a relaxation parameter defined in :ref:`(Tyagi) <Tyagi>` that should generally be set between 0 and 2.
----------
*polarize/bem/gmres* or *polarize/bem/icc* compute a global 2-element vector *polarize/bem/gmres* or *polarize/bem/icc* compute a global 2-element vector
which can be accessed by various :doc:`output commands <Howto_output>`. which can be accessed by various :doc:`output commands <Howto_output>`.
@ -171,6 +199,15 @@ Default
*iter_max* = 20 *iter_max* = 20
*kspace* = yes
*omega* = 0.7 (ICC only)
*mr* = \# atoms in group *group-ID* minus 1 (GMRES only)
No random charge initialization happens by default.
---------- ----------
.. _Barros: .. _Barros:

View File

@ -76,12 +76,16 @@ Description
""""""""""" """""""""""
All these pair styles are derived from the corresponding pair styles All these pair styles are derived from the corresponding pair styles
without the *dielectric*\ suffix. In addition to computing atom forces without the *dielectric* suffix. In addition to computing atom forces
and energies, these pair styles compute the electrical field vector and energies, these pair styles compute the electrical field vector
at each atom, which are to be used in the :doc:`fix polarize <fix_polarize>` commands. at each atom, which are intended to be used by the :doc:`fix polarize <fix_polarize>` commands
to compute induced charges at interfaces between two regions of different
dielectric constant.
These pair styles should be used with :doc:`atom_style dielectric <atom_style>`, These pair styles should be used with :doc:`atom_style dielectric <atom_style>`,
which uses atom charges rescaled by their local dielectric constant. which uses atom charges rescaled by their local dielectric constant. See the note in
:doc:`fix polarize <fix_polarize>` about properly setting ion charge given a
local dielectric constant.
The styles lj/cut/coul/long/dielectric, lj/cut/coul/msm/dielectric, and The styles lj/cut/coul/long/dielectric, lj/cut/coul/msm/dielectric, and
lj/long/coul/long/dielectric should be used with their kspace style counterparts, lj/long/coul/long/dielectric should be used with their kspace style counterparts,

View File

@ -2,7 +2,7 @@ This folder contains some example data and input scripts for the DIELECTRIC pack
Nguyen TD, Li H, Bagchi D, Solis FJ, Olvera de la Cruz, Incorporating surface polarization effects into large-scale coarse-grained molecular dynamics simulation, Computer Physics Communications 2019, 241, 80--91. Nguyen TD, Li H, Bagchi D, Solis FJ, Olvera de la Cruz, Incorporating surface polarization effects into large-scale coarse-grained molecular dynamics simulation, Computer Physics Communications 2019, 241, 80--91.
- data.confined : two point opposite charges confined between two interfaces (epsilon1=2/epsilon2=10/epsilon2=2) - data.confined : two point opposite charges confined between two interfaces (epsilon2=2/epsilon1=10/epsilon2=2)
- data.sphere : two point opposite charges outside a spherical interface (epsilon_in=1/epsilon2=10) - data.sphere : two point opposite charges outside a spherical interface (epsilon_in=1/epsilon2=10)
- in.confined : read in data.confined - in.confined : read in data.confined
@ -40,3 +40,7 @@ where
* curvature: surface mean curvature at the patch. * curvature: surface mean curvature at the patch.
For example, for spherical interfaces, curvature = 1/spherical radius. For example, for spherical interfaces, curvature = 1/spherical radius.
For planar interfaces, curvature = 0. For planar interfaces, curvature = 0.
Note that the properties normx, normy, normz, area_per_patch, ed, em, and curvature are not
used for the non-interface beads. epsilon is used to scale the charge of any non-interface
ion, see the documentation for pair styles with the dielectric suffix and fix polarize.

View File

@ -7,7 +7,7 @@
# Dielectric constants can be set to be different from the input data file # Dielectric constants can be set to be different from the input data file
variable epsilon1 index 20 variable epsilon1 index 20
variable epsilon2 index 8 variable epsilon2 index 10 # must be the same as the local epsilon defined in data.confined
variable data index data.confined variable data index data.confined