Interlayer Potential for TMDs and Metal Surfaces

This commit is contained in:
Wengen Ouyang
2022-02-12 06:05:11 +02:00
parent 81587527fe
commit 922b240678
23 changed files with 42196 additions and 14 deletions

157
doc/src/pair_ilp_tmd.rst Normal file
View File

@ -0,0 +1,157 @@
.. index:: pair_style ilp/tmd
pair_style ilp/tmd command
===================================
Syntax
""""""
.. code-block:: LAMMPS
pair_style [hybrid/overlay ...] ilp/tmd cutoff tap_flag
* cutoff = global cutoff (distance units)
* tap_flag = 0/1 to turn off/on the taper function
Examples
""""""""
.. code-block:: LAMMPS
pair_style hybrid/overlay ilp/tmd 16.0 1
pair_coeff * * ilp/tmd TMD.ILP Mo S S
pair_style hybrid/overlay sw/mod sw/mod ilp/tmd 16.0
pair_coeff * * sw/mod 1 tmd.sw.mod Mo S S NULL NULL NULL
pair_coeff * * sw/mod 2 tmd.sw.mod NULL NULL NULL Mo S S
pair_coeff * * ilp/tmd TMD.ILP Mo S S Mo S S
Description
"""""""""""
The *ilp/tmd* style computes the registry-dependent interlayer
potential (ILP) potential for itransition metal dichalcogenide (TMD)
as described in :ref:`(Ouyang3) <Ouyang3>`.
.. math::
E = & \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\
V_{ij} = & {\rm Tap}(r_{ij})\left \{ e^{-\alpha (r_{ij}/\beta -1)}
\left [ \epsilon + f(\rho_{ij}) + f(\rho_{ji})\right ] -
\frac{1}{1+e^{-d\left [ \left ( r_{ij}/\left (s_R \cdot r^{eff} \right ) \right )-1 \right ]}}
\cdot \frac{C_6}{r^6_{ij}} \right \}\\
\rho_{ij}^2 = & r_{ij}^2 - ({\bf r}_{ij} \cdot {\bf n}_i)^2 \\
\rho_{ji}^2 = & r_{ij}^2 - ({\bf r}_{ij} \cdot {\bf n}_j)^2 \\
f(\rho) = & C e^{ -( \rho / \delta )^2 } \\
{\rm Tap}(r_{ij}) = & 20\left ( \frac{r_{ij}}{R_{cut}} \right )^7 -
70\left ( \frac{r_{ij}}{R_{cut}} \right )^6 +
84\left ( \frac{r_{ij}}{R_{cut}} \right )^5 -
35\left ( \frac{r_{ij}}{R_{cut}} \right )^4 + 1
Where :math:`\mathrm{Tap}(r_{ij})` is the taper function which provides
a continuous cutoff (up to third derivative) for interatomic separations
larger than :math:`r_c` :doc:`pair_style ilp_graphene_hbn <pair_ilp_graphene_hbn>`.
It is important to include all the pairs to build the neighbor list for
calculating the normals.
.. note::
Since each MX2 (M = Mo, W and X = S, Se Te) layer contains two
sublayers of X atoms and one sublayer of M atoms, the definition of the
normal vectors used for graphene and h-BN is no longer valid for TMDs.
In :ref:`(Ouyang3) <Ouyang3>`, a new definition is proposed, where for
each atom `i`, its six nearest neighboring atoms belonging to the same
sublayer are chosen to define the normal vector `{\bf n}_i`.
The parameter file (e.g. TMD.ILP), is intended for use with *metal*
:doc:`units <units>`, with energies in meV. Two additional parameters,
*S*, and *rcut* are included in the parameter file. *S* is designed to
facilitate scaling of energies. *rcut* is designed to build the neighbor
list for calculating the normals for each atom pair.
.. note::
The parameters presented in the parameter file (e.g. BNCH.ILP),
are fitted with taper function by setting the cutoff equal to 16.0
Angstrom. Using different cutoff or taper function should be careful.
These parameters provide a good description in both short- and long-range
interaction regimes. This feature is essential for simulations in high pressure
regime (i.e., the interlayer distance is smaller than the equilibrium
distance). The benchmark tests and comparison of these parameters can
be found in :ref:`(Ouyang3) <Ouyang3>`.
This potential must be used in combination with hybrid/overlay.
Other interactions can be set to zero using pair_style *none*\ .
This pair style tallies a breakdown of the total interlayer potential
energy into sub-categories, which can be accessed via the :doc:`compute pair <compute_pair>` command as a vector of values of length 2.
The 2 values correspond to the following sub-categories:
1. *E_vdW* = vdW (attractive) energy
2. *E_Rep* = Repulsive energy
To print these quantities to the log file (with descriptive column
headings) the following commands could be included in an input script:
.. code-block:: LAMMPS
compute 0 all pair ilp/tmd
variable Evdw equal c_0[1]
variable Erep equal c_0[2]
thermo_style custom step temp epair v_Erep v_Evdw
----------
Mixing, shift, table, tail correction, restart, rRESPA info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
This pair style does not support the pair_modify mix, shift, table, and
tail options.
This pair style does not write their information to binary restart
files, since it is stored in potential files. Thus, you need to
re-specify the pair_style and pair_coeff commands in an input script
that reads a restart file.
Restrictions
""""""""""""
This pair style is part of the INTERLAYER package. It is only enabled
if LAMMPS was built with that package. See the :doc:`Build package
<Build_package>` page for more info.
This pair style requires the newton setting to be *on* for pair
interactions.
The TMD.ILP potential file provided with LAMMPS (see the potentials
directory) are parameterized for *metal* units. You can use this
potential with any LAMMPS units, but you would need to create your
BNCH.ILP potential file with coefficients listed in the appropriate
units, if your simulation does not use *metal* units.
Related commands
""""""""""""""""
:doc:`pair_coeff <pair_coeff>`,
:doc:`pair_none <pair_none>`,
:doc:`pair_style hybrid/overlay <pair_hybrid>`,
:doc:`pair_style drip <pair_drip>`,
:doc:`pair_style saip_metal <pair_saip_metal>`,
:doc:`pair_style ilp_graphene_hbn <pair_ilp_graphene_hbn>`,
:doc:`pair_style pair_kolmogorov_crespi_z <pair_kolmogorov_crespi_z>`,
:doc:`pair_style pair_kolmogorov_crespi_full <pair_kolmogorov_crespi_full>`,
:doc:`pair_style pair_lebedeva_z <pair_lebedeva_z>`,
:doc:`pair_style pair_coul_shield <pair_coul_shield>`.
Default
"""""""
tap_flag = 1
----------
.. _Ouyang3:
**(Ouyang3)** W. Ouyang, et al., J. Chem. Theory Comput. 17, 7237 (2021).

156
doc/src/pair_saip_metal.rst Normal file
View File

@ -0,0 +1,156 @@
.. index:: pair_style saip/metal
pair_style saip/metal command
===================================
Syntax
""""""
.. code-block:: LAMMPS
pair_style [hybrid/overlay ...] saip/metal cutoff tap_flag
* cutoff = global cutoff (distance units)
* tap_flag = 0/1 to turn off/on the taper function
Examples
""""""""
.. code-block:: LAMMPS
pair_style hybrid/overlay saip/metal 16.0 1
pair_coeff * * saip/metal CHAu.ILP Au C H
pair_style hybrid/overlay eam rebo saip/metal 16.0
pair_coeff 1 1 eam Au_u3.eam Au NULL NULL
pair_coeff * * rebo CH.rebo NULL C H
pair_coeff * * saip/metal CHAu.ILP Au C H
Description
"""""""""""
The *saip/metal* style computes the registry-dependent interlayer
potential (ILP) potential for heterojunctions formed with hexagonal
2D materials and metal surfaces, as described in :ref:`(Ouyang4) <Ouyang4>`.
.. math::
E = & \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\
V_{ij} = & {\rm Tap}(r_{ij})\left \{ e^{-\alpha (r_{ij}/\beta -1)}
\left [ \epsilon + f(\rho_{ij}) + f(\rho_{ji})\right ] -
\frac{1}{1+e^{-d\left [ \left ( r_{ij}/\left (s_R \cdot r^{eff} \right ) \right )-1 \right ]}}
\cdot \frac{C_6}{r^6_{ij}} \right \}\\
\rho_{ij}^2 = & r_{ij}^2 - ({\bf r}_{ij} \cdot {\bf n}_i)^2 \\
\rho_{ji}^2 = & r_{ij}^2 - ({\bf r}_{ij} \cdot {\bf n}_j)^2 \\
f(\rho) = & C e^{ -( \rho / \delta )^2 } \\
{\rm Tap}(r_{ij}) = & 20\left ( \frac{r_{ij}}{R_{cut}} \right )^7 -
70\left ( \frac{r_{ij}}{R_{cut}} \right )^6 +
84\left ( \frac{r_{ij}}{R_{cut}} \right )^5 -
35\left ( \frac{r_{ij}}{R_{cut}} \right )^4 + 1
Where :math:`\mathrm{Tap}(r_{ij})` is the taper function which provides
a continuous cutoff (up to third derivative) for interatomic separations
larger than :math:`r_c` :doc:`pair_style ilp_graphene_hbn <pair_ilp_graphene_hbn>`.
It is important to include all the pairs to build the neighbor list for
calculating the normals.
.. note::
To account for the isotropic nature of the isolated gold atom
electron cloud, their corresponding normal vectors (`{\bf n}_i`) are
assumed to lie along the interatomic vector `{\bf r}_ij`. Notably, this
assumption is suitable for many bulk material surfaces, for
example, for systems possessing s-type valence orbitals or
metallic surfaces, whose valence electrons are mostly
delocalized, such that their Pauli repulsions with the electrons
of adjacent surfaces are isotropic. Caution should be used in
the case of very small gold contacts, for example, nanoclusters,
where edge effects may become relevant.
The parameter file (e.g. CHAu.ILP), is intended for use with *metal*
:doc:`units <units>`, with energies in meV. Two additional parameters,
*S*, and *rcut* are included in the parameter file. *S* is designed to
facilitate scaling of energies. *rcut* is designed to build the neighbor
list for calculating the normals for each atom pair.
.. note::
The parameters presented in the parameter file (e.g. BNCH.ILP),
are fitted with taper function by setting the cutoff equal to 16.0
Angstrom. Using different cutoff or taper function should be careful.
This potential must be used in combination with hybrid/overlay.
Other interactions can be set to zero using pair_style *none*\ .
This pair style tallies a breakdown of the total interlayer potential
energy into sub-categories, which can be accessed via the :doc:`compute pair <compute_pair>` command as a vector of values of length 2.
The 2 values correspond to the following sub-categories:
1. *E_vdW* = vdW (attractive) energy
2. *E_Rep* = Repulsive energy
To print these quantities to the log file (with descriptive column
headings) the following commands could be included in an input script:
.. code-block:: LAMMPS
compute 0 all pair saip/metal
variable Evdw equal c_0[1]
variable Erep equal c_0[2]
thermo_style custom step temp epair v_Erep v_Evdw
----------
Mixing, shift, table, tail correction, restart, rRESPA info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
This pair style does not support the pair_modify mix, shift, table, and
tail options.
This pair style does not write their information to binary restart
files, since it is stored in potential files. Thus, you need to
re-specify the pair_style and pair_coeff commands in an input script
that reads a restart file.
Restrictions
""""""""""""
This pair style is part of the INTERLAYER package. It is only enabled
if LAMMPS was built with that package. See the :doc:`Build package
<Build_package>` page for more info.
This pair style requires the newton setting to be *on* for pair
interactions.
The CHAu.ILP potential file provided with LAMMPS (see the potentials
directory) are parameterized for *metal* units. You can use this
potential with any LAMMPS units, but you would need to create your
BNCH.ILP potential file with coefficients listed in the appropriate
units, if your simulation does not use *metal* units.
Related commands
""""""""""""""""
:doc:`pair_coeff <pair_coeff>`,
:doc:`pair_none <pair_none>`,
:doc:`pair_style hybrid/overlay <pair_hybrid>`,
:doc:`pair_style drip <pair_drip>`,
:doc:`pair_style ilp_tmd <pair_ilp_tmd>`,
:doc:`pair_style ilp_graphene_hbn <pair_ilp_graphene_hbn>`,
:doc:`pair_style pair_kolmogorov_crespi_z <pair_kolmogorov_crespi_z>`,
:doc:`pair_style pair_kolmogorov_crespi_full <pair_kolmogorov_crespi_full>`,
:doc:`pair_style pair_lebedeva_z <pair_lebedeva_z>`,
:doc:`pair_style pair_coul_shield <pair_coul_shield>`.
Default
"""""""
tap_flag = 1
----------
.. _Ouyang4:
**(Ouyang4)** W. Ouyang, O. Hod, and R. Guerra, J. Chem. Theory Comput. 17, 7215 (2021).

View File

@ -0,0 +1,12 @@
# DATE: 2021-12-02 UNITS: metal CONTRIBUTOR: Wengen Ouyang w.g.ouyang@gmail.com
# CITATION: W. Ouyang, et al., J. Chem. Theory Comput. 17, 7237 (2021).
# Interlayer Potential (ILP) for bilayer and bulk Molybdenum Disulfide.
# The parameters below are fitted against the HSE + MBD-NL DFT reference data.
#
# --------------- Repulsion Potential ----------------++++++++++++++ Vdw Potential ++++++++++++++++*****
# beta(A) alpha delta(A) epsilon(meV) C(meV) d sR reff(A) C6(meV*A^6) S rcut
Mo Mo 5.5794503728 9.3776624643 2.0272224617 144.1517754265 97.9785701736 89.4375967588 2.0590305447 5.1220549022 491850.3161946840 1.0000 4.0
S S 3.1614021873 8.0932627454 1.9531402037 4.5867641760 118.0654664611 58.8094158385 0.2153665787 4.2996001250 148811.2434089213 1.0000 4.0
Mo S 3.6271521213 19.9713750996 7.5850312329 76.1019310047 3.3174955929 45.7203284638 0.9474703731 4.4104250318 150597.8577162951 1.0000 4.0
# symmetric part
S Mo 3.6271521213 19.9713750996 7.5850312329 76.1019310047 3.3174955929 45.7203284638 0.9474703731 4.4104250318 150597.8577162951 1.0000 4.0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,36 @@
units metal
atom_style full
processors * * 1
boundary p p f
read_data ./bilayer_MoS2_AAprime_stacking.data
mass * 32.065 # mass of sulphur atom , uint: a.u.=1.66X10^(-27)kg
mass 1 95.94 # mass of molebdenum atom , uint: a.u.=1.66X10^(-27)kg
mass 4 95.94
# Define potentials
pair_style hybrid/overlay sw/mod sw/mod ilp/tmd 16.0
pair_coeff * * sw/mod 1 tmd.sw.mod Mo S S NULL NULL NULL
pair_coeff * * sw/mod 2 tmd.sw.mod NULL NULL NULL Mo S S
pair_coeff * * ilp/tmd MoS2.ILP Mo S S Mo S S
# Calculate the pair potential
compute 0 all pair ilp/tmd
compute 1 all pair sw/mod 1
compute 2 all pair sw/mod 2
variable SW1 equal c_1
variable SW2 equal c_2
variable ILP equal c_0
variable Eatt equal c_0[1]
variable Erep equal c_0[2]
thermo_style custom step etotal pe ke v_SW1 v_SW2 v_ILP v_Erep v_Eatt temp
thermo 100
thermo_modify lost error
timestep 1e-3
velocity all create 300.0 12345
fix intall all nve
run 1000

View File

@ -0,0 +1,154 @@
LAMMPS (7 Jan 2022)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
units metal
atom_style full
processors * * 1
boundary p p f
read_data ./bilayer_MoS2_AAprime_stacking.data
Reading data file ...
triclinic box = (0 0 -100) to (51.15232 44.299209 100) with tilt (25.57616 0 0)
1 by 1 by 1 MPI processor grid
reading atoms ...
1536 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.007 seconds
mass * 32.065 # mass of sulphur atom , uint: a.u.=1.66X10^(-27)kg
mass 1 95.94 # mass of molebdenum atom , uint: a.u.=1.66X10^(-27)kg
mass 4 95.94
# Define potentials
pair_style hybrid/overlay sw/mod sw/mod ilp/tmd 16.0
pair_coeff * * sw/mod 1 tmd.sw.mod Mo S S NULL NULL NULL
Reading sw potential file tmd.sw.mod with DATE: 2018-03-26
pair_coeff * * sw/mod 2 tmd.sw.mod NULL NULL NULL Mo S S
Reading sw potential file tmd.sw.mod with DATE: 2018-03-26
pair_coeff * * ilp/tmd MoS2.ILP Mo S S Mo S S
Reading ilp/tmd potential file MoS2.ILP with DATE: 2021-12-02
# Calculate the pair potential
compute 0 all pair ilp/tmd
compute 1 all pair sw/mod 1
compute 2 all pair sw/mod 2
variable SW1 equal c_1
variable SW2 equal c_2
variable ILP equal c_0
variable Eatt equal c_0[1]
variable Erep equal c_0[2]
thermo_style custom step etotal pe ke v_SW1 v_SW2 v_ILP v_Erep v_Eatt temp
thermo 100
thermo_modify lost error
timestep 1e-3
velocity all create 300.0 12345
fix intall all nve
run 1000
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- ilp/graphene/hbn potential doi:10.1021/acs.nanolett.8b02848
@Article{Ouyang2018
author = {W. Ouyang, D. Mandelli, M. Urbakh, and O. Hod},
title = {Nanoserpents: Graphene Nanoribbon Motion on Two-Dimensional Hexagonal Materials},
journal = {Nano Letters},
volume = 18,
pages = {6009}
year = 2018,
}
- ilp/tmd potential doi/10.1021/acs.jctc.1c00782
@Article{Ouyang2021
author = {W. Ouyang, R. Sofer, X. Gao, J. Hermann, A. Tkatchenko, L. Kronik, M. Urbakh, and O. Hod},
title = {Anisotropic Interlayer Force Field for Transition Metal Dichalcogenides: The Case of Molybdenum Disulfide},
journal = {J. Chem. Theory Comput.},
volume = 17,
pages = {72377245}
year = 2021,
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 18
ghost atom cutoff = 18
binsize = 9, bins = 9 5 23
4 neighbor lists, perpetual/occasional/extra = 4 0 0
(1) pair sw/mod, perpetual, skip from (4)
attributes: full, newton on
pair build: skip
stencil: none
bin: none
(2) pair sw/mod, perpetual, skip from (4)
attributes: full, newton on
pair build: skip
stencil: none
bin: none
(3) pair ilp/tmd, perpetual
attributes: full, newton on, ghost
pair build: full/bin/ghost
stencil: full/ghost/bin/3d
bin: standard
(4) neighbor class addition, perpetual, copy from (3)
attributes: full, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 30.29 | 30.29 | 30.29 Mbytes
Step TotEng PotEng KinEng v_SW1 v_SW2 v_ILP v_Erep v_Eatt Temp
0 -1834.4469 -1893.9712 59.524297 -929.02881 -929.02881 -35.913549 63.00343 -98.916979 300
100 -1834.4497 -1883.3105 48.860775 -924.84264 -925.08505 -33.382796 56.58255 -89.965346 246.25629
200 -1834.4381 -1873.7072 39.269085 -922.29961 -922.52535 -28.882252 50.08277 -78.965022 197.91457
300 -1834.4483 -1881.1263 46.678028 -923.39264 -923.65627 -34.077402 51.011967 -85.089369 235.25534
400 -1834.431 -1868.0728 33.64182 -916.85743 -916.27044 -34.944916 50.414038 -85.358954 169.55338
500 -1834.4499 -1881.9059 47.456 -925.22919 -924.29582 -32.380877 44.755168 -77.136045 239.17628
600 -1834.4343 -1869.8642 35.429976 -920.97805 -919.60784 -29.278358 43.270241 -72.548599 178.56562
700 -1834.443 -1878.144 43.700934 -921.8051 -921.55671 -34.782141 49.959943 -84.742084 220.2509
800 -1834.4327 -1869.824 35.391298 -917.19193 -917.91383 -34.718247 55.349728 -90.067976 178.37068
900 -1834.4465 -1877.6741 43.227638 -923.33877 -922.50874 -31.826599 53.965592 -85.792191 217.86551
1000 -1834.4412 -1876.1808 41.739587 -923.17282 -923.49367 -29.514347 55.454643 -84.96899 210.3658
Loop time of 72.8218 on 1 procs for 1000 steps with 1536 atoms
Performance: 1.186 ns/day, 20.228 hours/ns, 13.732 timesteps/s
99.6% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 72.781 | 72.781 | 72.781 | 0.0 | 99.94
Bond | 0.00014503 | 0.00014503 | 0.00014503 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.016691 | 0.016691 | 0.016691 | 0.0 | 0.02
Output | 0.00057989 | 0.00057989 | 0.00057989 | 0.0 | 0.00
Modify | 0.013405 | 0.013405 | 0.013405 | 0.0 | 0.02
Other | | 0.01044 | | | 0.01
Nlocal: 1536 ave 1536 max 1536 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 3510 ave 3510 max 3510 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 992256 ave 992256 max 992256 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 992256
Ave neighs/atom = 646
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:01:12

View File

@ -0,0 +1,154 @@
LAMMPS (7 Jan 2022)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
units metal
atom_style full
processors * * 1
boundary p p f
read_data ./bilayer_MoS2_AAprime_stacking.data
Reading data file ...
triclinic box = (0 0 -100) to (51.15232 44.299209 100) with tilt (25.57616 0 0)
2 by 2 by 1 MPI processor grid
reading atoms ...
1536 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.007 seconds
mass * 32.065 # mass of sulphur atom , uint: a.u.=1.66X10^(-27)kg
mass 1 95.94 # mass of molebdenum atom , uint: a.u.=1.66X10^(-27)kg
mass 4 95.94
# Define potentials
pair_style hybrid/overlay sw/mod sw/mod ilp/tmd 16.0
pair_coeff * * sw/mod 1 tmd.sw.mod Mo S S NULL NULL NULL
Reading sw potential file tmd.sw.mod with DATE: 2018-03-26
pair_coeff * * sw/mod 2 tmd.sw.mod NULL NULL NULL Mo S S
Reading sw potential file tmd.sw.mod with DATE: 2018-03-26
pair_coeff * * ilp/tmd MoS2.ILP Mo S S Mo S S
Reading ilp/tmd potential file MoS2.ILP with DATE: 2021-12-02
# Calculate the pair potential
compute 0 all pair ilp/tmd
compute 1 all pair sw/mod 1
compute 2 all pair sw/mod 2
variable SW1 equal c_1
variable SW2 equal c_2
variable ILP equal c_0
variable Eatt equal c_0[1]
variable Erep equal c_0[2]
thermo_style custom step etotal pe ke v_SW1 v_SW2 v_ILP v_Erep v_Eatt temp
thermo 100
thermo_modify lost error
timestep 1e-3
velocity all create 300.0 12345
fix intall all nve
run 1000
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- ilp/graphene/hbn potential doi:10.1021/acs.nanolett.8b02848
@Article{Ouyang2018
author = {W. Ouyang, D. Mandelli, M. Urbakh, and O. Hod},
title = {Nanoserpents: Graphene Nanoribbon Motion on Two-Dimensional Hexagonal Materials},
journal = {Nano Letters},
volume = 18,
pages = {6009}
year = 2018,
}
- ilp/tmd potential doi/10.1021/acs.jctc.1c00782
@Article{Ouyang2021
author = {W. Ouyang, R. Sofer, X. Gao, J. Hermann, A. Tkatchenko, L. Kronik, M. Urbakh, and O. Hod},
title = {Anisotropic Interlayer Force Field for Transition Metal Dichalcogenides: The Case of Molybdenum Disulfide},
journal = {J. Chem. Theory Comput.},
volume = 17,
pages = {72377245}
year = 2021,
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 18
ghost atom cutoff = 18
binsize = 9, bins = 9 5 23
4 neighbor lists, perpetual/occasional/extra = 4 0 0
(1) pair sw/mod, perpetual, skip from (4)
attributes: full, newton on
pair build: skip
stencil: none
bin: none
(2) pair sw/mod, perpetual, skip from (4)
attributes: full, newton on
pair build: skip
stencil: none
bin: none
(3) pair ilp/tmd, perpetual
attributes: full, newton on, ghost
pair build: full/bin/ghost
stencil: full/ghost/bin/3d
bin: standard
(4) neighbor class addition, perpetual, copy from (3)
attributes: full, newton on
pair build: copy
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 17.98 | 17.98 | 17.98 Mbytes
Step TotEng PotEng KinEng v_SW1 v_SW2 v_ILP v_Erep v_Eatt Temp
0 -1834.4469 -1893.9712 59.524297 -929.02881 -929.02881 -35.913549 63.00343 -98.916979 300
100 -1834.4497 -1883.3105 48.860775 -924.84264 -925.08505 -33.382796 56.58255 -89.965346 246.25629
200 -1834.4381 -1873.7072 39.269085 -922.29961 -922.52535 -28.882252 50.08277 -78.965022 197.91457
300 -1834.4483 -1881.1263 46.678028 -923.39264 -923.65627 -34.077402 51.011967 -85.089369 235.25534
400 -1834.431 -1868.0728 33.64182 -916.85743 -916.27044 -34.944916 50.414038 -85.358954 169.55338
500 -1834.4499 -1881.9059 47.456 -925.22919 -924.29582 -32.380877 44.755168 -77.136045 239.17628
600 -1834.4343 -1869.8642 35.429976 -920.97805 -919.60784 -29.278358 43.270241 -72.548599 178.56562
700 -1834.443 -1878.144 43.700934 -921.8051 -921.55671 -34.782141 49.959943 -84.742084 220.2509
800 -1834.4327 -1869.824 35.391298 -917.19193 -917.91383 -34.718247 55.349728 -90.067976 178.37068
900 -1834.4465 -1877.6741 43.227638 -923.33877 -922.50874 -31.826599 53.965592 -85.792191 217.86551
1000 -1834.4412 -1876.1808 41.739587 -923.17282 -923.49367 -29.514347 55.454643 -84.96899 210.3658
Loop time of 24.6309 on 4 procs for 1000 steps with 1536 atoms
Performance: 3.508 ns/day, 6.842 hours/ns, 40.599 timesteps/s
99.7% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 22.906 | 23.627 | 24.36 | 14.0 | 95.92
Bond | 0.00010889 | 0.00011572 | 0.00012719 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.25886 | 0.992 | 1.7126 | 68.3 | 4.03
Output | 0.00050901 | 0.00054202 | 0.00062029 | 0.0 | 0.00
Modify | 0.0030735 | 0.0033236 | 0.0035581 | 0.3 | 0.01
Other | | 0.008194 | | | 0.03
Nlocal: 384 ave 387 max 381 min
Histogram: 1 0 0 0 0 2 0 0 0 1
Nghost: 2262 ave 2265 max 2259 min
Histogram: 1 0 0 0 0 2 0 0 0 1
Neighs: 0 ave 0 max 0 min
Histogram: 4 0 0 0 0 0 0 0 0 0
FullNghs: 248064 ave 250002 max 246126 min
Histogram: 1 0 0 0 0 2 0 0 0 1
Total # of neighbors = 992256
Ave neighs/atom = 646
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:24

View File

@ -0,0 +1,143 @@
# DATE: 2018-03-26 UNITS: metal CONTRIBUTOR: Jin-Wu Jiang jwjiang5918@hotmail.com
# CITATION: J.-W. Jiang, Acta Mech. Solida. Sin 32, 17 (2019).
# The Stillinger-Weber parameters, for transition-metal dichalcogenide (TMD) lateral heterostructures.
# M = Mo, W; X = S, Se, Te
# these entries are in LAMMPS "metal" units:
# epsilon = eV; sigma = Angstroms
# other quantities are unitless
# format of a single entry (one or more lines):
# element 1, element 2, element 3,
# epsilon, sigma, a, lambda, gamma, costheta0, A, B, p, q, tol
# M-X-X terms
Mo S S 1.000 1.252 2.523 67.883 1.000 0.143 6.918 7.223 4 0 0.0
Mo Se Se 1.000 0.913 3.672 32.526 1.000 0.143 5.737 27.084 4 0 0.0
Mo Te Te 1.000 0.880 4.097 23.705 1.000 0.143 5.086 40.810 4 0 0.0
W S S 1.000 0.889 3.558 37.687 1.000 0.143 5.664 24.525 4 0 0.0
W Se Se 1.000 0.706 4.689 25.607 1.000 0.143 5.476 65.662 4 0 0.0
W Te Te 1.000 0.778 4.632 21.313 1.000 0.143 4.326 62.148 4 0 0.0
# X-M-M terms
S Mo Mo 1.000 1.252 2.523 62.449 1.000 0.143 6.918 7.223 4 0 0.0
S W W 1.000 0.889 3.558 33.553 1.000 0.143 5.664 24.525 4 0 0.0
Se Mo Mo 1.000 0.913 3.672 27.079 1.000 0.143 5.737 27.084 4 0 0.0
Se W W 1.000 0.706 4.689 23.218 1.000 0.143 5.476 65.662 4 0 0.0
Te Mo Mo 1.000 0.880 4.097 20.029 1.000 0.143 5.086 40.810 4 0 0.0
Te W W 1.000 0.778 4.632 17.370 1.000 0.143 4.326 62.148 4 0 0.0
# M-X1-X2 terms
Mo S Se 1.000 0.000 0.000 46.989 1.000 0.143 0.000 0.000 4 0 0.0
Mo S Te 1.000 0.000 0.000 40.114 1.000 0.143 0.000 0.000 4 0 0.0
Mo Se S 1.000 0.000 0.000 46.989 1.000 0.143 0.000 0.000 4 0 0.0
Mo Se Te 1.000 0.000 0.000 27.767 1.000 0.143 0.000 0.000 4 0 0.0
Mo Te S 1.000 0.000 0.000 40.114 1.000 0.143 0.000 0.000 4 0 0.0
Mo Te Se 1.000 0.000 0.000 27.767 1.000 0.143 0.000 0.000 4 0 0.0
W S Se 1.000 0.000 0.000 31.065 1.000 0.143 0.000 0.000 4 0 0.0
W S Te 1.000 0.000 0.000 28.341 1.000 0.143 0.000 0.000 4 0 0.0
W Se S 1.000 0.000 0.000 31.065 1.000 0.143 0.000 0.000 4 0 0.0
W Se Te 1.000 0.000 0.000 23.362 1.000 0.143 0.000 0.000 4 0 0.0
W Te S 1.000 0.000 0.000 28.341 1.000 0.143 0.000 0.000 4 0 0.0
W Te Se 1.000 0.000 0.000 23.362 1.000 0.143 0.000 0.000 4 0 0.0
# X-M1-M2 terms
S Mo W 1.000 0.000 0.000 45.775 1.000 0.143 0.000 0.000 4 0 0.0
S W Mo 1.000 0.000 0.000 45.775 1.000 0.143 0.000 0.000 4 0 0.0
Se Mo W 1.000 0.000 0.000 25.074 1.000 0.143 0.000 0.000 4 0 0.0
Se W Mo 1.000 0.000 0.000 25.074 1.000 0.143 0.000 0.000 4 0 0.0
Te Mo W 1.000 0.000 0.000 18.652 1.000 0.143 0.000 0.000 4 0 0.0
Te W Mo 1.000 0.000 0.000 18.652 1.000 0.143 0.000 0.000 4 0 0.0
# zero terms
Mo Mo Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo Mo W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo Mo S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo Mo Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo Mo Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo W Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo W W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo W S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo W Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo W Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo S Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo S W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo Se Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo Se W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo Te Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Mo Te W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W Mo Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W Mo W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W Mo S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W Mo Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W Mo Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W W Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W W W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W W S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W W Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W W Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W S Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W S W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W Se Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W Se W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W Te Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
W Te W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Mo S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Mo Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Mo Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S W S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S W Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S W Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S S Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S S W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S S S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S S Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S S Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Se Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Se W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Se S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Se Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Se Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Te Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Te W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Te S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Te Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
S Te Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Mo S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Mo Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Mo Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se W S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se W Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se W Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se S Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se S W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se S S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se S Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se S Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Se Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Se W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Se S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Se Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Se Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Te Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Te W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Te S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Te Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Se Te Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Mo S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Mo Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Mo Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te W S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te W Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te W Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te S Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te S W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te S S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te S Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te S Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Se Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Se W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Se S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Se Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Se Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Te Mo 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Te W 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Te S 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Te Se 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0
Te Te Te 0.000 1.000 1.000 1.000 1.000 0.143 1.000 1.000 4 0 0.0

View File

@ -0,0 +1,218 @@
Gold/graphene heterjunction atop2
206 atoms
2 atom types
0 17.216640 xlo xhi
0 14.910048 ylo yhi
-30 30.000000 zlo zhi
8.60832 0 0 xy xz yz
Atoms
1 1 1 0 -8.60832 -4.97002 3.5
2 1 1 0 -7.1736 -4.14166 5.85461
3 1 1 0 -5.73888 -3.31334 8.20922
4 1 1 0 -7.1736 -2.48501 3.5
5 1 1 0 -5.73888 -1.65666 5.85461
6 1 1 0 -4.30416 -0.828336 8.20922
7 1 1 0 -5.73888 0 3.5
8 1 1 0 -4.30416 0.828352 5.85461
9 1 1 0 -2.86944 1.65667 8.20922
10 1 1 0 -4.30416 2.48501 3.5
11 1 1 0 -2.86944 3.31336 5.85461
12 1 1 0 -1.43472 4.14168 8.20922
13 1 1 0 -2.86944 4.97002 3.5
14 1 1 0 -1.43472 5.79837 5.85461
15 1 1 0 0 6.62669 8.20922
16 1 1 0 -1.43472 7.45502 3.5
17 1 1 0 0 8.28337 5.85461
18 1 1 0 1.43472 9.11167 8.20922
19 1 1 0 -5.73888 -4.97002 3.5
20 1 1 0 -4.30416 -4.14166 5.85461
21 1 1 0 -2.86944 -3.31334 8.20922
22 1 1 0 -4.30416 -2.48501 3.5
23 1 1 0 -2.86944 -1.65666 5.85461
24 1 1 0 -1.43472 -0.828336 8.20922
25 1 1 0 -2.86944 0 3.5
26 1 1 0 -1.43472 0.828352 5.85461
27 1 1 0 0 1.65667 8.20922
28 1 1 0 -1.43472 2.48501 3.5
29 1 1 0 0 3.31336 5.85461
30 1 1 0 1.43472 4.14168 8.20922
31 1 1 0 0 4.97002 3.5
32 1 1 0 1.43472 5.79837 5.85461
33 1 1 0 2.86944 6.62669 8.20922
34 1 1 0 1.43472 7.45502 3.5
35 1 1 0 2.86944 8.28337 5.85461
36 1 1 0 4.30416 9.11167 8.20922
37 1 1 0 -2.86944 -4.97002 3.5
38 1 1 0 -1.43472 -4.14166 5.85461
39 1 1 0 0 -3.31334 8.20922
40 1 1 0 -1.43472 -2.48501 3.5
41 1 1 0 0 -1.65666 5.85461
42 1 1 0 1.43472 -0.828336 8.20922
43 1 1 0 0 0 3.5
44 1 1 0 1.43472 0.828352 5.85461
45 1 1 0 2.86944 1.65667 8.20922
46 1 1 0 1.43472 2.48501 3.5
47 1 1 0 2.86944 3.31336 5.85461
48 1 1 0 4.30416 4.14168 8.20922
49 1 1 0 2.86944 4.97002 3.5
50 1 1 0 4.30416 5.79837 5.85461
51 1 1 0 5.73888 6.62669 8.20922
52 1 1 0 4.30416 7.45502 3.5
53 1 1 0 5.73888 8.28337 5.85461
54 1 1 0 7.1736 9.11167 8.20922
55 1 1 0 0 -4.97002 3.5
56 1 1 0 1.43472 -4.14166 5.85461
57 1 1 0 2.86944 -3.31334 8.20922
58 1 1 0 1.43472 -2.48501 3.5
59 1 1 0 2.86944 -1.65666 5.85461
60 1 1 0 4.30416 -0.828336 8.20922
61 1 1 0 2.86944 0 3.5
62 1 1 0 4.30416 0.828352 5.85461
63 1 1 0 5.73888 1.65667 8.20922
64 1 1 0 4.30416 2.48501 3.5
65 1 1 0 5.73888 3.31336 5.85461
66 1 1 0 7.1736 4.14168 8.20922
67 1 1 0 5.73888 4.97002 3.5
68 1 1 0 7.1736 5.79837 5.85461
69 1 1 0 8.60832 6.62669 8.20922
70 1 1 0 7.1736 7.45502 3.5
71 1 1 0 8.60832 8.28337 5.85461
72 1 1 0 10.0431 9.11167 8.20922
73 1 1 0 2.86944 -4.97002 3.5
74 1 1 0 4.30416 -4.14166 5.85461
75 1 1 0 5.73888 -3.31334 8.20922
76 1 1 0 4.30416 -2.48501 3.5
77 1 1 0 5.73888 -1.65666 5.85461
78 1 1 0 7.1736 -0.828336 8.20922
79 1 1 0 5.73888 0 3.5
80 1 1 0 7.1736 0.828352 5.85461
81 1 1 0 8.60832 1.65667 8.20922
82 1 1 0 7.1736 2.48501 3.5
83 1 1 0 8.60832 3.31336 5.85461
84 1 1 0 10.0431 4.14168 8.20922
85 1 1 0 8.60832 4.97002 3.5
86 1 1 0 10.0431 5.79837 5.85461
87 1 1 0 11.4777 6.62669 8.20922
88 1 1 0 10.0431 7.45502 3.5
89 1 1 0 11.4777 8.28337 5.85461
90 1 1 0 12.9124 9.11167 8.20922
91 1 1 0 5.73888 -4.97002 3.5
92 1 1 0 7.1736 -4.14166 5.85461
93 1 1 0 8.60832 -3.31334 8.20922
94 1 1 0 7.1736 -2.48501 3.5
95 1 1 0 8.60832 -1.65666 5.85461
96 1 1 0 10.0431 -0.828336 8.20922
97 1 1 0 8.60832 0 3.5
98 1 1 0 10.0431 0.828352 5.85461
99 1 1 0 11.4777 1.65667 8.20922
100 1 1 0 10.0431 2.48501 3.5
101 1 1 0 11.4777 3.31336 5.85461
102 1 1 0 12.9124 4.14168 8.20922
103 1 1 0 11.4777 4.97002 3.5
104 1 1 0 12.9124 5.79837 5.85461
105 1 1 0 14.3472 6.62669 8.20922
106 1 1 0 12.9124 7.45502 3.5
107 1 1 0 14.3472 8.28337 5.85461
108 1 1 0 15.7819 9.11167 8.20922
109 2 2 0 -11.0678 -6.39002 0
110 2 2 0 -9.83808 -5.68001 0
111 2 2 0 -9.83808 -4.26001 0
112 2 2 0 -8.60832 -3.55001 0
113 2 2 0 -8.60832 -2.13001 0
114 2 2 0 -7.37856 -1.42 0
115 2 2 0 -7.37856 0 0
116 2 2 0 -6.1488 0.710007 0
117 2 2 0 -6.1488 2.13001 0
118 2 2 0 -4.91904 2.84001 0
119 2 2 0 -4.91904 4.26001 0
120 2 2 0 -3.68928 4.97002 0
121 2 2 0 -3.68928 6.39002 0
122 2 2 0 -2.45952 7.10003 0
123 2 2 0 -8.60832 -6.39002 0
124 2 2 0 -7.37856 -5.68001 0
125 2 2 0 -7.37856 -4.26001 0
126 2 2 0 -6.1488 -3.55001 0
127 2 2 0 -6.1488 -2.13001 0
128 2 2 0 -4.91904 -1.42 0
129 2 2 0 -4.91904 0 0
130 2 2 0 -3.68928 0.710007 0
131 2 2 0 -3.68928 2.13001 0
132 2 2 0 -2.45952 2.84001 0
133 2 2 0 -2.45952 4.26001 0
134 2 2 0 -1.22976 4.97002 0
135 2 2 0 -1.22976 6.39002 0
136 2 2 0 0 7.10003 0
137 2 2 0 -6.1488 -6.39002 0
138 2 2 0 -4.91904 -5.68001 0
139 2 2 0 -4.91904 -4.26001 0
140 2 2 0 -3.68928 -3.55001 0
141 2 2 0 -3.68928 -2.13001 0
142 2 2 0 -2.45952 -1.42 0
143 2 2 0 -2.45952 0 0
144 2 2 0 -1.22976 0.710007 0
145 2 2 0 -1.22976 2.13001 0
146 2 2 0 0 2.84001 0
147 2 2 0 0 4.26001 0
148 2 2 0 1.22976 4.97002 0
149 2 2 0 1.22976 6.39002 0
150 2 2 0 2.45952 7.10003 0
151 2 2 0 -3.68928 -6.39002 0
152 2 2 0 -2.45952 -5.68001 0
153 2 2 0 -2.45952 -4.26001 0
154 2 2 0 -1.22976 -3.55001 0
155 2 2 0 -1.22976 -2.13001 0
156 2 2 0 0 -1.42 0
157 2 2 0 0 0 0
158 2 2 0 1.22976 0.710007 0
159 2 2 0 1.22976 2.13001 0
160 2 2 0 2.45952 2.84001 0
161 2 2 0 2.45952 4.26001 0
162 2 2 0 3.68928 4.97002 0
163 2 2 0 3.68928 6.39002 0
164 2 2 0 4.91904 7.10003 0
165 2 2 0 -1.22976 -6.39002 0
166 2 2 0 0 -5.68001 0
167 2 2 0 0 -4.26001 0
168 2 2 0 1.22976 -3.55001 0
169 2 2 0 1.22976 -2.13001 0
170 2 2 0 2.45952 -1.42 0
171 2 2 0 2.45952 0 0
172 2 2 0 3.68928 0.710007 0
173 2 2 0 3.68928 2.13001 0
174 2 2 0 4.91904 2.84001 0
175 2 2 0 4.91904 4.26001 0
176 2 2 0 6.1488 4.97002 0
177 2 2 0 6.1488 6.39002 0
178 2 2 0 7.37856 7.10003 0
179 2 2 0 1.22976 -6.39002 0
180 2 2 0 2.45952 -5.68001 0
181 2 2 0 2.45952 -4.26001 0
182 2 2 0 3.68928 -3.55001 0
183 2 2 0 3.68928 -2.13001 0
184 2 2 0 4.91904 -1.42 0
185 2 2 0 4.91904 0 0
186 2 2 0 6.1488 0.710007 0
187 2 2 0 6.1488 2.13001 0
188 2 2 0 7.37856 2.84001 0
189 2 2 0 7.37856 4.26001 0
190 2 2 0 8.60832 4.97002 0
191 2 2 0 8.60832 6.39002 0
192 2 2 0 9.83808 7.10003 0
193 2 2 0 3.68928 -6.39002 0
194 2 2 0 4.91904 -5.68001 0
195 2 2 0 4.91904 -4.26001 0
196 2 2 0 6.1488 -3.55001 0
197 2 2 0 6.1488 -2.13001 0
198 2 2 0 7.37856 -1.42 0
199 2 2 0 7.37856 0 0
200 2 2 0 8.60832 0.710007 0
201 2 2 0 8.60832 2.13001 0
202 2 2 0 9.83808 2.84001 0
203 2 2 0 9.83808 4.26001 0
204 2 2 0 11.0678 4.97002 0
205 2 2 0 11.0678 6.39002 0
206 2 2 0 12.2976 7.10003 0

View File

@ -0,0 +1,304 @@
DATE: 2007-06-11 CONTRIBUTOR: Stephen Foiles, foiles@sandia.gov CITATION: Foiles et al, Phys Rev B, 33, 7983 (1986) COMMENT: Au functions (universal 3)
79 196.97 4.0800 FCC
500 5.0100200400801306e-04 500 1.1212121212121229e-02 5.5500000000000114e+00
0. -4.8957152905617285e-01 -7.9715640025473178e-01 -1.0578883960846852e+00 -1.2926127947875230e+00
-1.5095569422429875e+00 -1.7122648936144031e+00 -1.9048413422057351e+00 -2.0891201727137485e+00 -2.2663983238144567e+00
-2.4376343280801933e+00 -2.6035610602672676e+00 -2.7647541747522837e+00 -2.9216758736402824e+00 -3.0747041024053061e+00
-3.2241527134554815e+00 -3.3702858039738999e+00 -3.5133281677083659e+00 -3.6534730789787062e+00 -3.7908881991052965e+00
-3.9257201323331685e+00 -4.0580979915702073e+00 -4.1881362255503518e+00 -4.3159368868681156e+00 -4.4415914703869532e+00
-4.5651824180406777e+00 -4.6867843610837383e+00 -4.8057271896893496e+00 -4.9225428194100118e+00 -5.0375518642392478e+00
-5.1508071160268400e+00 -5.2623574177682428e+00 -5.3722481110899878e+00 -5.4805214221734673e+00 -5.5872167960755803e+00
-5.6923711875656409e+00 -5.7960193150587713e+00 -5.8981938832717162e+00 -5.9989257789102055e+00 -6.0982442433711128e+00
-6.1961770255185797e+00 -6.2927505172300755e+00 -6.3879898739630221e+00 -6.4819191222678398e+00 -6.5745612557757909e+00
-6.6659383213942363e+00 -6.7560714963274222e+00 -6.8449811575657975e+00 -6.9326869443612225e+00 -7.0192078145907431e+00
-7.1045620956965934e+00 -7.1887675307249026e+00 -7.2718413201122871e+00 -7.3538001594709783e+00 -7.4346602740871788e+00
-7.5144374500173683e+00 -7.5931470626842668e+00 -7.6708041027267768e+00 -7.7474231996531557e+00 -7.8230186434242626e+00
-7.8976044041140483e+00 -7.9711941500525256e+00 -8.0438012641899377e+00 -8.1154388592656233e+00 -8.1861197916399533e+00
-8.2558566739872958e+00 -8.3245422947421162e+00 -8.3922909783827322e+00 -8.4591345411027419e+00 -8.5250848116729685e+00
-8.5901534242832440e+00 -8.6543518260104975e+00 -8.7176912839660190e+00 -8.7801828915952456e+00 -8.8418375746797437e+00
-8.9026660968182796e+00 -8.9626790645054371e+00 -9.0218869318345583e+00 -9.0803000048545641e+00 -9.1379284456149890e+00
-9.1947822759222504e+00 -9.2508713808343828e+00 -9.3062055119176534e+00 -9.3607942902817172e+00 -9.4146472094187175e+00
-9.4677736378592954e+00 -9.5201828216614217e+00 -9.5718838867486511e+00 -9.6228858411114970e+00 -9.6731975768810230e+00
-9.7228278723202948e+00 -9.7717853935587300e+00 -9.8200786965443854e+00 -9.8677162285657687e+00 -9.9147063299085403e+00
-9.9610572353697080e+00 -1.0006777075716059e+01 -1.0051873879085917e+01 -1.0096355572334687e+01 -1.0140229982333324e+01
-1.0183504837223779e+01 -1.0226187767631245e+01 -1.0268286307844107e+01 -1.0309807896958148e+01 -1.0350759879991415e+01
-1.0391149508974991e+01 -1.0430983944016759e+01 -1.0470270254340903e+01 -1.0509015419313812e+01 -1.0547226329446460e+01
-1.0584909787380639e+01 -1.0622072508863425e+01 -1.0658721123705675e+01 -1.0694862176726588e+01 -1.0730502128690375e+01
-1.0765647357231160e+01 -1.0800304157765481e+01 -1.0834478744401679e+01 -1.0868177250846543e+01 -1.0901405731255011e+01
-1.0934170161169504e+01 -1.0966476438362747e+01 -1.0998305613052082e+01 -1.1029642623608026e+01 -1.1060541364165090e+01
-1.1091007442363775e+01 -1.1121046391844686e+01 -1.1150663673092822e+01 -1.1179864674283067e+01 -1.1208654712122325e+01
-1.1237039032675568e+01 -1.1265022812202858e+01 -1.1292611157979593e+01 -1.1319809109111020e+01 -1.1346621637357089e+01
-1.1373053647933659e+01 -1.1399109980321157e+01 -1.1424795409037074e+01 -1.1450114644530743e+01 -1.1475072333821913e+01
-1.1499673061386034e+01 -1.1523921349906175e+01 -1.1547821661045987e+01 -1.1571378396217483e+01 -1.1594595897343936e+01
-1.1617478447613394e+01 -1.1640030272231115e+01 -1.1662255539162913e+01 -1.1684158359879063e+01 -1.1705742790064448e+01
-1.1727012830377930e+01 -1.1747972427151581e+01 -1.1768625473108273e+01 -1.1788975808067732e+01 -1.1809027219651057e+01
-1.1828783443971588e+01 -1.1848248166323742e+01 -1.1867425021867007e+01 -1.1886317596296180e+01 -1.1904929426511444e+01
-1.1923264001280529e+01 -1.1941324761893725e+01 -1.1959115102806834e+01 -1.1976638372285890e+01 -1.1993897873043124e+01
-1.2010896862859283e+01 -1.2027638555207147e+01 -1.2044126119861630e+01 -1.2060362683511414e+01 -1.2076351330354896e+01
-1.2092095102692895e+01 -1.2107597001515842e+01 -1.2122859987083302e+01 -1.2137886979491554e+01 -1.2152680859244981e+01
-1.2167244467811599e+01 -1.2181580608172624e+01 -1.2195692045369128e+01 -1.2209581507042515e+01 -1.2223251683959631e+01
-1.2236705230541986e+01 -1.2249944765383702e+01 -1.2262972871759644e+01 -1.2275792098131888e+01 -1.2288404958645174e+01
-1.2300813933624454e+01 -1.2313021470052036e+01 -1.2325029982052683e+01 -1.2336841851360191e+01 -1.2348459427786452e+01
-1.2359885029681209e+01 -1.2371120944384643e+01 -1.2382169428670977e+01 -1.2393032709195722e+01 -1.2403712982922912e+01
-1.2414212417563022e+01 -1.2424533151985770e+01 -1.2434677296644395e+01 -1.2444646933984359e+01 -1.2454444118846823e+01
-1.2464070878870530e+01 -1.2473529214881864e+01 -1.2482821101290483e+01 -1.2491948486462661e+01 -1.2500913293104531e+01
-1.2509717418631112e+01 -1.2518362735533742e+01 -1.2526851091744220e+01 -1.2535184310980299e+01 -1.2543364193106981e+01
-1.2551392514460986e+01 -1.2559271028251487e+01 -1.2567001464809550e+01 -1.2574585531975458e+01 -1.2582024915407260e+01
-1.2589321278906255e+01 -1.2596476264728608e+01 -1.2603491493898218e+01 -1.2610368566512761e+01 -1.2617109062046893e+01
-1.2623714539650450e+01 -1.2630186538435169e+01 -1.2636526577774021e+01 -1.2642736157575655e+01 -1.2648816758572025e+01
-1.2654769842585210e+01 -1.2660596852812091e+01 -1.2666299214075934e+01 -1.2671878333104587e+01 -1.2677335598782520e+01
-1.2682672382407077e+01 -1.2687890037941429e+01 -1.2692989902259228e+01 -1.2697973295398810e+01 -1.2702841520781590e+01
-1.2707595865484677e+01 -1.2712237600437788e+01 -1.2716767980672103e+01 -1.2721188245543544e+01 -1.2725499618954018e+01
-1.2729703309571278e+01 -1.2733800511047093e+01 -1.2737792402218929e+01 -1.2741680147342777e+01 -1.2745464896273461e+01
-1.2749147784686329e+01 -1.2752729934263357e+01 -1.2756212452903469e+01 -1.2759596434907849e+01 -1.2762882961170817e+01
-1.2766073099373443e+01 -1.2769167904163396e+01 -1.2772168417342755e+01 -1.2775075668041040e+01 -1.2777890672899161e+01
-1.2780614436235851e+01 -1.2783247950228656e+01 -1.2785792195072531e+01 -1.2788248139155144e+01 -1.2790616739214897e+01
-1.2792898940504074e+01 -1.2795095676954247e+01 -1.2797207871315777e+01 -1.2799236435329590e+01 -1.2801182269872015e+01
-1.2803046265103035e+01 -1.2804829300613164e+01 -1.2806532245573180e+01 -1.2808155958872703e+01 -1.2809701289260033e+01
-1.2811169075485736e+01 -1.2812560146428609e+01 -1.2813875321245860e+01 -1.2815115409492705e+01 -1.2816281211258342e+01
-1.2817373517289411e+01 -1.2818393109122212e+01 -1.2819340759202873e+01 -1.2820217231013203e+01 -1.2821023279192104e+01
-1.2821759649647788e+01 -1.2822427079680551e+01 -1.2823026298102377e+01 -1.2823558025339139e+01 -1.2824022973555884e+01
-1.2824421846750738e+01 -1.2824755340884394e+01 -1.2825024143968903e+01 -1.2825228936181929e+01 -1.2825370389970544e+01
-1.2825449170149454e+01 -1.2825465934008321e+01 -1.2825421331404641e+01 -1.2825316004863907e+01 -1.2825150589679538e+01
-1.2824925714000869e+01 -1.2824641998933430e+01 -1.2824300058630001e+01 -1.2823900500371678e+01 -1.2823443924677008e+01
-1.2822930925372475e+01 -1.2822362089687545e+01 -1.2821737998335266e+01 -1.2821059225605609e+01 -1.2820326339439703e+01
-1.2819539901514531e+01 -1.2818700467326494e+01 -1.2817808586266779e+01 -1.2816864801704810e+01 -1.2815869651057142e+01
-1.2814823665874542e+01 -1.2813727371908385e+01 -1.2812581289188415e+01 -1.2811385932095050e+01 -1.2810141809430661e+01
-1.2808849424492109e+01 -1.2807509275137932e+01 -1.2806121853857348e+01 -1.2804687647842002e+01 -1.2803207139049391e+01
-1.2801680804267562e+01 -1.2800109115181044e+01 -1.2798492538441906e+01 -1.2796831535720230e+01 -1.2795126563774261e+01
-1.2793378074507473e+01 -1.2791586515037579e+01 -1.2789752327746214e+01 -1.2787875950343164e+01 -1.2785957815921392e+01
-1.2783998353016159e+01 -1.2781997985658450e+01 -1.2779957133436710e+01 -1.2777876211545163e+01 -1.2775755630837466e+01
-1.2773595797890607e+01 -1.2771397115037757e+01 -1.2769159980443646e+01 -1.2766884788135826e+01 -1.2764571928060604e+01
-1.2762221786140117e+01 -1.2759834744312911e+01 -1.2757411180587496e+01 -1.2754951469079856e+01 -1.2752455980080526e+01
-1.2749925080078015e+01 -1.2747359131814051e+01 -1.2744758494332700e+01 -1.2742123523021974e+01 -1.2739454569654299e+01
-1.2736751982434271e+01 -1.2734016106033550e+01 -1.2731247281644073e+01 -1.2728445847010562e+01 -1.2725612136477366e+01
-1.2722746481020067e+01 -1.2719849208295955e+01 -1.2716920642677451e+01 -1.2713961105291219e+01 -1.2710970914052950e+01
-1.2707950383715342e+01 -1.2704899825894245e+01 -1.2701819549111633e+01 -1.2698709858824714e+01 -1.2695571057476627e+01
-1.2692403444507590e+01 -1.2689207316418333e+01 -1.2685982966778283e+01 -1.2682730686276955e+01 -1.2679450762748274e+01
-1.2676143481210602e+01 -1.2672809123886282e+01 -1.2669447970248484e+01 -1.2666060297048034e+01 -1.2662646378337513e+01
-1.2659206485508321e+01 -1.2655740887330012e+01 -1.2652249849954160e+01 -1.2648733636973702e+01 -1.2645192509433400e+01
-1.2641626725862807e+01 -1.2638036542308100e+01 -1.2634422212364143e+01 -1.2630783987181303e+01 -1.2627122115519796e+01
-1.2623436843761965e+01 -1.2619728415937288e+01 -1.2615997073756944e+01 -1.2612243056634497e+01 -1.2608466601707505e+01
-1.2604667943878439e+01 -1.2600847315820829e+01 -1.2597004948012454e+01 -1.2593141068763316e+01 -1.2589255904233141e+01
-1.2585349678458442e+01 -1.2581422613378436e+01 -1.2577474928845049e+01 -1.2573506842665893e+01 -1.2569518570612672e+01
-1.2565510326445747e+01 -1.2561482321940957e+01 -1.2557434766904635e+01 -1.2553367869200429e+01 -1.2549281834767953e+01
-1.2545176867640066e+01 -1.2541053169977886e+01 -1.2536910942071927e+01 -1.2532750382365748e+01 -1.2528571687499834e+01
-1.2524375052292953e+01 -1.2520160669792631e+01 -1.2515928731280837e+01 -1.2511679426286037e+01 -1.2507412942623887e+01
-1.2503129466394512e+01 -1.2498829182010240e+01 -1.2494512272209931e+01 -1.2490178918083529e+01 -1.2485829299075931e+01
-1.2481463593022681e+01 -1.2477081976149066e+01 -1.2472684623102168e+01 -1.2468271706957921e+01 -1.2463843399241114e+01
-1.2459399869938352e+01 -1.2454941287520114e+01 -1.2450467818950528e+01 -1.2445979629709200e+01 -1.2441476883802807e+01
-1.2436959743776242e+01 -1.2432428370735579e+01 -1.2427882924363757e+01 -1.2423323562927180e+01 -1.2418750443296403e+01
-1.2414163720958641e+01 -1.2409563550025496e+01 -1.2404950083268204e+01 -1.2400323472108994e+01 -1.2395683866638137e+01
-1.2391031415638508e+01 -1.2386366266593996e+01 -1.2381688565699505e+01 -1.2376998457873469e+01 -1.2372296086778988e+01
-1.2367581594827470e+01 -1.2362855123197278e+01 -1.2358116811839636e+01 -1.2353366799502965e+01 -1.2348605223731283e+01
-1.2343832220880358e+01 -1.2339047926144303e+01 -1.2334252473538754e+01 -1.2329445995936339e+01 -1.2324628625072819e+01
-1.2319800491555498e+01 -1.2314961724870955e+01 -1.2310112453398233e+01 -1.2305252804431802e+01 -1.2300382904176104e+01
-1.2295502877757599e+01 -1.2290612849255922e+01 -1.2285712941681595e+01 -1.2280803277011501e+01 -1.2275883976197065e+01
-1.2270955159159030e+01 -1.2266016944812691e+01 -1.2261069451071990e+01 -1.2256112794858382e+01 -1.2251147092104929e+01
-1.2246172457791317e+01 -1.2241189005916794e+01 -1.2236196849536327e+01 -1.2231196100756961e+01 -1.2226186870754645e+01
-1.2221169269778557e+01 -1.2216143407156778e+01 -1.2211109391316540e+01 -1.2206067329782854e+01 -1.2201017329189654e+01
-1.2195959495286388e+01 -1.2190893932956897e+01 -1.2185820746216905e+01 -1.2180740038219483e+01 -1.2175651911274144e+01
-1.2170556466849121e+01 -1.2165453805586139e+01 -1.2160344027287238e+01 -1.2155227230953187e+01 -1.2150103514768489e+01
-1.2144972976118879e+01 -1.2139835711592468e+01 -1.2134691816995428e+01 -1.2129541387352219e+01 -1.2124384516914006e+01
-1.2119221299176161e+01 -1.2114051826867808e+01 -1.2108876191973877e+01 -1.2103694485731239e+01 -1.2098506798646667e+01
1.0000000000000000e+01 1.0805574801665273e+01 1.0631847858835727e+01 1.0461243720756954e+01 1.0293701484862595e+01
1.0129161486782039e+01 9.9675652748633752e+00 9.8088555852185095e+00 9.6529763172782737e+00 9.4998725098501495e+00
9.3494903176658113e+00 9.2017769884090512e+00 9.0566808402160746e+00 8.9141512396361691e+00 8.7741385800461558e+00
8.6365942605050918e+00 8.5014706650466110e+00 8.3687211423932126e+00 8.2382999860894301e+00 8.1101624150417138e+00
7.9842645544597417e+00 7.8605634171872794e+00 7.7390168854186641e+00 7.6195836927906271e+00 7.5022234068421483e+00
7.3868964118359770e+00 7.2735638919322412e+00 7.1621878147100233e+00 7.0527309150267854e+00 6.9451566792110100e+00
6.8394293295802697e+00 6.7355138092775633e+00 6.6333757674209153e+00 6.5329815445585950e+00 6.4342981584245820e+00
6.3372932899870307e+00 6.2419352697848751e+00 6.1481930645462910e+00 6.0560362640834171e+00 5.9654350684569408e+00
5.8763602754058297e+00 5.7887832680370934e+00 5.7026760027689534e+00 5.6180109975234984e+00 5.5347613201630281e+00
5.4529005771653658e+00 5.3724029025332811e+00 5.2932429469330771e+00 5.2153958670574525e+00 5.1388373152087752e+00
5.0635434290976775e+00 4.9894908218520868e+00 4.9166565722336202e+00 4.8450182150562568e+00 4.7745537318030244e+00
4.7052415414373172e+00 4.6370604914042133e+00 4.5699898488174995e+00 4.5040092918309540e+00 4.4390989011863837e+00
4.3752391519379046e+00 4.3124109053472068e+00 4.2505954009471623e+00 4.1897742487697371e+00 4.1299294217346301e+00
4.0710432481965597e+00 4.0130984046462856e+00 3.9560779085630173e+00 3.8999651114162219e+00 3.8447436918106490e+00
3.7903976487755244e+00 3.7369112951915469e+00 3.6842692513550759e+00 3.6324564386757885e+00 3.5814580735046917e+00
3.5312596610909424e+00 3.4818469896633388e+00 3.4332061246358023e+00 3.3853234029318457e+00 3.3381854274280585e+00
3.2917790615123010e+00 3.2460914237553453e+00 3.2011098826928475e+00 3.1568220517161620e+00 3.1132157840687995e+00
3.0702791679473052e+00 3.0280005217038024e+00 2.9863683891479127e+00 2.9453715349469149e+00 2.9049989401212031e+00
2.8652397976330661e+00 2.8260835080677538e+00 2.7875196754040701e+00 2.7495381028725490e+00 2.7121287889004861e+00
2.6752819231404459e+00 2.6389878825821427e+00 2.6032372277445006e+00 2.5680206989471230e+00 2.5333292126596092e+00
2.4991538579262169e+00 2.4654858928652175e+00 2.4323167412411522e+00 2.3996379891079158e+00 2.3674413815221413e+00
2.3357188193244838e+00 2.3044623559882069e+00 2.2736641945330405e+00 2.2433166845033981e+00 2.2134123190090094e+00
2.1839437318277817e+00 2.1549036945682332e+00 2.1262851138912282e+00 2.0980810287893803e+00 2.0702846079231421e+00
2.0428891470118629e+00 2.0158880662797287e+00 1.9892749079540977e+00 1.9630433338162305e+00 1.9371871228028326e+00
1.9117001686573332e+00 1.8865764776298732e+00 1.8618101662255242e+00 1.8373954589986567e+00 1.8133266863934736e+00
1.7895982826292780e+00 1.7662047836297887e+00 1.7431408249951446e+00 1.7204011400162642e+00 1.6979805577301548e+00
1.6758740010159414e+00 1.6540764847299485e+00 1.6325831138797682e+00 1.6113890818360090e+00 1.5904896685812631e+00
1.5698802389953030e+00 1.5495562411756083e+00 1.5295132047931617e+00 1.5097467394817556e+00 1.4902525332610779e+00
1.4710263509920978e+00 1.4520640328647758e+00 1.4333614929167453e+00 1.4149147175828105e+00 1.3967197642743017e+00
1.3787727599880384e+00 1.3610698999438213e+00 1.3436074462500613e+00 1.3263817265971412e+00 1.3093891329776568e+00
1.2926261204330345e+00 1.2760892058259614e+00 1.2597749666384104e+00 1.2436800397941354e+00 1.2278011205055179e+00
1.2121349611442653e+00 1.1966783701352099e+00 1.1814282108731646e+00 1.1663814006616207e+00 1.1515349096736216e+00
1.1368857599339677e+00 1.1224310243221538e+00 1.1081678255959133e+00 1.0940933354347777e+00 1.0802047735033540e+00
1.0664994065336018e+00 1.0529745474261105e+00 1.0396275543696873e+00 1.0264558299790636e+00 1.0134568204501591e+00
1.0006280147325910e+00 9.8796694371932858e-01 9.7547117945254058e-01 9.6313833434599161e-01 9.5096606042309872e-01
9.3895204857064130e-01 9.2709402780763028e-01 9.1538976456901011e-01 9.0383706200408298e-01 8.9243375928902324e-01
8.8117773095362040e-01 8.7006688622134831e-01 8.5909916836317990e-01 8.4827255406426261e-01 8.3758505280347961e-01
8.2703470624577946e-01 8.1661958764644282e-01 8.0633780126770205e-01 7.9618748180697452e-01 7.8616679383677379e-01
7.7627393125577271e-01 7.6650711675103622e-01 7.5686460127104382e-01 7.4734466350931328e-01 7.3794560939844800e-01
7.2866577161422441e-01 7.1950350908982941e-01 7.1045720653968303e-01 7.0152527399280729e-01 6.9270614633555994e-01
6.8399828286361952e-01 6.7540016684266746e-01 6.6691030507811533e-01 6.5852722749315973e-01 6.5024948671545957e-01
6.4207565767183183e-01 6.3400433719114346e-01 6.2603414361502985e-01 6.1816371641637247e-01 6.1039171582519103e-01
6.0271682246215619e-01 5.9513773697920058e-01 5.8765317970717135e-01 5.8026189031060227e-01 5.7296262744913307e-01
5.6575416844568593e-01 5.5863530896103342e-01 5.5160486267489972e-01 5.4466166097323665e-01 5.3780455264156046e-01
5.3103240356438519e-01 5.2434409643048596e-01 5.1773853044386442e-01 5.1121462104036297e-01 5.0477129960984257e-01
4.9840751322363630e-01 4.9212222436742437e-01 4.8591441067911845e-01 4.7978306469198984e-01 4.7372719358258308e-01
4.6774581892364075e-01 4.6183797644160940e-01 4.5600271577899854e-01 4.5023910026113789e-01 4.4454620666747857e-01
4.3892312500724628e-01 4.3336895829939870e-01 4.2788282235674124e-01 4.2246384557415340e-01 4.1711116872087395e-01
4.1182394473671557e-01 4.0660133853207370e-01 4.0144252679182912e-01 3.9634669778282294e-01 3.9131305116509196e-01
3.8634079780649699e-01 3.8142915960098733e-01 3.7657736929016927e-01 3.7178467028821949e-01 3.6705031651014153e-01
3.6237357220308475e-01 3.5775371178097082e-01 3.5319001966201569e-01 3.4868179010940459e-01 3.4422832707482875e-01
3.3982894404491404e-01 3.3548296389055388e-01 3.3118971871888547e-01 3.2694854972808862e-01 3.2275880706481352e-01
3.1861984968415236e-01 3.1453104521226827e-01 3.1049176981145088e-01 3.0650140804759829e-01 3.0255935276022683e-01
2.9866500493462489e-01 2.9481777357656291e-01 2.9101707558902667e-01 2.8726233565130066e-01 2.8355298610018842e-01
2.7988846681334323e-01 2.7626822509466997e-01 2.7269171556180360e-01 2.6915840003556291e-01 2.6566774743136179e-01
2.6221923365253019e-01 2.5881234148553212e-01 2.5544656049706482e-01 2.5212138693284381e-01 2.4883632361830443e-01
2.4559087986095385e-01 2.4238457135443525e-01 2.3921692008426909e-01 2.3608745423523203e-01 2.3299570810033643e-01
2.2994122199135791e-01 2.2692354215095900e-01 2.2394222066622227e-01 2.2099681538379912e-01 2.1808688982637836e-01
2.1521201311067273e-01 2.1237175986674206e-01 2.0956571015868608e-01 2.0679344940674138e-01 2.0405456831059254e-01
2.0134866277408214e-01 1.9867533383106650e-01 1.9603418757262059e-01 1.9342483507539932e-01 1.9084689233118013e-01
1.8829998017762417e-01 1.8578372423012723e-01 1.8329775481485111e-01 1.8084170690282164e-01 1.7841522004510058e-01
1.7601793830906587e-01 1.7364951021567787e-01 1.7130958867779622e-01 1.6899783093949772e-01 1.6671389851636942e-01
1.6445745713676541e-01 1.6222817668402545e-01 1.6002573113959606e-01 1.5784979852708414e-01 1.5570006085717925e-01
1.5357620407348982e-01 1.5147791799920274e-01 1.4940489628460174e-01 1.4735683635542873e-01 1.4533343936204179e-01
1.4333441012935921e-01 1.4135945710761266e-01 1.3940829232386509e-01 1.3748063133425781e-01 1.3557619317704184e-01
1.3369470032628961e-01 1.3183587864635271e-01 1.2999945734701779e-01 1.2818516893932053e-01 1.2639274919208354e-01
1.2462193708907865e-01 1.2287247478685437e-01 1.2114410757319938e-01 1.1943658382625610e-01 1.1774965497421075e-01
1.1608307545560770e-01 1.1443660268028921e-01 1.1280999699087069e-01 1.1120302162480744e-01 1.0961544267703616e-01
1.0804702906317853e-01 1.0649755248324544e-01 1.0496678738591259e-01 1.0345451093332692e-01 1.0196050296639880e-01
1.0048454597061207e-01 9.9026425042358035e-02 9.7585927855701637e-02 9.6162844629714694e-02 9.4756968096170180e-02
9.3368093467816937e-02 9.1996018407021207e-02 9.0640542994902873e-02 8.9301469700904246e-02 8.7978603352773188e-02
8.6671751107017858e-02 8.5380722419717170e-02 8.4105329017804209e-02 8.2845384870704919e-02 8.1600706162422654e-02
8.0371111263961570e-02 7.9156420706169683e-02 7.7956457152975389e-02 7.6771045374937508e-02 7.5600012223214552e-02
7.4443186603889711e-02 7.3300399452608467e-02 7.2171483709613682e-02 7.1056274295101307e-02 6.9954608084900727e-02
6.8866323886512593e-02 6.7791262415458853e-02 6.6729266271942755e-02 6.5680179917855241e-02 6.4643849654059782e-02
6.3620123597996070e-02 6.2608851661605680e-02 6.1609885529501529e-02 6.0623078637479733e-02 5.9648286151297469e-02
5.8685364945727514e-02 5.7734173583902315e-02 5.6794572296926749e-02 5.5866422963745777e-02 5.4949589091318085e-02
5.4043935794994447e-02 5.3149329779194954e-02 5.2265639318327395e-02 5.1392734237947213e-02 5.0530485896169264e-02
4.9678767165325599e-02 4.8837452413847959e-02 4.8006417488384745e-02 4.7185539696183554e-02 4.6374697787631813e-02
4.5573771939098062e-02 4.4782643735936878e-02 4.4001196155732281e-02 4.3229313551768289e-02 4.2466881636676002e-02
4.1713787466318930e-02 4.0969919423873957e-02 4.0235167204098587e-02 3.9509421797826461e-02 3.8792575476626734e-02
3.8084521777679070e-02 3.7385155488821820e-02 3.6694372633812034e-02 3.6012070457733802e-02 3.5338147412623977e-02
3.4672503143249545e-02 3.4015038473080184e-02 3.3365655390433790e-02 3.2724257034773219e-02 3.2090747683195087e-02
3.1465032737088228e-02 3.0847018708923368e-02 3.0236613209244201e-02 2.9633724933796790e-02 2.9038263650822849e-02
2.8450140188500894e-02 2.7869266422559935e-02 2.7295555264015059e-02 2.6728920647080878e-02 2.6169277517213096e-02
2.5616541819305283e-02 2.5070630486026202e-02 2.4531461426288370e-02 2.3998953513874044e-02 2.3473026576187994e-02
2.2953601383141287e-02 2.2440599636177394e-02 2.1933943957428426e-02 2.1433557878997700e-02 2.0939365832377321e-02
2.0451293137978777e-02 1.9969265994807195e-02 1.9493211470244187e-02 1.9023057489961914e-02 1.8558732827946622e-02
1.8100167096652742e-02 1.7647290737265786e-02 1.7200035010079828e-02 1.6758331985001762e-02 1.6322114532147491e-02
1.5891316312564019e-02 1.5465871769059669e-02 1.5045716117135788e-02 1.4630785336033236e-02 1.4221016159874589e-02
1.3816346068919350e-02 1.3416713280920645e-02 1.3022056742576282e-02 1.2632316121086506e-02 1.2247431795811115e-02
1.1867344850018502e-02 1.1491997062734294e-02 1.1121330900689896e-02 1.0755289510353649e-02 1.0393816710068116e-02
1.0036856982265419e-02 9.6843554657850550e-03 9.3362579482734187e-03 8.9925108586740299e-03 8.6530612598050283e-03
8.3178568410263720e-03 7.9868459109810885e-03 7.6599773904311164e-03 7.3372008051761917e-03 7.0184662790432339e-03
6.7037245269728762e-03 6.3929268481707213e-03 6.0860251193467496e-03 5.7829717880334419e-03 5.4837198659721809e-03
5.1882229225839183e-03 4.8964350785134503e-03 4.6083109992463012e-03 4.3238058887972164e-03 4.0428754834809233e-03
3.7654760457356273e-03 3.4915643580391009e-03 3.2210977168825039e-03 2.9540339268092630e-03 2.6903312945348867e-03
2.4299486231265099e-03 2.1728452062454995e-03 1.9189808224691074e-03 1.6683157296605300e-03 1.4208106594140180e-03
1.1764268115650456e-03 9.3512584875343752e-04 6.9686989105854913e-04 4.6162151069073509e-04 2.2934372674099368e-04
0. 0. 0. 0. 0.
0. -1.7831576971772225e-06 -1.7829473560940145e-06 -1.7782999134140250e-06 -1.7396066660757176e-06
-1.5502042294296973e-06 -8.8426152031463411e-07 9.8556394279670839e-07 5.4481397941997004e-06 1.4867980596266735e-05
3.2931882373114611e-05 6.5001911635479206e-05 1.1844733129823650e-04 2.0292956292228964e-04 3.3061789567627280e-04
5.1631865139898162e-04 7.7750625171452148e-04 1.1342505546196036e-03 1.6090404968482838e-03 2.2265091736790310e-03
3.0130697967437337e-03 3.9964753739159253e-03 5.2053174122329016e-03 6.6684804747326187e-03 8.4145700898494158e-03
1.0471331413380081e-02 1.2865075292653572e-02 1.5620127103903481e-02 1.8758312051505910e-02 2.2298488651209647e-02
2.6256139979086490e-02 3.0643030051867304e-02 3.5466930497161764e-02 4.0731420543962615e-02 4.6435761370805517e-02
5.2574844033296930e-02 5.9139208584218839e-02 6.6115130616746232e-02 7.3484770312949976e-02 8.1226378166431079e-02
8.9314550862798825e-02 9.7720530333377464e-02 1.0641253872936574e-01 1.1535614197752375e-01 1.2451463465257184e-01
1.3384943911489966e-01 1.4332051219208441e-01 1.5288675310804134e-01 1.6250640686299977e-01 1.7213745782213952e-01
1.8173800886164226e-01 1.9126664203325738e-01 2.0068275732617824e-01 2.0994688671760819e-01 2.1902098129774128e-01
2.2786866982518550e-01 2.3645548760484036e-01 2.4474907507936638e-01 2.5271934598115031e-01 2.6033862530372609e-01
2.6758175771636061e-01 2.7442618736416513e-01 2.8085201026831896e-01 2.8684200076794752e-01 2.9238161362919257e-01
2.9745896359004576e-01 3.0206478421416350e-01 3.0619236799615202e-01 3.0983748969858205e-01 3.1299831490900054e-01
3.1567529578803644e-01 3.1787105594027310e-01 3.1959026628048548e-01 3.2083951369276065e-01 3.2162716419150783e-01
3.2196322219462736e-01 3.2185918741117270e-01 3.2132791073360423e-01 3.2038345040730398e-01 3.1904092963154262e-01
3.1731639662735489e-01 3.1522668808996457e-01 3.1278929682789780e-01 3.1002224428031333e-01 3.0694395849559442e-01
3.0357315805328966e-01 2.9992874231469280e-01 2.9602968829703968e-01 2.9189495438311042e-01 2.8754339100018278e-01
2.8299365833241197e-01 2.7826415106644475e-01 2.7337293011327013e-01 2.6833766119817071e-01 2.6317556016622490e-01
2.5790334481240507e-01 2.5253719301192845e-01 2.4709270689965823e-01 2.4158488282382962e-01 2.3602808678300846e-01
2.3043603504002608e-01 2.2482177959857719e-01 2.1919769822107593e-01 2.1357548866472253e-01 2.0796616681221014e-01
2.0238006837668632e-01 1.9682685386586041e-01 1.9131551649703571e-01 1.8585439276358340e-01 1.8045117536392397e-01
1.7511292821512736e-01 1.6984610328584182e-01 1.6465655899624476e-01 1.5954957994634089e-01 1.5452989774784154e-01
1.4960171274948575e-01 1.4476871645916312e-01 1.4003411448137193e-01 1.3540064980182454e-01 1.3087062626531676e-01
1.2644593210615351e-01 1.2212806340381377e-01 1.1791814734874029e-01 1.1381696521559581e-01 1.0982497495270227e-01
1.0594233330738234e-01 1.0216891741732059e-01 9.8504345807853610e-02 9.4947998744229878e-02 9.1499037896515922e-02
8.8156425282689632e-02 8.4918941462833075e-02 8.1785202964199666e-02 7.8753678922999892e-02 7.5822706934523865e-02
7.2990508108212282e-02 7.0255201329076034e-02 6.7614816730809491e-02 6.5067308389770595e-02 6.2610566252190747e-02
6.0242427309737501e-02 5.7960686041162335e-02 5.5763104139705089e-02 5.3647419547805608e-02 5.1611354822063804e-02
4.9652624852581040e-02 4.7768943961766119e-02 4.5958032408290661e-02 4.4217622322437089e-02 4.2545463099253666e-02
4.0939326276119958e-02 3.9397009921156023e-02 3.7916342558795169e-02 3.6495186658488166e-02 3.5131441711998557e-02
3.3823046924352340e-02 3.2567983542793888e-02 3.1364276847442030e-02 3.0209997826661672e-02 2.9103264559298569e-02
2.8042243325222982e-02 2.7025149464665166e-02 2.6050248006059928e-02 2.5115854081193878e-02 2.4220333145593687e-02
2.3362101021181081e-02 2.2539623777381168e-02 2.1751417465993073e-02 2.0996047724244904e-02 2.0272129259673144e-02
1.9578325229605120e-02 1.8913346527239971e-02 1.8275950985547906e-02 1.7664942509474035e-02 1.7079170146182210e-02
1.6517527102405061e-02 1.5978949717292412e-02 1.5462416398510370e-02 1.4966946528739644e-02 1.4491599349138851e-02
1.4035472825800033e-02 1.3597702504676568e-02 1.3177460360014326e-02 1.2773953640795865e-02 1.2386423719326689e-02
1.2014144945642569e-02 1.1656423511043013e-02 1.1312596323698576e-02 1.0982029898946477e-02 1.0664119266562466e-02
1.0358286897015456e-02 1.0063981648444464e-02 9.7806777358369068e-03 9.5078737236651834e-03 9.2450915430226099e-03
8.9918755341101830e-03 8.7477915147424201e-03 8.5124258753712101e-03 8.2853847010027626e-03 8.0662929202166000e-03
7.8547934813988918e-03 7.6505465561820252e-03 7.4532287699864697e-03 7.2625324594723373e-03 7.0781649566377391e-03
6.8998478992157719e-03 6.7273165669869683e-03 6.5603192435464419e-03 6.3986166030376990e-03 6.2419811213184351e-03
6.0901965109942113e-03 5.9430571797293996e-03 5.8003677112200558e-03 5.6619423682011671e-03 5.5276046168472315e-03
5.3971866719101091e-03 5.2705290619417255e-03 5.1474802139427622e-03 5.0278960567748665e-03 4.9116396426866493e-03
4.7985807862983842e-03 4.6885957204045869e-03 4.5815667679608429e-03 4.4773820296277189e-03 4.3759350862647983e-03
4.2771247157669945e-03 4.1808546236654642e-03 4.0870331869144738e-03 3.9955732103115205e-03 3.9063916950075328e-03
3.8194096185795723e-03 3.7345517261597044e-03 3.6517463321247695e-03 3.5709251318705310e-03 3.4920230232068361e-03
3.4149779369359312e-03 3.3397306761761419e-03 3.2662247640278252e-03 3.1944062991780403e-03 3.1242238190676563e-03
3.0556281702526777e-03 2.9885723856094282e-03 2.9230115680471264e-03 2.8589027804069439e-03 2.7962049412380424e-03
2.7348787261558677e-03 2.6748864745025913e-03 2.6161921010387501e-03 2.5587610124084281e-03 2.5025600281369659e-03
2.4475573059231370e-03 2.3937222710050804e-03 2.3410255493871018e-03 2.2894389047275615e-03 2.2389351786910455e-03
2.1894882345865480e-03 2.1410729041159010e-03 2.0936649370659199e-03 2.0472409537899139e-03 2.0017784003263928e-03
1.9572555060149294e-03 1.9136512434761582e-03 1.8709452908242524e-03 1.8291179959948681e-03 1.7881503430709211e-03
1.7480239204993170e-03 1.7087208910940010e-03 1.6702239637275546e-03 1.6325163666199224e-03 1.5955818221355528e-03
1.5594045230046330e-03 1.5239691098921856e-03 1.4892606502381611e-03 1.4552646182992637e-03 1.4219668763247734e-03
1.3893536568035242e-03 1.3574115457224423e-03 1.3261274667792575e-03 1.2954886664959878e-03 1.2654827001831598e-03
1.2360974187060614e-03 1.2073209560072781e-03 1.1791417173435681e-03 1.1515483681964686e-03 1.1245298238168333e-03
1.0980752393683485e-03 1.0721740006359309e-03 1.0468157152645832e-03 1.0219902045009582e-03 9.9768749540547069e-04
9.7389781351026050e-04 9.5061157589512724e-04 9.2781938465829467e-04 9.0551202075806955e-04 8.8368043820333253e-04
8.6231575857328643e-04 8.4140926584569745e-04 8.2095240151548038e-04 8.0093675998754374e-04 7.8135408422465649e-04
7.6219626163744406e-04 7.4345532020104327e-04 7.2512342478281075e-04 7.0719287367141531e-04 6.8965609529112945e-04
6.7250564509304875e-04 6.5573420260951407e-04 6.3933456866314964e-04 6.2329966272035506e-04 6.0762252037869363e-04
5.9229629098164066e-04 5.7731423535101883e-04 5.6266972362913406e-04 5.4835623322502941e-04 5.3436734685573598e-04
5.2069675067826018e-04 5.0733823250428620e-04 4.9428568009335372e-04 4.8153307951850736e-04 4.6907451359892022e-04
4.5690416039606205e-04 4.4501629176734933e-04 4.3340527197435058e-04 4.2206555634115121e-04 4.1099168995894532e-04
4.0017830643392614e-04 3.8962012667513243e-04 3.7931195771878645e-04 3.6924869158691878e-04 3.5942530417727367e-04
3.4983685418248783e-04 3.4047848203533695e-04 3.3134540887916168e-04 3.2243293556059871e-04 3.1373644164300191e-04
3.0525138443908070e-04 2.9697329806099675e-04 2.8889779248634888e-04 2.8102055263917042e-04 2.7333733748388656e-04
2.6584397913223187e-04 2.5853638196079477e-04 2.5141052173933108e-04 2.4446244476847984e-04 2.3768826702580664e-04
2.3108417332027859e-04 2.2464641645359579e-04 2.1837131638841566e-04 2.1225525942282237e-04 2.0629469737029615e-04
2.0048614674503164e-04 1.9482618795227565e-04 1.8931146448311360e-04 1.8393868211358157e-04 1.7870460810785922e-04
1.7360607042538924e-04 1.6863995693152702e-04 1.6380321461182627e-04 1.5909284878984527e-04 1.5450592234811291e-04
1.5003955495253643e-04 1.4569092228004094e-04 1.4145725524941817e-04 1.3733583925549381e-04 1.3332401340639035e-04
1.2941916976447285e-04 1.2561875259019684e-04 1.2192025758962256e-04 1.1832123116558560e-04 1.1481926967199518e-04
1.1141201867234099e-04 1.0809717220155090e-04 1.0487247203196451e-04 1.0173570694327339e-04 9.8684711996519393e-05
9.5717367812364704e-05 9.2831599853758062e-05 9.0025377713029344e-05 8.7296714403644476e-05 8.4643665656705669e-05
8.2064329222285900e-05 7.9556844175830525e-05 7.7119390229634256e-05 7.4750187049616845e-05 7.2447493577418743e-05
7.0209607358121592e-05 6.8034863873412711e-05 6.5921635880691453e-05 6.3868332757837688e-05 6.1873399854119916e-05
5.9935317847005769e-05 5.8052602105302092e-05 5.6223802058414686e-05 5.4447500572124986e-05 5.2722313330662903e-05
5.1046888225471810e-05 4.9419904750476994e-05 4.7840073404086360e-05 4.6306135098001444e-05 4.4816860572784081e-05
4.3371049820362410e-05 4.1967531513508512e-05 4.0605162442243665e-05 3.9282826957377651e-05 3.7999436421067619e-05
3.6753928664559794e-05 3.5545267453040291e-05 3.4372441957743801e-05 3.3234466235174207e-05 3.2130378713673274e-05
3.1059241687114931e-05 3.0020140815963667e-05 2.9012184635493878e-05 2.8034504071359221e-05 2.7086251962327905e-05
2.6166602590371475e-05 2.5274751217888719e-05 2.4409913632244271e-05 2.3571325697446452e-05 2.2758242913066616e-05
2.1969939980260233e-05 2.1205710374978511e-05 2.0464865928223751e-05 1.9746736413416423e-05 1.9050669140745365e-05
1.8376028558536356e-05 1.7722195861539949e-05 1.7088568606125681e-05 1.6474560332307943e-05 1.5879600192587038e-05
1.5303132587501673e-05 1.4744616807896445e-05 1.4203526683784977e-05 1.3679350239809867e-05 1.3171589357173225e-05
1.2679759442045687e-05 1.2203389100309283e-05 1.1742019818655313e-05 1.1295205651874632e-05 1.0862512916360960e-05
1.0443519889684208e-05 1.0037816516215981e-05 9.6450041186859356e-06 9.2646951156482942e-06 8.8965127447286651e-06
8.5400907916164900e-06 8.1950733247201143e-06 7.8611144353785568e-06 7.5378779835937114e-06 7.2250373491803614e-06
6.9222751882549137e-06 6.6292831950053900e-06 6.3457618686353938e-06 6.0714202854210658e-06 5.8059758758126974e-06
5.5491542064604101e-06 5.3006887671412965e-06 5.0603207624608454e-06 4.8277989082726527e-06 4.6028792327467837e-06
4.3853248819745191e-06 4.1749059300766062e-06 3.9713991936930954e-06 3.7745880508142688e-06 3.5842622638456757e-06
3.4002178068596534e-06 3.2222566969260485e-06 3.0501868294746811e-06 2.8838218176012410e-06 2.7229808352391242e-06
2.5674884641312622e-06 2.4171745445294654e-06 2.2718740295380683e-06 2.1314268430473412e-06 1.9956777411659336e-06
1.8644761770997796e-06 1.7376761694013680e-06 1.6151361735109885e-06 1.4967189565443510e-06 1.3822914752352456e-06
1.2717247569860561e-06 1.1648937839490780e-06 1.0616773800793238e-06 9.6195810109658104e-07 8.6562212728696897e-07
7.7255915909348342e-07 6.8266231542009619e-07 5.9582803460662395e-07 5.1195597799675132e-07 4.3094893605718154e-07
3.5271273698142622e-07 2.7715615772249259e-07 2.0419083740348351e-07 1.3373119304687232e-07 6.5694337570851248e-08
0. 0. 0. 0. 0.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
# DATE: 2021-12-02 UNITS: metal CONTRIBUTOR: Wengen Ouyang w.g.ouyang@gmail.com
# CITATION: W. Ouyang, O. Hod, and R. Guerra, J. Chem. Theory Comput. 17, 7215 (2021).
# Semi-anisotropic interlayer Potential (SAIP) for graphene/gold, benzene/gold heterojunctions
# The parameters below are fitted against the PBE + D3 DFT reference data.
# The parameters for C-C, C-H and H-H are taken from Nano Letters 18, 6009-6016 (2018).
#
# --------------- Repulsion Potential ----------------++++++++++++++ Vdw Potential ++++++++++++++++*****
# beta(A) alpha delta(A) epsilon(meV) C(meV) d sR reff(A) C6(meV*A^6) S rcut
C C 3.205843 7.511126 1.235334 1.528338E-5 37.530428 15.499947 0.7954443 3.681440 25.714535E3 1.0 2.0
H H 3.974540 6.53799 1.080633 0.6700556 0.8333833 15.022371 0.7490632 2.767223 1.6159581E3 1.0 1.2
C H 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5
Au C 3.6913278482 13.5655648421 1.0175514400 0.0070964784 -0.0010368264 11.0586486772 1.0635582839 3.7552608806 81.5847131142 1000.0 1.0
Au H 3.7899616131 4.3065009639 10.6811825156 0.2250887843 -0.1116891520 18.6149213872 0.9833194192 3.3507558896 70.6865381780 1000.0 1.0
Au Au 3.6671967387 12.8109735143 1.0353581041 0.0000000000 0.0000000000 10.1628585345 1.0642897301 3.7372959779 0.0000000000 1000.0 1.0
# Symmetric part
C Au 3.6913278482 13.5655648421 1.0175514400 0.0070964784 -0.0010368264 11.0586486772 1.0635582839 3.7552608806 81.5847131142 1000.0 2.0
H Au 3.7899616131 4.3065009639 10.6811825156 0.2250887843 -0.1116891520 18.6149213872 0.9833194192 3.3507558896 70.6865381780 1000.0 1.5
H C 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5

View File

@ -0,0 +1,44 @@
units metal
atom_style full
processors * * 1
boundary p p f
read_data ./3Lgold_1Lgr_atop_sliding.data
# global group definition
group gold type 1
group gra type 2
# Define mass
mass * 12.0107 # mass of carbon atom , uint: a.u.=1.66X10^(-27)kg
mass 1 196.96657 # mass of gold atom , uint: a.u.=1.66X10^(-27)kg
# Define potentials
pair_style hybrid/overlay eam rebo saip/metal 16.0
pair_coeff 1 1 eam ./Au_u3.eam
pair_coeff * * rebo ./CH.rebo NULL C
pair_coeff * * saip/metal ./CHAu.ILP Au C
# compute energy
compute 0 all pair rebo
compute 1 all pair eam
compute 2 all pair saip/metal
variable REBO equal c_0
variable EAM equal c_1
variable ILP equal c_2
thermo_style custom step etotal pe ke v_REBO v_ILP temp
thermo 100
thermo_modify lost error
# Creat initial velocity
velocity all set 0.0 0.0 0.0
velocity gra create 300.0 4928459 mom yes rot yes dist gaussian
velocity gold create 300.0 4928459 mom yes rot yes dist gaussian
# Integration
fix intsub gold nve
fix intrib gra nve
timestep 1e-3
run 1000

View File

@ -0,0 +1,164 @@
LAMMPS (7 Jan 2022)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
units metal
atom_style full
processors * * 1
boundary p p f
read_data ./3Lgold_1Lgr_atop_sliding.data
Reading data file ...
triclinic box = (0 0 -30) to (17.21664 14.910048 30) with tilt (8.60832 0 0)
1 by 1 by 1 MPI processor grid
reading atoms ...
206 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.001 seconds
read_data CPU = 0.003 seconds
# global group definition
group gold type 1
108 atoms in group gold
group gra type 2
98 atoms in group gra
# Define mass
mass * 12.0107 # mass of carbon atom , uint: a.u.=1.66X10^(-27)kg
mass 1 196.96657 # mass of gold atom , uint: a.u.=1.66X10^(-27)kg
# Define potentials
pair_style hybrid/overlay eam rebo saip/metal 16.0
pair_coeff 1 1 eam ./Au_u3.eam
Reading eam potential file ./Au_u3.eam with DATE: 2007-06-11
pair_coeff * * rebo ./CH.rebo NULL C
Reading rebo potential file ./CH.rebo with DATE: 2018-7-3
pair_coeff * * saip/metal ./CHAu.ILP Au C
Reading saip/metal potential file ./CHAu.ILP with DATE: 2021-12-02
# compute energy
compute 0 all pair rebo
compute 1 all pair eam
compute 2 all pair saip/metal
variable REBO equal c_0
variable EAM equal c_1
variable ILP equal c_2
thermo_style custom step etotal pe ke v_REBO v_ILP temp
thermo 100
thermo_modify lost error
# Creat initial velocity
velocity all set 0.0 0.0 0.0
velocity gra create 300.0 4928459 mom yes rot yes dist gaussian
velocity gold create 300.0 4928459 mom yes rot yes dist gaussian
# Integration
fix intsub gold nve
fix intrib gra nve
timestep 1e-3
run 1000
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- ilp/graphene/hbn potential doi:10.1021/acs.nanolett.8b02848
@Article{Ouyang2018
author = {W. Ouyang, D. Mandelli, M. Urbakh, and O. Hod},
title = {Nanoserpents: Graphene Nanoribbon Motion on Two-Dimensional Hexagonal Materials},
journal = {Nano Letters},
volume = 18,
pages = {6009}
year = 2018,
}
- saip/metal potential doi.org/10.1021/acs.jctc.1c00622
@Article{Ouyang2021
author = {W. Ouyang, O. Hod, and R. Guerra},
title = {Registry-Dependent Potential for Interfaces of Gold with Graphitic Systems},
journal = {J. Chem. Theory Comput.},
volume = 17,
pages = {7215-7223}
year = 2021,
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 18
ghost atom cutoff = 18
binsize = 9, bins = 3 2 7
4 neighbor lists, perpetual/occasional/extra = 4 0 0
(1) pair eam, perpetual, skip from (4)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(2) pair rebo, perpetual, skip from (3)
attributes: full, newton on, ghost
pair build: skip/ghost
stencil: none
bin: none
(3) pair saip/metal, perpetual
attributes: full, newton on, ghost
pair build: full/bin/ghost
stencil: full/ghost/bin/3d
bin: standard
(4) neighbor class addition, perpetual
attributes: half, newton on
pair build: half/bin/newton/tri
stencil: half/bin/3d/tri
bin: standard
Per MPI rank memory allocation (min/avg/max) = 9.747 | 9.747 | 9.747 Mbytes
Step TotEng PotEng KinEng v_REBO v_ILP Temp
0 -1121.4621 -1129.3728 7.9107209 -724.70925 -6.0302289 298.53659
100 -1121.4483 -1124.9731 3.5248501 -723.03272 -5.9765533 133.02159
200 -1121.4403 -1125.2912 3.8509646 -722.66784 -6.0468507 145.32858
300 -1121.4424 -1126.4665 5.0240531 -722.72787 -6.0350568 189.59886
400 -1121.4419 -1125.1443 3.7023978 -722.59976 -5.8294548 139.72193
500 -1121.4413 -1125.2711 3.8297939 -722.5342 -6.0189944 144.52963
600 -1121.4449 -1125.8808 4.4359049 -722.77707 -5.8685221 167.40319
700 -1121.4489 -1126.1966 4.747709 -723.13681 -5.8666379 179.17012
800 -1121.4443 -1125.8469 4.402607 -722.94487 -6.0094567 166.14658
900 -1121.4424 -1125.8437 4.4013317 -722.94918 -5.8699702 166.09846
1000 -1121.4467 -1125.7453 4.2986881 -722.66682 -6.0651168 162.22487
Loop time of 6.43246 on 1 procs for 1000 steps with 206 atoms
Performance: 13.432 ns/day, 1.787 hours/ns, 155.462 timesteps/s
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 6.4201 | 6.4201 | 6.4201 | 0.0 | 99.81
Bond | 8.9059e-05 | 8.9059e-05 | 8.9059e-05 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.0071852 | 0.0071852 | 0.0071852 | 0.0 | 0.11
Output | 0.00026031 | 0.00026031 | 0.00026031 | 0.0 | 0.00
Modify | 0.0019433 | 0.0019433 | 0.0019433 | 0.0 | 0.03
Other | | 0.002875 | | | 0.04
Nlocal: 206 ave 206 max 206 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 2187 ave 2187 max 2187 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 158548 ave 158548 max 158548 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 158548
Ave neighs/atom = 769.65049
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:06

View File

@ -0,0 +1,164 @@
LAMMPS (7 Jan 2022)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
units metal
atom_style full
processors * * 1
boundary p p f
read_data ./3Lgold_1Lgr_atop_sliding.data
Reading data file ...
triclinic box = (0 0 -30) to (17.21664 14.910048 30) with tilt (8.60832 0 0)
2 by 2 by 1 MPI processor grid
reading atoms ...
206 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.003 seconds
# global group definition
group gold type 1
108 atoms in group gold
group gra type 2
98 atoms in group gra
# Define mass
mass * 12.0107 # mass of carbon atom , uint: a.u.=1.66X10^(-27)kg
mass 1 196.96657 # mass of gold atom , uint: a.u.=1.66X10^(-27)kg
# Define potentials
pair_style hybrid/overlay eam rebo saip/metal 16.0
pair_coeff 1 1 eam ./Au_u3.eam
Reading eam potential file ./Au_u3.eam with DATE: 2007-06-11
pair_coeff * * rebo ./CH.rebo NULL C
Reading rebo potential file ./CH.rebo with DATE: 2018-7-3
pair_coeff * * saip/metal ./CHAu.ILP Au C
Reading saip/metal potential file ./CHAu.ILP with DATE: 2021-12-02
# compute energy
compute 0 all pair rebo
compute 1 all pair eam
compute 2 all pair saip/metal
variable REBO equal c_0
variable EAM equal c_1
variable ILP equal c_2
thermo_style custom step etotal pe ke v_REBO v_ILP temp
thermo 100
thermo_modify lost error
# Creat initial velocity
velocity all set 0.0 0.0 0.0
velocity gra create 300.0 4928459 mom yes rot yes dist gaussian
velocity gold create 300.0 4928459 mom yes rot yes dist gaussian
# Integration
fix intsub gold nve
fix intrib gra nve
timestep 1e-3
run 1000
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- ilp/graphene/hbn potential doi:10.1021/acs.nanolett.8b02848
@Article{Ouyang2018
author = {W. Ouyang, D. Mandelli, M. Urbakh, and O. Hod},
title = {Nanoserpents: Graphene Nanoribbon Motion on Two-Dimensional Hexagonal Materials},
journal = {Nano Letters},
volume = 18,
pages = {6009}
year = 2018,
}
- saip/metal potential doi.org/10.1021/acs.jctc.1c00622
@Article{Ouyang2021
author = {W. Ouyang, O. Hod, and R. Guerra},
title = {Registry-Dependent Potential for Interfaces of Gold with Graphitic Systems},
journal = {J. Chem. Theory Comput.},
volume = 17,
pages = {7215-7223}
year = 2021,
}
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 18
ghost atom cutoff = 18
binsize = 9, bins = 3 2 7
4 neighbor lists, perpetual/occasional/extra = 4 0 0
(1) pair eam, perpetual, skip from (4)
attributes: half, newton on
pair build: skip
stencil: none
bin: none
(2) pair rebo, perpetual, skip from (3)
attributes: full, newton on, ghost
pair build: skip/ghost
stencil: none
bin: none
(3) pair saip/metal, perpetual
attributes: full, newton on, ghost
pair build: full/bin/ghost
stencil: full/ghost/bin/3d
bin: standard
(4) neighbor class addition, perpetual
attributes: half, newton on
pair build: half/bin/newton/tri
stencil: half/bin/3d/tri
bin: standard
Per MPI rank memory allocation (min/avg/max) = 9.299 | 9.299 | 9.3 Mbytes
Step TotEng PotEng KinEng v_REBO v_ILP Temp
0 -1121.4621 -1129.3728 7.9107209 -724.70925 -6.0302289 298.53659
100 -1121.4483 -1124.9731 3.5248501 -723.03272 -5.9765533 133.02159
200 -1121.4403 -1125.2912 3.8509646 -722.66784 -6.0468507 145.32858
300 -1121.4424 -1126.4665 5.0240531 -722.72787 -6.0350568 189.59886
400 -1121.4419 -1125.1443 3.7023978 -722.59976 -5.8294548 139.72193
500 -1121.4413 -1125.2711 3.8297939 -722.5342 -6.0189944 144.52963
600 -1121.4449 -1125.8808 4.4359049 -722.77707 -5.8685221 167.40319
700 -1121.4489 -1126.1966 4.747709 -723.13681 -5.8666379 179.17012
800 -1121.4443 -1125.8469 4.402607 -722.94487 -6.0094567 166.14658
900 -1121.4424 -1125.8437 4.4013317 -722.94918 -5.8699702 166.09846
1000 -1121.4467 -1125.7453 4.2986881 -722.66682 -6.0651168 162.22487
Loop time of 2.44776 on 4 procs for 1000 steps with 206 atoms
Performance: 35.298 ns/day, 0.680 hours/ns, 408.537 timesteps/s
99.7% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 1.6906 | 2.0172 | 2.3939 | 19.2 | 82.41
Bond | 5.4278e-05 | 6.3818e-05 | 7.3153e-05 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.049363 | 0.42514 | 0.75161 | 41.7 | 17.37
Output | 0.00018596 | 0.00020656 | 0.00024754 | 0.0 | 0.01
Modify | 0.00063656 | 0.00074701 | 0.00089514 | 0.0 | 0.03
Other | | 0.004362 | | | 0.18
Nlocal: 51.5 ave 61 max 44 min
Histogram: 1 1 0 0 0 0 1 0 0 1
Nghost: 1670.75 ave 1699 max 1641 min
Histogram: 1 0 0 0 1 0 1 0 0 1
Neighs: 0 ave 0 max 0 min
Histogram: 4 0 0 0 0 0 0 0 0 0
FullNghs: 39637 ave 47080 max 33737 min
Histogram: 1 1 0 0 0 0 1 0 0 1
Total # of neighbors = 158548
Ave neighs/atom = 769.65049
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:02

18
potentials/CHAu.ILP Normal file
View File

@ -0,0 +1,18 @@
# DATE: 2021-12-02 UNITS: metal CONTRIBUTOR: Wengen Ouyang w.g.ouyang@gmail.com
# CITATION: W. Ouyang, O. Hod, and R. Guerra, J. Chem. Theory Comput. 17, 7215 (2021).
# Semi-anisotropic interlayer Potential (SAIP) for graphene/gold, benzene/gold heterojunctions
# The parameters below are fitted against the PBE + D3 DFT reference data.
# The parameters for C-C, C-H and H-H are taken from Nano Letters 18, 6009-6016 (2018).
#
# --------------- Repulsion Potential ----------------++++++++++++++ Vdw Potential ++++++++++++++++*****
# beta(A) alpha delta(A) epsilon(meV) C(meV) d sR reff(A) C6(meV*A^6) S rcut
C C 3.205843 7.511126 1.235334 1.528338E-5 37.530428 15.499947 0.7954443 3.681440 25.714535E3 1.0 2.0
H H 3.974540 6.53799 1.080633 0.6700556 0.8333833 15.022371 0.7490632 2.767223 1.6159581E3 1.0 1.2
C H 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5
Au C 3.6913278482 13.5655648421 1.0175514400 0.0070964784 -0.0010368264 11.0586486772 1.0635582839 3.7552608806 81.5847131142 1000.0 1.0
Au H 3.7899616131 4.3065009639 10.6811825156 0.2250887843 -0.1116891520 18.6149213872 0.9833194192 3.3507558896 70.6865381780 1000.0 1.0
Au Au 3.6671967387 12.8109735143 1.0353581041 0.0000000000 0.0000000000 10.1628585345 1.0642897301 3.7372959779 0.0000000000 1000.0 1.0
# Symmetric part
C Au 3.6913278482 13.5655648421 1.0175514400 0.0070964784 -0.0010368264 11.0586486772 1.0635582839 3.7552608806 81.5847131142 1000.0 2.0
H Au 3.7899616131 4.3065009639 10.6811825156 0.2250887843 -0.1116891520 18.6149213872 0.9833194192 3.3507558896 70.6865381780 1000.0 1.5
H C 2.642950 12.91410 1.020257 0.9750012 25.340996 15.222927 0.8115998 3.887324 5.6874617E3 1.0 1.5

12
potentials/MoS2.ILP Normal file
View File

@ -0,0 +1,12 @@
# DATE: 2021-12-02 UNITS: metal CONTRIBUTOR: Wengen Ouyang w.g.ouyang@gmail.com
# CITATION: W. Ouyang, et al., J. Chem. Theory Comput. 17, 7237 (2021).
# Interlayer Potential (ILP) for bilayer and bulk Molybdenum Disulfide.
# The parameters below are fitted against the HSE + MBD-NL DFT reference data.
#
# --------------- Repulsion Potential ----------------++++++++++++++ Vdw Potential ++++++++++++++++*****
# beta(A) alpha delta(A) epsilon(meV) C(meV) d sR reff(A) C6(meV*A^6) S rcut
Mo Mo 5.5794503728 9.3776624643 2.0272224617 144.1517754265 97.9785701736 89.4375967588 2.0590305447 5.1220549022 491850.3161946840 1.0000 4.0
S S 3.1614021873 8.0932627454 1.9531402037 4.5867641760 118.0654664611 58.8094158385 0.2153665787 4.2996001250 148811.2434089213 1.0000 4.0
Mo S 3.6271521213 19.9713750996 7.5850312329 76.1019310047 3.3174955929 45.7203284638 0.9474703731 4.4104250318 150597.8577162951 1.0000 4.0
# symmetric part
S Mo 3.6271521213 19.9713750996 7.5850312329 76.1019310047 3.3174955929 45.7203284638 0.9474703731 4.4104250318 150597.8577162951 1.0000 4.0

View File

@ -59,7 +59,8 @@ static const char cite_ilp[] =
/* ---------------------------------------------------------------------- */
PairILPGrapheneHBN::PairILPGrapheneHBN(LAMMPS *lmp) : Pair(lmp)
PairILPGrapheneHBN::PairILPGrapheneHBN(LAMMPS *lmp)
: Pair(lmp), variant(ILP_GrhBN)
{
restartinfo = 0;
one_coeff = 1;
@ -87,6 +88,14 @@ PairILPGrapheneHBN::PairILPGrapheneHBN(LAMMPS *lmp) : Pair(lmp)
dnormal = nullptr;
dnormdri = nullptr;
// for ilp/tmd
dnn = nullptr;
vect = nullptr;
pvet = nullptr;
dpvet1 = nullptr;
dpvet2 = nullptr;
dNave = nullptr;
// always compute energy offset
offset_flag = 1;
@ -105,6 +114,13 @@ PairILPGrapheneHBN::~PairILPGrapheneHBN()
memory->destroy(normal);
memory->destroy(dnormal);
memory->destroy(dnormdri);
// adds for ilp/tmd
memory->destroy(dnn);
memory->destroy(vect);
memory->destroy(pvet);
memory->destroy(dpvet1);
memory->destroy(dpvet2);
memory->destroy(dNave);
if (allocated) {
memory->destroy(setflag);
@ -195,7 +211,24 @@ void PairILPGrapheneHBN::read_file(char *filename)
// open file on proc 0
if (comm->me == 0) {
PotentialFileReader reader(lmp, filename, "ilp/graphene/hbn", unit_convert_flag);
std::string potential_name;
switch (variant) {
case ILP_GrhBN:
potential_name = "ilp/graphene/hbn";
break;
case ILP_TMD:
potential_name = "ilp/tmd";
break;
case SAIP_METAL:
potential_name = "saip/metal";
break;
default:
error->one(FLERR,"Unknown ILP style variant {}",variant);
}
PotentialFileReader reader(lmp, filename, potential_name, unit_convert_flag);
char *line;
// transparently convert units for supported conversions
@ -311,9 +344,9 @@ void PairILPGrapheneHBN::read_file(char *filename)
void PairILPGrapheneHBN::init_style()
{
if (force->newton_pair == 0)
error->all(FLERR, "Pair style ilp/graphene/hbn requires newton pair on");
error->all(FLERR, "Pair style ilp/* requires newton pair on");
if (!atom->molecule_flag)
error->all(FLERR, "Pair style ilp/graphene/hbn requires atom attribute molecule");
error->all(FLERR, "Pair style ilp/* requires atom attribute molecule");
// need a full neighbor list, including neighbors of ghosts

View File

@ -27,23 +27,23 @@ namespace LAMMPS_NS {
class PairILPGrapheneHBN : public Pair {
public:
PairILPGrapheneHBN(class LAMMPS *);
~PairILPGrapheneHBN() override;
virtual ~PairILPGrapheneHBN();
void compute(int, int) override;
void settings(int, char **) override;
void coeff(int, char **) override;
double init_one(int, int) override;
void init_style() override;
void ILP_neigh();
void calc_normal();
void calc_FRep(int, int);
virtual void compute(int, int);
virtual void settings(int, char **);
void coeff(int, char **);
double init_one(int, int);
void init_style();
void calc_FvdW(int, int);
double single(int, int, int, int, double, double, double, double &) override;
double single(int, int, int, int, double, double, double, double &);
static constexpr int NPARAMS_PER_LINE = 13;
enum { ILP_GrhBN, ILP_TMD, SAIP_METAL }; // for telling class variants apart in shared code
protected:
int me;
int variant;
int maxlocal; // size of numneigh, firstneigh arrays
int pgsize; // size of neighbor page
int oneatom; // max # of neighbors for one atom
@ -68,6 +68,18 @@ class PairILPGrapheneHBN : public Pair {
double ***dnormdri;
double ****dnormal;
// adds for ilp/tmd
int Nnei; // max # of nearest neighbors for one atom
double **dnn;
double **vect;
double **pvet;
double ***dpvet1;
double ***dpvet2;
double ***dNave;
virtual void ILP_neigh();
virtual void calc_normal();
virtual void calc_FRep(int, int);
void read_file(char *);
void allocate();
};

View File

@ -0,0 +1,877 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing author: Wengen Ouyang (Wuhan University)
e-mail: w.g.ouyang at gmail dot com
This is a full version of the potential described in
[Ouyang et al, J. Chem. Theory Comput. 17, 7237 (2021).]
------------------------------------------------------------------------- */
#include "pair_ilp_tmd.h"
#include "atom.h"
#include "citeme.h"
#include "comm.h"
#include "error.h"
#include "force.h"
#include "interlayer_taper.h"
#include "memory.h"
#include "my_page.h"
#include "neigh_list.h"
#include "neigh_request.h"
#include "neighbor.h"
#include <cmath>
#include <cstring>
using namespace LAMMPS_NS;
using namespace InterLayer;
#define MAXLINE 1024
#define DELTA 4
#define PGDELTA 1
static const char cite_ilp_tmd[] =
"ilp/tmd potential doi/10.1021/acs.jctc.1c00782\n"
"@Article{Ouyang2021\n"
" author = {W. Ouyang, R. Sofer, X. Gao, J. Hermann, A. Tkatchenko, L. Kronik, M. Urbakh, and O. Hod},\n"
" title = {Anisotropic Interlayer Force Field for Transition Metal Dichalcogenides: The Case of Molybdenum Disulfide},\n"
" journal = {J. Chem. Theory Comput.},\n"
" volume = 17,\n"
" pages = {72377245}\n"
" year = 2021,\n"
"}\n\n";
/* ---------------------------------------------------------------------- */
PairILPTMD::PairILPTMD(LAMMPS *lmp) : PairILPGrapheneHBN(lmp)
{
variant = ILP_TMD;
// for TMD, each atom have six neighbors
Nnei = 6;
if (lmp->citeme) lmp->citeme->add(cite_ilp_tmd);
}
/* ----------------------------------------------------------------------
global settings
------------------------------------------------------------------------- */
void PairILPTMD::settings(int narg, char **arg)
{
if (narg < 1 || narg > 2) error->all(FLERR, "Illegal pair_style command");
if (!utils::strmatch(force->pair_style, "^hybrid/overlay"))
error->all(FLERR, "Pair style ilp/tmd must be used as sub-style with hybrid/overlay");
cut_global = utils::numeric(FLERR, arg[0], false, lmp);
if (narg == 2) tap_flag = utils::numeric(FLERR, arg[1], false, lmp);
}
/* ----------------------------------------------------------------------
Repulsive forces and energy
------------------------------------------------------------------------- */
void PairILPTMD::calc_FRep(int eflag, int /* vflag */)
{
int i,j,ii,jj,inum,jnum,itype,jtype,k,kk;
double prodnorm1,fkcx,fkcy,fkcz;
double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair,fpair1;
double rsq,r,Rcut,rhosq1,exp0,exp1,r2inv,r6inv,r8inv,Tap,dTap,Vilp;
double frho1,TSvdw,TSvdw2inv,Erep,fsum,rdsq1;
int *ilist,*jlist,*numneigh,**firstneigh;
int *ILP_neighs_i;
evdwl = 0.0;
double **x = atom->x;
double **f = atom->f;
int *type = atom->type;
int nlocal = atom->nlocal;
int newton_pair = force->newton_pair;
double dprodnorm1[3] = {0.0, 0.0, 0.0};
double fp1[3] = {0.0, 0.0, 0.0};
double fprod1[3] = {0.0, 0.0, 0.0};
double delki[3] = {0.0, 0.0, 0.0};
double fk[3] = {0.0, 0.0, 0.0};
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
//calculate exp(-lambda*(r-z0))*[epsilon/2 + f(rho_ij)]
// loop over neighbors of owned atoms
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
itype = type[i];
jlist = firstneigh[i];
jnum = numneigh[i];
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
j &= NEIGHMASK;
jtype = type[j];
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
// only include the interation between different layers
if (rsq < cutsq[itype][jtype] && atom->molecule[i] != atom->molecule[j]) {
int iparam_ij = elem2param[map[itype]][map[jtype]];
Param& p = params[iparam_ij];
r = sqrt(rsq);
// turn on/off taper function
if (tap_flag) {
Rcut = sqrt(cutsq[itype][jtype]);
Tap = calc_Tap(r,Rcut);
dTap = calc_dTap(r,Rcut);
} else {Tap = 1.0; dTap = 0.0;}
// Calculate the transverse distance
// note that rho_ij does not equal to rho_ji except when normals are all along z
prodnorm1 = normal[i][0]*delx + normal[i][1]*dely + normal[i][2]*delz;
rhosq1 = rsq - prodnorm1*prodnorm1; // rho_ij
rdsq1 = rhosq1*p.delta2inv; // (rho_ij/delta)^2
// store exponents
exp0 = exp(-p.lambda*(r-p.z0));
exp1 = exp(-rdsq1);
frho1 = exp1*p.C;
Erep = 0.5*p.epsilon + frho1;
Vilp = exp0*Erep;
// derivatives
fpair = p.lambda*exp0/r*Erep;
fpair1 = 2.0*exp0*frho1*p.delta2inv;
fsum = fpair + fpair1;
// derivatives of the product of rij and ni, the result is a vector
dprodnorm1[0] = dnormdri[i][0][0]*delx + dnormdri[i][1][0]*dely + dnormdri[i][2][0]*delz;
dprodnorm1[1] = dnormdri[i][0][1]*delx + dnormdri[i][1][1]*dely + dnormdri[i][2][1]*delz;
dprodnorm1[2] = dnormdri[i][0][2]*delx + dnormdri[i][1][2]*dely + dnormdri[i][2][2]*delz;
fp1[0] = prodnorm1*normal[i][0]*fpair1;
fp1[1] = prodnorm1*normal[i][1]*fpair1;
fp1[2] = prodnorm1*normal[i][2]*fpair1;
fprod1[0] = prodnorm1*dprodnorm1[0]*fpair1;
fprod1[1] = prodnorm1*dprodnorm1[1]*fpair1;
fprod1[2] = prodnorm1*dprodnorm1[2]*fpair1;
fkcx = (delx*fsum - fp1[0])*Tap - Vilp*dTap*delx/r;
fkcy = (dely*fsum - fp1[1])*Tap - Vilp*dTap*dely/r;
fkcz = (delz*fsum - fp1[2])*Tap - Vilp*dTap*delz/r;
f[i][0] += fkcx - fprod1[0]*Tap;
f[i][1] += fkcy - fprod1[1]*Tap;
f[i][2] += fkcz - fprod1[2]*Tap;
f[j][0] -= fkcx;
f[j][1] -= fkcy;
f[j][2] -= fkcz;
// calculate the forces acted on the neighbors of atom i from atom j
ILP_neighs_i = ILP_firstneigh[i];
for (kk = 0; kk < ILP_numneigh[i]; kk++) {
k = ILP_neighs_i[kk];
if (k == i) continue;
// derivatives of the product of rij and ni respect to rk, k=0,1,2, where atom k is the neighbors of atom i
dprodnorm1[0] = dnormal[i][0][kk][0]*delx + dnormal[i][1][kk][0]*dely + dnormal[i][2][kk][0]*delz;
dprodnorm1[1] = dnormal[i][0][kk][1]*delx + dnormal[i][1][kk][1]*dely + dnormal[i][2][kk][1]*delz;
dprodnorm1[2] = dnormal[i][0][kk][2]*delx + dnormal[i][1][kk][2]*dely + dnormal[i][2][kk][2]*delz;
fk[0] = (-prodnorm1*dprodnorm1[0]*fpair1)*Tap;
fk[1] = (-prodnorm1*dprodnorm1[1]*fpair1)*Tap;
fk[2] = (-prodnorm1*dprodnorm1[2]*fpair1)*Tap;
f[k][0] += fk[0];
f[k][1] += fk[1];
f[k][2] += fk[2];
delki[0] = x[k][0] - x[i][0];
delki[1] = x[k][1] - x[i][1];
delki[2] = x[k][2] - x[i][2];
if (evflag) ev_tally_xyz(k,j,nlocal,newton_pair,0.0,0.0,fk[0],fk[1],fk[2],delki[0],delki[1],delki[2]);
}
if (eflag) pvector[1] += evdwl = Tap*Vilp;
if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,evdwl,0.0,fkcx,fkcy,fkcz,delx,dely,delz);
}
}
}
}
/* ----------------------------------------------------------------------
create ILP neighbor list from main neighbor list to calcualte normals
------------------------------------------------------------------------- */
void PairILPTMD::ILP_neigh()
{
int i,j,l,ii,jj,ll,n,allnum,jnum,itype,jtype,ltype,imol,jmol,count;
double xtmp,ytmp,ztmp,delx,dely,delz,deljx,deljy,deljz,rsq,rsqlj;
int *ilist,*jlist,*numneigh,**firstneigh;
int *neighsort;
int neighptr[10],check[10];
double **x = atom->x;
int *type = atom->type;
if (atom->nmax > maxlocal) {
maxlocal = atom->nmax;
memory->destroy(ILP_numneigh);
memory->sfree(ILP_firstneigh);
memory->create(ILP_numneigh,maxlocal,"ILPTMD:numneigh");
ILP_firstneigh = (int **) memory->smalloc(maxlocal*sizeof(int *),"ILPTMD:firstneigh");
}
allnum = list->inum + list->gnum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
// store all ILP neighs of owned and ghost atoms
// scan full neighbor list of I
ipage->reset();
for (ii = 0; ii < allnum; ii++) {
i = ilist[ii];
//initialize varibles
n = 0;
neighsort = ipage->vget();
for (ll = 0; ll < 10; ll++){
neighptr[ll] = -1;
check[ll] = -1;
}
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
itype = map[type[i]];
imol = atom->molecule[i];
jlist = firstneigh[i];
jnum = numneigh[i];
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
j &= NEIGHMASK;
jtype = map[type[j]];
jmol = atom->molecule[j];
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
// check if the atom i is TMD, i.e., Mo/S/W/Se
if(strcmp(elements[itype],"Mo") == 0 || strcmp(elements[itype],"W") == 0
|| strcmp(elements[itype],"S") == 0 || strcmp(elements[itype],"Se") == 0
|| strcmp(elements[itype],"Te") == 0) {
if (rsq != 0 && rsq < cutILPsq[itype][jtype] && imol == jmol && type[i] == type[j]) {
neighptr[n++] = j;
}
}
else {// atom i is C, B, N or H.
if (rsq != 0 && rsq < cutILPsq[itype][jtype] && imol == jmol) {
neighptr[n++] = j;
}
}
} // loop over jj
// if atom i is Mo/W/S/Se/Te, then sorting the orders of neighbors
if(strcmp(elements[itype],"Mo") == 0 || strcmp(elements[itype],"W") == 0
|| strcmp(elements[itype],"S") == 0 || strcmp(elements[itype],"Se") == 0
|| strcmp(elements[itype],"Te") == 0) {
// initialize neighsort
for (ll = 0; ll < n; ll++){
neighsort[ll] = neighptr[ll];
check[ll] = neighptr[ll];
}
// select the first neighbor of atomi
if(n == Nnei) {
neighsort[0] = neighptr[0];
check[0] = -1;
}
else if (n < Nnei && n > 0) {
for (jj = 0; jj < n; jj++) { //identify the first neighbor
j = neighptr[jj];
jtype = map[type[j]];
count = 0;
for (ll = 0; ll < n; ll++) {
l = neighptr[ll];
ltype = map[type[l]];
if(l == j) continue;
deljx = x[l][0] - x[j][0];
deljy = x[l][1] - x[j][1];
deljz = x[l][2] - x[j][2];
rsqlj = deljx*deljx + deljy*deljy + deljz*deljz;
if(rsqlj != 0 && rsqlj < cutILPsq[ltype][jtype]) {
count++;
}
}
if(count == 1) {
neighsort[0] = neighptr[jj];
check[jj] = -1;
break;
}
} // end of idenfying the first neighbor
}
else if (n > Nnei) {
fprintf (screen,"Molecule ID = %d\n",imol);
fprintf (screen,"Atom Type = %d\n",type[i]);
fprintf (screen,"Neinum = %d\n",n);
error->one(FLERR,"There are too many neighbors for TMD atoms, please check your configuration");
}
// sort the order of neighbors of atomi
for (jj = 0; jj < n; jj++) {
j = neighsort[jj];
jtype = map[type[j]];
ll = 0;
while(ll < n) {
l = neighptr[ll];
if(check[ll] == -1) {ll++; continue;}
ltype = map[type[l]];
deljx = x[l][0] - x[j][0];
deljy = x[l][1] - x[j][1];
deljz = x[l][2] - x[j][2];
rsqlj = deljx*deljx + deljy*deljy + deljz*deljz;
if(rsqlj != 0 && rsqlj < cutILPsq[ltype][jtype]) {
neighsort[jj+1] = l;
check[ll] = -1;
break;
}
ll++;
}
} // end of sorting the order of neighbors
}
else {// for B/N/C/H atoms
if (n > 3) error->one(FLERR,"There are too many neighbors for B/N/C/H atoms, please check your configuration");
for (ll = 0; ll < n; ll++) {
neighsort[ll] = neighptr[ll];
}
}
ILP_firstneigh[i] = neighsort;
ILP_numneigh[i] = n;
ipage->vgot(n);
if (ipage->status())
error->one(FLERR,"Neighbor list overflow, boost neigh_modify one");
}
}
/* ----------------------------------------------------------------------
Calculate the normals for each atom
------------------------------------------------------------------------- */
void PairILPTMD::calc_normal()
{
int i,j,ii,jj,inum,jnum;
int cont,id,ip,m,k,itype;
double nn,xtp,ytp,ztp,delx,dely,delz,nn2;
int *ilist,*jlist;
double Nave[3],dni[3],dpvdri[3][3];
double **x = atom->x;
int *type = atom->type;
memory->destroy(dnn);
memory->destroy(vect);
memory->destroy(pvet);
memory->destroy(dpvet1);
memory->destroy(dpvet2);
memory->destroy(dNave);
memory->create(dnn,Nnei,3,"ILPTMD:dnn");
memory->create(vect,Nnei,3,"ILPTMD:vect");
memory->create(pvet,Nnei,3,"ILPTMD:pvet");
memory->create(dpvet1,Nnei,3,3,"ILPTMD:dpvet1");
memory->create(dpvet2,Nnei,3,3,"ILPTMD:dpvet2");
memory->create(dNave,3,Nnei,3,"ILPTMD:dNave");
// grow normal array if necessary
if (atom->nmax > nmax) {
memory->destroy(normal);
memory->destroy(dnormal);
memory->destroy(dnormdri);
nmax = atom->nmax;
memory->create(normal,nmax,3,"ILPTMD:normal");
memory->create(dnormdri,nmax,3,3,"ILPTMD:dnormdri");
memory->create(dnormal,nmax,3,Nnei,3,"ILPTMD:dnormal");
}
inum = list->inum;
ilist = list->ilist;
//Calculate normals
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
itype = map[type[i]];
xtp = x[i][0];
ytp = x[i][1];
ztp = x[i][2];
// Initialize the arrays
for (id = 0; id < 3; id++){
Nave[id] = 0.0;
dni[id] = 0.0;
normal[i][id] = 0.0;
for (ip = 0; ip < 3; ip++){
dpvdri[ip][id] = 0.0;
dnormdri[i][ip][id] = 0.0;
for (m = 0; m < Nnei; m++){
dnn[m][id] = 0.0;
vect[m][id] = 0.0;
pvet[m][id] = 0.0;
dpvet1[m][ip][id] = 0.0;
dpvet2[m][ip][id] = 0.0;
dNave[id][m][ip] = 0.0;
dnormal[i][id][m][ip] = 0.0;
}
}
}
cont = 0;
jlist = ILP_firstneigh[i];
jnum = ILP_numneigh[i];
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
j &= NEIGHMASK;
delx = x[j][0] - xtp;
dely = x[j][1] - ytp;
delz = x[j][2] - ztp;
vect[cont][0] = delx;
vect[cont][1] = dely;
vect[cont][2] = delz;
cont++;
}
//############################ For the dangling atoms ############################
if (cont <= 1) {
normal[i][0] = 0.0;
normal[i][1] = 0.0;
normal[i][2] = 1.0;
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
dnormdri[i][id][ip] = 0.0;
for (m = 0; m < Nnei; m++){
dnormal[i][id][m][ip] = 0.0;
}
}
}
}
//############################ For the edge atoms of TMD ################################
else if (cont > 1 && cont < Nnei) {
if(strcmp(elements[itype],"Mo") == 0|| strcmp(elements[itype],"W") == 0 || strcmp(elements[itype],"S") == 0|| strcmp(elements[itype],"Se") == 0) {
// derivatives of Ni[l] respect to the cont neighbors
for (k = 0; k < cont-1; k++){
for (ip = 0; ip < 3; ip++){
pvet[k][ip] = vect[k][modulo(ip+1,3)]*vect[k+1][modulo(ip+2,3)] - vect[k][modulo(ip+2,3)]*vect[k+1][modulo(ip+1,3)];
}
// dpvet1[k][l][ip]: the derivatve of the k (=0,...cont-1)th Nik respect to the ip component of atom l
// derivatives respect to atom l
// dNik,x/drl
dpvet1[k][0][0] = 0.0;
dpvet1[k][0][1] = vect[modulo(k+1,Nnei)][2];
dpvet1[k][0][2] = -vect[modulo(k+1,Nnei)][1];
// dNik,y/drl
dpvet1[k][1][0] = -vect[modulo(k+1,Nnei)][2];
dpvet1[k][1][1] = 0.0;
dpvet1[k][1][2] = vect[modulo(k+1,Nnei)][0];
// dNik,z/drl
dpvet1[k][2][0] = vect[modulo(k+1,Nnei)][1];
dpvet1[k][2][1] = -vect[modulo(k+1,Nnei)][0];
dpvet1[k][2][2] = 0.0;
// dpvet2[k][l][ip]: the derivatve of the k (=0,...cont-1)th Nik respect to the ip component of atom l+1
// derivatives respect to atom l+1
// dNik,x/drl+1
dpvet2[k][0][0] = 0.0;
dpvet2[k][0][1] = -vect[modulo(k,Nnei)][2];
dpvet2[k][0][2] = vect[modulo(k,Nnei)][1];
// dNik,y/drl+1
dpvet2[k][1][0] = vect[modulo(k,Nnei)][2];
dpvet2[k][1][1] = 0.0;
dpvet2[k][1][2] = -vect[modulo(k,Nnei)][0];
// dNik,z/drl+1
dpvet2[k][2][0] = -vect[modulo(k,Nnei)][1];
dpvet2[k][2][1] = vect[modulo(k,Nnei)][0];
dpvet2[k][2][2] = 0.0;
}
// average the normal vectors by using the Nnei neighboring planes
for (ip = 0; ip < 3; ip++){
Nave[ip] = 0.0;
for (k = 0; k < cont-1; k++){
Nave[ip] += pvet[k][ip];
}
Nave[ip] /= (cont - 1);
}
// the magnitude of the normal vector
nn2 = Nave[0]*Nave[0] + Nave[1]*Nave[1] + Nave[2]*Nave[2];
nn = sqrt(nn2);
if (nn == 0) error->one(FLERR,"The magnitude of the normal vector is zero");
// the unit normal vector
normal[i][0] = Nave[0]/nn;
normal[i][1] = Nave[1]/nn;
normal[i][2] = Nave[2]/nn;
// derivatives of non-normalized normal vector, dNave:3xcontx3 array
// dNave[id][m][ip]: the derivatve of the id component of Nave respect to the ip component of atom m
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
for (m = 0; m < cont; m++){
if(m == 0) {
dNave[id][m][ip] = dpvet1[m][id][ip]/(cont-1);
}
else if(m == cont - 1) {
dNave[id][m][ip] = dpvet2[m-1][id][ip]/(cont-1);
}
else { // sum of the derivatives of the mth and (m-1)th normal vector respect to the atom m
dNave[id][m][ip] = (dpvet1[m][id][ip] + dpvet2[m-1][id][ip])/(cont-1);
}
}
}
}
// derivatives of nn, dnn:contx3 vector
// dnn[m][id]: the derivative of nn respect to r[m][id], m=0,...Nnei-1; id=0,1,2
// r[m][id]: the id's component of atom m
for (m = 0; m < cont; m++){
for (id = 0; id < 3; id++){
dnn[m][id] = (Nave[0]*dNave[0][m][id] + Nave[1]*dNave[1][m][id] + Nave[2]*dNave[2][m][id])/nn;
}
}
// dnormal[i][id][m][ip]: the derivative of normal[i][id] respect to r[m][ip], id,ip=0,1,2.
// for atom m, which is a neighbor atom of atom i, m = 0,...,Nnei-1
for (m = 0; m < cont; m++){
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
dnormal[i][id][m][ip] = dNave[id][m][ip]/nn - Nave[id]*dnn[m][ip]/nn2;
}
}
}
// Calculte dNave/dri, defined as dpvdri
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
dpvdri[id][ip] = 0.0;
for (k = 0; k < cont; k++){
dpvdri[id][ip] -= dNave[id][k][ip];
}
}
}
// derivatives of nn, dnn:3x1 vector
dni[0] = (Nave[0]*dpvdri[0][0] + Nave[1]*dpvdri[1][0] + Nave[2]*dpvdri[2][0])/nn;
dni[1] = (Nave[0]*dpvdri[0][1] + Nave[1]*dpvdri[1][1] + Nave[2]*dpvdri[2][1])/nn;
dni[2] = (Nave[0]*dpvdri[0][2] + Nave[1]*dpvdri[1][2] + Nave[2]*dpvdri[2][2])/nn;
// derivatives of unit vector ni respect to ri, the result is 3x3 matrix
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
dnormdri[i][id][ip] = dpvdri[id][ip]/nn - Nave[id]*dni[ip]/nn2;
}
}
} // for TMD
//############################ For the edge & bulk atoms of GrhBN ################################
else {
if(cont == 2) {
for (ip = 0; ip < 3; ip++){
pvet[0][ip] = vect[0][modulo(ip+1,3)]*vect[1][modulo(ip+2,3)] - vect[0][modulo(ip+2,3)]*vect[1][modulo(ip+1,3)];
}
// dpvet1[k][l][ip]: the derivatve of the k (=0,...cont-1)th Nik respect to the ip component of atom l
// derivatives respect to atom l
// dNik,x/drl
dpvet1[0][0][0] = 0.0;
dpvet1[0][0][1] = vect[1][2];
dpvet1[0][0][2] = -vect[1][1];
// dNi0,y/drl
dpvet1[0][1][0] = -vect[1][2];
dpvet1[0][1][1] = 0.0;
dpvet1[0][1][2] = vect[1][0];
// dNi0,z/drl
dpvet1[0][2][0] = vect[1][1];
dpvet1[0][2][1] = -vect[1][0];
dpvet1[0][2][2] = 0.0;
// dpvet2[0][l][ip]: the derivatve of the 0 (=0,...cont-1)th Ni0 respect to the ip component of atom l+1
// derivatives respect to atom l+1
// dNi0,x/drl+1
dpvet2[0][0][0] = 0.0;
dpvet2[0][0][1] = -vect[0][2];
dpvet2[0][0][2] = vect[0][1];
// dNi0,y/drl+1
dpvet2[0][1][0] = vect[0][2];
dpvet2[0][1][1] = 0.0;
dpvet2[0][1][2] = -vect[0][0];
// dNi0,z/drl+1
dpvet2[0][2][0] = -vect[0][1];
dpvet2[0][2][1] = vect[0][0];
dpvet2[0][2][2] = 0.0;
for (ip = 0; ip < 3; ip++){
Nave[ip] += pvet[0][ip];
}
// the magnitude of the normal vector
nn2 = Nave[0]*Nave[0] + Nave[1]*Nave[1] + Nave[2]*Nave[2];
nn = sqrt(nn2);
if (nn == 0) error->one(FLERR,"The magnitude of the normal vector is zero");
// the unit normal vector
normal[i][0] = Nave[0]/nn;
normal[i][1] = Nave[1]/nn;
normal[i][2] = Nave[2]/nn;
// derivatives of non-normalized normal vector, dNave:3xcontx3 array
// dNave[id][m][ip]: the derivatve of the id component of Nave respect to the ip component of atom m
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
for (m = 0; m < cont; m++){
if(m == 0) {
dNave[id][m][ip] = dpvet1[m][id][ip]/(cont-1);
}
else if(m == cont - 1) {
dNave[id][m][ip] = dpvet2[m-1][id][ip]/(cont-1);
}
else { // sum of the derivatives of the mth and (m-1)th normal vector respect to the atom m
dNave[id][m][ip] = (dpvet1[m][id][ip] + dpvet2[m-1][id][ip])/(cont-1);
}
}
}
}
// derivatives of nn, dnn:contx3 vector
// dnn[m][id]: the derivative of nn respect to r[m][id], m=0,...Nnei-1; id=0,1,2
// r[m][id]: the id's component of atom m
for (m = 0; m < cont; m++){
for (id = 0; id < 3; id++){
dnn[m][id] = (Nave[0]*dNave[0][m][id] + Nave[1]*dNave[1][m][id] + Nave[2]*dNave[2][m][id])/nn;
}
}
// dnormal[i][id][m][ip]: the derivative of normal[i][id] respect to r[m][ip], id,ip=0,1,2.
// for atom m, which is a neighbor atom of atom i, m = 0,...,Nnei-1
for (m = 0; m < cont; m++){
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
dnormal[i][id][m][ip] = dNave[id][m][ip]/nn - Nave[id]*dnn[m][ip]/nn2;
}
}
}
// Calculte dNave/dri, defined as dpvdri
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
dpvdri[id][ip] = 0.0;
for (k = 0; k < cont; k++){
dpvdri[id][ip] -= dNave[id][k][ip];
}
}
}
// derivatives of nn, dnn:3x1 vector
dni[0] = (Nave[0]*dpvdri[0][0] + Nave[1]*dpvdri[1][0] + Nave[2]*dpvdri[2][0])/nn;
dni[1] = (Nave[0]*dpvdri[0][1] + Nave[1]*dpvdri[1][1] + Nave[2]*dpvdri[2][1])/nn;
dni[2] = (Nave[0]*dpvdri[0][2] + Nave[1]*dpvdri[1][2] + Nave[2]*dpvdri[2][2])/nn;
// derivatives of unit vector ni respect to ri, the result is 3x3 matrix
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
dnormdri[i][id][ip] = dpvdri[id][ip]/nn - Nave[id]*dni[ip]/nn2;
}
}
} // end of cont == 2
else if(cont == 3) {
// derivatives of Ni[l] respect to the 3 neighbors
for (k = 0; k < 3; k++){
for (ip = 0; ip < 3; ip++){
pvet[k][ip] = vect[modulo(k,3)][modulo(ip+1,3)]*vect[modulo(k+1,3)][modulo(ip+2,3)] \
-vect[modulo(k,3)][modulo(ip+2,3)]*vect[modulo(k+1,3)][modulo(ip+1,3)];
}
// dpvet1[k][l][ip]: the derivatve of the k (=0,...cont-1)th Nik respect to the ip component of atom l
// derivatives respect to atom l
// dNik,x/drl
dpvet1[k][0][0] = 0.0;
dpvet1[k][0][1] = vect[modulo(k+1,3)][2];
dpvet1[k][0][2] = -vect[modulo(k+1,3)][1];
// dNik,y/drl
dpvet1[k][1][0] = -vect[modulo(k+1,3)][2];
dpvet1[k][1][1] = 0.0;
dpvet1[k][1][2] = vect[modulo(k+1,3)][0];
// dNik,z/drl
dpvet1[k][2][0] = vect[modulo(k+1,3)][1];
dpvet1[k][2][1] = -vect[modulo(k+1,3)][0];
dpvet1[k][2][2] = 0.0;
// dpvet2[k][l][ip]: the derivatve of the k (=0,...cont-1)th Nik respect to the ip component of atom l+1
// derivatives respect to atom l+1
// dNik,x/drl+1
dpvet2[k][0][0] = 0.0;
dpvet2[k][0][1] = -vect[modulo(k,3)][2];
dpvet2[k][0][2] = vect[modulo(k,3)][1];
// dNik,y/drl+1
dpvet2[k][1][0] = vect[modulo(k,3)][2];
dpvet2[k][1][1] = 0.0;
dpvet2[k][1][2] = -vect[modulo(k,3)][0];
// dNik,z/drl+1
dpvet2[k][2][0] = -vect[modulo(k,3)][1];
dpvet2[k][2][1] = vect[modulo(k,3)][0];
dpvet2[k][2][2] = 0.0;
}
// average the normal vectors by using the 3 neighboring planes
for (ip = 0; ip < 3; ip++){
Nave[ip] = 0.0;
for (k = 0; k < 3; k++){
Nave[ip] += pvet[k][ip];
}
Nave[ip] /= 3;
}
// the magnitude of the normal vector
nn2 = Nave[0]*Nave[0] + Nave[1]*Nave[1] + Nave[2]*Nave[2];
nn = sqrt(nn2);
if (nn == 0) error->one(FLERR,"The magnitude of the normal vector is zero");
// the unit normal vector
normal[i][0] = Nave[0]/nn;
normal[i][1] = Nave[1]/nn;
normal[i][2] = Nave[2]/nn;
// for the central atoms, dnormdri is always zero
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
dnormdri[i][id][ip] = 0.0;
}
}
// derivatives of non-normalized normal vector, dNave:3x3x3 array
// dNave[id][m][ip]: the derivatve of the id component of Nave respect to the ip component of atom m
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
for (m = 0; m < 3; m++){ // sum of the derivatives of the mth and (m-1)th normal vector respect to the atom m
dNave[id][m][ip] = (dpvet1[modulo(m,3)][id][ip] + dpvet2[modulo(m-1,3)][id][ip])/3;
}
}
}
// derivatives of nn, dnn:3x3 vector
// dnn[m][id]: the derivative of nn respect to r[m][id], m=0,...3-1; id=0,1,2
// r[m][id]: the id's component of atom m
for (m = 0; m < 3; m++){
for (id = 0; id < 3; id++){
dnn[m][id] = (Nave[0]*dNave[0][m][id] + Nave[1]*dNave[1][m][id] + Nave[2]*dNave[2][m][id])/nn;
}
}
// dnormal[i][id][m][ip]: the derivative of normal[i][id] respect to r[m][ip], id,ip=0,1,2.
// for atom m, which is a neighbor atom of atom i, m = 0,...,3-1
for (m = 0; m < 3; m++){
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
dnormal[i][id][m][ip] = dNave[id][m][ip]/nn - Nave[id]*dnn[m][ip]/nn2;
}
}
}
} // end of cont == 3
else error->one(FLERR,"There are too many neighbors for calculating normals of B/N/C/H atoms");
} // for B/N/C/H
} // end of if(cont<Nnei)
//############################ For the bulk atoms ################################
else if(cont == Nnei) {
// derivatives of Ni[l] respect to the Nnei neighbors
for (k = 0; k < Nnei; k++){
for (ip = 0; ip < 3; ip++){
pvet[k][ip] = vect[modulo(k,Nnei)][modulo(ip+1,3)]*vect[modulo(k+1,Nnei)][modulo(ip+2,3)] \
-vect[modulo(k,Nnei)][modulo(ip+2,3)]*vect[modulo(k+1,Nnei)][modulo(ip+1,3)];
}
// dpvet1[k][l][ip]: the derivatve of the k (=0,...cont-1)th Nik respect to the ip component of atom l
// derivatives respect to atom l
// dNik,x/drl
dpvet1[k][0][0] = 0.0;
dpvet1[k][0][1] = vect[modulo(k+1,Nnei)][2];
dpvet1[k][0][2] = -vect[modulo(k+1,Nnei)][1];
// dNik,y/drl
dpvet1[k][1][0] = -vect[modulo(k+1,Nnei)][2];
dpvet1[k][1][1] = 0.0;
dpvet1[k][1][2] = vect[modulo(k+1,Nnei)][0];
// dNik,z/drl
dpvet1[k][2][0] = vect[modulo(k+1,Nnei)][1];
dpvet1[k][2][1] = -vect[modulo(k+1,Nnei)][0];
dpvet1[k][2][2] = 0.0;
// dpvet2[k][l][ip]: the derivatve of the k (=0,...cont-1)th Nik respect to the ip component of atom l+1
// derivatives respect to atom l+1
// dNik,x/drl+1
dpvet2[k][0][0] = 0.0;
dpvet2[k][0][1] = -vect[modulo(k,Nnei)][2];
dpvet2[k][0][2] = vect[modulo(k,Nnei)][1];
// dNik,y/drl+1
dpvet2[k][1][0] = vect[modulo(k,Nnei)][2];
dpvet2[k][1][1] = 0.0;
dpvet2[k][1][2] = -vect[modulo(k,Nnei)][0];
// dNik,z/drl+1
dpvet2[k][2][0] = -vect[modulo(k,Nnei)][1];
dpvet2[k][2][1] = vect[modulo(k,Nnei)][0];
dpvet2[k][2][2] = 0.0;
}
// average the normal vectors by using the Nnei neighboring planes
for (ip = 0; ip < 3; ip++){
Nave[ip] = 0.0;
for (k = 0; k < Nnei; k++){
Nave[ip] += pvet[k][ip];
}
Nave[ip] /= Nnei;
}
// the magnitude of the normal vector
nn2 = Nave[0]*Nave[0] + Nave[1]*Nave[1] + Nave[2]*Nave[2];
nn = sqrt(nn2);
if (nn == 0) error->one(FLERR,"The magnitude of the normal vector is zero");
// the unit normal vector
normal[i][0] = Nave[0]/nn;
normal[i][1] = Nave[1]/nn;
normal[i][2] = Nave[2]/nn;
// for the central atoms, dnormdri is always zero
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
dnormdri[i][id][ip] = 0.0;
}
}
// derivatives of non-normalized normal vector, dNave:3xNneix3 array
// dNave[id][m][ip]: the derivatve of the id component of Nave respect to the ip component of atom m
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
for (m = 0; m < Nnei; m++){ // sum of the derivatives of the mth and (m-1)th normal vector respect to the atom m
dNave[id][m][ip] = (dpvet1[modulo(m,Nnei)][id][ip] + dpvet2[modulo(m-1,Nnei)][id][ip])/Nnei;
}
}
}
// derivatives of nn, dnn:Nneix3 vector
// dnn[m][id]: the derivative of nn respect to r[m][id], m=0,...Nnei-1; id=0,1,2
// r[m][id]: the id's component of atom m
for (m = 0; m < Nnei; m++){
for (id = 0; id < 3; id++){
dnn[m][id] = (Nave[0]*dNave[0][m][id] + Nave[1]*dNave[1][m][id] + Nave[2]*dNave[2][m][id])/nn;
}
}
// dnormal[i][id][m][ip]: the derivative of normal[i][id] respect to r[m][ip], id,ip=0,1,2.
// for atom m, which is a neighbor atom of atom i, m = 0,...,Nnei-1
for (m = 0; m < Nnei; m++){
for (id = 0; id < 3; id++){
for (ip = 0; ip < 3; ip++){
dnormal[i][id][m][ip] = dNave[id][m][ip]/nn - Nave[id]*dnn[m][ip]/nn2;
}
}
}
}
else {
error->one(FLERR,"There are too many neighbors for calculating normals of TMD atoms");
} // end of four cases of cont
} // end of i loop
}

View File

@ -0,0 +1,71 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifdef PAIR_CLASS
// clang-format off
PairStyle(ilp/tmd,PairILPTMD);
// clang-format on
#else
#ifndef LMP_PAIR_ILP_TMD_H
#define LMP_PAIR_ILP_TMD_H
#include "pair_ilp_graphene_hbn.h"
namespace LAMMPS_NS {
class PairILPTMD : public PairILPGrapheneHBN {
public:
PairILPTMD(class LAMMPS *);
protected:
void settings(int, char **);
void ILP_neigh();
void calc_normal();
void calc_FRep(int, int);
/**************************************************************/
/* modulo operation with cycling around range */
inline int modulo(int k, int range)
{
if (k < 0) k += range;
return k % range;
}
/**************************************************************/
};
} // namespace LAMMPS_NS
#endif
#endif
/* ERROR/WARNING messages:
E: Illegal ... command
Self-explanatory. Check the input script syntax and compare to the
documentation for the command. You can use -echo screen as a
command-line option when running LAMMPS to see the offending line.
E: Incorrect args for pair coefficients
Self-explanatory. Check the input script or data file.
E: All pair coeffs are not set
All pair coefficients must be set in the data file or by the
pair_coeff command before running a simulation.
*/

View File

@ -0,0 +1,233 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing author: Wengen Ouyang (Wuhan University)
e-mail: w.g.ouyang at gmail dot com
This is a full version of the potential described in
[Ouyang et al, J. Chem. Theory Comput. 17, 7215-7223 (2021)]
------------------------------------------------------------------------- */
#include "pair_saip_metal.h"
#include "atom.h"
#include "citeme.h"
#include "error.h"
#include "force.h"
#include "interlayer_taper.h"
#include "neigh_list.h"
#include "neigh_request.h"
#include "neighbor.h"
#include <cmath>
#include <cstring>
using namespace LAMMPS_NS;
using namespace InterLayer;
#define MAXLINE 1024
#define DELTA 4
#define PGDELTA 1
static const char cite_saip[] =
"saip/metal potential doi.org/10.1021/acs.jctc.1c00622\n"
"@Article{Ouyang2021\n"
" author = {W. Ouyang, O. Hod, and R. Guerra},\n"
" title = {Registry-Dependent Potential for Interfaces of Gold with Graphitic Systems},\n"
" journal = {J. Chem. Theory Comput.},\n"
" volume = 17,\n"
" pages = {7215-7223}\n"
" year = 2021,\n"
"}\n\n";
/* ---------------------------------------------------------------------- */
PairSAIPMETAL::PairSAIPMETAL(LAMMPS *lmp) : PairILPGrapheneHBN(lmp) {
variant = SAIP_METAL;
if (lmp->citeme) lmp->citeme->add(cite_saip);
}
/* ----------------------------------------------------------------------
global settings
------------------------------------------------------------------------- */
void PairSAIPMETAL::settings(int narg, char **arg)
{
if (narg < 1 || narg > 2) error->all(FLERR, "Illegal pair_style command");
if (!utils::strmatch(force->pair_style, "^hybrid/overlay"))
error->all(FLERR, "Pair style saip/metal must be used as sub-style with hybrid/overlay");
cut_global = utils::numeric(FLERR, arg[0], false, lmp);
if (narg == 2) tap_flag = utils::numeric(FLERR, arg[1], false, lmp);
}
/* ----------------------------------------------------------------------
Repulsive forces and energy
------------------------------------------------------------------------- */
void PairSAIPMETAL::calc_FRep(int eflag, int /* vflag */)
{
int i,j,ii,jj,inum,jnum,itype,jtype,k,kk;
double prodnorm1,fkcx,fkcy,fkcz,filp;
double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair,fpair1;
double rsq,r,Rcut,rhosq1,exp0,exp1,Tap,dTap,Vilp;
double frho1,Erep,fsum,rdsq1;
int *ilist,*jlist,*numneigh,**firstneigh;
int *ILP_neighs_i;
evdwl = 0.0;
double **x = atom->x;
double **f = atom->f;
int *type = atom->type;
int nlocal = atom->nlocal;
int newton_pair = force->newton_pair;
double dprodnorm1[3] = {0.0, 0.0, 0.0};
double fp1[3] = {0.0, 0.0, 0.0};
double fprod1[3] = {0.0, 0.0, 0.0};
double delki[3] = {0.0, 0.0, 0.0};
double fk[3] = {0.0, 0.0, 0.0};
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
//calculate exp(-lambda*(r-z0))*[epsilon/2 + f(rho_ij)]
// loop over neighbors of owned atoms
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
itype = type[i];
jlist = firstneigh[i];
jnum = numneigh[i];
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
j &= NEIGHMASK;
jtype = type[j];
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
// only include the interaction between different layers
if (rsq < cutsq[itype][jtype] && atom->molecule[i] != atom->molecule[j]) {
int iparam_ij = elem2param[map[itype]][map[jtype]];
Param& p = params[iparam_ij];
r = sqrt(rsq);
// turn on/off taper function
if (tap_flag) {
Rcut = sqrt(cutsq[itype][jtype]);
Tap = calc_Tap(r,Rcut);
dTap = calc_dTap(r,Rcut);
} else {Tap = 1.0; dTap = 0.0;}
// for atoms in bulk materials
if (strcmp(elements[map[itype]],"C") != 0 && strcmp(elements[map[itype]],"H") != 0 &&
strcmp(elements[map[itype]],"B") != 0 && strcmp(elements[map[itype]],"N") != 0) {
// Set ni along rij
exp0 = exp(-p.lambda*(r-p.z0));
frho1 = 1.0*p.C;
Erep = 0.5*p.epsilon + frho1;
Vilp = exp0*Erep;
// derivatives
fpair = p.lambda*exp0/r*Erep;
filp = fpair*Tap - Vilp*dTap/r;
fkcx = delx*filp;
fkcy = dely*filp;
fkcz = delz*filp;
f[i][0] += fkcx;
f[i][1] += fkcy;
f[i][2] += fkcz;
f[j][0] -= fkcx;
f[j][1] -= fkcy;
f[j][2] -= fkcz;
if (eflag) pvector[1] += evdwl = Tap*Vilp;
if (evflag) ev_tally(i,j,nlocal,newton_pair,evdwl,0.0,filp,delx,dely,delz);
}
else { // for atoms in 2D materials
// Calculate the transverse distance
prodnorm1 = normal[i][0]*delx + normal[i][1]*dely + normal[i][2]*delz;
rhosq1 = rsq - prodnorm1*prodnorm1; // rho_ij
rdsq1 = rhosq1*p.delta2inv; // (rho_ij/delta)^2
// store exponents
exp0 = exp(-p.lambda*(r-p.z0));
exp1 = exp(-rdsq1);
frho1 = exp1*p.C;
Erep = 0.5*p.epsilon + frho1;
Vilp = exp0*Erep;
// derivatives
fpair = p.lambda*exp0/r*Erep;
fpair1 = 2.0*exp0*frho1*p.delta2inv;
fsum = fpair + fpair1;
// derivatives of the product of rij and ni, the result is a vector
dprodnorm1[0] = dnormdri[0][0][i]*delx + dnormdri[1][0][i]*dely + dnormdri[2][0][i]*delz;
dprodnorm1[1] = dnormdri[0][1][i]*delx + dnormdri[1][1][i]*dely + dnormdri[2][1][i]*delz;
dprodnorm1[2] = dnormdri[0][2][i]*delx + dnormdri[1][2][i]*dely + dnormdri[2][2][i]*delz;
fp1[0] = prodnorm1*normal[i][0]*fpair1;
fp1[1] = prodnorm1*normal[i][1]*fpair1;
fp1[2] = prodnorm1*normal[i][2]*fpair1;
fprod1[0] = prodnorm1*dprodnorm1[0]*fpair1;
fprod1[1] = prodnorm1*dprodnorm1[1]*fpair1;
fprod1[2] = prodnorm1*dprodnorm1[2]*fpair1;
fkcx = (delx*fsum - fp1[0])*Tap - Vilp*dTap*delx/r;
fkcy = (dely*fsum - fp1[1])*Tap - Vilp*dTap*dely/r;
fkcz = (delz*fsum - fp1[2])*Tap - Vilp*dTap*delz/r;
f[i][0] += fkcx - fprod1[0]*Tap;
f[i][1] += fkcy - fprod1[1]*Tap;
f[i][2] += fkcz - fprod1[2]*Tap;
f[j][0] -= fkcx;
f[j][1] -= fkcy;
f[j][2] -= fkcz;
// calculate the forces acted on the neighbors of atom i from atom j
ILP_neighs_i = ILP_firstneigh[i];
for (kk = 0; kk < ILP_numneigh[i]; kk++) {
k = ILP_neighs_i[kk];
if (k == i) continue;
// derivatives of the product of rij and ni respect to rk, k=0,1,2, where atom k is the neighbors of atom i
dprodnorm1[0] = dnormal[0][0][kk][i]*delx + dnormal[1][0][kk][i]*dely + dnormal[2][0][kk][i]*delz;
dprodnorm1[1] = dnormal[0][1][kk][i]*delx + dnormal[1][1][kk][i]*dely + dnormal[2][1][kk][i]*delz;
dprodnorm1[2] = dnormal[0][2][kk][i]*delx + dnormal[1][2][kk][i]*dely + dnormal[2][2][kk][i]*delz;
fk[0] = (-prodnorm1*dprodnorm1[0]*fpair1)*Tap;
fk[1] = (-prodnorm1*dprodnorm1[1]*fpair1)*Tap;
fk[2] = (-prodnorm1*dprodnorm1[2]*fpair1)*Tap;
f[k][0] += fk[0];
f[k][1] += fk[1];
f[k][2] += fk[2];
delki[0] = x[k][0] - x[i][0];
delki[1] = x[k][1] - x[i][1];
delki[2] = x[k][2] - x[i][2];
if (evflag) ev_tally_xyz(k,j,nlocal,newton_pair,0.0,0.0,fk[0],fk[1],fk[2],delki[0],delki[1],delki[2]);
}
if (eflag) pvector[1] += evdwl = Tap*Vilp;
if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,evdwl,0.0,fkcx,fkcy,fkcz,delx,dely,delz);
} // end of speration atoms for bulk materials
} // end of rsq < cutoff
} // loop over jj
} // loop over ii
}

View File

@ -0,0 +1,58 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifdef PAIR_CLASS
// clang-format off
PairStyle(saip/metal,PairSAIPMETAL);
// clang-format on
#else
#ifndef LMP_PAIR_SAIP_METAL_H
#define LMP_PAIR_SAIP_METAL_H
#include "pair_ilp_graphene_hbn.h"
namespace LAMMPS_NS {
class PairSAIPMETAL : public PairILPGrapheneHBN {
public:
PairSAIPMETAL(class LAMMPS *);
protected:
void settings(int, char **);
void calc_FRep(int, int);
};
} // namespace LAMMPS_NS
#endif
#endif
/* ERROR/WARNING messages:
E: Illegal ... command
Self-explanatory. Check the input script syntax and compare to the
documentation for the command. You can use -echo screen as a
command-line option when running LAMMPS to see the offending line.
E: Incorrect args for pair coefficients
Self-explanatory. Check the input script or data file.
E: All pair coeffs are not set
All pair coefficients must be set in the data file or by the
pair_coeff command before running a simulation.
*/