Shifted Tersoff Potential

This commit is contained in:
Wengen Ouyang
2020-12-10 14:02:31 +02:00
parent 57032c661d
commit 6078d22405
9 changed files with 2377 additions and 0 deletions

View File

@ -0,0 +1,116 @@
.. index:: pair_style tersoff/shift
Syntax
""""""
.. code-block:: LAMMPS
pair_style tersoff/shift delta
* delta = the shift applied to the equilibrium bond length of the tersoff potential.
Examples
""""""""
.. code-block:: LAMMPS
pair_style tersoff/shift delta
pair_coeff * * Si.tersoff Si
pair_coeff * * BNC.tersoff B N
Description
"""""""""""
The *tersoff/shift* style computes the energy E of a system of atoms, whose formula
is the same as a 3-body Tersoff potential :ref:`(Tersoff_1) <Tersoff_11>`. The only
modification is that the original equilibrium bond length (:math: `r_0`) of the
system is shifted to :math:`r_0-\delta`.
.. note::
The sign of :math:`\delta` determines whether the resulting equilibrium bond length will be elongated
or shrinked relative to the original value. Specifically, values of :math:`\delta < 0` will result in
elongation of the bond length, while values of :math:`\delta > 0` will result in shrinking of the bond length.
This style is designed for simulations of closely matched van der Waals heterostructures. For instance, let's
consider the case of a system with few-layers graphene atop a thick hexagonal boron nitride (h-BN) substrate
simulated using periodic boundary conditions. The experimental lattice mismatch of ~1.8% between graphene and h-BN
is not well captured by the equilibrium lattice constants of available potentials, thus a small in-plane strain
will be introduced in the system when building a periodic supercell.To minimize the effect of strain on
simulation results, the *tersoff/shift* style is proposed that allows adjusting the equilibrium bond length
of one of the two materials (e.g., h-BN). Validitation, benchmark tests and applications of the *tersoff/shift* style
can be found in :ref:`(Mandelli_1) <Mandelli1>` and :ref:`(Ouyang_1) <Ouyang5>`.
For the specific case discussed above, the force field can be defined as
.. code-block:: LAMMPS
pair_style hybrid/overlay rebo tersoff/shift -4.07e-3 ilp/graphene/hbn 16.0 coul/shield 16.0
pair_coeff * * rebo CH.rebo NULL NULL C
pair_coeff * * tersoff/shift BNC.tersoff B N NULL
pair_coeff * * ilp/graphene/hbn BNCH.ILP B N C
pair_coeff 1 1 coul/shield 0.70
pair_coeff 1 2 coul/shield 0.695
pair_coeff 2 2 coul/shield 0.69
Except for the shift, the usage of the *tersoff/shift* style is the same as that for the
*tersoff* style :doc:`tersoff <pair_tersoff>`.
Mixing, shift, table, tail correction, restart, rRESPA info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS as
described above from values in the potential file.
This pair style does not support the :doc:`pair_modify <pair_modify>`
shift, table, and tail options.
This pair style does not write its information to :doc:`binary restart files <restart>`, 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.
This pair style can only be used via the *pair* keyword of the
:doc:`run_style respa <run_style>` command. It does not support the
*inner*\ , *middle*\ , *outer* keywords.
----------
Restrictions
""""""""""""
This pair style is part of the USER-MISC package. It is only enabled
if LAMMPS was built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
This pair style requires the :doc:`newton <newton>` setting to be "on"
for pair interactions.
The Tersoff potential files provided with LAMMPS (see the potentials
directory) are parameterized for metal :doc:`units <units>`. You can
use the Tersoff potential with any LAMMPS units, but you would need to
create your own Tersoff 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_style tersoff <pair_tersoff>`,
:doc:`pair_style ilp/graphene/hbn <pair_ilp_graphene_hbn>`.
Default
"""""""
none
----------
.. _Mandelli1:
**(Mandelli_1)** D. Mandelli, W. Ouyang, M. Urbakh, and O. Hod, ACS Nano 13(7), 7603-7609 (2019).
.. _Ouyang5:
**(Ouyang_1)** W. Ouyang et al., J. Chem. Theory Comput. 16(1), 666-676 (2020).

View File

@ -0,0 +1,74 @@
# DATE: 2013-03-21 CONTRIBUTOR: Cem Sevik CITATION: Kinaci, Haskins, Sevik and Cagin, Phys Rev B, 86, 115410 (2012)
# Tersoff parameters for B, C, and BN-C hybrid based graphene like nano structures
# multiple entries can be added to this file, LAMMPS reads the ones it needs
# these entries are in LAMMPS "metal" units:
# A,B = eV; lambda1,lambda2,lambda3 = 1/Angstroms; R,D = Angstroms
# other quantities are unitless
# Cem Sevik (csevik at anadolu.edu.tr) takes full blame for this
# file. It specifies B-N, B-C, and N-C interaction parameters
# generated and published by the reseacrh group of Prof. Tahir Cagin.
# 1. Physical Review B 84, 085409 2011
# Characterization of thermal transport in low-dimensional boron nitride nanostructures,
#
# 2. Physical Review B 86, 075403 2012
# Influence of disorder on thermal transport properties of boron nitride nanostructures
#
# 3. Physical Review B 86, 075403 2012, Please see for further information about B-C and N-C parameters
# Thermal conductivity of BN-C nanostructures
#
# The file also specifies C-C, interaction parameters
# generated and published by the reseacrh group of Dr. D. A. Broido
# Physical Review B 81, 205441 2010
# Optimized Tersoff and Brenner empirical potential parameters for
# lattice dynamics and phonon thermal transport in carbon nanotubes and graphene
# Users in referring the full parameters can cite the full parameter paper (3) as:
# A. Kinaci, J. B. Haskins, C. Sevik, T. Cagin, Physical Review B 86, 115410 (2012)
# Thermal conductivity of BN-C nanostructures
#
# format of a single entry (one or more lines):
# element 1, element 2, element 3,
# m, gamma, lambda3, c, d, costheta0, n, beta, lambda2, B, R, D, lambda1, A
N B B 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.199 340.00 1.95 0.05 3.568 1380.0
N B N 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.199 340.00 1.95 0.05 3.568 1380.0
N B C 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.199 340.00 1.95 0.05 3.568 1380.0
B N B 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.199 340.00 1.95 0.05 3.568 1380.0
B N N 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.199 340.00 1.95 0.05 3.568 1380.0
B N C 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.199 340.00 1.95 0.05 3.568 1380.0
N N B 3.0 1.0 0.0 17.7959 5.9484 0.00000 0.6184432 0.019251 2.6272721 138.77866 2.0 0.1 2.8293093 128.86866
N N N 3.0 1.0 0.0 17.7959 5.9484 0.00000 0.6184432 0.019251 2.6272721 138.77866 2.0 0.1 2.8293093 128.86866
N N C 3.0 1.0 0.0 17.7959 5.9484 0.00000 0.6184432 0.019251 2.6272721 138.77866 2.0 0.1 2.8293093 128.86866
B B B 3.0 1.0 0.0 0.52629 0.001587 0.5 3.9929061 1.6e-6 2.0774982 43.132016 2.0 0.1 2.2372578 40.0520156
B B N 3.0 1.0 0.0 0.52629 0.001587 0.5 3.9929061 1.6e-6 2.0774982 43.132016 2.0 0.1 2.2372578 40.0520156
B B C 3.0 1.0 0.0 0.52629 0.001587 0.5 3.9929061 1.6e-6 2.0774982 43.132016 2.0 0.1 2.2372578 40.0520156
C C C 3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7 2.2119 430.00 1.95 0.15 3.4879 1393.6
C C B 3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7 2.2119 430.00 1.95 0.15 3.4879 1393.6
C C N 3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7 2.2119 430.00 1.95 0.15 3.4879 1393.6
C B B 3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7 2.2054 339.068910 1.95 0.10 3.5279 1386.78
C B N 3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7 2.2054 339.068910 1.95 0.10 3.5279 1386.78
C B C 3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7 2.2054 339.068910 1.95 0.10 3.5279 1386.78
C N B 3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7 2.2054 387.575152 1.95 0.10 3.5279 1386.78
C N N 3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7 2.2054 387.575152 1.95 0.10 3.5279 1386.78
C N C 3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7 2.2054 387.575152 1.95 0.10 3.5279 1386.78
B C C 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.2054 339.068910 1.95 0.10 3.5279 1386.78
B C B 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.2054 339.068910 1.95 0.10 3.5279 1386.78
B C N 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.2054 339.068910 1.95 0.10 3.5279 1386.78
N C C 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.2054 387.575152 1.95 0.10 3.5279 1386.78
N C B 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.2054 387.575152 1.95 0.10 3.5279 1386.78
N C N 3.0 1.0 0.0 25000 4.3484 -0.89000 0.72751 1.25724e-7 2.2054 387.575152 1.95 0.10 3.5279 1386.78

View File

@ -0,0 +1,892 @@
Makeup graphene nanoribbon on hBN
880 atoms
2 atom types
0.000000000000000 46.152979739999999 xlo xhi
0.000000000000000 48.443364211584992 ylo yhi
0.000000000000000 100.000000000000000 zlo zhi
Atoms
1 1 1 0.420 0.000000000000000 0.000000000000000 0.000000000000000
2 1 2 -0.420 0.698900000000000 1.210530287683010 0.000000000000000
3 1 1 0.420 2.096700000000000 1.210530287683010 0.000000000000000
4 1 2 -0.420 2.795600000000000 0.000000000000000 0.000000000000000
5 1 1 0.420 4.193400000000000 0.000000000000000 0.000000000000000
6 1 2 -0.420 4.892300000000000 1.210530287683010 0.000000000000000
7 1 1 0.420 6.290100000000000 1.210530287683010 0.000000000000000
8 1 2 -0.420 6.989000000000000 0.000000000000000 0.000000000000000
9 1 1 0.420 8.386799999999999 0.000000000000000 0.000000000000000
10 1 2 -0.420 9.085699999999999 1.210530287683010 0.000000000000000
11 1 1 0.420 10.483499999999999 1.210530287683010 0.000000000000000
12 1 2 -0.420 11.182399999999999 0.000000000000000 0.000000000000000
13 1 1 0.420 12.580200000000000 0.000000000000000 0.000000000000000
14 1 2 -0.420 13.279100000000000 1.210530287683010 0.000000000000000
15 1 1 0.420 14.676900000000000 1.210530287683010 0.000000000000000
16 1 2 -0.420 15.375800000000000 0.000000000000000 0.000000000000000
17 1 1 0.420 16.773599999999998 0.000000000000000 0.000000000000000
18 1 2 -0.420 17.472500000000000 1.210530287683010 0.000000000000000
19 1 1 0.420 18.870300000000000 1.210530287683010 0.000000000000000
20 1 2 -0.420 19.569199999999999 0.000000000000000 0.000000000000000
21 1 1 0.420 20.966999999999999 0.000000000000000 0.000000000000000
22 1 2 -0.420 21.665900000000001 1.210530287683010 0.000000000000000
23 1 1 0.420 23.063699999999997 1.210530287683010 0.000000000000000
24 1 2 -0.420 23.762599999999999 0.000000000000000 0.000000000000000
25 1 1 0.420 25.160399999999999 0.000000000000000 0.000000000000000
26 1 2 -0.420 25.859299999999998 1.210530287683010 0.000000000000000
27 1 1 0.420 27.257099999999998 1.210530287683010 0.000000000000000
28 1 2 -0.420 27.956000000000000 0.000000000000000 0.000000000000000
29 1 1 0.420 29.353800000000000 0.000000000000000 0.000000000000000
30 1 2 -0.420 30.052699999999998 1.210530287683010 0.000000000000000
31 1 1 0.420 31.450499999999998 1.210530287683010 0.000000000000000
32 1 2 -0.420 32.149400000000000 0.000000000000000 0.000000000000000
33 1 1 0.420 33.547199999999997 0.000000000000000 0.000000000000000
34 1 2 -0.420 34.246099999999998 1.210530287683010 0.000000000000000
35 1 1 0.420 35.643899999999995 1.210530287683010 0.000000000000000
36 1 2 -0.420 36.342799999999997 0.000000000000000 0.000000000000000
37 1 1 0.420 37.740600000000001 0.000000000000000 0.000000000000000
38 1 2 -0.420 38.439499999999995 1.210530287683010 0.000000000000000
39 1 1 0.420 39.837299999999999 1.210530287683010 0.000000000000000
40 1 2 -0.420 40.536200000000001 0.000000000000000 0.000000000000000
41 1 1 0.420 41.933999999999997 0.000000000000000 0.000000000000000
42 1 2 -0.420 42.632899999999999 1.210530287683010 0.000000000000000
43 1 1 0.420 44.030699999999996 1.210530287683010 0.000000000000000
44 1 2 -0.420 44.729599999999998 0.000000000000000 0.000000000000000
45 1 1 0.420 0.000000000000000 2.421060575366020 0.000000000000000
46 1 2 -0.420 0.698900000000000 3.631590863049030 0.000000000000000
47 1 1 0.420 2.096700000000000 3.631590863049030 0.000000000000000
48 1 2 -0.420 2.795600000000000 2.421060575366020 0.000000000000000
49 1 1 0.420 4.193400000000000 2.421060575366020 0.000000000000000
50 1 2 -0.420 4.892300000000000 3.631590863049030 0.000000000000000
51 1 1 0.420 6.290100000000000 3.631590863049030 0.000000000000000
52 1 2 -0.420 6.989000000000000 2.421060575366020 0.000000000000000
53 1 1 0.420 8.386799999999999 2.421060575366020 0.000000000000000
54 1 2 -0.420 9.085699999999999 3.631590863049030 0.000000000000000
55 1 1 0.420 10.483499999999999 3.631590863049030 0.000000000000000
56 1 2 -0.420 11.182399999999999 2.421060575366020 0.000000000000000
57 1 1 0.420 12.580200000000000 2.421060575366020 0.000000000000000
58 1 2 -0.420 13.279100000000000 3.631590863049030 0.000000000000000
59 1 1 0.420 14.676900000000000 3.631590863049030 0.000000000000000
60 1 2 -0.420 15.375800000000000 2.421060575366020 0.000000000000000
61 1 1 0.420 16.773599999999998 2.421060575366020 0.000000000000000
62 1 2 -0.420 17.472500000000000 3.631590863049030 0.000000000000000
63 1 1 0.420 18.870300000000000 3.631590863049030 0.000000000000000
64 1 2 -0.420 19.569199999999999 2.421060575366020 0.000000000000000
65 1 1 0.420 20.966999999999999 2.421060575366020 0.000000000000000
66 1 2 -0.420 21.665900000000001 3.631590863049030 0.000000000000000
67 1 1 0.420 23.063699999999997 3.631590863049030 0.000000000000000
68 1 2 -0.420 23.762599999999999 2.421060575366020 0.000000000000000
69 1 1 0.420 25.160399999999999 2.421060575366020 0.000000000000000
70 1 2 -0.420 25.859299999999998 3.631590863049030 0.000000000000000
71 1 1 0.420 27.257099999999998 3.631590863049030 0.000000000000000
72 1 2 -0.420 27.956000000000000 2.421060575366020 0.000000000000000
73 1 1 0.420 29.353800000000000 2.421060575366020 0.000000000000000
74 1 2 -0.420 30.052699999999998 3.631590863049030 0.000000000000000
75 1 1 0.420 31.450499999999998 3.631590863049030 0.000000000000000
76 1 2 -0.420 32.149400000000000 2.421060575366020 0.000000000000000
77 1 1 0.420 33.547199999999997 2.421060575366020 0.000000000000000
78 1 2 -0.420 34.246099999999998 3.631590863049030 0.000000000000000
79 1 1 0.420 35.643899999999995 3.631590863049030 0.000000000000000
80 1 2 -0.420 36.342799999999997 2.421060575366020 0.000000000000000
81 1 1 0.420 37.740600000000001 2.421060575366020 0.000000000000000
82 1 2 -0.420 38.439499999999995 3.631590863049030 0.000000000000000
83 1 1 0.420 39.837299999999999 3.631590863049030 0.000000000000000
84 1 2 -0.420 40.536200000000001 2.421060575366020 0.000000000000000
85 1 1 0.420 41.933999999999997 2.421060575366020 0.000000000000000
86 1 2 -0.420 42.632899999999999 3.631590863049030 0.000000000000000
87 1 1 0.420 44.030699999999996 3.631590863049030 0.000000000000000
88 1 2 -0.420 44.729599999999998 2.421060575366020 0.000000000000000
89 1 1 0.420 0.000000000000000 4.842121150732040 0.000000000000000
90 1 2 -0.420 0.698900000000000 6.052651438415050 0.000000000000000
91 1 1 0.420 2.096700000000000 6.052651438415050 0.000000000000000
92 1 2 -0.420 2.795600000000000 4.842121150732040 0.000000000000000
93 1 1 0.420 4.193400000000000 4.842121150732040 0.000000000000000
94 1 2 -0.420 4.892300000000000 6.052651438415050 0.000000000000000
95 1 1 0.420 6.290100000000000 6.052651438415050 0.000000000000000
96 1 2 -0.420 6.989000000000000 4.842121150732040 0.000000000000000
97 1 1 0.420 8.386799999999999 4.842121150732040 0.000000000000000
98 1 2 -0.420 9.085699999999999 6.052651438415050 0.000000000000000
99 1 1 0.420 10.483499999999999 6.052651438415050 0.000000000000000
100 1 2 -0.420 11.182399999999999 4.842121150732040 0.000000000000000
101 1 1 0.420 12.580200000000000 4.842121150732040 0.000000000000000
102 1 2 -0.420 13.279100000000000 6.052651438415050 0.000000000000000
103 1 1 0.420 14.676900000000000 6.052651438415050 0.000000000000000
104 1 2 -0.420 15.375800000000000 4.842121150732040 0.000000000000000
105 1 1 0.420 16.773599999999998 4.842121150732040 0.000000000000000
106 1 2 -0.420 17.472500000000000 6.052651438415050 0.000000000000000
107 1 1 0.420 18.870300000000000 6.052651438415050 0.000000000000000
108 1 2 -0.420 19.569199999999999 4.842121150732040 0.000000000000000
109 1 1 0.420 20.966999999999999 4.842121150732040 0.000000000000000
110 1 2 -0.420 21.665900000000001 6.052651438415050 0.000000000000000
111 1 1 0.420 23.063699999999997 6.052651438415050 0.000000000000000
112 1 2 -0.420 23.762599999999999 4.842121150732040 0.000000000000000
113 1 1 0.420 25.160399999999999 4.842121150732040 0.000000000000000
114 1 2 -0.420 25.859299999999998 6.052651438415050 0.000000000000000
115 1 1 0.420 27.257099999999998 6.052651438415050 0.000000000000000
116 1 2 -0.420 27.956000000000000 4.842121150732040 0.000000000000000
117 1 1 0.420 29.353800000000000 4.842121150732040 0.000000000000000
118 1 2 -0.420 30.052699999999998 6.052651438415050 0.000000000000000
119 1 1 0.420 31.450499999999998 6.052651438415050 0.000000000000000
120 1 2 -0.420 32.149400000000000 4.842121150732040 0.000000000000000
121 1 1 0.420 33.547199999999997 4.842121150732040 0.000000000000000
122 1 2 -0.420 34.246099999999998 6.052651438415050 0.000000000000000
123 1 1 0.420 35.643899999999995 6.052651438415050 0.000000000000000
124 1 2 -0.420 36.342799999999997 4.842121150732040 0.000000000000000
125 1 1 0.420 37.740600000000001 4.842121150732040 0.000000000000000
126 1 2 -0.420 38.439499999999995 6.052651438415050 0.000000000000000
127 1 1 0.420 39.837299999999999 6.052651438415050 0.000000000000000
128 1 2 -0.420 40.536200000000001 4.842121150732040 0.000000000000000
129 1 1 0.420 41.933999999999997 4.842121150732040 0.000000000000000
130 1 2 -0.420 42.632899999999999 6.052651438415050 0.000000000000000
131 1 1 0.420 44.030699999999996 6.052651438415050 0.000000000000000
132 1 2 -0.420 44.729599999999998 4.842121150732040 0.000000000000000
133 1 1 0.420 0.000000000000000 7.263181726098059 0.000000000000000
134 1 2 -0.420 0.698900000000000 8.473712013781070 0.000000000000000
135 1 1 0.420 2.096700000000000 8.473712013781070 0.000000000000000
136 1 2 -0.420 2.795600000000000 7.263181726098059 0.000000000000000
137 1 1 0.420 4.193400000000000 7.263181726098059 0.000000000000000
138 1 2 -0.420 4.892300000000000 8.473712013781070 0.000000000000000
139 1 1 0.420 6.290100000000000 8.473712013781070 0.000000000000000
140 1 2 -0.420 6.989000000000000 7.263181726098059 0.000000000000000
141 1 1 0.420 8.386799999999999 7.263181726098059 0.000000000000000
142 1 2 -0.420 9.085699999999999 8.473712013781070 0.000000000000000
143 1 1 0.420 10.483499999999999 8.473712013781070 0.000000000000000
144 1 2 -0.420 11.182399999999999 7.263181726098059 0.000000000000000
145 1 1 0.420 12.580200000000000 7.263181726098059 0.000000000000000
146 1 2 -0.420 13.279100000000000 8.473712013781070 0.000000000000000
147 1 1 0.420 14.676900000000000 8.473712013781070 0.000000000000000
148 1 2 -0.420 15.375800000000000 7.263181726098059 0.000000000000000
149 1 1 0.420 16.773599999999998 7.263181726098059 0.000000000000000
150 1 2 -0.420 17.472500000000000 8.473712013781070 0.000000000000000
151 1 1 0.420 18.870300000000000 8.473712013781070 0.000000000000000
152 1 2 -0.420 19.569199999999999 7.263181726098059 0.000000000000000
153 1 1 0.420 20.966999999999999 7.263181726098059 0.000000000000000
154 1 2 -0.420 21.665900000000001 8.473712013781070 0.000000000000000
155 1 1 0.420 23.063699999999997 8.473712013781070 0.000000000000000
156 1 2 -0.420 23.762599999999999 7.263181726098059 0.000000000000000
157 1 1 0.420 25.160399999999999 7.263181726098059 0.000000000000000
158 1 2 -0.420 25.859299999999998 8.473712013781070 0.000000000000000
159 1 1 0.420 27.257099999999998 8.473712013781070 0.000000000000000
160 1 2 -0.420 27.956000000000000 7.263181726098059 0.000000000000000
161 1 1 0.420 29.353800000000000 7.263181726098059 0.000000000000000
162 1 2 -0.420 30.052699999999998 8.473712013781070 0.000000000000000
163 1 1 0.420 31.450499999999998 8.473712013781070 0.000000000000000
164 1 2 -0.420 32.149400000000000 7.263181726098059 0.000000000000000
165 1 1 0.420 33.547199999999997 7.263181726098059 0.000000000000000
166 1 2 -0.420 34.246099999999998 8.473712013781070 0.000000000000000
167 1 1 0.420 35.643899999999995 8.473712013781070 0.000000000000000
168 1 2 -0.420 36.342799999999997 7.263181726098059 0.000000000000000
169 1 1 0.420 37.740600000000001 7.263181726098059 0.000000000000000
170 1 2 -0.420 38.439499999999995 8.473712013781070 0.000000000000000
171 1 1 0.420 39.837299999999999 8.473712013781070 0.000000000000000
172 1 2 -0.420 40.536200000000001 7.263181726098059 0.000000000000000
173 1 1 0.420 41.933999999999997 7.263181726098059 0.000000000000000
174 1 2 -0.420 42.632899999999999 8.473712013781070 0.000000000000000
175 1 1 0.420 44.030699999999996 8.473712013781070 0.000000000000000
176 1 2 -0.420 44.729599999999998 7.263181726098059 0.000000000000000
177 1 1 0.420 0.000000000000000 9.684242301464080 0.000000000000000
178 1 2 -0.420 0.698900000000000 10.894772589147090 0.000000000000000
179 1 1 0.420 2.096700000000000 10.894772589147090 0.000000000000000
180 1 2 -0.420 2.795600000000000 9.684242301464080 0.000000000000000
181 1 1 0.420 4.193400000000000 9.684242301464080 0.000000000000000
182 1 2 -0.420 4.892300000000000 10.894772589147090 0.000000000000000
183 1 1 0.420 6.290100000000000 10.894772589147090 0.000000000000000
184 1 2 -0.420 6.989000000000000 9.684242301464080 0.000000000000000
185 1 1 0.420 8.386799999999999 9.684242301464080 0.000000000000000
186 1 2 -0.420 9.085699999999999 10.894772589147090 0.000000000000000
187 1 1 0.420 10.483499999999999 10.894772589147090 0.000000000000000
188 1 2 -0.420 11.182399999999999 9.684242301464080 0.000000000000000
189 1 1 0.420 12.580200000000000 9.684242301464080 0.000000000000000
190 1 2 -0.420 13.279100000000000 10.894772589147090 0.000000000000000
191 1 1 0.420 14.676900000000000 10.894772589147090 0.000000000000000
192 1 2 -0.420 15.375800000000000 9.684242301464080 0.000000000000000
193 1 1 0.420 16.773599999999998 9.684242301464080 0.000000000000000
194 1 2 -0.420 17.472500000000000 10.894772589147090 0.000000000000000
195 1 1 0.420 18.870300000000000 10.894772589147090 0.000000000000000
196 1 2 -0.420 19.569199999999999 9.684242301464080 0.000000000000000
197 1 1 0.420 20.966999999999999 9.684242301464080 0.000000000000000
198 1 2 -0.420 21.665900000000001 10.894772589147090 0.000000000000000
199 1 1 0.420 23.063699999999997 10.894772589147090 0.000000000000000
200 1 2 -0.420 23.762599999999999 9.684242301464080 0.000000000000000
201 1 1 0.420 25.160399999999999 9.684242301464080 0.000000000000000
202 1 2 -0.420 25.859299999999998 10.894772589147090 0.000000000000000
203 1 1 0.420 27.257099999999998 10.894772589147090 0.000000000000000
204 1 2 -0.420 27.956000000000000 9.684242301464080 0.000000000000000
205 1 1 0.420 29.353800000000000 9.684242301464080 0.000000000000000
206 1 2 -0.420 30.052699999999998 10.894772589147090 0.000000000000000
207 1 1 0.420 31.450499999999998 10.894772589147090 0.000000000000000
208 1 2 -0.420 32.149400000000000 9.684242301464080 0.000000000000000
209 1 1 0.420 33.547199999999997 9.684242301464080 0.000000000000000
210 1 2 -0.420 34.246099999999998 10.894772589147090 0.000000000000000
211 1 1 0.420 35.643899999999995 10.894772589147090 0.000000000000000
212 1 2 -0.420 36.342799999999997 9.684242301464080 0.000000000000000
213 1 1 0.420 37.740600000000001 9.684242301464080 0.000000000000000
214 1 2 -0.420 38.439499999999995 10.894772589147090 0.000000000000000
215 1 1 0.420 39.837299999999999 10.894772589147090 0.000000000000000
216 1 2 -0.420 40.536200000000001 9.684242301464080 0.000000000000000
217 1 1 0.420 41.933999999999997 9.684242301464080 0.000000000000000
218 1 2 -0.420 42.632899999999999 10.894772589147090 0.000000000000000
219 1 1 0.420 44.030699999999996 10.894772589147090 0.000000000000000
220 1 2 -0.420 44.729599999999998 9.684242301464080 0.000000000000000
221 1 1 0.420 0.000000000000000 12.105302876830100 0.000000000000000
222 1 2 -0.420 0.698900000000000 13.315833164513110 0.000000000000000
223 1 1 0.420 2.096700000000000 13.315833164513110 0.000000000000000
224 1 2 -0.420 2.795600000000000 12.105302876830100 0.000000000000000
225 1 1 0.420 4.193400000000000 12.105302876830100 0.000000000000000
226 1 2 -0.420 4.892300000000000 13.315833164513110 0.000000000000000
227 1 1 0.420 6.290100000000000 13.315833164513110 0.000000000000000
228 1 2 -0.420 6.989000000000000 12.105302876830100 0.000000000000000
229 1 1 0.420 8.386799999999999 12.105302876830100 0.000000000000000
230 1 2 -0.420 9.085699999999999 13.315833164513110 0.000000000000000
231 1 1 0.420 10.483499999999999 13.315833164513110 0.000000000000000
232 1 2 -0.420 11.182399999999999 12.105302876830100 0.000000000000000
233 1 1 0.420 12.580200000000000 12.105302876830100 0.000000000000000
234 1 2 -0.420 13.279100000000000 13.315833164513110 0.000000000000000
235 1 1 0.420 14.676900000000000 13.315833164513110 0.000000000000000
236 1 2 -0.420 15.375800000000000 12.105302876830100 0.000000000000000
237 1 1 0.420 16.773599999999998 12.105302876830100 0.000000000000000
238 1 2 -0.420 17.472500000000000 13.315833164513110 0.000000000000000
239 1 1 0.420 18.870300000000000 13.315833164513110 0.000000000000000
240 1 2 -0.420 19.569199999999999 12.105302876830100 0.000000000000000
241 1 1 0.420 20.966999999999999 12.105302876830100 0.000000000000000
242 1 2 -0.420 21.665900000000001 13.315833164513110 0.000000000000000
243 1 1 0.420 23.063699999999997 13.315833164513110 0.000000000000000
244 1 2 -0.420 23.762599999999999 12.105302876830100 0.000000000000000
245 1 1 0.420 25.160399999999999 12.105302876830100 0.000000000000000
246 1 2 -0.420 25.859299999999998 13.315833164513110 0.000000000000000
247 1 1 0.420 27.257099999999998 13.315833164513110 0.000000000000000
248 1 2 -0.420 27.956000000000000 12.105302876830100 0.000000000000000
249 1 1 0.420 29.353800000000000 12.105302876830100 0.000000000000000
250 1 2 -0.420 30.052699999999998 13.315833164513110 0.000000000000000
251 1 1 0.420 31.450499999999998 13.315833164513110 0.000000000000000
252 1 2 -0.420 32.149400000000000 12.105302876830100 0.000000000000000
253 1 1 0.420 33.547199999999997 12.105302876830100 0.000000000000000
254 1 2 -0.420 34.246099999999998 13.315833164513110 0.000000000000000
255 1 1 0.420 35.643899999999995 13.315833164513110 0.000000000000000
256 1 2 -0.420 36.342799999999997 12.105302876830100 0.000000000000000
257 1 1 0.420 37.740600000000001 12.105302876830100 0.000000000000000
258 1 2 -0.420 38.439499999999995 13.315833164513110 0.000000000000000
259 1 1 0.420 39.837299999999999 13.315833164513110 0.000000000000000
260 1 2 -0.420 40.536200000000001 12.105302876830100 0.000000000000000
261 1 1 0.420 41.933999999999997 12.105302876830100 0.000000000000000
262 1 2 -0.420 42.632899999999999 13.315833164513110 0.000000000000000
263 1 1 0.420 44.030699999999996 13.315833164513110 0.000000000000000
264 1 2 -0.420 44.729599999999998 12.105302876830100 0.000000000000000
265 1 1 0.420 0.000000000000000 14.526363452196119 0.000000000000000
266 1 2 -0.420 0.698900000000000 15.736893739879129 0.000000000000000
267 1 1 0.420 2.096700000000000 15.736893739879129 0.000000000000000
268 1 2 -0.420 2.795600000000000 14.526363452196119 0.000000000000000
269 1 1 0.420 4.193400000000000 14.526363452196119 0.000000000000000
270 1 2 -0.420 4.892300000000000 15.736893739879129 0.000000000000000
271 1 1 0.420 6.290100000000000 15.736893739879129 0.000000000000000
272 1 2 -0.420 6.989000000000000 14.526363452196119 0.000000000000000
273 1 1 0.420 8.386799999999999 14.526363452196119 0.000000000000000
274 1 2 -0.420 9.085699999999999 15.736893739879129 0.000000000000000
275 1 1 0.420 10.483499999999999 15.736893739879129 0.000000000000000
276 1 2 -0.420 11.182399999999999 14.526363452196119 0.000000000000000
277 1 1 0.420 12.580200000000000 14.526363452196119 0.000000000000000
278 1 2 -0.420 13.279100000000000 15.736893739879129 0.000000000000000
279 1 1 0.420 14.676900000000000 15.736893739879129 0.000000000000000
280 1 2 -0.420 15.375800000000000 14.526363452196119 0.000000000000000
281 1 1 0.420 16.773599999999998 14.526363452196119 0.000000000000000
282 1 2 -0.420 17.472500000000000 15.736893739879129 0.000000000000000
283 1 1 0.420 18.870300000000000 15.736893739879129 0.000000000000000
284 1 2 -0.420 19.569199999999999 14.526363452196119 0.000000000000000
285 1 1 0.420 20.966999999999999 14.526363452196119 0.000000000000000
286 1 2 -0.420 21.665900000000001 15.736893739879129 0.000000000000000
287 1 1 0.420 23.063699999999997 15.736893739879129 0.000000000000000
288 1 2 -0.420 23.762599999999999 14.526363452196119 0.000000000000000
289 1 1 0.420 25.160399999999999 14.526363452196119 0.000000000000000
290 1 2 -0.420 25.859299999999998 15.736893739879129 0.000000000000000
291 1 1 0.420 27.257099999999998 15.736893739879129 0.000000000000000
292 1 2 -0.420 27.956000000000000 14.526363452196119 0.000000000000000
293 1 1 0.420 29.353800000000000 14.526363452196119 0.000000000000000
294 1 2 -0.420 30.052699999999998 15.736893739879129 0.000000000000000
295 1 1 0.420 31.450499999999998 15.736893739879129 0.000000000000000
296 1 2 -0.420 32.149400000000000 14.526363452196119 0.000000000000000
297 1 1 0.420 33.547199999999997 14.526363452196119 0.000000000000000
298 1 2 -0.420 34.246099999999998 15.736893739879129 0.000000000000000
299 1 1 0.420 35.643899999999995 15.736893739879129 0.000000000000000
300 1 2 -0.420 36.342799999999997 14.526363452196119 0.000000000000000
301 1 1 0.420 37.740600000000001 14.526363452196119 0.000000000000000
302 1 2 -0.420 38.439499999999995 15.736893739879129 0.000000000000000
303 1 1 0.420 39.837299999999999 15.736893739879129 0.000000000000000
304 1 2 -0.420 40.536200000000001 14.526363452196119 0.000000000000000
305 1 1 0.420 41.933999999999997 14.526363452196119 0.000000000000000
306 1 2 -0.420 42.632899999999999 15.736893739879129 0.000000000000000
307 1 1 0.420 44.030699999999996 15.736893739879129 0.000000000000000
308 1 2 -0.420 44.729599999999998 14.526363452196119 0.000000000000000
309 1 1 0.420 0.000000000000000 16.947424027562139 0.000000000000000
310 1 2 -0.420 0.698900000000000 18.157954315245149 0.000000000000000
311 1 1 0.420 2.096700000000000 18.157954315245149 0.000000000000000
312 1 2 -0.420 2.795600000000000 16.947424027562139 0.000000000000000
313 1 1 0.420 4.193400000000000 16.947424027562139 0.000000000000000
314 1 2 -0.420 4.892300000000000 18.157954315245149 0.000000000000000
315 1 1 0.420 6.290100000000000 18.157954315245149 0.000000000000000
316 1 2 -0.420 6.989000000000000 16.947424027562139 0.000000000000000
317 1 1 0.420 8.386799999999999 16.947424027562139 0.000000000000000
318 1 2 -0.420 9.085699999999999 18.157954315245149 0.000000000000000
319 1 1 0.420 10.483499999999999 18.157954315245149 0.000000000000000
320 1 2 -0.420 11.182399999999999 16.947424027562139 0.000000000000000
321 1 1 0.420 12.580200000000000 16.947424027562139 0.000000000000000
322 1 2 -0.420 13.279100000000000 18.157954315245149 0.000000000000000
323 1 1 0.420 14.676900000000000 18.157954315245149 0.000000000000000
324 1 2 -0.420 15.375800000000000 16.947424027562139 0.000000000000000
325 1 1 0.420 16.773599999999998 16.947424027562139 0.000000000000000
326 1 2 -0.420 17.472500000000000 18.157954315245149 0.000000000000000
327 1 1 0.420 18.870300000000000 18.157954315245149 0.000000000000000
328 1 2 -0.420 19.569199999999999 16.947424027562139 0.000000000000000
329 1 1 0.420 20.966999999999999 16.947424027562139 0.000000000000000
330 1 2 -0.420 21.665900000000001 18.157954315245149 0.000000000000000
331 1 1 0.420 23.063699999999997 18.157954315245149 0.000000000000000
332 1 2 -0.420 23.762599999999999 16.947424027562139 0.000000000000000
333 1 1 0.420 25.160399999999999 16.947424027562139 0.000000000000000
334 1 2 -0.420 25.859299999999998 18.157954315245149 0.000000000000000
335 1 1 0.420 27.257099999999998 18.157954315245149 0.000000000000000
336 1 2 -0.420 27.956000000000000 16.947424027562139 0.000000000000000
337 1 1 0.420 29.353800000000000 16.947424027562139 0.000000000000000
338 1 2 -0.420 30.052699999999998 18.157954315245149 0.000000000000000
339 1 1 0.420 31.450499999999998 18.157954315245149 0.000000000000000
340 1 2 -0.420 32.149400000000000 16.947424027562139 0.000000000000000
341 1 1 0.420 33.547199999999997 16.947424027562139 0.000000000000000
342 1 2 -0.420 34.246099999999998 18.157954315245149 0.000000000000000
343 1 1 0.420 35.643899999999995 18.157954315245149 0.000000000000000
344 1 2 -0.420 36.342799999999997 16.947424027562139 0.000000000000000
345 1 1 0.420 37.740600000000001 16.947424027562139 0.000000000000000
346 1 2 -0.420 38.439499999999995 18.157954315245149 0.000000000000000
347 1 1 0.420 39.837299999999999 18.157954315245149 0.000000000000000
348 1 2 -0.420 40.536200000000001 16.947424027562139 0.000000000000000
349 1 1 0.420 41.933999999999997 16.947424027562139 0.000000000000000
350 1 2 -0.420 42.632899999999999 18.157954315245149 0.000000000000000
351 1 1 0.420 44.030699999999996 18.157954315245149 0.000000000000000
352 1 2 -0.420 44.729599999999998 16.947424027562139 0.000000000000000
353 1 1 0.420 0.000000000000000 19.368484602928159 0.000000000000000
354 1 2 -0.420 0.698900000000000 20.579014890611170 0.000000000000000
355 1 1 0.420 2.096700000000000 20.579014890611170 0.000000000000000
356 1 2 -0.420 2.795600000000000 19.368484602928159 0.000000000000000
357 1 1 0.420 4.193400000000000 19.368484602928159 0.000000000000000
358 1 2 -0.420 4.892300000000000 20.579014890611170 0.000000000000000
359 1 1 0.420 6.290100000000000 20.579014890611170 0.000000000000000
360 1 2 -0.420 6.989000000000000 19.368484602928159 0.000000000000000
361 1 1 0.420 8.386799999999999 19.368484602928159 0.000000000000000
362 1 2 -0.420 9.085699999999999 20.579014890611170 0.000000000000000
363 1 1 0.420 10.483499999999999 20.579014890611170 0.000000000000000
364 1 2 -0.420 11.182399999999999 19.368484602928159 0.000000000000000
365 1 1 0.420 12.580200000000000 19.368484602928159 0.000000000000000
366 1 2 -0.420 13.279100000000000 20.579014890611170 0.000000000000000
367 1 1 0.420 14.676900000000000 20.579014890611170 0.000000000000000
368 1 2 -0.420 15.375800000000000 19.368484602928159 0.000000000000000
369 1 1 0.420 16.773599999999998 19.368484602928159 0.000000000000000
370 1 2 -0.420 17.472500000000000 20.579014890611170 0.000000000000000
371 1 1 0.420 18.870300000000000 20.579014890611170 0.000000000000000
372 1 2 -0.420 19.569199999999999 19.368484602928159 0.000000000000000
373 1 1 0.420 20.966999999999999 19.368484602928159 0.000000000000000
374 1 2 -0.420 21.665900000000001 20.579014890611170 0.000000000000000
375 1 1 0.420 23.063699999999997 20.579014890611170 0.000000000000000
376 1 2 -0.420 23.762599999999999 19.368484602928159 0.000000000000000
377 1 1 0.420 25.160399999999999 19.368484602928159 0.000000000000000
378 1 2 -0.420 25.859299999999998 20.579014890611170 0.000000000000000
379 1 1 0.420 27.257099999999998 20.579014890611170 0.000000000000000
380 1 2 -0.420 27.956000000000000 19.368484602928159 0.000000000000000
381 1 1 0.420 29.353800000000000 19.368484602928159 0.000000000000000
382 1 2 -0.420 30.052699999999998 20.579014890611170 0.000000000000000
383 1 1 0.420 31.450499999999998 20.579014890611170 0.000000000000000
384 1 2 -0.420 32.149400000000000 19.368484602928159 0.000000000000000
385 1 1 0.420 33.547199999999997 19.368484602928159 0.000000000000000
386 1 2 -0.420 34.246099999999998 20.579014890611170 0.000000000000000
387 1 1 0.420 35.643899999999995 20.579014890611170 0.000000000000000
388 1 2 -0.420 36.342799999999997 19.368484602928159 0.000000000000000
389 1 1 0.420 37.740600000000001 19.368484602928159 0.000000000000000
390 1 2 -0.420 38.439499999999995 20.579014890611170 0.000000000000000
391 1 1 0.420 39.837299999999999 20.579014890611170 0.000000000000000
392 1 2 -0.420 40.536200000000001 19.368484602928159 0.000000000000000
393 1 1 0.420 41.933999999999997 19.368484602928159 0.000000000000000
394 1 2 -0.420 42.632899999999999 20.579014890611170 0.000000000000000
395 1 1 0.420 44.030699999999996 20.579014890611170 0.000000000000000
396 1 2 -0.420 44.729599999999998 19.368484602928159 0.000000000000000
397 1 1 0.420 0.000000000000000 21.789545178294180 0.000000000000000
398 1 2 -0.420 0.698900000000000 23.000075465977190 0.000000000000000
399 1 1 0.420 2.096700000000000 23.000075465977190 0.000000000000000
400 1 2 -0.420 2.795600000000000 21.789545178294180 0.000000000000000
401 1 1 0.420 4.193400000000000 21.789545178294180 0.000000000000000
402 1 2 -0.420 4.892300000000000 23.000075465977190 0.000000000000000
403 1 1 0.420 6.290100000000000 23.000075465977190 0.000000000000000
404 1 2 -0.420 6.989000000000000 21.789545178294180 0.000000000000000
405 1 1 0.420 8.386799999999999 21.789545178294180 0.000000000000000
406 1 2 -0.420 9.085699999999999 23.000075465977190 0.000000000000000
407 1 1 0.420 10.483499999999999 23.000075465977190 0.000000000000000
408 1 2 -0.420 11.182399999999999 21.789545178294180 0.000000000000000
409 1 1 0.420 12.580200000000000 21.789545178294180 0.000000000000000
410 1 2 -0.420 13.279100000000000 23.000075465977190 0.000000000000000
411 1 1 0.420 14.676900000000000 23.000075465977190 0.000000000000000
412 1 2 -0.420 15.375800000000000 21.789545178294180 0.000000000000000
413 1 1 0.420 16.773599999999998 21.789545178294180 0.000000000000000
414 1 2 -0.420 17.472500000000000 23.000075465977190 0.000000000000000
415 1 1 0.420 18.870300000000000 23.000075465977190 0.000000000000000
416 1 2 -0.420 19.569199999999999 21.789545178294180 0.000000000000000
417 1 1 0.420 20.966999999999999 21.789545178294180 0.000000000000000
418 1 2 -0.420 21.665900000000001 23.000075465977190 0.000000000000000
419 1 1 0.420 23.063699999999997 23.000075465977190 0.000000000000000
420 1 2 -0.420 23.762599999999999 21.789545178294180 0.000000000000000
421 1 1 0.420 25.160399999999999 21.789545178294180 0.000000000000000
422 1 2 -0.420 25.859299999999998 23.000075465977190 0.000000000000000
423 1 1 0.420 27.257099999999998 23.000075465977190 0.000000000000000
424 1 2 -0.420 27.956000000000000 21.789545178294180 0.000000000000000
425 1 1 0.420 29.353800000000000 21.789545178294180 0.000000000000000
426 1 2 -0.420 30.052699999999998 23.000075465977190 0.000000000000000
427 1 1 0.420 31.450499999999998 23.000075465977190 0.000000000000000
428 1 2 -0.420 32.149400000000000 21.789545178294180 0.000000000000000
429 1 1 0.420 33.547199999999997 21.789545178294180 0.000000000000000
430 1 2 -0.420 34.246099999999998 23.000075465977190 0.000000000000000
431 1 1 0.420 35.643899999999995 23.000075465977190 0.000000000000000
432 1 2 -0.420 36.342799999999997 21.789545178294180 0.000000000000000
433 1 1 0.420 37.740600000000001 21.789545178294180 0.000000000000000
434 1 2 -0.420 38.439499999999995 23.000075465977190 0.000000000000000
435 1 1 0.420 39.837299999999999 23.000075465977190 0.000000000000000
436 1 2 -0.420 40.536200000000001 21.789545178294180 0.000000000000000
437 1 1 0.420 41.933999999999997 21.789545178294180 0.000000000000000
438 1 2 -0.420 42.632899999999999 23.000075465977190 0.000000000000000
439 1 1 0.420 44.030699999999996 23.000075465977190 0.000000000000000
440 1 2 -0.420 44.729599999999998 21.789545178294180 0.000000000000000
441 1 1 0.420 0.000000000000000 24.210605753660200 0.000000000000000
442 1 2 -0.420 0.698900000000000 25.421136041343210 0.000000000000000
443 1 1 0.420 2.096700000000000 25.421136041343210 0.000000000000000
444 1 2 -0.420 2.795600000000000 24.210605753660200 0.000000000000000
445 1 1 0.420 4.193400000000000 24.210605753660200 0.000000000000000
446 1 2 -0.420 4.892300000000000 25.421136041343210 0.000000000000000
447 1 1 0.420 6.290100000000000 25.421136041343210 0.000000000000000
448 1 2 -0.420 6.989000000000000 24.210605753660200 0.000000000000000
449 1 1 0.420 8.386799999999999 24.210605753660200 0.000000000000000
450 1 2 -0.420 9.085699999999999 25.421136041343210 0.000000000000000
451 1 1 0.420 10.483499999999999 25.421136041343210 0.000000000000000
452 1 2 -0.420 11.182399999999999 24.210605753660200 0.000000000000000
453 1 1 0.420 12.580200000000000 24.210605753660200 0.000000000000000
454 1 2 -0.420 13.279100000000000 25.421136041343210 0.000000000000000
455 1 1 0.420 14.676900000000000 25.421136041343210 0.000000000000000
456 1 2 -0.420 15.375800000000000 24.210605753660200 0.000000000000000
457 1 1 0.420 16.773599999999998 24.210605753660200 0.000000000000000
458 1 2 -0.420 17.472500000000000 25.421136041343210 0.000000000000000
459 1 1 0.420 18.870300000000000 25.421136041343210 0.000000000000000
460 1 2 -0.420 19.569199999999999 24.210605753660200 0.000000000000000
461 1 1 0.420 20.966999999999999 24.210605753660200 0.000000000000000
462 1 2 -0.420 21.665900000000001 25.421136041343210 0.000000000000000
463 1 1 0.420 23.063699999999997 25.421136041343210 0.000000000000000
464 1 2 -0.420 23.762599999999999 24.210605753660200 0.000000000000000
465 1 1 0.420 25.160399999999999 24.210605753660200 0.000000000000000
466 1 2 -0.420 25.859299999999998 25.421136041343210 0.000000000000000
467 1 1 0.420 27.257099999999998 25.421136041343210 0.000000000000000
468 1 2 -0.420 27.956000000000000 24.210605753660200 0.000000000000000
469 1 1 0.420 29.353800000000000 24.210605753660200 0.000000000000000
470 1 2 -0.420 30.052699999999998 25.421136041343210 0.000000000000000
471 1 1 0.420 31.450499999999998 25.421136041343210 0.000000000000000
472 1 2 -0.420 32.149400000000000 24.210605753660200 0.000000000000000
473 1 1 0.420 33.547199999999997 24.210605753660200 0.000000000000000
474 1 2 -0.420 34.246099999999998 25.421136041343210 0.000000000000000
475 1 1 0.420 35.643899999999995 25.421136041343210 0.000000000000000
476 1 2 -0.420 36.342799999999997 24.210605753660200 0.000000000000000
477 1 1 0.420 37.740600000000001 24.210605753660200 0.000000000000000
478 1 2 -0.420 38.439499999999995 25.421136041343210 0.000000000000000
479 1 1 0.420 39.837299999999999 25.421136041343210 0.000000000000000
480 1 2 -0.420 40.536200000000001 24.210605753660200 0.000000000000000
481 1 1 0.420 41.933999999999997 24.210605753660200 0.000000000000000
482 1 2 -0.420 42.632899999999999 25.421136041343210 0.000000000000000
483 1 1 0.420 44.030699999999996 25.421136041343210 0.000000000000000
484 1 2 -0.420 44.729599999999998 24.210605753660200 0.000000000000000
485 1 1 0.420 0.000000000000000 26.631666329026221 0.000000000000000
486 1 2 -0.420 0.698900000000000 27.842196616709231 0.000000000000000
487 1 1 0.420 2.096700000000000 27.842196616709231 0.000000000000000
488 1 2 -0.420 2.795600000000000 26.631666329026221 0.000000000000000
489 1 1 0.420 4.193400000000000 26.631666329026221 0.000000000000000
490 1 2 -0.420 4.892300000000000 27.842196616709231 0.000000000000000
491 1 1 0.420 6.290100000000000 27.842196616709231 0.000000000000000
492 1 2 -0.420 6.989000000000000 26.631666329026221 0.000000000000000
493 1 1 0.420 8.386799999999999 26.631666329026221 0.000000000000000
494 1 2 -0.420 9.085699999999999 27.842196616709231 0.000000000000000
495 1 1 0.420 10.483499999999999 27.842196616709231 0.000000000000000
496 1 2 -0.420 11.182399999999999 26.631666329026221 0.000000000000000
497 1 1 0.420 12.580200000000000 26.631666329026221 0.000000000000000
498 1 2 -0.420 13.279100000000000 27.842196616709231 0.000000000000000
499 1 1 0.420 14.676900000000000 27.842196616709231 0.000000000000000
500 1 2 -0.420 15.375800000000000 26.631666329026221 0.000000000000000
501 1 1 0.420 16.773599999999998 26.631666329026221 0.000000000000000
502 1 2 -0.420 17.472500000000000 27.842196616709231 0.000000000000000
503 1 1 0.420 18.870300000000000 27.842196616709231 0.000000000000000
504 1 2 -0.420 19.569199999999999 26.631666329026221 0.000000000000000
505 1 1 0.420 20.966999999999999 26.631666329026221 0.000000000000000
506 1 2 -0.420 21.665900000000001 27.842196616709231 0.000000000000000
507 1 1 0.420 23.063699999999997 27.842196616709231 0.000000000000000
508 1 2 -0.420 23.762599999999999 26.631666329026221 0.000000000000000
509 1 1 0.420 25.160399999999999 26.631666329026221 0.000000000000000
510 1 2 -0.420 25.859299999999998 27.842196616709231 0.000000000000000
511 1 1 0.420 27.257099999999998 27.842196616709231 0.000000000000000
512 1 2 -0.420 27.956000000000000 26.631666329026221 0.000000000000000
513 1 1 0.420 29.353800000000000 26.631666329026221 0.000000000000000
514 1 2 -0.420 30.052699999999998 27.842196616709231 0.000000000000000
515 1 1 0.420 31.450499999999998 27.842196616709231 0.000000000000000
516 1 2 -0.420 32.149400000000000 26.631666329026221 0.000000000000000
517 1 1 0.420 33.547199999999997 26.631666329026221 0.000000000000000
518 1 2 -0.420 34.246099999999998 27.842196616709231 0.000000000000000
519 1 1 0.420 35.643899999999995 27.842196616709231 0.000000000000000
520 1 2 -0.420 36.342799999999997 26.631666329026221 0.000000000000000
521 1 1 0.420 37.740600000000001 26.631666329026221 0.000000000000000
522 1 2 -0.420 38.439499999999995 27.842196616709231 0.000000000000000
523 1 1 0.420 39.837299999999999 27.842196616709231 0.000000000000000
524 1 2 -0.420 40.536200000000001 26.631666329026221 0.000000000000000
525 1 1 0.420 41.933999999999997 26.631666329026221 0.000000000000000
526 1 2 -0.420 42.632899999999999 27.842196616709231 0.000000000000000
527 1 1 0.420 44.030699999999996 27.842196616709231 0.000000000000000
528 1 2 -0.420 44.729599999999998 26.631666329026221 0.000000000000000
529 1 1 0.420 0.000000000000000 29.052726904392237 0.000000000000000
530 1 2 -0.420 0.698900000000000 30.263257192075248 0.000000000000000
531 1 1 0.420 2.096700000000000 30.263257192075248 0.000000000000000
532 1 2 -0.420 2.795600000000000 29.052726904392237 0.000000000000000
533 1 1 0.420 4.193400000000000 29.052726904392237 0.000000000000000
534 1 2 -0.420 4.892300000000000 30.263257192075248 0.000000000000000
535 1 1 0.420 6.290100000000000 30.263257192075248 0.000000000000000
536 1 2 -0.420 6.989000000000000 29.052726904392237 0.000000000000000
537 1 1 0.420 8.386799999999999 29.052726904392237 0.000000000000000
538 1 2 -0.420 9.085699999999999 30.263257192075248 0.000000000000000
539 1 1 0.420 10.483499999999999 30.263257192075248 0.000000000000000
540 1 2 -0.420 11.182399999999999 29.052726904392237 0.000000000000000
541 1 1 0.420 12.580200000000000 29.052726904392237 0.000000000000000
542 1 2 -0.420 13.279100000000000 30.263257192075248 0.000000000000000
543 1 1 0.420 14.676900000000000 30.263257192075248 0.000000000000000
544 1 2 -0.420 15.375800000000000 29.052726904392237 0.000000000000000
545 1 1 0.420 16.773599999999998 29.052726904392237 0.000000000000000
546 1 2 -0.420 17.472500000000000 30.263257192075248 0.000000000000000
547 1 1 0.420 18.870300000000000 30.263257192075248 0.000000000000000
548 1 2 -0.420 19.569199999999999 29.052726904392237 0.000000000000000
549 1 1 0.420 20.966999999999999 29.052726904392237 0.000000000000000
550 1 2 -0.420 21.665900000000001 30.263257192075248 0.000000000000000
551 1 1 0.420 23.063699999999997 30.263257192075248 0.000000000000000
552 1 2 -0.420 23.762599999999999 29.052726904392237 0.000000000000000
553 1 1 0.420 25.160399999999999 29.052726904392237 0.000000000000000
554 1 2 -0.420 25.859299999999998 30.263257192075248 0.000000000000000
555 1 1 0.420 27.257099999999998 30.263257192075248 0.000000000000000
556 1 2 -0.420 27.956000000000000 29.052726904392237 0.000000000000000
557 1 1 0.420 29.353800000000000 29.052726904392237 0.000000000000000
558 1 2 -0.420 30.052699999999998 30.263257192075248 0.000000000000000
559 1 1 0.420 31.450499999999998 30.263257192075248 0.000000000000000
560 1 2 -0.420 32.149400000000000 29.052726904392237 0.000000000000000
561 1 1 0.420 33.547199999999997 29.052726904392237 0.000000000000000
562 1 2 -0.420 34.246099999999998 30.263257192075248 0.000000000000000
563 1 1 0.420 35.643899999999995 30.263257192075248 0.000000000000000
564 1 2 -0.420 36.342799999999997 29.052726904392237 0.000000000000000
565 1 1 0.420 37.740600000000001 29.052726904392237 0.000000000000000
566 1 2 -0.420 38.439499999999995 30.263257192075248 0.000000000000000
567 1 1 0.420 39.837299999999999 30.263257192075248 0.000000000000000
568 1 2 -0.420 40.536200000000001 29.052726904392237 0.000000000000000
569 1 1 0.420 41.933999999999997 29.052726904392237 0.000000000000000
570 1 2 -0.420 42.632899999999999 30.263257192075248 0.000000000000000
571 1 1 0.420 44.030699999999996 30.263257192075248 0.000000000000000
572 1 2 -0.420 44.729599999999998 29.052726904392237 0.000000000000000
573 1 1 0.420 0.000000000000000 31.473787479758258 0.000000000000000
574 1 2 -0.420 0.698900000000000 32.684317767441271 0.000000000000000
575 1 1 0.420 2.096700000000000 32.684317767441271 0.000000000000000
576 1 2 -0.420 2.795600000000000 31.473787479758258 0.000000000000000
577 1 1 0.420 4.193400000000000 31.473787479758258 0.000000000000000
578 1 2 -0.420 4.892300000000000 32.684317767441271 0.000000000000000
579 1 1 0.420 6.290100000000000 32.684317767441271 0.000000000000000
580 1 2 -0.420 6.989000000000000 31.473787479758258 0.000000000000000
581 1 1 0.420 8.386799999999999 31.473787479758258 0.000000000000000
582 1 2 -0.420 9.085699999999999 32.684317767441271 0.000000000000000
583 1 1 0.420 10.483499999999999 32.684317767441271 0.000000000000000
584 1 2 -0.420 11.182399999999999 31.473787479758258 0.000000000000000
585 1 1 0.420 12.580200000000000 31.473787479758258 0.000000000000000
586 1 2 -0.420 13.279100000000000 32.684317767441271 0.000000000000000
587 1 1 0.420 14.676900000000000 32.684317767441271 0.000000000000000
588 1 2 -0.420 15.375800000000000 31.473787479758258 0.000000000000000
589 1 1 0.420 16.773599999999998 31.473787479758258 0.000000000000000
590 1 2 -0.420 17.472500000000000 32.684317767441271 0.000000000000000
591 1 1 0.420 18.870300000000000 32.684317767441271 0.000000000000000
592 1 2 -0.420 19.569199999999999 31.473787479758258 0.000000000000000
593 1 1 0.420 20.966999999999999 31.473787479758258 0.000000000000000
594 1 2 -0.420 21.665900000000001 32.684317767441271 0.000000000000000
595 1 1 0.420 23.063699999999997 32.684317767441271 0.000000000000000
596 1 2 -0.420 23.762599999999999 31.473787479758258 0.000000000000000
597 1 1 0.420 25.160399999999999 31.473787479758258 0.000000000000000
598 1 2 -0.420 25.859299999999998 32.684317767441271 0.000000000000000
599 1 1 0.420 27.257099999999998 32.684317767441271 0.000000000000000
600 1 2 -0.420 27.956000000000000 31.473787479758258 0.000000000000000
601 1 1 0.420 29.353800000000000 31.473787479758258 0.000000000000000
602 1 2 -0.420 30.052699999999998 32.684317767441271 0.000000000000000
603 1 1 0.420 31.450499999999998 32.684317767441271 0.000000000000000
604 1 2 -0.420 32.149400000000000 31.473787479758258 0.000000000000000
605 1 1 0.420 33.547199999999997 31.473787479758258 0.000000000000000
606 1 2 -0.420 34.246099999999998 32.684317767441271 0.000000000000000
607 1 1 0.420 35.643899999999995 32.684317767441271 0.000000000000000
608 1 2 -0.420 36.342799999999997 31.473787479758258 0.000000000000000
609 1 1 0.420 37.740600000000001 31.473787479758258 0.000000000000000
610 1 2 -0.420 38.439499999999995 32.684317767441271 0.000000000000000
611 1 1 0.420 39.837299999999999 32.684317767441271 0.000000000000000
612 1 2 -0.420 40.536200000000001 31.473787479758258 0.000000000000000
613 1 1 0.420 41.933999999999997 31.473787479758258 0.000000000000000
614 1 2 -0.420 42.632899999999999 32.684317767441271 0.000000000000000
615 1 1 0.420 44.030699999999996 32.684317767441271 0.000000000000000
616 1 2 -0.420 44.729599999999998 31.473787479758258 0.000000000000000
617 1 1 0.420 0.000000000000000 33.894848055124278 0.000000000000000
618 1 2 -0.420 0.698900000000000 35.105378342807292 0.000000000000000
619 1 1 0.420 2.096700000000000 35.105378342807292 0.000000000000000
620 1 2 -0.420 2.795600000000000 33.894848055124278 0.000000000000000
621 1 1 0.420 4.193400000000000 33.894848055124278 0.000000000000000
622 1 2 -0.420 4.892300000000000 35.105378342807292 0.000000000000000
623 1 1 0.420 6.290100000000000 35.105378342807292 0.000000000000000
624 1 2 -0.420 6.989000000000000 33.894848055124278 0.000000000000000
625 1 1 0.420 8.386799999999999 33.894848055124278 0.000000000000000
626 1 2 -0.420 9.085699999999999 35.105378342807292 0.000000000000000
627 1 1 0.420 10.483499999999999 35.105378342807292 0.000000000000000
628 1 2 -0.420 11.182399999999999 33.894848055124278 0.000000000000000
629 1 1 0.420 12.580200000000000 33.894848055124278 0.000000000000000
630 1 2 -0.420 13.279100000000000 35.105378342807292 0.000000000000000
631 1 1 0.420 14.676900000000000 35.105378342807292 0.000000000000000
632 1 2 -0.420 15.375800000000000 33.894848055124278 0.000000000000000
633 1 1 0.420 16.773599999999998 33.894848055124278 0.000000000000000
634 1 2 -0.420 17.472500000000000 35.105378342807292 0.000000000000000
635 1 1 0.420 18.870300000000000 35.105378342807292 0.000000000000000
636 1 2 -0.420 19.569199999999999 33.894848055124278 0.000000000000000
637 1 1 0.420 20.966999999999999 33.894848055124278 0.000000000000000
638 1 2 -0.420 21.665900000000001 35.105378342807292 0.000000000000000
639 1 1 0.420 23.063699999999997 35.105378342807292 0.000000000000000
640 1 2 -0.420 23.762599999999999 33.894848055124278 0.000000000000000
641 1 1 0.420 25.160399999999999 33.894848055124278 0.000000000000000
642 1 2 -0.420 25.859299999999998 35.105378342807292 0.000000000000000
643 1 1 0.420 27.257099999999998 35.105378342807292 0.000000000000000
644 1 2 -0.420 27.956000000000000 33.894848055124278 0.000000000000000
645 1 1 0.420 29.353800000000000 33.894848055124278 0.000000000000000
646 1 2 -0.420 30.052699999999998 35.105378342807292 0.000000000000000
647 1 1 0.420 31.450499999999998 35.105378342807292 0.000000000000000
648 1 2 -0.420 32.149400000000000 33.894848055124278 0.000000000000000
649 1 1 0.420 33.547199999999997 33.894848055124278 0.000000000000000
650 1 2 -0.420 34.246099999999998 35.105378342807292 0.000000000000000
651 1 1 0.420 35.643899999999995 35.105378342807292 0.000000000000000
652 1 2 -0.420 36.342799999999997 33.894848055124278 0.000000000000000
653 1 1 0.420 37.740600000000001 33.894848055124278 0.000000000000000
654 1 2 -0.420 38.439499999999995 35.105378342807292 0.000000000000000
655 1 1 0.420 39.837299999999999 35.105378342807292 0.000000000000000
656 1 2 -0.420 40.536200000000001 33.894848055124278 0.000000000000000
657 1 1 0.420 41.933999999999997 33.894848055124278 0.000000000000000
658 1 2 -0.420 42.632899999999999 35.105378342807292 0.000000000000000
659 1 1 0.420 44.030699999999996 35.105378342807292 0.000000000000000
660 1 2 -0.420 44.729599999999998 33.894848055124278 0.000000000000000
661 1 1 0.420 0.000000000000000 36.315908630490298 0.000000000000000
662 1 2 -0.420 0.698900000000000 37.526438918173312 0.000000000000000
663 1 1 0.420 2.096700000000000 37.526438918173312 0.000000000000000
664 1 2 -0.420 2.795600000000000 36.315908630490298 0.000000000000000
665 1 1 0.420 4.193400000000000 36.315908630490298 0.000000000000000
666 1 2 -0.420 4.892300000000000 37.526438918173312 0.000000000000000
667 1 1 0.420 6.290100000000000 37.526438918173312 0.000000000000000
668 1 2 -0.420 6.989000000000000 36.315908630490298 0.000000000000000
669 1 1 0.420 8.386799999999999 36.315908630490298 0.000000000000000
670 1 2 -0.420 9.085699999999999 37.526438918173312 0.000000000000000
671 1 1 0.420 10.483499999999999 37.526438918173312 0.000000000000000
672 1 2 -0.420 11.182399999999999 36.315908630490298 0.000000000000000
673 1 1 0.420 12.580200000000000 36.315908630490298 0.000000000000000
674 1 2 -0.420 13.279100000000000 37.526438918173312 0.000000000000000
675 1 1 0.420 14.676900000000000 37.526438918173312 0.000000000000000
676 1 2 -0.420 15.375800000000000 36.315908630490298 0.000000000000000
677 1 1 0.420 16.773599999999998 36.315908630490298 0.000000000000000
678 1 2 -0.420 17.472500000000000 37.526438918173312 0.000000000000000
679 1 1 0.420 18.870300000000000 37.526438918173312 0.000000000000000
680 1 2 -0.420 19.569199999999999 36.315908630490298 0.000000000000000
681 1 1 0.420 20.966999999999999 36.315908630490298 0.000000000000000
682 1 2 -0.420 21.665900000000001 37.526438918173312 0.000000000000000
683 1 1 0.420 23.063699999999997 37.526438918173312 0.000000000000000
684 1 2 -0.420 23.762599999999999 36.315908630490298 0.000000000000000
685 1 1 0.420 25.160399999999999 36.315908630490298 0.000000000000000
686 1 2 -0.420 25.859299999999998 37.526438918173312 0.000000000000000
687 1 1 0.420 27.257099999999998 37.526438918173312 0.000000000000000
688 1 2 -0.420 27.956000000000000 36.315908630490298 0.000000000000000
689 1 1 0.420 29.353800000000000 36.315908630490298 0.000000000000000
690 1 2 -0.420 30.052699999999998 37.526438918173312 0.000000000000000
691 1 1 0.420 31.450499999999998 37.526438918173312 0.000000000000000
692 1 2 -0.420 32.149400000000000 36.315908630490298 0.000000000000000
693 1 1 0.420 33.547199999999997 36.315908630490298 0.000000000000000
694 1 2 -0.420 34.246099999999998 37.526438918173312 0.000000000000000
695 1 1 0.420 35.643899999999995 37.526438918173312 0.000000000000000
696 1 2 -0.420 36.342799999999997 36.315908630490298 0.000000000000000
697 1 1 0.420 37.740600000000001 36.315908630490298 0.000000000000000
698 1 2 -0.420 38.439499999999995 37.526438918173312 0.000000000000000
699 1 1 0.420 39.837299999999999 37.526438918173312 0.000000000000000
700 1 2 -0.420 40.536200000000001 36.315908630490298 0.000000000000000
701 1 1 0.420 41.933999999999997 36.315908630490298 0.000000000000000
702 1 2 -0.420 42.632899999999999 37.526438918173312 0.000000000000000
703 1 1 0.420 44.030699999999996 37.526438918173312 0.000000000000000
704 1 2 -0.420 44.729599999999998 36.315908630490298 0.000000000000000
705 1 1 0.420 0.000000000000000 38.736969205856319 0.000000000000000
706 1 2 -0.420 0.698900000000000 39.947499493539325 0.000000000000000
707 1 1 0.420 2.096700000000000 39.947499493539325 0.000000000000000
708 1 2 -0.420 2.795600000000000 38.736969205856319 0.000000000000000
709 1 1 0.420 4.193400000000000 38.736969205856319 0.000000000000000
710 1 2 -0.420 4.892300000000000 39.947499493539325 0.000000000000000
711 1 1 0.420 6.290100000000000 39.947499493539325 0.000000000000000
712 1 2 -0.420 6.989000000000000 38.736969205856319 0.000000000000000
713 1 1 0.420 8.386799999999999 38.736969205856319 0.000000000000000
714 1 2 -0.420 9.085699999999999 39.947499493539325 0.000000000000000
715 1 1 0.420 10.483499999999999 39.947499493539325 0.000000000000000
716 1 2 -0.420 11.182399999999999 38.736969205856319 0.000000000000000
717 1 1 0.420 12.580200000000000 38.736969205856319 0.000000000000000
718 1 2 -0.420 13.279100000000000 39.947499493539325 0.000000000000000
719 1 1 0.420 14.676900000000000 39.947499493539325 0.000000000000000
720 1 2 -0.420 15.375800000000000 38.736969205856319 0.000000000000000
721 1 1 0.420 16.773599999999998 38.736969205856319 0.000000000000000
722 1 2 -0.420 17.472500000000000 39.947499493539325 0.000000000000000
723 1 1 0.420 18.870300000000000 39.947499493539325 0.000000000000000
724 1 2 -0.420 19.569199999999999 38.736969205856319 0.000000000000000
725 1 1 0.420 20.966999999999999 38.736969205856319 0.000000000000000
726 1 2 -0.420 21.665900000000001 39.947499493539325 0.000000000000000
727 1 1 0.420 23.063699999999997 39.947499493539325 0.000000000000000
728 1 2 -0.420 23.762599999999999 38.736969205856319 0.000000000000000
729 1 1 0.420 25.160399999999999 38.736969205856319 0.000000000000000
730 1 2 -0.420 25.859299999999998 39.947499493539325 0.000000000000000
731 1 1 0.420 27.257099999999998 39.947499493539325 0.000000000000000
732 1 2 -0.420 27.956000000000000 38.736969205856319 0.000000000000000
733 1 1 0.420 29.353800000000000 38.736969205856319 0.000000000000000
734 1 2 -0.420 30.052699999999998 39.947499493539325 0.000000000000000
735 1 1 0.420 31.450499999999998 39.947499493539325 0.000000000000000
736 1 2 -0.420 32.149400000000000 38.736969205856319 0.000000000000000
737 1 1 0.420 33.547199999999997 38.736969205856319 0.000000000000000
738 1 2 -0.420 34.246099999999998 39.947499493539325 0.000000000000000
739 1 1 0.420 35.643899999999995 39.947499493539325 0.000000000000000
740 1 2 -0.420 36.342799999999997 38.736969205856319 0.000000000000000
741 1 1 0.420 37.740600000000001 38.736969205856319 0.000000000000000
742 1 2 -0.420 38.439499999999995 39.947499493539325 0.000000000000000
743 1 1 0.420 39.837299999999999 39.947499493539325 0.000000000000000
744 1 2 -0.420 40.536200000000001 38.736969205856319 0.000000000000000
745 1 1 0.420 41.933999999999997 38.736969205856319 0.000000000000000
746 1 2 -0.420 42.632899999999999 39.947499493539325 0.000000000000000
747 1 1 0.420 44.030699999999996 39.947499493539325 0.000000000000000
748 1 2 -0.420 44.729599999999998 38.736969205856319 0.000000000000000
749 1 1 0.420 0.000000000000000 41.158029781222339 0.000000000000000
750 1 2 -0.420 0.698900000000000 42.368560068905346 0.000000000000000
751 1 1 0.420 2.096700000000000 42.368560068905346 0.000000000000000
752 1 2 -0.420 2.795600000000000 41.158029781222339 0.000000000000000
753 1 1 0.420 4.193400000000000 41.158029781222339 0.000000000000000
754 1 2 -0.420 4.892300000000000 42.368560068905346 0.000000000000000
755 1 1 0.420 6.290100000000000 42.368560068905346 0.000000000000000
756 1 2 -0.420 6.989000000000000 41.158029781222339 0.000000000000000
757 1 1 0.420 8.386799999999999 41.158029781222339 0.000000000000000
758 1 2 -0.420 9.085699999999999 42.368560068905346 0.000000000000000
759 1 1 0.420 10.483499999999999 42.368560068905346 0.000000000000000
760 1 2 -0.420 11.182399999999999 41.158029781222339 0.000000000000000
761 1 1 0.420 12.580200000000000 41.158029781222339 0.000000000000000
762 1 2 -0.420 13.279100000000000 42.368560068905346 0.000000000000000
763 1 1 0.420 14.676900000000000 42.368560068905346 0.000000000000000
764 1 2 -0.420 15.375800000000000 41.158029781222339 0.000000000000000
765 1 1 0.420 16.773599999999998 41.158029781222339 0.000000000000000
766 1 2 -0.420 17.472500000000000 42.368560068905346 0.000000000000000
767 1 1 0.420 18.870300000000000 42.368560068905346 0.000000000000000
768 1 2 -0.420 19.569199999999999 41.158029781222339 0.000000000000000
769 1 1 0.420 20.966999999999999 41.158029781222339 0.000000000000000
770 1 2 -0.420 21.665900000000001 42.368560068905346 0.000000000000000
771 1 1 0.420 23.063699999999997 42.368560068905346 0.000000000000000
772 1 2 -0.420 23.762599999999999 41.158029781222339 0.000000000000000
773 1 1 0.420 25.160399999999999 41.158029781222339 0.000000000000000
774 1 2 -0.420 25.859299999999998 42.368560068905346 0.000000000000000
775 1 1 0.420 27.257099999999998 42.368560068905346 0.000000000000000
776 1 2 -0.420 27.956000000000000 41.158029781222339 0.000000000000000
777 1 1 0.420 29.353800000000000 41.158029781222339 0.000000000000000
778 1 2 -0.420 30.052699999999998 42.368560068905346 0.000000000000000
779 1 1 0.420 31.450499999999998 42.368560068905346 0.000000000000000
780 1 2 -0.420 32.149400000000000 41.158029781222339 0.000000000000000
781 1 1 0.420 33.547199999999997 41.158029781222339 0.000000000000000
782 1 2 -0.420 34.246099999999998 42.368560068905346 0.000000000000000
783 1 1 0.420 35.643899999999995 42.368560068905346 0.000000000000000
784 1 2 -0.420 36.342799999999997 41.158029781222339 0.000000000000000
785 1 1 0.420 37.740600000000001 41.158029781222339 0.000000000000000
786 1 2 -0.420 38.439499999999995 42.368560068905346 0.000000000000000
787 1 1 0.420 39.837299999999999 42.368560068905346 0.000000000000000
788 1 2 -0.420 40.536200000000001 41.158029781222339 0.000000000000000
789 1 1 0.420 41.933999999999997 41.158029781222339 0.000000000000000
790 1 2 -0.420 42.632899999999999 42.368560068905346 0.000000000000000
791 1 1 0.420 44.030699999999996 42.368560068905346 0.000000000000000
792 1 2 -0.420 44.729599999999998 41.158029781222339 0.000000000000000
793 1 1 0.420 0.000000000000000 43.579090356588360 0.000000000000000
794 1 2 -0.420 0.698900000000000 44.789620644271366 0.000000000000000
795 1 1 0.420 2.096700000000000 44.789620644271366 0.000000000000000
796 1 2 -0.420 2.795600000000000 43.579090356588360 0.000000000000000
797 1 1 0.420 4.193400000000000 43.579090356588360 0.000000000000000
798 1 2 -0.420 4.892300000000000 44.789620644271366 0.000000000000000
799 1 1 0.420 6.290100000000000 44.789620644271366 0.000000000000000
800 1 2 -0.420 6.989000000000000 43.579090356588360 0.000000000000000
801 1 1 0.420 8.386799999999999 43.579090356588360 0.000000000000000
802 1 2 -0.420 9.085699999999999 44.789620644271366 0.000000000000000
803 1 1 0.420 10.483499999999999 44.789620644271366 0.000000000000000
804 1 2 -0.420 11.182399999999999 43.579090356588360 0.000000000000000
805 1 1 0.420 12.580200000000000 43.579090356588360 0.000000000000000
806 1 2 -0.420 13.279100000000000 44.789620644271366 0.000000000000000
807 1 1 0.420 14.676900000000000 44.789620644271366 0.000000000000000
808 1 2 -0.420 15.375800000000000 43.579090356588360 0.000000000000000
809 1 1 0.420 16.773599999999998 43.579090356588360 0.000000000000000
810 1 2 -0.420 17.472500000000000 44.789620644271366 0.000000000000000
811 1 1 0.420 18.870300000000000 44.789620644271366 0.000000000000000
812 1 2 -0.420 19.569199999999999 43.579090356588360 0.000000000000000
813 1 1 0.420 20.966999999999999 43.579090356588360 0.000000000000000
814 1 2 -0.420 21.665900000000001 44.789620644271366 0.000000000000000
815 1 1 0.420 23.063699999999997 44.789620644271366 0.000000000000000
816 1 2 -0.420 23.762599999999999 43.579090356588360 0.000000000000000
817 1 1 0.420 25.160399999999999 43.579090356588360 0.000000000000000
818 1 2 -0.420 25.859299999999998 44.789620644271366 0.000000000000000
819 1 1 0.420 27.257099999999998 44.789620644271366 0.000000000000000
820 1 2 -0.420 27.956000000000000 43.579090356588360 0.000000000000000
821 1 1 0.420 29.353800000000000 43.579090356588360 0.000000000000000
822 1 2 -0.420 30.052699999999998 44.789620644271366 0.000000000000000
823 1 1 0.420 31.450499999999998 44.789620644271366 0.000000000000000
824 1 2 -0.420 32.149400000000000 43.579090356588360 0.000000000000000
825 1 1 0.420 33.547199999999997 43.579090356588360 0.000000000000000
826 1 2 -0.420 34.246099999999998 44.789620644271366 0.000000000000000
827 1 1 0.420 35.643899999999995 44.789620644271366 0.000000000000000
828 1 2 -0.420 36.342799999999997 43.579090356588360 0.000000000000000
829 1 1 0.420 37.740600000000001 43.579090356588360 0.000000000000000
830 1 2 -0.420 38.439499999999995 44.789620644271366 0.000000000000000
831 1 1 0.420 39.837299999999999 44.789620644271366 0.000000000000000
832 1 2 -0.420 40.536200000000001 43.579090356588360 0.000000000000000
833 1 1 0.420 41.933999999999997 43.579090356588360 0.000000000000000
834 1 2 -0.420 42.632899999999999 44.789620644271366 0.000000000000000
835 1 1 0.420 44.030699999999996 44.789620644271366 0.000000000000000
836 1 2 -0.420 44.729599999999998 43.579090356588360 0.000000000000000
837 1 1 0.420 0.000000000000000 46.000150931954380 0.000000000000000
838 1 2 -0.420 0.698900000000000 47.210681219637387 0.000000000000000
839 1 1 0.420 2.096700000000000 47.210681219637387 0.000000000000000
840 1 2 -0.420 2.795600000000000 46.000150931954380 0.000000000000000
841 1 1 0.420 4.193400000000000 46.000150931954380 0.000000000000000
842 1 2 -0.420 4.892300000000000 47.210681219637387 0.000000000000000
843 1 1 0.420 6.290100000000000 47.210681219637387 0.000000000000000
844 1 2 -0.420 6.989000000000000 46.000150931954380 0.000000000000000
845 1 1 0.420 8.386799999999999 46.000150931954380 0.000000000000000
846 1 2 -0.420 9.085699999999999 47.210681219637387 0.000000000000000
847 1 1 0.420 10.483499999999999 47.210681219637387 0.000000000000000
848 1 2 -0.420 11.182399999999999 46.000150931954380 0.000000000000000
849 1 1 0.420 12.580200000000000 46.000150931954380 0.000000000000000
850 1 2 -0.420 13.279100000000000 47.210681219637387 0.000000000000000
851 1 1 0.420 14.676900000000000 47.210681219637387 0.000000000000000
852 1 2 -0.420 15.375800000000000 46.000150931954380 0.000000000000000
853 1 1 0.420 16.773599999999998 46.000150931954380 0.000000000000000
854 1 2 -0.420 17.472500000000000 47.210681219637387 0.000000000000000
855 1 1 0.420 18.870300000000000 47.210681219637387 0.000000000000000
856 1 2 -0.420 19.569199999999999 46.000150931954380 0.000000000000000
857 1 1 0.420 20.966999999999999 46.000150931954380 0.000000000000000
858 1 2 -0.420 21.665900000000001 47.210681219637387 0.000000000000000
859 1 1 0.420 23.063699999999997 47.210681219637387 0.000000000000000
860 1 2 -0.420 23.762599999999999 46.000150931954380 0.000000000000000
861 1 1 0.420 25.160399999999999 46.000150931954380 0.000000000000000
862 1 2 -0.420 25.859299999999998 47.210681219637387 0.000000000000000
863 1 1 0.420 27.257099999999998 47.210681219637387 0.000000000000000
864 1 2 -0.420 27.956000000000000 46.000150931954380 0.000000000000000
865 1 1 0.420 29.353800000000000 46.000150931954380 0.000000000000000
866 1 2 -0.420 30.052699999999998 47.210681219637387 0.000000000000000
867 1 1 0.420 31.450499999999998 47.210681219637387 0.000000000000000
868 1 2 -0.420 32.149400000000000 46.000150931954380 0.000000000000000
869 1 1 0.420 33.547199999999997 46.000150931954380 0.000000000000000
870 1 2 -0.420 34.246099999999998 47.210681219637387 0.000000000000000
871 1 1 0.420 35.643899999999995 47.210681219637387 0.000000000000000
872 1 2 -0.420 36.342799999999997 46.000150931954380 0.000000000000000
873 1 1 0.420 37.740600000000001 46.000150931954380 0.000000000000000
874 1 2 -0.420 38.439499999999995 47.210681219637387 0.000000000000000
875 1 1 0.420 39.837299999999999 47.210681219637387 0.000000000000000
876 1 2 -0.420 40.536200000000001 46.000150931954380 0.000000000000000
877 1 1 0.420 41.933999999999997 46.000150931954380 0.000000000000000
878 1 2 -0.420 42.632899999999999 47.210681219637387 0.000000000000000
879 1 1 0.420 44.030699999999996 47.210681219637387 0.000000000000000
880 1 2 -0.420 44.729599999999998 46.000150931954380 0.000000000000000

View File

@ -0,0 +1,36 @@
# Initialization
units metal
boundary p p p
atom_style full
processors * * 1 # domain decomposition over x and y
# System and atom definition
# we use different molecule ids for each layer of hBN
# so that inter- and intra-layer
# interactions can be specified separately
read_data hBN-momolayer-5nm.data
mass 1 10.8110 # boron mass (g/mole) | membrane
mass 2 14.0067 # nitrogen mass (g/mole) | adsorbate
######################## Potential defition ########################
pair_style tersoff
pair_coeff * * BNC.tersoff B N
####################################################################
# Neighbor update settings
neighbor 2.0 bin
neigh_modify every 1
neigh_modify delay 0
neigh_modify check yes
#### Simulation settings ####
timestep 0.001
#velocity all create 300.0 12345 dist gaussian mom yes rot yes
fix thermostat all nve
############# Output ###############
thermo 100
thermo_style custom step etotal pe ke temp
thermo_modify lost warn
###### Run molecular dynamics ######
run 1000

View File

@ -0,0 +1,36 @@
# Initialization
units metal
boundary p p p
atom_style full
processors * * 1 # domain decomposition over x and y
# System and atom definition
# we use different molecule ids for each layer of hBN
# so that inter- and intra-layer
# interactions can be specified separately
read_data hBN-momolayer-5nm.data
mass 1 10.8110 # boron mass (g/mole) | membrane
mass 2 14.0067 # nitrogen mass (g/mole) | adsorbate
######################## Potential defition ########################
pair_style tersoff/shift 0.0
pair_coeff * * BNC.tersoff B N
####################################################################
# Neighbor update settings
neighbor 2.0 bin
neigh_modify every 1
neigh_modify delay 0
neigh_modify check yes
#### Simulation settings ####
timestep 0.001
#velocity all create 300.0 12345 dist gaussian mom yes rot yes
fix thermostat all nve
############# Output ###############
thermo 100
thermo_style custom step etotal pe ke temp
thermo_modify lost warn
###### Run molecular dynamics ######
run 1000

View File

@ -0,0 +1,108 @@
LAMMPS (30 Nov 2020)
# Initialization
units metal
boundary p p p
atom_style full
processors * * 1 # domain decomposition over x and y
# System and atom definition
# we use different molecule ids for each layer of hBN
# so that inter- and intra-layer
# interactions can be specified separately
read_data hBN-momolayer-5nm.data
Reading data file ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (46.152980 48.443364 100.00000)
1 by 1 by 1 MPI processor grid
reading atoms ...
880 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.096 seconds
mass 1 10.8110 # boron mass (g/mole) | membrane
mass 2 14.0067 # nitrogen mass (g/mole) | adsorbate
######################## Potential defition ########################
pair_style tersoff
pair_coeff * * BNC.tersoff B N
Reading tersoff potential file BNC.tersoff with DATE: 2013-03-21
####################################################################
# Neighbor update settings
neighbor 2.0 bin
neigh_modify every 1
neigh_modify delay 0
neigh_modify check yes
#### Simulation settings ####
timestep 0.001
#velocity all create 300.0 12345 dist gaussian mom yes rot yes
fix thermostat all nve
############# Output ###############
thermo 100
thermo_style custom step etotal pe ke temp
thermo_modify lost warn
###### Run molecular dynamics ######
run 1000
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.1
ghost atom cutoff = 4.1
binsize = 2.05, bins = 23 24 49
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair tersoff, perpetual
attributes: full, newton on
pair build: full/bin
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 6.651 | 6.651 | 6.651 Mbytes
Step TotEng PotEng KinEng Temp
0 -6551.8376 -6551.8376 0 0
100 -6551.8404 -6552.045 0.20459665 1.8007151
200 -6551.8415 -6552.0901 0.24854441 2.1875122
300 -6551.8417 -6552.0785 0.23679696 2.0841195
400 -6551.8417 -6552.0803 0.23866698 2.1005781
500 -6551.8415 -6552.0561 0.21461008 1.8888462
600 -6551.8414 -6552.0933 0.25192103 2.2172309
700 -6551.8418 -6552.085 0.24321116 2.1405727
800 -6551.8421 -6552.0818 0.23974657 2.1100799
900 -6551.8417 -6552.0803 0.23863749 2.1003185
1000 -6551.8407 -6552.0573 0.2165681 1.9060793
Loop time of 1.30034 on 1 procs for 1000 steps with 880 atoms
Performance: 66.444 ns/day, 0.361 hours/ns, 769.030 timesteps/s
99.4% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 1.2606 | 1.2606 | 1.2606 | 0.0 | 96.95
Bond | 0.00058399 | 0.00058399 | 0.00058399 | 0.0 | 0.04
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.014387 | 0.014387 | 0.014387 | 0.0 | 1.11
Output | 0.00062956 | 0.00062956 | 0.00062956 | 0.0 | 0.05
Modify | 0.014313 | 0.014313 | 0.014313 | 0.0 | 1.10
Other | | 0.009804 | | | 0.75
Nlocal: 880.000 ave 880 max 880 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1518.00 ave 1518 max 1518 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 15840.0 ave 15840 max 15840 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 15840
Ave neighs/atom = 18.000000
Ave special neighs/atom = 0.0000000
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:01

View File

@ -0,0 +1,111 @@
LAMMPS (30 Nov 2020)
# Initialization
units metal
boundary p p p
atom_style full
processors * * 1 # domain decomposition over x and y
# System and atom definition
# we use different molecule ids for each layer of hBN
# so that inter- and intra-layer
# interactions can be specified separately
read_data hBN-momolayer-5nm.data
Reading data file ...
orthogonal box = (0.0000000 0.0000000 0.0000000) to (46.152980 48.443364 100.00000)
1 by 1 by 1 MPI processor grid
reading atoms ...
880 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.009 seconds
mass 1 10.8110 # boron mass (g/mole) | membrane
mass 2 14.0067 # nitrogen mass (g/mole) | adsorbate
######################## Potential defition ########################
pair_style tersoff/shift 0.0
pair_coeff * * BNC.tersoff B N
Reading tersoff potential file BNC.tersoff with DATE: 2013-03-21
####################################################################
# Neighbor update settings
neighbor 2.0 bin
neigh_modify every 1
neigh_modify delay 0
neigh_modify check yes
#### Simulation settings ####
timestep 0.001
#velocity all create 300.0 12345 dist gaussian mom yes rot yes
fix thermostat all nve
############# Output ###############
thermo 100
thermo_style custom step etotal pe ke temp
thermo_modify lost warn
###### Run molecular dynamics ######
run 1000
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 4.1
ghost atom cutoff = 4.1
binsize = 2.05, bins = 23 24 49
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair tersoff/shift, perpetual
attributes: full, newton on
pair build: full/bin
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 6.651 | 6.651 | 6.651 Mbytes
Step TotEng PotEng KinEng Temp
0 -6551.8376 -6551.8376 0 0
100 -6551.8404 -6552.045 0.20459665 1.8007151
200 -6551.8415 -6552.0901 0.24854441 2.1875122
300 -6551.8417 -6552.0785 0.23679696 2.0841195
400 -6551.8417 -6552.0803 0.23866698 2.1005781
500 -6551.8415 -6552.0561 0.21461008 1.8888462
600 -6551.8414 -6552.0933 0.25192103 2.2172309
700 -6551.8418 -6552.085 0.24321116 2.1405727
800 -6551.8421 -6552.0818 0.23974657 2.1100799
900 -6551.8417 -6552.0803 0.23863749 2.1003185
1000 -6551.8407 -6552.0573 0.2165681 1.9060793
Loop time of 2.01887 on 1 procs for 1000 steps with 880 atoms
Performance: 42.796 ns/day, 0.561 hours/ns, 495.328 timesteps/s
98.7% CPU use with 1 MPI tasks x no OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 1.9692 | 1.9692 | 1.9692 | 0.0 | 97.54
Bond | 0.00080803 | 0.00080803 | 0.00080803 | 0.0 | 0.04
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.017753 | 0.017753 | 0.017753 | 0.0 | 0.88
Output | 0.00098974 | 0.00098974 | 0.00098974 | 0.0 | 0.05
Modify | 0.017247 | 0.017247 | 0.017247 | 0.0 | 0.85
Other | | 0.01289 | | | 0.64
Nlocal: 880.000 ave 880 max 880 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 1518.00 ave 1518 max 1518 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 15840.0 ave 15840 max 15840 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 15840
Ave neighs/atom = 18.000000
Ave special neighs/atom = 0.0000000
Neighbor list builds = 0
Dangerous builds = 0
Please see the log.cite file for references relevant to this simulation
Total wall time: 0:00:02

View File

@ -0,0 +1,817 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://lammps.sandia.gov/, 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 (Tel Aviv University)
e-mail: w.g.ouyang at gmail dot com
------------------------------------------------------------------------- */
#include "pair_tersoff_shift.h"
#include "atom.h"
#include "comm.h"
#include "error.h"
#include "force.h"
#include "math_const.h"
#include "math_special.h"
#include "memory.h"
#include "neigh_list.h"
#include "neigh_request.h"
#include "neighbor.h"
#include "potential_file_reader.h"
#include "tokenizer.h"
#include <cmath>
#include <cstring>
#include "citeme.h"
using namespace LAMMPS_NS;
using namespace MathConst;
#define MAXLINE 1024
#define DELTA 4
static const char cite_tersoff_shift[] =
"@Article{Mandelli2019\n"
" author = {D. Mandelli, W. Ouyang, M. Urbakh, and O. Hod},\n"
" title = {The Princess and the Nanoscale Pea: Long-Range Penetration of Surface Distortions into Layered Materials Stacks},\n"
" journal = {ACS Nano},\n"
" volume = 13,\n"
" pages = {7603}\n"
" year = 2019,\n"
"}\n\n"
"@Article{Ouyang2020\n"
" author = {W. Ouyang, I. Azuri, D. Mandelli, A. Tkatchenko, L. Kronik, M. Urbakh, and O. Hod},\n"
" title = {Mechanical and Tribological Properties of Layered Materials under High Pressure: Assessing the Importance of Many-Body Dispersion Effects},\n"
" journal = {J. Chem. Theory Comput.},\n"
" volume = 16,\n"
" pages = {666}\n"
" year = 2020,\n"
"}\n\n";
/* ---------------------------------------------------------------------- */
PairTersoffShift::PairTersoffShift(LAMMPS *lmp) : Pair(lmp)
{
single_enable = 0;
restartinfo = 0;
one_coeff = 1;
manybody_flag = 1;
if (lmp->citeme) lmp->citeme->add(cite_tersoff_shift);
nelements = 0;
elements = nullptr;
nparams = maxparam = 0;
params = nullptr;
elem2param = nullptr;
map = nullptr;
maxshort = 10;
neighshort = nullptr;
}
/* ----------------------------------------------------------------------
check if allocated, since class can be destructed when incomplete
------------------------------------------------------------------------- */
PairTersoffShift::~PairTersoffShift()
{
if (copymode) return;
if (elements)
for (int i = 0; i < nelements; i++) delete [] elements[i];
delete [] elements;
memory->destroy(params);
memory->destroy(elem2param);
if (allocated) {
memory->destroy(setflag);
memory->destroy(cutsq);
memory->destroy(neighshort);
delete [] map;
}
}
/* ---------------------------------------------------------------------- */
void PairTersoffShift::compute(int eflag, int vflag)
{
int i,j,k,ii,jj,kk,inum,jnum;
int itype,jtype,ktype,iparam_ij,iparam_ijk;
tagint itag,jtag;
double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair;
double rsq,rsq1,rsq2;
double delr1[3],delr2[3],fi[3],fj[3],fk[3];
double zeta_ij,prefactor;
int *ilist,*jlist,*numneigh,**firstneigh;
evdwl = 0.0;
ev_init(eflag,vflag);
double **x = atom->x;
double **f = atom->f;
tagint *tag = atom->tag;
int *type = atom->type;
int nlocal = atom->nlocal;
int newton_pair = force->newton_pair;
const double cutshortsq = cutmax*cutmax;
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
double fxtmp,fytmp,fztmp;
// loop over full neighbor list of my atoms
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
itag = tag[i];
itype = map[type[i]];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
fxtmp = fytmp = fztmp = 0.0;
// two-body interactions, skip half of them
jlist = firstneigh[i];
jnum = numneigh[i];
int numshort = 0;
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
j &= NEIGHMASK;
jtype = map[type[j]];
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
rsq += shiftBN*shiftBN + 2*sqrt(rsq)*shiftBN;
//rsq += shift[itype][jtype]*shift[itype][jtype] + 2*sqrt(rsq)*shift[itype][jtype];
if (rsq < cutshortsq) {
neighshort[numshort++] = j;
if (numshort >= maxshort) {
maxshort += maxshort/2;
memory->grow(neighshort,maxshort,"pair:neighshort");
}
}
jtag = tag[j];
if (itag > jtag) {
if ((itag+jtag) % 2 == 0) continue;
} else if (itag < jtag) {
if ((itag+jtag) % 2 == 1) continue;
} else {
if (x[j][2] < x[i][2]) continue;
if (x[j][2] == ztmp && x[j][1] < ytmp) continue;
if (x[j][2] == ztmp && x[j][1] == ytmp && x[j][0] < xtmp) continue;
}
jtype = map[type[j]];
iparam_ij = elem2param[itype][jtype][jtype];
if (rsq >= params[iparam_ij].cutsq) continue;
repulsive(&params[iparam_ij],rsq,fpair,eflag,evdwl);
fxtmp += delx*fpair;
fytmp += dely*fpair;
fztmp += delz*fpair;
f[j][0] -= delx*fpair;
f[j][1] -= dely*fpair;
f[j][2] -= delz*fpair;
if (evflag) ev_tally(i,j,nlocal,newton_pair,
evdwl,0.0,fpair,delx,dely,delz);
}
// three-body interactions
// skip immediately if I-J is not within cutoff
double fjxtmp,fjytmp,fjztmp;
for (jj = 0; jj < numshort; jj++) {
j = neighshort[jj];
jtype = map[type[j]];
iparam_ij = elem2param[itype][jtype][jtype];
delr1[0] = x[j][0] - xtmp;
delr1[1] = x[j][1] - ytmp;
delr1[2] = x[j][2] - ztmp;
rsq1 = delr1[0]*delr1[0] + delr1[1]*delr1[1] + delr1[2]*delr1[2];
rsq1 += shiftBN*shiftBN + 2*sqrt(rsq1)*shiftBN;
if (rsq1 >= params[iparam_ij].cutsq) continue;
// accumulate bondorder zeta for each i-j interaction via loop over k
fjxtmp = fjytmp = fjztmp = 0.0;
zeta_ij = 0.0;
for (kk = 0; kk < numshort; kk++) {
if (jj == kk) continue;
k = neighshort[kk];
ktype = map[type[k]];
iparam_ijk = elem2param[itype][jtype][ktype];
delr2[0] = x[k][0] - xtmp;
delr2[1] = x[k][1] - ytmp;
delr2[2] = x[k][2] - ztmp;
rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2];
rsq2 += shiftBN*shiftBN + 2*sqrt(rsq2)*shiftBN;
if (rsq2 >= params[iparam_ijk].cutsq) continue;
zeta_ij += zeta(&params[iparam_ijk],rsq1,rsq2,delr1,delr2);
}
// pairwise force due to zeta
force_zeta(&params[iparam_ij],rsq1,zeta_ij,fpair,prefactor,eflag,evdwl);
fxtmp += delr1[0]*fpair;
fytmp += delr1[1]*fpair;
fztmp += delr1[2]*fpair;
fjxtmp -= delr1[0]*fpair;
fjytmp -= delr1[1]*fpair;
fjztmp -= delr1[2]*fpair;
if (evflag) ev_tally(i,j,nlocal,newton_pair,
evdwl,0.0,-fpair,-delr1[0],-delr1[1],-delr1[2]);
// attractive term via loop over k
for (kk = 0; kk < numshort; kk++) {
if (jj == kk) continue;
k = neighshort[kk];
ktype = map[type[k]];
iparam_ijk = elem2param[itype][jtype][ktype];
delr2[0] = x[k][0] - xtmp;
delr2[1] = x[k][1] - ytmp;
delr2[2] = x[k][2] - ztmp;
rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2];
rsq2 += shiftBN*shiftBN + 2*sqrt(rsq2)*shiftBN;
if (rsq2 >= params[iparam_ijk].cutsq) continue;
attractive(&params[iparam_ijk],prefactor,
rsq1,rsq2,delr1,delr2,fi,fj,fk);
fxtmp += fi[0];
fytmp += fi[1];
fztmp += fi[2];
fjxtmp += fj[0];
fjytmp += fj[1];
fjztmp += fj[2];
f[k][0] += fk[0];
f[k][1] += fk[1];
f[k][2] += fk[2];
if (vflag_atom) v_tally3(i,j,k,fj,fk,delr1,delr2);
}
f[j][0] += fjxtmp;
f[j][1] += fjytmp;
f[j][2] += fjztmp;
}
f[i][0] += fxtmp;
f[i][1] += fytmp;
f[i][2] += fztmp;
}
if (vflag_fdotr) virial_fdotr_compute();
}
/* ---------------------------------------------------------------------- */
void PairTersoffShift::allocate()
{
allocated = 1;
int n = atom->ntypes;
memory->create(setflag,n+1,n+1,"pair:setflag");
memory->create(cutsq,n+1,n+1,"pair:cutsq");
memory->create(neighshort,maxshort,"pair:neighshort");
map = new int[n+1];
}
/* ----------------------------------------------------------------------
global settings
------------------------------------------------------------------------- */
void PairTersoffShift::settings(int narg, char **arg)
{
//if (narg != 0) error->all(FLERR,"Illegal pair_style command");
if (narg < 1 || narg > 2) error->all(FLERR,"Illegal pair_style command");
shiftBN = utils::numeric(FLERR,arg[0],false,lmp);
if (narg == 2) shiftCC = utils::numeric(FLERR,arg[1],false,lmp);
}
/* ----------------------------------------------------------------------
set coeffs for one or more type pairs
------------------------------------------------------------------------- */
void PairTersoffShift::coeff(int narg, char **arg)
{
int i,j,n;
if (!allocated) allocate();
if (narg != 3 + atom->ntypes)
error->all(FLERR,"Incorrect args for pair coefficients");
// insure I,J args are * *
if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0)
error->all(FLERR,"Incorrect args for pair coefficients");
// read args that map atom types to elements in potential file
// map[i] = which element the Ith atom type is, -1 if "NULL"
// nelements = # of unique elements
// elements = list of element names
if (elements) {
for (i = 0; i < nelements; i++) delete [] elements[i];
delete [] elements;
}
elements = new char*[atom->ntypes];
for (i = 0; i < atom->ntypes; i++) elements[i] = nullptr;
nelements = 0;
for (i = 3; i < narg; i++) {
if (strcmp(arg[i],"NULL") == 0) {
map[i-2] = -1;
continue;
}
for (j = 0; j < nelements; j++)
if (strcmp(arg[i],elements[j]) == 0) break;
map[i-2] = j;
if (j == nelements) {
n = strlen(arg[i]) + 1;
elements[j] = new char[n];
strcpy(elements[j],arg[i]);
nelements++;
}
}
// read potential file and initialize potential parameters
read_file(arg[2]);
setup_params();
// clear setflag since coeff() called once with I,J = * *
n = atom->ntypes;
for (i = 1; i <= n; i++)
for (j = i; j <= n; j++)
setflag[i][j] = 0;
// set setflag i,j for type pairs where both are mapped to elements
int count = 0;
for (i = 1; i <= n; i++)
for (j = i; j <= n; j++)
if (map[i] >= 0 && map[j] >= 0) {
setflag[i][j] = 1;
count++;
}
if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients");
}
/* ----------------------------------------------------------------------
init specific to this pair style
------------------------------------------------------------------------- */
void PairTersoffShift::init_style()
{
if (atom->tag_enable == 0)
error->all(FLERR,"Pair style Tersoff requires atom IDs");
if (force->newton_pair == 0)
error->all(FLERR,"Pair style Tersoff requires newton pair on");
// need a full neighbor list
int irequest = neighbor->request(this,instance_me);
neighbor->requests[irequest]->half = 0;
neighbor->requests[irequest]->full = 1;
}
/* ----------------------------------------------------------------------
init for one type pair i,j and corresponding j,i
------------------------------------------------------------------------- */
double PairTersoffShift::init_one(int i, int j)
{
if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
return cutmax;
}
/* ---------------------------------------------------------------------- */
void PairTersoffShift::read_file(char *file)
{
memory->sfree(params);
params = nullptr;
nparams = maxparam = 0;
// open file on proc 0
if (comm->me == 0) {
PotentialFileReader reader(lmp, file, "tersoff", unit_convert_flag);
char *line;
// transparently convert units for supported conversions
int unit_convert = reader.get_unit_convert();
double conversion_factor = utils::get_conversion_factor(utils::ENERGY,
unit_convert);
while((line = reader.next_line(NPARAMS_PER_LINE))) {
try {
ValueTokenizer values(line);
std::string iname = values.next_string();
std::string jname = values.next_string();
std::string kname = values.next_string();
// ielement,jelement,kelement = 1st args
// if all 3 args are in element list, then parse this line
// else skip to next entry in file
int ielement, jelement, kelement;
for (ielement = 0; ielement < nelements; ielement++)
if (iname == elements[ielement]) break;
if (ielement == nelements) continue;
for (jelement = 0; jelement < nelements; jelement++)
if (jname == elements[jelement]) break;
if (jelement == nelements) continue;
for (kelement = 0; kelement < nelements; kelement++)
if (kname == elements[kelement]) break;
if (kelement == nelements) continue;
// load up parameter settings and error check their values
if (nparams == maxparam) {
maxparam += DELTA;
params = (Param *) memory->srealloc(params,maxparam*sizeof(Param),
"pair:params");
// make certain all addional allocated storage is initialized
// to avoid false positives when checking with valgrind
memset(params + nparams, 0, DELTA*sizeof(Param));
}
params[nparams].ielement = ielement;
params[nparams].jelement = jelement;
params[nparams].kelement = kelement;
params[nparams].powerm = values.next_double();
params[nparams].gamma = values.next_double();
params[nparams].lam3 = values.next_double();
params[nparams].c = values.next_double();
params[nparams].d = values.next_double();
params[nparams].h = values.next_double();
params[nparams].powern = values.next_double();
params[nparams].beta = values.next_double();
params[nparams].lam2 = values.next_double();
params[nparams].bigb = values.next_double();
params[nparams].bigr = values.next_double();
params[nparams].bigd = values.next_double();
params[nparams].lam1 = values.next_double();
params[nparams].biga = values.next_double();
params[nparams].powermint = int(params[nparams].powerm);
if (unit_convert) {
params[nparams].biga *= conversion_factor;
params[nparams].bigb *= conversion_factor;
}
} catch (TokenizerException &e) {
error->one(FLERR, e.what());
}
// currently only allow m exponent of 1 or 3
if (params[nparams].c < 0.0 ||
params[nparams].d < 0.0 ||
params[nparams].powern < 0.0 ||
params[nparams].beta < 0.0 ||
params[nparams].lam2 < 0.0 ||
params[nparams].bigb < 0.0 ||
params[nparams].bigr < 0.0 ||
params[nparams].bigd < 0.0 ||
params[nparams].bigd > params[nparams].bigr ||
params[nparams].lam1 < 0.0 ||
params[nparams].biga < 0.0 ||
params[nparams].powerm - params[nparams].powermint != 0.0 ||
(params[nparams].powermint != 3 &&
params[nparams].powermint != 1) ||
params[nparams].gamma < 0.0)
error->one(FLERR,"Illegal Tersoff parameter");
nparams++;
}
}
MPI_Bcast(&nparams, 1, MPI_INT, 0, world);
MPI_Bcast(&maxparam, 1, MPI_INT, 0, world);
if(comm->me != 0) {
params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), "pair:params");
}
MPI_Bcast(params, maxparam*sizeof(Param), MPI_BYTE, 0, world);
}
/* ---------------------------------------------------------------------- */
void PairTersoffShift::setup_params()
{
int i,j,k,m,n;
// set elem2param for all element triplet combinations
// must be a single exact match to lines read from file
// do not allow for ACB in place of ABC
memory->destroy(elem2param);
memory->create(elem2param,nelements,nelements,nelements,"pair:elem2param");
for (i = 0; i < nelements; i++)
for (j = 0; j < nelements; j++)
for (k = 0; k < nelements; k++) {
n = -1;
for (m = 0; m < nparams; m++) {
if (i == params[m].ielement && j == params[m].jelement &&
k == params[m].kelement) {
if (n >= 0) error->all(FLERR,"Potential file has duplicate entry");
n = m;
}
}
if (n < 0) error->all(FLERR,"Potential file is missing an entry");
elem2param[i][j][k] = n;
}
// compute parameter values derived from inputs
for (m = 0; m < nparams; m++) {
params[m].cut = params[m].bigr + params[m].bigd;
params[m].cutsq = params[m].cut*params[m].cut;
if (params[m].powern > 0.0) {
params[m].c1 = pow(2.0*params[m].powern*1.0e-16,-1.0/params[m].powern);
params[m].c2 = pow(2.0*params[m].powern*1.0e-8,-1.0/params[m].powern);
params[m].c3 = 1.0/params[m].c2;
params[m].c4 = 1.0/params[m].c1;
} else {
params[m].c1 = params[m].c2 = params[m].c3 = params[m].c4 = 0.0;
}
}
// set cutmax to max of all params
cutmax = 0.0;
for (m = 0; m < nparams; m++)
if (params[m].cut > cutmax) cutmax = params[m].cut;
}
/* ---------------------------------------------------------------------- */
void PairTersoffShift::repulsive(Param *param, double rsq, double &fforce,
int eflag, double &eng)
{
double r,tmp_fc,tmp_fc_d,tmp_exp;
r = sqrt(rsq);
tmp_fc = ters_fc(r,param);
tmp_fc_d = ters_fc_d(r,param);
tmp_exp = exp(-param->lam1 * r);
fforce = -param->biga * tmp_exp * (tmp_fc_d - tmp_fc*param->lam1) / (r - shiftBN);
if (eflag) eng = tmp_fc * param->biga * tmp_exp;
}
/* ---------------------------------------------------------------------- */
double PairTersoffShift::zeta(Param *param, double rsqij, double rsqik,
double *delrij, double *delrik)
{
double rij,rik,costheta,arg,ex_delr;
rij = sqrt(rsqij);
rik = sqrt(rsqik);
costheta = (delrij[0]*delrik[0] + delrij[1]*delrik[1] +
delrij[2]*delrik[2]) / ((rij-shiftBN)*(rik-shiftBN));
if (param->powermint == 3) arg = pow(param->lam3 * (rij-rik),3.0);
else arg = param->lam3 * (rij-rik);
if (arg > 69.0776) ex_delr = 1.e30;
else if (arg < -69.0776) ex_delr = 0.0;
else ex_delr = exp(arg);
return ters_fc(rik,param) * ters_gijk(costheta,param) * ex_delr;
}
/* ---------------------------------------------------------------------- */
void PairTersoffShift::force_zeta(Param *param, double rsq, double zeta_ij,
double &fforce, double &prefactor,
int eflag, double &eng)
{
double r,fa,fa_d,bij;
r = sqrt(rsq);
fa = ters_fa(r,param);
fa_d = ters_fa_d(r,param);
bij = ters_bij(zeta_ij,param);
fforce = 0.5*bij*fa_d / (r - shiftBN);
prefactor = -0.5*fa * ters_bij_d(zeta_ij,param);
if (eflag) eng = 0.5*bij*fa;
}
/* ----------------------------------------------------------------------
attractive term
use param_ij cutoff for rij test
use param_ijk cutoff for rik test
------------------------------------------------------------------------- */
void PairTersoffShift::attractive(Param *param, double prefactor,
double rsqij, double rsqik,
double *delrij, double *delrik,
double *fi, double *fj, double *fk)
{
double rij_hat[3],rik_hat[3];
double rij,rijinv,rik,rikinv;
rij = sqrt(rsqij);
rijinv = 1.0/(rij - shiftBN);
vec3_scale(rijinv,delrij,rij_hat);
rik = sqrt(rsqik);
rikinv = 1.0/(rik - shiftBN);
vec3_scale(rikinv,delrik,rik_hat);
ters_zetaterm_d(prefactor,rij_hat,rij,rik_hat,rik,fi,fj,fk,param);
}
/* ---------------------------------------------------------------------- */
double PairTersoffShift::ters_fc(double r, Param *param)
{
double ters_R = param->bigr;
double ters_D = param->bigd;
if (r < ters_R-ters_D) return 1.0;
if (r > ters_R+ters_D) return 0.0;
return 0.5*(1.0 - sin(MY_PI2*(r - ters_R)/ters_D));
}
/* ---------------------------------------------------------------------- */
double PairTersoffShift::ters_fc_d(double r, Param *param)
{
double ters_R = param->bigr;
double ters_D = param->bigd;
if (r < ters_R-ters_D) return 0.0;
if (r > ters_R+ters_D) return 0.0;
return -(MY_PI4/ters_D) * cos(MY_PI2*(r - ters_R)/ters_D);
}
/* ---------------------------------------------------------------------- */
double PairTersoffShift::ters_fa(double r, Param *param)
{
if (r > param->bigr + param->bigd) return 0.0;
return -param->bigb * exp(-param->lam2 * r) * ters_fc(r,param);
}
/* ---------------------------------------------------------------------- */
double PairTersoffShift::ters_fa_d(double r, Param *param)
{
if (r > param->bigr + param->bigd) return 0.0;
return param->bigb * exp(-param->lam2 * r) *
(param->lam2 * ters_fc(r,param) - ters_fc_d(r,param));
}
/* ---------------------------------------------------------------------- */
double PairTersoffShift::ters_bij(double zeta, Param *param)
{
double tmp = param->beta * zeta;
if (tmp > param->c1) return 1.0/sqrt(tmp);
if (tmp > param->c2)
return (1.0 - pow(tmp,-param->powern) / (2.0*param->powern))/sqrt(tmp);
if (tmp < param->c4) return 1.0;
if (tmp < param->c3)
return 1.0 - pow(tmp,param->powern)/(2.0*param->powern);
return pow(1.0 + pow(tmp,param->powern), -1.0/(2.0*param->powern));
}
/* ---------------------------------------------------------------------- */
double PairTersoffShift::ters_bij_d(double zeta, Param *param)
{
double tmp = param->beta * zeta;
if (tmp > param->c1) return param->beta * -0.5*pow(tmp,-1.5);
if (tmp > param->c2)
return param->beta * (-0.5*pow(tmp,-1.5) *
// error in negligible 2nd term fixed 9/30/2015
// (1.0 - 0.5*(1.0 + 1.0/(2.0*param->powern)) *
(1.0 - (1.0 + 1.0/(2.0*param->powern)) *
pow(tmp,-param->powern)));
if (tmp < param->c4) return 0.0;
if (tmp < param->c3)
return -0.5*param->beta * pow(tmp,param->powern-1.0);
double tmp_n = pow(tmp,param->powern);
return -0.5 * pow(1.0+tmp_n, -1.0-(1.0/(2.0*param->powern)))*tmp_n / zeta;
}
/* ---------------------------------------------------------------------- */
void PairTersoffShift::ters_zetaterm_d(double prefactor,
double *rij_hat, double rij,
double *rik_hat, double rik,
double *dri, double *drj, double *drk,
Param *param)
{
double gijk,gijk_d,ex_delr,ex_delr_d,fc,dfc,cos_theta,tmp;
double dcosdri[3],dcosdrj[3],dcosdrk[3];
fc = ters_fc(rik,param);
dfc = ters_fc_d(rik,param);
if (param->powermint == 3) tmp = pow(param->lam3 * (rij-rik),3.0);
else tmp = param->lam3 * (rij-rik);
if (tmp > 69.0776) ex_delr = 1.e30;
else if (tmp < -69.0776) ex_delr = 0.0;
else ex_delr = exp(tmp);
if (param->powermint == 3)
ex_delr_d = 3.0*pow(param->lam3,3.0) * pow(rij-rik,2.0)*ex_delr;
else ex_delr_d = param->lam3 * ex_delr;
cos_theta = vec3_dot(rij_hat,rik_hat);
gijk = ters_gijk(cos_theta,param);
gijk_d = ters_gijk_d(cos_theta,param);
costheta_d(rij_hat,rij,rik_hat,rik,dcosdri,dcosdrj,dcosdrk);
// compute the derivative wrt Ri
// dri = -dfc*gijk*ex_delr*rik_hat;
// dri += fc*gijk_d*ex_delr*dcosdri;
// dri += fc*gijk*ex_delr_d*(rik_hat - rij_hat);
vec3_scale(-dfc*gijk*ex_delr,rik_hat,dri);
vec3_scaleadd(fc*gijk_d*ex_delr,dcosdri,dri,dri);
vec3_scaleadd(fc*gijk*ex_delr_d,rik_hat,dri,dri);
vec3_scaleadd(-fc*gijk*ex_delr_d,rij_hat,dri,dri);
vec3_scale(prefactor,dri,dri);
// compute the derivative wrt Rj
// drj = fc*gijk_d*ex_delr*dcosdrj;
// drj += fc*gijk*ex_delr_d*rij_hat;
vec3_scale(fc*gijk_d*ex_delr,dcosdrj,drj);
vec3_scaleadd(fc*gijk*ex_delr_d,rij_hat,drj,drj);
vec3_scale(prefactor,drj,drj);
// compute the derivative wrt Rk
// drk = dfc*gijk*ex_delr*rik_hat;
// drk += fc*gijk_d*ex_delr*dcosdrk;
// drk += -fc*gijk*ex_delr_d*rik_hat;
vec3_scale(dfc*gijk*ex_delr,rik_hat,drk);
vec3_scaleadd(fc*gijk_d*ex_delr,dcosdrk,drk,drk);
vec3_scaleadd(-fc*gijk*ex_delr_d,rik_hat,drk,drk);
vec3_scale(prefactor,drk,drk);
}
/* ---------------------------------------------------------------------- */
void PairTersoffShift::costheta_d(double *rij_hat, double rij,
double *rik_hat, double rik,
double *dri, double *drj, double *drk)
{
// first element is devative wrt Ri, second wrt Rj, third wrt Rk
double cos_theta = vec3_dot(rij_hat,rik_hat);
vec3_scaleadd(-cos_theta,rij_hat,rik_hat,drj);
vec3_scale(1.0/(rij-shiftBN),drj,drj);
vec3_scaleadd(-cos_theta,rik_hat,rij_hat,drk);
vec3_scale(1.0/(rik-shiftBN),drk,drk);
vec3_add(drj,drk,dri);
vec3_scale(-1.0,dri,dri);
}

View File

@ -0,0 +1,187 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, 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
PairStyle(tersoff/shift,PairTersoffShift)
#else
#ifndef LMP_PAIR_TERSOFF_SHIFT_H
#define LMP_PAIR_TERSOFF_SHIFT_H
#include "pair.h"
namespace LAMMPS_NS {
class PairTersoffShift : public Pair {
public:
PairTersoffShift(class LAMMPS *);
virtual ~PairTersoffShift();
virtual void compute(int, int);
void settings(int, char **);
void coeff(int, char **);
virtual void init_style();
double init_one(int, int);
static const int NPARAMS_PER_LINE = 17;
protected:
struct Param {
double lam1,lam2,lam3;
double c,d,h;
double gamma,powerm;
double powern,beta;
double biga,bigb,bigd,bigr;
double cut,cutsq;
double c1,c2,c3,c4;
int ielement,jelement,kelement;
int powermint;
double Z_i,Z_j; // added for TersoffZBL
double ZBLcut,ZBLexpscale;
double c5,ca1,ca4; // added for TersoffMOD
double powern_del;
double c0; // added for TersoffMODC
};
Param *params; // parameter set for an I-J-K interaction
char **elements; // names of unique elements
int ***elem2param; // mapping from element triplets to parameters
int *map; // mapping from atom types to elements
double cutmax; // max cutoff for all elements
int nelements; // # of unique elements
int nparams; // # of stored parameter sets
int maxparam; // max # of parameter sets
int maxshort; // size of short neighbor list array
int *neighshort; // short neighbor list array
double shiftBN,shiftCC; // the values for shifting the BN or C lattice
virtual void allocate();
virtual void read_file(char *);
virtual void setup_params();
virtual void repulsive(Param *, double, double &, int, double &);
virtual double zeta(Param *, double, double, double *, double *);
virtual void force_zeta(Param *, double, double, double &,
double &, int, double &);
void attractive(Param *, double, double, double, double *, double *,
double *, double *, double *);
virtual double ters_fc(double, Param *);
virtual double ters_fc_d(double, Param *);
virtual double ters_fa(double, Param *);
virtual double ters_fa_d(double, Param *);
virtual double ters_bij(double, Param *);
virtual double ters_bij_d(double, Param *);
virtual void ters_zetaterm_d(double, double *, double, double *, double,
double *, double *, double *, Param *);
void costheta_d(double *, double, double *, double,
double *, double *, double *);
// inlined functions for efficiency
inline double ters_gijk(const double costheta,
const Param * const param) const {
const double ters_c = param->c * param->c;
const double ters_d = param->d * param->d;
const double hcth = param->h - costheta;
return param->gamma*(1.0 + ters_c/ters_d - ters_c / (ters_d + hcth*hcth));
}
inline double ters_gijk_d(const double costheta,
const Param * const param) const {
const double ters_c = param->c * param->c;
const double ters_d = param->d * param->d;
const double hcth = param->h - costheta;
const double numerator = -2.0 * ters_c * hcth;
const double denominator = 1.0/(ters_d + hcth*hcth);
return param->gamma*numerator*denominator*denominator;
}
inline double vec3_dot(const double x[3], const double y[3]) const {
return x[0]*y[0] + x[1]*y[1] + x[2]*y[2];
}
inline void vec3_add(const double x[3], const double y[3],
double * const z) const {
z[0] = x[0]+y[0]; z[1] = x[1]+y[1]; z[2] = x[2]+y[2];
}
inline void vec3_scale(const double k, const double x[3],
double y[3]) const {
y[0] = k*x[0]; y[1] = k*x[1]; y[2] = k*x[2];
}
inline void vec3_scaleadd(const double k, const double x[3],
const double y[3], double * const z) const {
z[0] = k*x[0]+y[0];
z[1] = k*x[1]+y[1];
z[2] = k*x[2]+y[2];
}
};
}
#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: Pair style Tersoff requires atom IDs
This is a requirement to use the Tersoff potential.
E: Pair style Tersoff requires newton pair on
See the newton command. This is a restriction to use the Tersoff
potential.
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.
E: Cannot open Tersoff potential file %s
The specified potential file cannot be opened. Check that the path
and name are correct.
E: Incorrect format in Tersoff potential file
Incorrect number of words per line in the potential file.
E: Illegal Tersoff parameter
One or more of the coefficients defined in the potential file is
invalid.
E: Potential file has duplicate entry
The potential file has more than one entry for the same element.
E: Potential file is missing an entry
The potential file does not have a needed entry.
*/