Merge pull request #3421 from phankl/mesocnt_stable
Major update to mesocnt styles
This commit is contained in:
@ -44,6 +44,7 @@ OPT.
|
||||
* :doc:`harmonic (iko) <bond_harmonic>`
|
||||
* :doc:`harmonic/shift (o) <bond_harmonic_shift>`
|
||||
* :doc:`harmonic/shift/cut (o) <bond_harmonic_shift_cut>`
|
||||
* :doc:`mesocnt <bond_mesocnt>`
|
||||
* :doc:`mm3 <bond_mm3>`
|
||||
* :doc:`morse (o) <bond_morse>`
|
||||
* :doc:`nonlinear (o) <bond_nonlinear>`
|
||||
@ -92,6 +93,7 @@ OPT.
|
||||
* :doc:`fourier/simple (o) <angle_fourier_simple>`
|
||||
* :doc:`gaussian <angle_gaussian>`
|
||||
* :doc:`harmonic (iko) <angle_harmonic>`
|
||||
* :doc:`mesocnt <angle_mesocnt>`
|
||||
* :doc:`mm3 <angle_mm3>`
|
||||
* :doc:`quartic (o) <angle_quartic>`
|
||||
* :doc:`spica (o) <angle_spica>`
|
||||
|
||||
@ -201,6 +201,7 @@ OPT.
|
||||
* :doc:`meam/spline (o) <pair_meam_spline>`
|
||||
* :doc:`meam/sw/spline <pair_meam_sw_spline>`
|
||||
* :doc:`mesocnt <pair_mesocnt>`
|
||||
* :doc:`mesocnt/viscous <pair_mesocnt>`
|
||||
* :doc:`mesont/tpm <pair_mesont_tpm>`
|
||||
* :doc:`mgpt <pair_mgpt>`
|
||||
* :doc:`mie/cut (g) <pair_mie>`
|
||||
|
||||
@ -1556,31 +1556,40 @@ MESONT package
|
||||
|
||||
**Contents:**
|
||||
|
||||
MESONT is a LAMMPS package for simulation of nanomechanics of
|
||||
nanotubes (NTs). The model is based on a coarse-grained representation
|
||||
of NTs as "flexible cylinders" consisting of a variable number of
|
||||
MESONT is a LAMMPS package for simulation of nanomechanics of nanotubes
|
||||
(NTs). The model is based on a coarse-grained representation of NTs as
|
||||
"flexible cylinders" consisting of a variable number of
|
||||
segments. Internal interactions within a NT and the van der Waals
|
||||
interaction between the tubes are described by a mesoscopic force field
|
||||
designed and parameterized based on the results of atomic-level
|
||||
molecular dynamics simulations. The description of the force field is
|
||||
provided in the papers listed below. This package contains two
|
||||
independent implementations of this model: :doc:`pair_style mesocnt
|
||||
<pair_mesocnt>` is a (minimal) C++ implementation, and :doc:`pair_style
|
||||
mesont/tpm <pair_mesont_tpm>` is a more general and feature rich
|
||||
implementation based on a Fortran library in the ``lib/mesont`` folder.
|
||||
provided in the papers listed below.
|
||||
|
||||
This package contains two independent implementations of this model:
|
||||
:doc:`pair_style mesont/tpm <pair_mesont_tpm>` is the original
|
||||
implementation of the model based on a Fortran library in the
|
||||
``lib/mesont`` folder. The second implementation is provided by the
|
||||
mesocnt styles (:doc:`bond_style mesocnt <bond_mesocnt>`,
|
||||
:doc:`angle_style mesocnt <angle_mesocnt>` and :doc:`pair_style mesocnt
|
||||
<pair_mesocnt>`). The mesocnt implementation has the same features as
|
||||
the original implementation with the addition of friction, but is
|
||||
directly implemented in C++, interfaces more cleanly with general LAMMPS
|
||||
functionality, and is typically faster. It also does not require its own
|
||||
atom style and can be installed without any external libraries.
|
||||
|
||||
**Download of potential files:**
|
||||
|
||||
The potential files for these pair styles are *very* large and thus
|
||||
are not included in the regular downloaded packages of LAMMPS or the
|
||||
git repositories. Instead, they will be automatically downloaded
|
||||
from a web server when the package is installed for the first time.
|
||||
The potential files for these pair styles are *very* large and thus are
|
||||
not included in the regular downloaded packages of LAMMPS or the git
|
||||
repositories. Instead, they will be automatically downloaded from a web
|
||||
server when the package is installed for the first time.
|
||||
|
||||
**Authors of the *mesont* styles:**
|
||||
|
||||
Maxim V. Shugaev (University of Virginia), Alexey N. Volkov (University of Alabama), Leonid V. Zhigilei (University of Virginia)
|
||||
Maxim V. Shugaev (University of Virginia), Alexey N. Volkov (University
|
||||
of Alabama), Leonid V. Zhigilei (University of Virginia)
|
||||
|
||||
**Author of the *mesocnt* pair style:**
|
||||
**Author of the *mesocnt* styles:**
|
||||
Philipp Kloza (U Cambridge)
|
||||
|
||||
**Supporting info:**
|
||||
@ -1590,6 +1599,8 @@ Philipp Kloza (U Cambridge)
|
||||
* :doc:`atom_style mesont <atom_style>`
|
||||
* :doc:`pair_style mesont/tpm <pair_mesont_tpm>`
|
||||
* :doc:`compute mesont <compute_mesont>`
|
||||
* :doc:`bond_style mesocnt <bond_mesocnt>`
|
||||
* :doc:`angle_style mesocnt <angle_mesocnt>`
|
||||
* :doc:`pair_style mesocnt <pair_mesocnt>`
|
||||
* examples/PACKAGES/mesont
|
||||
* tools/mesont
|
||||
|
||||
146
doc/src/angle_mesocnt.rst
Normal file
146
doc/src/angle_mesocnt.rst
Normal file
@ -0,0 +1,146 @@
|
||||
.. index:: angle_style mesocnt
|
||||
|
||||
angle_style mesocnt command
|
||||
===========================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
angle_style mesocnt
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
angle_style mesocnt
|
||||
angle_coeff 1 buckling C 10 10 20.0
|
||||
angle_coeff 4 harmonic C 8 4 10.0
|
||||
angle_coeff 2 buckling custom 400.0 50.0 5.0
|
||||
angle_coeff 1 harmonic custom 300.0
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
The *mesocnt* angle style uses the potential
|
||||
|
||||
.. math::
|
||||
|
||||
E = K_\text{H} \Delta \theta^2, \qquad |\Delta \theta| < \Delta
|
||||
\theta_\text{B} \\
|
||||
E = K_\text{H} \Delta \theta_\text{B}^2 +
|
||||
K_\text{B} (\Delta \theta - \Delta \theta_\text{B}), \qquad |\Delta
|
||||
\theta| \geq \Delta \theta_\text{B}
|
||||
|
||||
where :math:`\Delta \theta = \theta - \pi` is the bending angle of the
|
||||
nanotube, :math:`K_\text{H}` and :math:`K_\text{B}` are prefactors for
|
||||
the harmonic and linear regime respectively and :math:`\Delta
|
||||
\theta_\text{B}` is the buckling angle. Note that the usual 1/2 factor
|
||||
for the harmonic potential is included in :math:`K_\text{H}`.
|
||||
|
||||
The style implements parameterization presets of :math:`K_\text{H}`,
|
||||
:math:`K_\text{B}` and :math:`\Delta \theta_\text{B}` for mesoscopic
|
||||
simulations of carbon nanotubes based on the atomistic simulations of
|
||||
:ref:`(Srivastava) <Srivastava_2>` and buckling considerations of
|
||||
:ref:`(Zhigilei) <Zhigilei1_1>`.
|
||||
|
||||
The following coefficients must be defined for each angle type via the
|
||||
:doc:`angle_coeff <angle_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:
|
||||
|
||||
* mode = *buckling* or *harmonic*
|
||||
* preset = *C* or *custom*
|
||||
* additional parameters depending on preset
|
||||
|
||||
If mode *harmonic* is chosen, the potential is simply harmonic and
|
||||
does not switch to the linear term when the buckling angle is
|
||||
reached. In *buckling* mode, the full piecewise potential is used.
|
||||
|
||||
Preset *C* is for carbon nanotubes, and the additional parameters are:
|
||||
|
||||
* chiral index :math:`n` (unitless)
|
||||
* chiral index :math:`m` (unitless)
|
||||
* :math:`r_0` (distance)
|
||||
|
||||
Here, :math:`r_0` is the equilibrium distance of the bonds included in
|
||||
the angle, see :doc:`bond_style mesocnt <bond_mesocnt>`.
|
||||
|
||||
In harmonic mode with preset *custom*, the additional parameter is:
|
||||
|
||||
* :math:`K_\text{H}` (energy)
|
||||
|
||||
Hence, this setting is simply a wrapper for :doc:`bond_style harmonic
|
||||
<bond_harmonic>` with an equilibrium angle of 180 degrees.
|
||||
|
||||
In harmonic mode with preset *custom*, the additional parameters are:
|
||||
|
||||
* :math:`K_\text{H}` (energy)
|
||||
* :math:`K_\text{B}` (energy)
|
||||
* :math:`\Delta \theta_\text{B}` (degrees)
|
||||
|
||||
:math:`\Delta \theta_\text{B}` is specified in degrees, but LAMMPS
|
||||
converts it to radians internally; hence :math:`K_\text{H}` is
|
||||
effectively energy per radian\^2 and :math:`K_\text{B}` is energy per
|
||||
radian.
|
||||
|
||||
----------
|
||||
|
||||
In *buckling* mode, this angle style adds the *buckled* property to
|
||||
all atoms in the simulation, which is an integer flag indicating
|
||||
whether the bending angle at a given atom has exceeded :math:`\Delta
|
||||
\theta_\text{B}`. It can be accessed as an atomic variable, e.g. for
|
||||
custom dump commands, as *i_buckled*.
|
||||
|
||||
.. note::
|
||||
|
||||
If the initial state of the simulation contains buckled nanotubes
|
||||
and :doc:`pair_style mesocnt <pair_mesocnt>` is used, the
|
||||
*i_buckled* atomic variable needs to be initialized before the
|
||||
pair_style is defined by doing a *run 0* command straight after the
|
||||
angle_style command. See below for an example.
|
||||
|
||||
If CNTs are already buckled at the start of the simulation, this
|
||||
script will correctly initialize *i_buckled*:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
angle_style mesocnt
|
||||
angle_coeff 1 buckling C 10 10 20.0
|
||||
|
||||
run 0
|
||||
|
||||
pair_style mesocnt 60.0
|
||||
pair_coeff * * C_10_10.mesocnt 1
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This angle style can only be used if LAMMPS was built with the
|
||||
MOLECULE and MESONT packages. See the :doc:`Build package
|
||||
<Build_package>` doc page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`angle_coeff <angle_coeff>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
none
|
||||
|
||||
----------
|
||||
|
||||
.. _Srivastava_2:
|
||||
|
||||
**(Srivastava)** Zhigilei, Wei, Srivastava, Phys. Rev. B 71, 165417
|
||||
(2005).
|
||||
|
||||
.. _Zhigilei1_1:
|
||||
|
||||
**(Zhigilei)** Volkov and Zhigilei, ACS Nano 4, 6187 (2010).
|
||||
@ -90,6 +90,7 @@ of (g,i,k,o,t) to indicate which accelerated styles exist.
|
||||
* :doc:`fourier/simple <angle_fourier_simple>` - angle with a single cosine term
|
||||
* :doc:`gaussian <angle_gaussian>` - multi-centered Gaussian-based angle potential
|
||||
* :doc:`harmonic <angle_harmonic>` - harmonic angle
|
||||
* :doc:`mesocnt <angle_mesocnt>` - piecewise harmonic and linear angle for bending-buckling of nanotubes
|
||||
* :doc:`mm3 <angle_mm3>` - anharmonic angle
|
||||
* :doc:`quartic <angle_quartic>` - angle with cubic and quartic terms
|
||||
* :doc:`spica <angle_spica>` - harmonic angle with repulsive SPICA pair style between 1-3 atoms
|
||||
|
||||
84
doc/src/bond_mesocnt.rst
Normal file
84
doc/src/bond_mesocnt.rst
Normal file
@ -0,0 +1,84 @@
|
||||
.. index:: bond_style mesocnt
|
||||
|
||||
bond_style mesocnt command
|
||||
===========================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
bond_style mesocnt
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
bond_style mesocnt
|
||||
bond_coeff 1 C 10 10 20.0
|
||||
bond_coeff 4 custom 800.0 10.0
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
The *mesocnt* bond style is a wrapper for the :doc:`harmonic
|
||||
<bond_harmonic>` style, and uses the potential
|
||||
|
||||
.. math::
|
||||
|
||||
E = K (r - r_0)^2
|
||||
|
||||
where :math:`r_0` is the equilibrium bond distance. Note that the
|
||||
usual 1/2 factor is included in :math:`K`. The style implements
|
||||
parameterization presets of :math:`K` for mesoscopic simulations of
|
||||
carbon nanotubes based on the atomistic simulations of
|
||||
:ref:`(Srivastava) <Srivastava_1>`.
|
||||
|
||||
Other presets can be readily implemented in the future.
|
||||
|
||||
The following coefficients must be defined for each bond type via the
|
||||
:doc:`bond_coeff <bond_coeff>` command as in the example above, or in
|
||||
the data file or restart files read by the :doc:`read_data
|
||||
<read_data>` or :doc:`read_restart <read_restart>` commands:
|
||||
|
||||
* preset = *C* or *custom*
|
||||
* additional parameters depending on preset
|
||||
|
||||
Preset *C* is for carbon nanotubes, and the additional parameters are:
|
||||
|
||||
* chiral index :math:`n` (unitless)
|
||||
* chiral index :math:`m` (unitless)
|
||||
* :math:`r_0` (distance)
|
||||
|
||||
Preset *custom* is simply a direct wrapper for the :doc:`harmonic
|
||||
<bond_harmonic>` style, and the additional parameters are:
|
||||
|
||||
* :math:`K` (energy/distance\^2)
|
||||
* :math:`r_0` (distance)
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This bond style can only be used if LAMMPS was built with the MOLECULE
|
||||
and MESONT packages. See the :doc:`Build package <Build_package>`
|
||||
page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`bond_coeff <bond_coeff>`, :doc:`delete_bonds <delete_bonds>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
none
|
||||
|
||||
----------
|
||||
|
||||
.. _Srivastava_1:
|
||||
|
||||
**(Srivastava)** Zhigilei, Wei and Srivastava, Phys. Rev. B 71, 165417
|
||||
(2005).
|
||||
@ -95,6 +95,7 @@ accelerated styles exist.
|
||||
* :doc:`harmonic <bond_harmonic>` - harmonic bond
|
||||
* :doc:`harmonic/shift <bond_harmonic_shift>` - shifted harmonic bond
|
||||
* :doc:`harmonic/shift/cut <bond_harmonic_shift_cut>` - shifted harmonic bond with a cutoff
|
||||
* :doc:`mesocnt <bond_mesocnt>` - Harmonic bond wrapper with parameterization presets for nanotubes
|
||||
* :doc:`mm3 <bond_mm3>` - MM3 anharmonic bond
|
||||
* :doc:`morse <bond_morse>` - Morse bond
|
||||
* :doc:`nonlinear <bond_nonlinear>` - nonlinear bond
|
||||
|
||||
@ -1,68 +1,153 @@
|
||||
.. index:: pair_style mesocnt
|
||||
.. index:: pair_style mesocnt/viscous
|
||||
|
||||
pair_style mesocnt command
|
||||
==========================
|
||||
|
||||
pair_style mesocnt/viscous command
|
||||
==================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style mesocnt
|
||||
pair_style style neigh_cutoff mode neigh_mode
|
||||
|
||||
* style = *mesocnt* or *mesocnt/viscous*
|
||||
* neigh_cutoff = neighbor list cutoff (distance units)
|
||||
* mode = *chain* or *segment* (optional)
|
||||
* neigh_mode = *id* or *topology* (optional)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style mesocnt
|
||||
pair_coeff * * 10_10.cnt
|
||||
pair_style mesocnt 30.0
|
||||
pair_coeff * * C_10_10.mesocnt 2
|
||||
|
||||
pair_style mesocnt/viscous 60.0 chain topology
|
||||
pair_coeff * * C_10_10.mesocnt 0.001 20.0 0.2 2 4
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Style *mesocnt* implements a mesoscopic potential
|
||||
for the interaction of carbon nanotubes (CNTs). In this potential,
|
||||
CNTs are modelled as chains of cylindrical segments in which
|
||||
each infinitesimal surface element interacts with all other
|
||||
CNT surface elements with the Lennard-Jones (LJ) term adopted from
|
||||
the :doc:`airebo <pair_airebo>` style. The interaction energy
|
||||
is then computed by integrating over the surfaces of all interacting
|
||||
CNTs.
|
||||
Style *mesocnt* implements a mesoscopic potential for the interaction
|
||||
of carbon nanotubes (CNTs), or other quasi-1D objects such as other
|
||||
kinds of nanotubes or nanowires. In this potential, CNTs are modelled
|
||||
as chains of cylindrical segments in which each infinitesimal surface
|
||||
element interacts with all other CNT surface elements with the
|
||||
Lennard-Jones (LJ) term adopted from the :doc:`airebo <pair_airebo>`
|
||||
style. The interaction energy is then computed by integrating over the
|
||||
surfaces of all interacting CNTs.
|
||||
|
||||
The potential is based on interactions between one cylindrical
|
||||
segment and infinitely or semi-infinitely long CNTs as described
|
||||
in :ref:`(Volkov1) <Volkov1>`. Chains of segments are
|
||||
converted to these (semi-)infinite CNTs bases on an approximate
|
||||
chain approach outlined in :ref:`(Volkov2) <Volkov2>`.
|
||||
This allows to simplify the computation of the interactions
|
||||
significantly and reduces the computational times to the
|
||||
same order of magnitude as for regular bead spring models
|
||||
where beads interact with the standard :doc:`pair_lj/cut <pair_lj>`
|
||||
potential.
|
||||
In LAMMPS, cylindrical segments are represented by bonds. Each segment
|
||||
is defined by its two end points ("nodes") which correspond to atoms
|
||||
in LAMMPS. For the exact functional form of the potential and
|
||||
implementation details, the reader is referred to the original papers
|
||||
:ref:`(Volkov1) <Volkov1>` and :ref:`(Volkov2) <Volkov2>`.
|
||||
|
||||
In LAMMPS, cylindrical segments are represented by bonds. Each
|
||||
segment is defined by its two end points ("nodes") which correspond
|
||||
to atoms in LAMMPS. For the exact functional form of the potential
|
||||
and implementation details, the reader is referred to the
|
||||
original papers :ref:`(Volkov1) <Volkov1>` and
|
||||
:ref:`(Volkov2) <Volkov2>`.
|
||||
.. versionchanged:: TBD
|
||||
|
||||
The potential requires tabulated data provided in a single ASCII
|
||||
text file specified in the :doc:`pair_coeff <pair_coeff>` command.
|
||||
The first line of the file provides a time stamp and
|
||||
general information. The second line lists four integers giving
|
||||
the number of data points provided in the subsequent four
|
||||
data tables. The third line lists four floating point numbers:
|
||||
the CNT radius R, the LJ parameter sigma and two numerical
|
||||
parameters delta1 and delta2. These four parameters are given
|
||||
in Angstroms. This is followed by four data tables each separated
|
||||
by a single empty line. The first two tables have two columns
|
||||
and list the parameters uInfParallel and Gamma respectively.
|
||||
The last two tables have three columns giving data on a quadratic
|
||||
array and list the parameters Phi and uSemiParallel respectively.
|
||||
uInfParallel and uSemiParallel are given in eV/Angstrom, Phi is
|
||||
given in eV and Gamma is unitless.
|
||||
The potential supports two modes, *segment* and *chain*. By default,
|
||||
*chain* mode is enabled. In *segment* mode, interactions are
|
||||
pair-wise between all neighboring segments based on a segment-segment
|
||||
approach (keyword *segment* in pair_style command). In *chain* mode,
|
||||
interactions are calculated between each segment and infinitely or
|
||||
semi-infinitely long CNTs as described in :ref:`(Volkov1) <Volkov1>`.
|
||||
Chains of segments are converted to these (semi-)infinite CNTs bases
|
||||
on an approximate chain approach outlined in :ref:`(Volkov2)
|
||||
<Volkov2>`. Hence, interactions are calculated on a segment-chain
|
||||
basis (keyword *chain* in the pair_style command). Using *chain* mode
|
||||
allows to simplify the computation of the interactions significantly
|
||||
and reduces the computational times to the same order of magnitude as
|
||||
for regular bead spring models where beads interact with the standard
|
||||
:doc:`pair_lj/cut <pair_lj>` potential. However, this method is only
|
||||
valid when the curvature of the CNTs in the system is small. When
|
||||
CNTs are buckled (see :doc:`angle_mesocnt <angle_mesocnt>`), local
|
||||
curvature can be very high and the pair_style automatically switches
|
||||
to *segment* mode for interactions involving buckled CNTs.
|
||||
|
||||
The potential further implements two different neighbor list
|
||||
construction modes. Mode *id* uses atom and mol IDs to construct
|
||||
neighbor lists while *topology* modes uses only the bond topology of
|
||||
the system. While *id* mode requires bonded atoms to have consecutive
|
||||
LAMMPS atom IDs and atoms in different CNTs to have different LAMMPS
|
||||
molecule IDs, *topology* mode has no such requirement. Using *id* mode
|
||||
is faster and is enabled by default.
|
||||
|
||||
.. note::
|
||||
|
||||
Neighbor *id* mode requires all CNTs in the system to have distinct
|
||||
LAMMPS molecule IDs and bonded atoms to have consecutive LAMMPS atom
|
||||
IDs. If this is not possible (e.g. in simulations of CNT rings),
|
||||
*topology* mode needs to be enabled in the pair_style command.
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
In addition to the LJ interactions described above, style
|
||||
*mesocnt/viscous* explicitly models friction between neighboring
|
||||
segments. Friction forces are a function of the relative velocity
|
||||
between a segment and its neighboring approximate chain (even in
|
||||
*segment* mode) and only act along the axes of the interacting segment
|
||||
and chain. In this potential, friction forces acting per unit length
|
||||
of a nanotube segent are modelled as a shifted logistic function:
|
||||
|
||||
.. math::
|
||||
|
||||
F^{\text{FRICTION}}(v) / L = \frac{F^{\text{max}}}{1 +
|
||||
\exp(-k(v-v_0))} - \frac{F^{\text{max}}}{1 + \exp(k v_0)}
|
||||
|
||||
----------
|
||||
|
||||
In the pair_style command, the modes described above can be toggled
|
||||
using the *segment* or *chain* keywords. The neighbor list cutoff
|
||||
defines the cutoff within which atoms are included in the neighbor
|
||||
list for constructing neighboring CNT chains. This is different from
|
||||
the potential cutoff, which is directly calculated from parameters
|
||||
specified in the potential file. We recommend using a neighbor list
|
||||
cutoff of at least 3 times the maximum segment length used in the
|
||||
simulation to ensure proper neighbor chain construction.
|
||||
|
||||
.. note::
|
||||
|
||||
CNT ends are treated differently by all *mesocnt* styles. Atoms on
|
||||
CNT ends need to be assigned different LAMMPS atom types than atoms
|
||||
not on CNT ends.
|
||||
|
||||
Style *mesocnt* requires tabulated data provided in a single ASCII
|
||||
text file, as well as a list of integers corresponding to all LAMMPS
|
||||
atom types representing CNT ends:
|
||||
|
||||
* filename
|
||||
* :math:`N` CNT end atom types
|
||||
|
||||
For example, if your LAMMPS simulation of (10, 10) nanotubes has 4
|
||||
atom types where atom types 1 and 3 are assigned to 'inner' nodes and
|
||||
atom types 2 and 4 are assigned to CNT end nodes, the pair_coeff
|
||||
command would be:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_coeff * * C_10_10.mesocnt 2 4
|
||||
|
||||
Likewise, style *mesocnt/viscous* also requires the same information
|
||||
as style *mesocnt*, with the addition of 3 parameters for the viscous
|
||||
friction forces as listed above:
|
||||
|
||||
* filename
|
||||
* :math:`F^{\text{max}}`
|
||||
* :math:`k`
|
||||
* :math:`v_0`
|
||||
* :math:`N` CNT end atom types
|
||||
|
||||
Using the same example system as with style *mesocnt* with the
|
||||
addition of friction, the pair_coeff command is:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_coeff * * C_10_10.mesocnt 0.03 20.0 0.20 2 4
|
||||
|
||||
Potential files for CNTs can be readily generated using the freely
|
||||
available code provided on
|
||||
@ -71,45 +156,51 @@ available code provided on
|
||||
|
||||
https://github.com/phankl/cntpot
|
||||
|
||||
Using the same approach, it should also be possible to
|
||||
generate potential files for other 1D systems such as
|
||||
boron nitride nanotubes.
|
||||
Using the same approach, it should also be possible to generate
|
||||
potential files for other 1D systems mentioned above.
|
||||
|
||||
.. note::
|
||||
|
||||
Because of their size, *mesocnt* style potential files
|
||||
are not bundled with LAMMPS. When compiling LAMMPS from
|
||||
source code, the file ``C_10_10.mesocnt`` should be downloaded
|
||||
transparently from `https://download.lammps.org/potentials/C_10_10.mesocnt <https://download.lammps.org/potentials/C_10_10.mesocnt>`_
|
||||
This file has as number of data points per table 1001.
|
||||
This is sufficient for NVT simulations. For proper energy
|
||||
conservation, we recommend using a potential file where
|
||||
the resolution for Phi is at least 2001 data points.
|
||||
Because of their size, *mesocnt* style potential files are not
|
||||
bundled with LAMMPS. When compiling LAMMPS from source code, the
|
||||
file ``C_10_10.mesocnt`` should be downloaded separately from
|
||||
`https://download.lammps.org/potentials/C_10_10.mesocnt
|
||||
<https://download.lammps.org/potentials/C_10_10.mesocnt>`_
|
||||
|
||||
.. note::
|
||||
The first line of the potential file provides a time stamp and
|
||||
general information. The second line lists four integers giving the
|
||||
number of data points provided in the subsequent four data
|
||||
tables. The third line lists four floating point numbers: the CNT
|
||||
radius R, the LJ parameter sigma and two numerical parameters
|
||||
delta1 and delta2. These four parameters are given in
|
||||
Angstroms. This is followed by four data tables each separated by a
|
||||
single empty line. The first two tables have two columns and list
|
||||
the parameters uInfParallel and Gamma respectively. The last two
|
||||
tables have three columns giving data on a quadratic array and list
|
||||
the parameters Phi and uSemiParallel respectively. uInfParallel
|
||||
and uSemiParallel are given in eV/Angstrom, Phi is given in eV and
|
||||
Gamma is unitless.
|
||||
|
||||
The *mesocnt* style requires CNTs to be represented
|
||||
as a chain of atoms connected by bonds. Atoms need
|
||||
to be numbered consecutively within one chain.
|
||||
Atoms belonging to different CNTs need to be assigned
|
||||
different molecule IDs.
|
||||
If a simulation produces many warnings about segment-chain
|
||||
interactions falling outside the interpolation range, we recommend
|
||||
generating a potential file with lower values of delta1 and delta2.
|
||||
|
||||
----------
|
||||
|
||||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
This pair style does not support mixing.
|
||||
These pair styles does not support mixing.
|
||||
|
||||
This pair style does not support the :doc:`pair_modify <pair_modify>`
|
||||
shift, table, and tail options.
|
||||
These pair styles does not support the :doc:`pair_modify
|
||||
<pair_modify>` shift, table, and tail options.
|
||||
|
||||
The *mesocnt* pair style do not write their information to :doc:`binary restart files <restart>`,
|
||||
since it is stored in tabulated potential files.
|
||||
Thus, you need to re-specify the pair_style and pair_coeff commands in
|
||||
an input script that reads a restart file.
|
||||
These pair styles do not write their information to :doc:`binary
|
||||
restart files <restart>`, since it is stored in tabulated potential
|
||||
files. Thus, you need to re-specify the pair_style and pair_coeff
|
||||
commands in an input script that reads a restart file.
|
||||
|
||||
This pair style can only be used via the *pair* keyword of the
|
||||
These pair styles can only be used via the *pair* keyword of the
|
||||
:doc:`run_style respa <run_style>` command. They do not support the
|
||||
*inner*, *middle*, *outer* keywords.
|
||||
|
||||
@ -118,12 +209,21 @@ This pair style can only be used via the *pair* keyword of the
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This style is part of the MESONT package. It is only
|
||||
enabled if LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info.
|
||||
These styles are part of the MESONT package. They are only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
This pair potential requires the :doc:`newton <newton>` setting to be
|
||||
These pair styles require the :doc:`newton <newton>` setting to be
|
||||
"on" for pair interactions.
|
||||
|
||||
These pair styles require all 3 :doc:`special_bonds lj
|
||||
<special_bonds>` settings to be non-zero for proper neighbor list
|
||||
construction.
|
||||
|
||||
Pair style *mesocnt/viscous* requires you to use the :doc:`comm_modify
|
||||
vel yes <comm_modify>` command so that velocities are stored by ghost
|
||||
atoms.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
@ -132,7 +232,7 @@ Related commands
|
||||
Default
|
||||
"""""""
|
||||
|
||||
none
|
||||
mode = chain, neigh_mode = id
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -278,7 +278,8 @@ accelerated styles exist.
|
||||
* :doc:`meam <pair_meam>` - modified embedded atom method (MEAM) in C
|
||||
* :doc:`meam/spline <pair_meam_spline>` - splined version of MEAM
|
||||
* :doc:`meam/sw/spline <pair_meam_sw_spline>` - splined version of MEAM with a Stillinger-Weber term
|
||||
* :doc:`mesocnt <pair_mesocnt>` - mesoscale model for (carbon) nanotubes
|
||||
* :doc:`mesocnt <pair_mesocnt>` - mesoscopic vdW potential for (carbon) nanotubes
|
||||
* :doc:`mesocnt/viscous <pair_mesocnt>` - mesoscopic vdW potential for (carbon) nanotubes with friction
|
||||
* :doc:`mgpt <pair_mgpt>` - simplified model generalized pseudopotential theory (MGPT) potential
|
||||
* :doc:`mesont/tpm <pair_mesont_tpm>` - nanotubes mesoscopic force field
|
||||
* :doc:`mie/cut <pair_mie>` - Mie potential
|
||||
|
||||
Reference in New Issue
Block a user