diff --git a/doc/src/pair_tersoff_shift.rst b/doc/src/pair_tersoff_shift.rst new file mode 100644 index 0000000000..19bceaf86f --- /dev/null +++ b/doc/src/pair_tersoff_shift.rst @@ -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) `. 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) ` and :ref:`(Ouyang_1) `. + +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 `. + + +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 ` +shift, table, and tail options. + +This pair style does not write its information to :doc:`binary restart files `, since it is stored in potential files. Thus, you +need to re-specify the pair_style and pair_coeff commands in an input +script that reads a restart file. + +This pair style can only be used via the *pair* keyword of the +:doc:`run_style respa ` 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 ` doc page for more info. + +This pair style requires the :doc:`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 `. 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 `, +:doc:`pair_style tersoff `, +:doc:`pair_style 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). diff --git a/examples/USER/misc/tersoff_shift/BNC.tersoff b/examples/USER/misc/tersoff_shift/BNC.tersoff new file mode 100644 index 0000000000..1630062524 --- /dev/null +++ b/examples/USER/misc/tersoff_shift/BNC.tersoff @@ -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 diff --git a/examples/USER/misc/tersoff_shift/hBN-momolayer-5nm.data b/examples/USER/misc/tersoff_shift/hBN-momolayer-5nm.data new file mode 100644 index 0000000000..a0be655bdb --- /dev/null +++ b/examples/USER/misc/tersoff_shift/hBN-momolayer-5nm.data @@ -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 diff --git a/examples/USER/misc/tersoff_shift/in.hBN_no_shift b/examples/USER/misc/tersoff_shift/in.hBN_no_shift new file mode 100644 index 0000000000..575f6466bb --- /dev/null +++ b/examples/USER/misc/tersoff_shift/in.hBN_no_shift @@ -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 diff --git a/examples/USER/misc/tersoff_shift/in.hBN_shift b/examples/USER/misc/tersoff_shift/in.hBN_shift new file mode 100644 index 0000000000..be7051fb96 --- /dev/null +++ b/examples/USER/misc/tersoff_shift/in.hBN_shift @@ -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 diff --git a/examples/USER/misc/tersoff_shift/log.30Nov20.hBN_no_shift.g++.1 b/examples/USER/misc/tersoff_shift/log.30Nov20.hBN_no_shift.g++.1 new file mode 100644 index 0000000000..5151792630 --- /dev/null +++ b/examples/USER/misc/tersoff_shift/log.30Nov20.hBN_no_shift.g++.1 @@ -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 diff --git a/examples/USER/misc/tersoff_shift/log.30Nov20.hBN_shift.g++.1 b/examples/USER/misc/tersoff_shift/log.30Nov20.hBN_shift.g++.1 new file mode 100644 index 0000000000..1e1d6d2805 --- /dev/null +++ b/examples/USER/misc/tersoff_shift/log.30Nov20.hBN_shift.g++.1 @@ -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 diff --git a/src/USER-MISC/pair_tersoff_shift.cpp b/src/USER-MISC/pair_tersoff_shift.cpp new file mode 100644 index 0000000000..4ee2818804 --- /dev/null +++ b/src/USER-MISC/pair_tersoff_shift.cpp @@ -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 +#include +#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(¶ms[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(¶ms[iparam_ijk],rsq1,rsq2,delr1,delr2); + } + + // pairwise force due to zeta + + force_zeta(¶ms[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(¶ms[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); +} diff --git a/src/USER-MISC/pair_tersoff_shift.h b/src/USER-MISC/pair_tersoff_shift.h new file mode 100644 index 0000000000..6b75d5787c --- /dev/null +++ b/src/USER-MISC/pair_tersoff_shift.h @@ -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. + +*/