diff --git a/doc/src/Commands_pair.txt b/doc/src/Commands_pair.txt index e887f0178a..ad55513a48 100644 --- a/doc/src/Commands_pair.txt +++ b/doc/src/Commands_pair.txt @@ -80,6 +80,7 @@ OPT. "dpd/fdt/energy (k)"_pair_dpd_fdt.html, "dpd/tstat (go)"_pair_dpd.html, "dsmc"_pair_dsmc.html, +"drip"_pair_drip.html, "eam (gikot)"_pair_eam.html, "eam/alloy (gikot)"_pair_eam.html, "eam/cd (o)"_pair_eam.html, diff --git a/doc/src/Eqs/pair_drip.jpg b/doc/src/Eqs/pair_drip.jpg new file mode 100644 index 0000000000..a94b4141b0 Binary files /dev/null and b/doc/src/Eqs/pair_drip.jpg differ diff --git a/doc/src/Eqs/pair_drip.tex b/doc/src/Eqs/pair_drip.tex new file mode 100644 index 0000000000..079a2cdf84 --- /dev/null +++ b/doc/src/Eqs/pair_drip.tex @@ -0,0 +1,14 @@ +\documentclass[12pt]{article} +\usepackage{amsmath} +\usepackage{bm} + +\begin{document} + +\begin{eqnarray*} +E &=& \frac{1}{2} \sum_{i} \sum_{j\notin\text{layer}\,i} \phi_{ij} \\\phi_{ij} &=& f_\text{c}(x_r) \left[ e^{-\lambda(r_{ij} - z_0 )} \left[C+f(\rho_{ij})+ g(\rho_{ij}, \{\alpha_{ij}^{(m)}\}) \right]- A\left (\frac{z_0}{r_{ij}} \right)^6 \right] \\ +\end{eqnarray*} + + + + +\end{document} \ No newline at end of file diff --git a/doc/src/lammps.book b/doc/src/lammps.book index 500690597d..2b4e91102f 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -574,6 +574,7 @@ pair_dipole.html pair_dpd.html pair_dpd_fdt.html pair_dsmc.html +pair_drip.html pair_eam.html pair_edip.html pair_eff.html diff --git a/doc/src/pair_drip.txt b/doc/src/pair_drip.txt new file mode 100644 index 0000000000..84c92b04e4 --- /dev/null +++ b/doc/src/pair_drip.txt @@ -0,0 +1,141 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Commands_all.html) + +:line + +pair_style drip command :h3 + +[Syntax:] + +pair_style hybrid/overlay drip \[styles ...\] :pre + +styles = other styles to be overlayed with drip (optional) :ul + +[Examples:] + +pair_style hybrid/overlay drip +pair_coeff * * none +pair_coeff * * drip C.drip C :pre + +pair_style hybrid/overlay drip rebo +pair_coeff * * drip C.drip C +pair_coeff * * rebo CH.airebo C :pre + +pair_style hybrid/overlay drip rebo +pair_coeff * * drip C.drip C NULL +pair_coeff * * rebo CH.airebo C H :pre + + +[Description:] + +Style {drip} computes the interlayer interactions of layered materials using +the dihedral-angle-corrected registry-dependent (DRIP) potential as described +in "(Wen)"_#Wen2018, which is based on the "(Kolmogorov)"_#Kolmogorov2005 +potential and provides an improved prediction for forces. +The total potential energy of a system is + +:c,image(Eqs/pair_drip.jpg) + +where the {r^-6} term models the attractive London dispersion, +the exponential term is designed to capture the registry effect due to +overlapping {pi} bonds, and {fc} is a cutoff function. + + +This potential (DRIP) only provides the interlayer interactions between +graphene layers. So, to perform a realistic simulation, it should be used in +combination with an intralayer potential such as "REBO"_pair_airebo.html and +"Tersoff"_pair_tersoff.html. +To keep the intralayer interactions unaffected, we should avoid applying DRIP +to contribute energy to intralayer interactions. This can be achieved by +assigning different molecular IDs to atoms in different layers, and DRIP is +implemented such that only atoms with different molecular ID can interact with +each other. For this purpose, "atom style"_atom_style.html "molecular" or +"full" has to be used. + +On the other way around, "REBO"_pair_airebo.html ("Tersoff"_pair_tersoff.html +or any other potential used to provide the intralayer interactions) should not +interfere with the interlayer interactions described by DRIP. This is typically +automatically achieved using the commands provided in the {Examples} section +above, since the cutoff distance for carbon-carbon interaction in the intralayer +potentials (e.g. 2 Angstrom for "REBO"_pair_airebo.html) is much smaller than +the equilibrium layer distance of graphene layers (about 3.4 Angstrom). +If you want, you can enforce this by assigning different atom types to atoms in +different layers, and apply an intralayer potential to one atom type. +See "pair_hybrid"_pair_hybrid.html for details. + +:line + +The "pair_coeff"_pair_coeff.html command for DRIP takes {4+N} arguments, where +{N} is the number of LAMMPS atom types. The fist three arguments must be fixed +to be {* * drip}, the fourth argument is the path to the DRIP parameter file, +and the remaining N arguments specifying the mapping between element in the +parameter file and atom types. For example, if your LAMMPS simulation has 3 atom +types and you want all of them to be C, you would use the following pair_coeff +command: + +pair_coeff * * drip C.drip C C C :pre + +If a mapping value is specified as NULL, the mapping is not performed. This +could be useful when DRIP is used to model part of the system where other +element exists. Suppose you have a hydrocarbon system, with C of atom type 1 +and H of atom type 2, you can use the following command to inform DRIP not to +model H atoms: + +pair_style hybrid/overlay drip rebo +pair_coeff * * drip C.drip C NULL +pair_coeff * * rebo CH.airebo C H :pre + +NOTE: The potential parameters developed in "(Wen)"_#Wen2018 are provided with +LAMMPS (see the "potentials" directory). Besides those in "Wen"_#Wen2018, an +additional parameter "normal_cutoff", specific to the LAMMPS implementation, is +used to find the three nearest neighbors of an atom to construct the normal. + + +:line + +[Mixing, shift, table, tail correction, and restart info]: + +This pair style does not support the pair_modify mix, shift, table, +and tail options. + +This pair style does not write their information to binary restart files, since +it is stored in potential files. Thus, you need to re-specify the pair_style and +pair_coeff commands in an input script that reads a restart file. + +[Restrictions:] + +This pair style is part of the USER-MISC package. It is only enabled if LAMMPS +was built with that package. See the "Build package"_Build_package.html doc +page for more info. + +This pair potential requires the "newton"_newton.html setting to be "on" for +pair interactions. + + +The {C.drip} parameter file provided with LAMMPS (see the "potentials" +directory) is parameterized for metal "units"_units.html. You can use the DRIP +potential with any LAMMPS units, but you would need to create your own custom +parameter file with coefficients listed in the appropriate units, if your +simulation doesn't use "metal" units. + + +[Related commands:] + +"pair_style lebedeva_z"_pair_lebedeva_z.html, +"pair_style kolmogorov/crespi/z"_pair_kolmogorov_crespi_z.html, +"pair_style kolmogorov/crespi/full"_pair_kolmogorov_crespi_full.html, +"pair_style ilp/graphene/hbn"_pair_ilp_graphene_hbn.html. + + +:line + +:link(Wen2018) +[(Wen)] M. Wen, S. Carr, S. Fang, E. Kaxiras, and E. B. Tadmor, Phys. Rev. B, +98, 235404 (2018) + +:link(Kolmogorov2005) +[(Kolmogorov)] A. N. Kolmogorov, V. H. Crespi, Phys. Rev. B 71, 235415 (2005) + diff --git a/doc/src/pair_ilp_graphene_hbn.txt b/doc/src/pair_ilp_graphene_hbn.txt index 3a5d4accd5..6a28c5e064 100644 --- a/doc/src/pair_ilp_graphene_hbn.txt +++ b/doc/src/pair_ilp_graphene_hbn.txt @@ -50,11 +50,11 @@ calculating the normals. NOTE: This potential (ILP) is intended for interlayer interactions between two different layers of graphene, hexagonal boron nitride (h-BN) and their hetero-junction. To perform a realistic simulation, this potential must be used in combination with -intra-layer potential, such as "AIREBO"_pair_airebo.html or "Tersoff"_pair_tersoff.html potential. -To keep the intra-layer properties unaffected, the interlayer interaction +intralayer potential, such as "AIREBO"_pair_airebo.html or "Tersoff"_pair_tersoff.html potential. +To keep the intralayer properties unaffected, the interlayer interaction within the same layers should be avoided. Hence, each atom has to have a layer identifier such that atoms residing on the same layer interact via the -appropriate intra-layer potential and atoms residing on different layers +appropriate intralayer potential and atoms residing on different layers interact via the ILP. Here, the molecule id is chosen as the layer identifier, thus a data file with the "full" atom style is required to use this potential. @@ -117,6 +117,7 @@ units, if your simulation does not use {metal} units. "pair_coeff"_pair_coeff.html, "pair_none"_pair_none.html, "pair_style hybrid/overlay"_pair_hybrid.html, +"pair_style drip"_pair_drip.html, "pair_style pair_kolmogorov_crespi_z"_pair_kolmogorov_crespi_z.html, "pair_style pair_kolmogorov_crespi_full"_pair_kolmogorov_crespi_full.html, "pair_style pair_lebedeva_z"_pair_lebedeva_z.html, diff --git a/doc/src/pair_kolmogorov_crespi_full.txt b/doc/src/pair_kolmogorov_crespi_full.txt index 05effc5620..20ebe9a3b1 100644 --- a/doc/src/pair_kolmogorov_crespi_full.txt +++ b/doc/src/pair_kolmogorov_crespi_full.txt @@ -44,12 +44,12 @@ can be found in pair style "ilp/graphene/hbn"_pair_ilp_graphene_hbn.html. NOTE: This potential (ILP) is intended for interlayer interactions between two different layers of graphene. To perform a realistic simulation, this potential -must be used in combination with intra-layer potential, such as +must be used in combination with intralayer potential, such as "AIREBO"_pair_airebo.html or "Tersoff"_pair_tersoff.html potential. -To keep the intra-layer properties unaffected, the interlayer interaction +To keep the intralayer properties unaffected, the interlayer interaction within the same layers should be avoided. Hence, each atom has to have a layer identifier such that atoms residing on the same layer interact via the -appropriate intra-layer potential and atoms residing on different layers +appropriate intralayer potential and atoms residing on different layers interact via the ILP. Here, the molecule id is chosen as the layer identifier, thus a data file with the "full" atom style is required to use this potential. @@ -106,6 +106,7 @@ units. "pair_coeff"_pair_coeff.html, "pair_none"_pair_none.html, "pair_style hybrid/overlay"_pair_hybrid.html, +"pair_style drip"_pair_drip.html, "pair_style pair_lebedeva_z"_pair_lebedeva_z.html, "pair_style kolmogorov/crespi/z"_pair_kolmogorov_crespi_z.html, "pair_style ilp/graphene/hbn"_pair_ilp_graphene_hbn.html. diff --git a/doc/src/pair_kolmogorov_crespi_z.txt b/doc/src/pair_kolmogorov_crespi_z.txt index aabb3460e7..c3132bb031 100644 --- a/doc/src/pair_kolmogorov_crespi_z.txt +++ b/doc/src/pair_kolmogorov_crespi_z.txt @@ -59,6 +59,7 @@ package"_Build_package.html doc page for more info. "pair_coeff"_pair_coeff.html, "pair_none"_pair_none.html, "pair_style hybrid/overlay"_pair_hybrid.html, +"pair_style drip"_pair_drip.html, "pair_style ilp/graphene/hbn"_pair_ilp_graphene_hbn.html. "pair_style kolmogorov/crespi/full"_pair_kolmogorov_crespi_full.html, "pair_style lebedeva/z"_pair_lebedeva_z.html diff --git a/doc/src/pair_lebedeva_z.txt b/doc/src/pair_lebedeva_z.txt index 9eab56d0d9..a05f5a3533 100644 --- a/doc/src/pair_lebedeva_z.txt +++ b/doc/src/pair_lebedeva_z.txt @@ -53,6 +53,7 @@ package"_Build_package.html doc page for more info. "pair_coeff"_pair_coeff.html, "pair_style none"_pair_none.html, "pair_style hybrid/overlay"_pair_hybrid.html, +"pair_style drip"_pair_drip.html, "pair_style ilp/graphene/hbd"_pair_ilp_graphene_hbn.html, "pair_style kolmogorov/crespi/z"_pair_kolmogorov_crespi_z.html, "pair_style kolmogorov/crespi/full"_pair_kolmogorov_crespi_full.html. diff --git a/doc/src/pair_style.txt b/doc/src/pair_style.txt index f6fcd110d8..ea0c029321 100644 --- a/doc/src/pair_style.txt +++ b/doc/src/pair_style.txt @@ -147,6 +147,7 @@ accelerated styles exist. "dpd/fdt/energy"_pair_dpd_fdt.html - DPD for constant energy and enthalpy "dpd/tstat"_pair_dpd.html - pair-wise DPD thermostatting "dsmc"_pair_dsmc.html - Direct Simulation Monte Carlo (DSMC) +"drip"_pair_drip.html - Dihedral-angle-corrected registry-dependent interlayer potential (DRIP) "eam"_pair_eam.html - embedded atom method (EAM) "eam/alloy"_pair_eam.html - alloy EAM "eam/cd"_pair_eam.html - concentration-dependent EAM @@ -174,7 +175,7 @@ accelerated styles exist. "kolmogorov/crespi/full"_pair_kolmogorov_crespi_full.html - Kolmogorov-Crespi (KC) potential with no simplifications "kolmogorov/crespi/z"_pair_kolmogorov_crespi_z.html - Kolmogorov-Crespi (KC) potential with normals along z-axis "lcbop"_pair_lcbop.html - long-range bond-order potential (LCBOP) -"lebedeva/z"_pair_lebedeva_z.html - Lebedeva inter-layer potential for graphene with normals along z-axis +"lebedeva/z"_pair_lebedeva_z.html - Lebedeva interlayer potential for graphene with normals along z-axis "lennard/mdf"_pair_mdf.html - LJ potential in A/B form with a taper function "line/lj"_pair_line_lj.html - LJ potential between line segments "list"_pair_list.html - potential between pairs of atoms explicitly listed in an input file diff --git a/doc/src/pairs.txt b/doc/src/pairs.txt index 30dcc8fd4b..fc9ad974bc 100644 --- a/doc/src/pairs.txt +++ b/doc/src/pairs.txt @@ -31,6 +31,7 @@ Pair Styles :h1 pair_dipole pair_dpd pair_dpd_fdt + pair_drip pair_dsmc pair_eam pair_edip diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 7160800c50..8259873222 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -1160,6 +1160,7 @@ Interparticle interstitials Intr intra +intralayer intramolecular ints inv @@ -1276,6 +1277,7 @@ Katsnelson Katsura Kaufmann Kawata +Kaxiras Kayser kb kB diff --git a/examples/USER/misc/drip/C.drip b/examples/USER/misc/drip/C.drip new file mode 120000 index 0000000000..44959e2423 --- /dev/null +++ b/examples/USER/misc/drip/C.drip @@ -0,0 +1 @@ +../../../../potentials/C.drip \ No newline at end of file diff --git a/examples/USER/misc/drip/CH.rebo b/examples/USER/misc/drip/CH.rebo new file mode 120000 index 0000000000..c5a6a40100 --- /dev/null +++ b/examples/USER/misc/drip/CH.rebo @@ -0,0 +1 @@ +../../../../potentials/CH.rebo \ No newline at end of file diff --git a/examples/USER/misc/drip/README.txt b/examples/USER/misc/drip/README.txt new file mode 100644 index 0000000000..26a8e3dd00 --- /dev/null +++ b/examples/USER/misc/drip/README.txt @@ -0,0 +1,6 @@ +in.C_drip: + Use DRIP and REBO to relax a bilayer graphene. + +in.CH_drip: + Use DRIP and REBO to relax a bilayer graphene with additional hydrogen atoms + on top of it. diff --git a/examples/USER/misc/drip/data.C b/examples/USER/misc/drip/data.C new file mode 100644 index 0000000000..18ff6af645 --- /dev/null +++ b/examples/USER/misc/drip/data.C @@ -0,0 +1,416 @@ +LAMMPS data file + +400 atoms +1 atom types + +0.0 2.465000000000000e+01 xlo xhi +0.0 2.134752620328641e+01 ylo yhi +0.0 3.000000000000000e+01 zlo zhi +1.232500000000000e+01 0.000000000000000e+00 0.000000000000000e+00 xy xz yz + +Masses + +1 12.011 + +Atoms # molecular + +1 1 1 0.000000000000000e+00 0.000000000000000e+00 1.498097531971289e+01 +2 1 1 9.859999999999999e+00 1.707802096262913e+01 1.489139792549795e+01 +3 1 1 2.588250000000000e+01 6.404257860985923e+00 1.495586615731768e+01 +4 1 1 2.711500000000000e+01 7.115842067762138e+00 1.501795235919980e+01 +5 1 1 4.930000000000000e+00 8.539010481314564e+00 1.492827527515956e+01 +6 1 1 6.162499999999999e+00 9.250594688090777e+00 1.500678649580791e+01 +7 1 1 3.204499999999999e+01 1.565485254907670e+01 1.511662064028576e+01 +8 1 1 3.081250000000000e+01 1.494326834230049e+01 1.505500683988625e+01 +9 1 1 7.395000000000000e+00 8.539010481314564e+00 1.504923694256975e+01 +10 1 1 8.627500000000000e+00 9.250594688090777e+00 1.503332570633445e+01 +11 1 1 9.859999999999999e+00 8.539010481314564e+00 1.508137430939768e+01 +12 1 1 1.109250000000000e+01 9.250594688090777e+00 1.510475862694483e+01 +13 1 1 1.109250000000000e+01 1.778960516940534e+01 1.494613902888088e+01 +14 1 1 2.958000000000000e+01 1.565485254907670e+01 1.516279958068751e+01 +15 1 1 1.232500000000000e+01 8.539010481314564e+00 1.511276583208523e+01 +16 1 1 1.355750000000000e+01 9.250594688090777e+00 1.495632206546155e+01 +17 1 1 1.479000000000000e+01 8.539010481314564e+00 1.498291715828213e+01 +18 1 1 1.602250000000000e+01 9.250594688090777e+00 1.509801558902469e+01 +19 1 1 2.711499999999999e+01 1.565485254907670e+01 1.500089766276763e+01 +20 1 1 2.588250000000000e+01 1.494326834230049e+01 1.505114888970355e+01 +21 1 1 1.725500000000000e+01 8.539010481314564e+00 1.504495103103041e+01 +22 1 1 1.848750000000000e+01 9.250594688090777e+00 1.513527732850389e+01 +23 1 1 1.972000000000000e+01 8.539010481314564e+00 1.502400693288890e+01 +24 1 1 2.095250000000000e+01 9.250594688090777e+00 1.490419939433632e+01 +25 1 1 2.465000000000000e+01 1.565485254907670e+01 1.492998117758711e+01 +26 1 1 2.834750000000000e+01 1.494326834230049e+01 1.496091474579883e+01 +27 1 1 2.465000000000000e+01 7.115842067762138e+00 1.497394355694102e+01 +28 1 1 2.341750000000000e+01 6.404257860985923e+00 1.500235588455933e+01 +29 1 1 2.218500000000000e+01 7.115842067762138e+00 1.503766448268803e+01 +30 1 1 2.465000000000000e+01 4.269505240657282e+00 1.488340764495658e+01 +31 1 1 2.588250000000000e+01 4.981089447433495e+00 1.490587231994899e+01 +32 1 1 3.697500000000000e+00 6.404257860985923e+00 1.500462204163887e+01 +33 1 1 4.930000000000000e+00 7.115842067762138e+00 1.507823175629797e+01 +34 1 1 2.095250000000000e+01 1.778960516940534e+01 1.485635836857104e+01 +35 1 1 1.972000000000000e+01 1.707802096262913e+01 1.508733405608850e+01 +36 1 1 6.162500000000000e+00 6.404257860985923e+00 1.495657175139946e+01 +37 1 1 7.395000000000000e+00 7.115842067762138e+00 1.505630699893542e+01 +38 1 1 8.627500000000000e+00 6.404257860985923e+00 1.493710859708546e+01 +39 1 1 9.859999999999999e+00 7.115842067762138e+00 1.498031036104573e+01 +40 1 1 1.848750000000000e+01 1.778960516940534e+01 1.492663969598082e+01 +41 1 1 1.725500000000000e+01 1.707802096262913e+01 1.487928391741343e+01 +42 1 1 2.218500000000000e+01 1.280851572197185e+01 1.493339893560164e+01 +43 1 1 1.232500000000000e+01 7.115842067762138e+00 1.507943978677017e+01 +44 1 1 1.355750000000000e+01 6.404257860985923e+00 1.484914917113341e+01 +45 1 1 1.479000000000000e+01 7.115842067762138e+00 1.516663648122805e+01 +46 1 1 1.602250000000000e+01 1.778960516940534e+01 1.494170266401908e+01 +47 1 1 1.479000000000000e+01 1.707802096262913e+01 1.489834582180523e+01 +48 1 1 1.602250000000000e+01 6.404257860985923e+00 1.502658138746657e+01 +49 1 1 1.725500000000000e+01 7.115842067762138e+00 1.498697322036154e+01 +50 1 1 1.848750000000000e+01 6.404257860985923e+00 1.504573856434245e+01 +51 1 1 1.972000000000000e+01 7.115842067762138e+00 1.498510668772038e+01 +52 1 1 1.355750000000000e+01 1.778960516940534e+01 1.503160986637731e+01 +53 1 1 1.232500000000000e+01 1.707802096262913e+01 1.482446479934924e+01 +54 1 1 2.095250000000000e+01 6.404257860985923e+00 1.510811524523195e+01 +55 1 1 2.341750000000000e+01 1.494326834230049e+01 1.505440697642049e+01 +56 1 1 2.218500000000000e+01 1.707802096262913e+01 1.489480063588714e+01 +57 1 1 2.218500000000000e+01 8.539010481314564e+00 1.495045959051609e+01 +58 1 1 2.465000000000000e+01 8.539010481314564e+00 1.512601015985335e+01 +59 1 1 2.588250000000000e+01 1.067376310164321e+01 1.495691790117351e+01 +60 1 1 2.711500000000000e+01 1.138534730841942e+01 1.496195578420333e+01 +61 1 1 9.859999999999999e+00 1.565485254907670e+01 1.488138963237187e+01 +62 1 1 8.627500000000000e+00 1.494326834230049e+01 1.498700505084123e+01 +63 1 1 2.834750000000000e+01 1.067376310164321e+01 1.504459111637339e+01 +64 1 1 2.958000000000000e+01 1.138534730841942e+01 1.495098625433358e+01 +65 1 1 7.395000000000000e+00 1.280851572197185e+01 1.505608046573023e+01 +66 1 1 8.627500000000000e+00 1.352009992874806e+01 1.484199719552881e+01 +67 1 1 3.081250000000000e+01 1.352009992874806e+01 1.483451056838223e+01 +68 1 1 2.958000000000000e+01 1.280851572197185e+01 1.502332948089694e+01 +69 1 1 9.859999999999999e+00 1.280851572197185e+01 1.506286085730730e+01 +70 1 1 2.465000000000000e+01 1.138534730841942e+01 1.506305034228861e+01 +71 1 1 1.109250000000000e+01 1.352009992874806e+01 1.491918072685150e+01 +72 1 1 1.355750000000000e+01 1.352009992874806e+01 1.494644661191470e+01 +73 1 1 2.834750000000000e+01 1.352009992874806e+01 1.496099714517733e+01 +74 1 1 2.711500000000000e+01 1.280851572197185e+01 1.498298656405413e+01 +75 1 1 1.479000000000000e+01 1.280851572197185e+01 1.511808602386498e+01 +76 1 1 1.602250000000000e+01 1.352009992874806e+01 1.509196186449678e+01 +77 1 1 1.725500000000000e+01 1.280851572197185e+01 1.494017769280163e+01 +78 1 1 1.848750000000000e+01 1.352009992874806e+01 1.486540173862453e+01 +79 1 1 2.588250000000000e+01 1.352009992874806e+01 1.502414429870090e+01 +80 1 1 2.465000000000000e+01 1.280851572197185e+01 1.491189258035136e+01 +81 1 1 1.972000000000000e+01 1.280851572197185e+01 1.503451993485524e+01 +82 1 1 2.095250000000000e+01 1.352009992874806e+01 1.503423133885440e+01 +83 1 1 1.232500000000000e+01 1.280851572197185e+01 1.492432047742539e+01 +84 1 1 2.341750000000000e+01 1.067376310164321e+01 1.500488865182437e+01 +85 1 1 1.109250000000000e+01 1.494326834230049e+01 1.509530225402135e+01 +86 1 1 1.232500000000000e+01 1.565485254907670e+01 1.500246060086581e+01 +87 1 1 2.588250000000000e+01 9.250594688090777e+00 1.498734533172262e+01 +88 1 1 2.218500000000000e+01 1.565485254907670e+01 1.504729297899704e+01 +89 1 1 2.095250000000000e+01 1.494326834230049e+01 1.486622917148261e+01 +90 1 1 2.711500000000000e+01 8.539010481314564e+00 1.494373650471835e+01 +91 1 1 2.834750000000000e+01 9.250594688090777e+00 1.488792788684821e+01 +92 1 1 6.162500000000000e+00 1.067376310164321e+01 1.486731884367082e+01 +93 1 1 7.395000000000000e+00 1.138534730841942e+01 1.509646856144050e+01 +94 1 1 1.972000000000000e+01 1.565485254907670e+01 1.488798024124609e+01 +95 1 1 1.848750000000000e+01 1.494326834230049e+01 1.489558509878004e+01 +96 1 1 8.627500000000000e+00 1.067376310164321e+01 1.497336164791434e+01 +97 1 1 9.859999999999999e+00 1.138534730841942e+01 1.496081048392299e+01 +98 1 1 1.109250000000000e+01 1.067376310164321e+01 1.494580009249847e+01 +99 1 1 1.232500000000000e+01 1.138534730841942e+01 1.510396759497348e+01 +100 1 1 1.725500000000000e+01 1.565485254907670e+01 1.499338417222946e+01 +101 1 1 1.602250000000000e+01 1.494326834230049e+01 1.511840116374763e+01 +102 1 1 1.355750000000000e+01 1.067376310164321e+01 1.503281161003896e+01 +103 1 1 1.479000000000000e+01 1.138534730841942e+01 1.499843298302028e+01 +104 1 1 1.602250000000000e+01 1.067376310164321e+01 1.491311607132768e+01 +105 1 1 1.725500000000000e+01 1.138534730841942e+01 1.504030511972019e+01 +106 1 1 1.479000000000000e+01 1.565485254907670e+01 1.486944422096690e+01 +107 1 1 1.355750000000000e+01 1.494326834230049e+01 1.476511580670247e+01 +108 1 1 1.848750000000000e+01 1.067376310164321e+01 1.483733215135541e+01 +109 1 1 1.972000000000000e+01 1.138534730841942e+01 1.483307878319485e+01 +110 1 1 2.095250000000000e+01 1.067376310164321e+01 1.472377202887134e+01 +111 1 1 2.218500000000000e+01 1.138534730841942e+01 1.494032335018560e+01 +112 1 1 2.341750000000000e+01 9.250594688090777e+00 1.511930030385710e+01 +113 1 1 2.341750000000000e+01 1.778960516940534e+01 1.506163255648677e+01 +114 1 1 1.109250000000000e+01 6.404257860985923e+00 1.507183137955260e+01 +115 1 1 2.218500000000000e+01 4.269505240657282e+00 1.492921198534790e+01 +116 1 1 2.341750000000000e+01 7.115842067762137e-01 1.506491820629175e+01 +117 1 1 1.232500000000000e+00 2.134752620328641e+00 1.507012124249483e+01 +118 1 1 2.465000000000000e+00 2.846336827104855e+00 1.503655403336380e+01 +119 1 1 2.218500000000000e+01 1.992435778973398e+01 1.505948767536701e+01 +120 1 1 2.095250000000000e+01 1.921277358295777e+01 1.514330257618634e+01 +121 1 1 3.697500000000000e+00 2.134752620328641e+00 1.502497496406354e+01 +122 1 1 4.930000000000000e+00 2.846336827104855e+00 1.507374298221752e+01 +123 1 1 6.162500000000000e+00 2.134752620328641e+00 1.493733326297393e+01 +124 1 1 7.395000000000000e+00 2.846336827104855e+00 1.487495201368372e+01 +125 1 1 1.972000000000000e+01 1.992435778973398e+01 1.505808760634221e+01 +126 1 1 1.848750000000000e+01 1.921277358295777e+01 1.493872889432326e+01 +127 1 1 2.218500000000000e+01 0.000000000000000e+00 1.501312853963581e+01 +128 1 1 8.627500000000000e+00 2.134752620328641e+00 1.505205628279858e+01 +129 1 1 2.341750000000000e+01 4.981089447433495e+00 1.507571160792217e+01 +130 1 1 1.109250000000000e+01 2.134752620328641e+00 1.489358054803088e+01 +131 1 1 1.232500000000000e+01 2.846336827104855e+00 1.499912561242418e+01 +132 1 1 1.725500000000000e+01 1.992435778973398e+01 1.497577189332382e+01 +133 1 1 1.602250000000000e+01 1.921277358295777e+01 1.499040615876794e+01 +134 1 1 1.355750000000000e+01 2.134752620328641e+00 1.516072772863512e+01 +135 1 1 1.479000000000000e+01 2.846336827104855e+00 1.507211585538748e+01 +136 1 1 1.602250000000000e+01 2.134752620328641e+00 1.504045728176403e+01 +137 1 1 1.725500000000000e+01 2.846336827104855e+00 1.504684394670705e+01 +138 1 1 1.479000000000000e+01 1.992435778973398e+01 1.510384904069957e+01 +139 1 1 1.355750000000000e+01 1.921277358295777e+01 1.511446984282775e+01 +140 1 1 9.859999999999999e+00 2.846336827104855e+00 1.502182693962230e+01 +141 1 1 1.848750000000000e+01 2.134752620328641e+00 1.492115016417242e+01 +142 1 1 2.341750000000000e+01 1.921277358295777e+01 1.511940999724034e+01 +143 1 1 2.095250000000000e+01 7.115842067762137e-01 1.499411067303495e+01 +144 1 1 1.232500000000000e+00 7.115842067762137e-01 1.506494802778743e+01 +145 1 1 3.451000000000000e+01 1.992435778973398e+01 1.504957420337895e+01 +146 1 1 3.327750000000000e+01 1.921277358295777e+01 1.511072511003059e+01 +147 1 1 2.465000000000000e+00 0.000000000000000e+00 1.500837434607164e+01 +148 1 1 3.697500000000000e+00 7.115842067762137e-01 1.499541651074234e+01 +149 1 1 4.930000000000000e+00 0.000000000000000e+00 1.509518604163723e+01 +150 1 1 6.162500000000000e+00 7.115842067762137e-01 1.497074687620619e+01 +151 1 1 3.204500000000000e+01 1.992435778973398e+01 1.500792890976805e+01 +152 1 1 3.081250000000000e+01 1.921277358295777e+01 1.496690270418216e+01 +153 1 1 7.395000000000000e+00 0.000000000000000e+00 1.524069684472765e+01 +154 1 1 8.627500000000000e+00 7.115842067762137e-01 1.491839348334605e+01 +155 1 1 2.465000000000000e+01 1.992435778973398e+01 1.498895095057103e+01 +156 1 1 9.859999999999999e+00 0.000000000000000e+00 1.499465288102860e+01 +157 1 1 2.958000000000000e+01 1.992435778973398e+01 1.495366550654662e+01 +158 1 1 2.834750000000000e+01 1.921277358295777e+01 1.498688543050304e+01 +159 1 1 1.232500000000000e+01 0.000000000000000e+00 1.502461005163719e+01 +160 1 1 1.355750000000000e+01 7.115842067762137e-01 1.488675470180450e+01 +161 1 1 1.479000000000000e+01 0.000000000000000e+00 1.499317346174183e+01 +162 1 1 1.602250000000000e+01 7.115842067762137e-01 1.499167690758548e+01 +163 1 1 2.711499999999999e+01 1.992435778973398e+01 1.501975964337061e+01 +164 1 1 2.588250000000000e+01 1.921277358295777e+01 1.486203378273598e+01 +165 1 1 1.725500000000000e+01 0.000000000000000e+00 1.504809379785000e+01 +166 1 1 1.848750000000000e+01 7.115842067762137e-01 1.491114701451727e+01 +167 1 1 1.972000000000000e+01 0.000000000000000e+00 1.512011452965299e+01 +168 1 1 1.109250000000000e+01 7.115842067762137e-01 1.487408794621075e+01 +169 1 1 1.972000000000000e+01 2.846336827104855e+00 1.507831721537003e+01 +170 1 1 2.341750000000000e+01 1.352009992874806e+01 1.495718486297744e+01 +171 1 1 2.958000000000000e+01 1.707802096262913e+01 1.493147208418856e+01 +172 1 1 1.848750000000000e+01 4.981089447433495e+00 1.494913539471411e+01 +173 1 1 3.697500000000000e+00 4.981089447433495e+00 1.478998858443710e+01 +174 1 1 3.327750000000000e+01 1.778960516940534e+01 1.495502006800012e+01 +175 1 1 3.204500000000000e+01 1.707802096262913e+01 1.495051064694342e+01 +176 1 1 4.930000000000000e+00 4.269505240657282e+00 1.498350377115313e+01 +177 1 1 6.162500000000000e+00 4.981089447433495e+00 1.494667393795457e+01 +178 1 1 7.395000000000000e+00 4.269505240657282e+00 1.507985366541724e+01 +179 1 1 2.588250000000000e+01 1.778960516940534e+01 1.494716376988664e+01 +180 1 1 8.627500000000000e+00 4.981089447433495e+00 1.499320258596098e+01 +181 1 1 1.602250000000000e+01 4.981089447433495e+00 1.500127272897711e+01 +182 1 1 1.479000000000000e+01 4.269505240657282e+00 1.493241109430999e+01 +183 1 1 2.711500000000000e+01 1.707802096262913e+01 1.513215736063149e+01 +184 1 1 2.834750000000000e+01 1.778960516940534e+01 1.491995000096713e+01 +185 1 1 9.859999999999999e+00 4.269505240657282e+00 1.523967414046218e+01 +186 1 1 1.109250000000000e+01 4.981089447433495e+00 1.507658824600498e+01 +187 1 1 1.355750000000000e+01 4.981089447433495e+00 1.498019661433922e+01 +188 1 1 3.081250000000000e+01 1.778960516940534e+01 1.488921763404584e+01 +189 1 1 2.465000000000000e+01 1.707802096262913e+01 1.491522695293121e+01 +190 1 1 1.725500000000000e+01 4.269505240657282e+00 1.484531224085001e+01 +191 1 1 1.972000000000000e+01 4.269505240657282e+00 1.512087841047699e+01 +192 1 1 2.095250000000000e+01 2.134752620328641e+00 1.501366356379743e+01 +193 1 1 2.218500000000000e+01 2.846336827104855e+00 1.512768073569268e+01 +194 1 1 1.232500000000000e+01 1.992435778973398e+01 1.479694154125662e+01 +195 1 1 1.109250000000000e+01 1.921277358295777e+01 1.508375643482666e+01 +196 1 1 2.095250000000000e+01 4.981089447433495e+00 1.502213574954626e+01 +197 1 1 2.465000000000000e+00 4.269505240657282e+00 1.501785776522257e+01 +198 1 1 2.341750000000000e+01 2.134752620328641e+00 1.477223550033331e+01 +199 1 1 1.232500000000000e+01 4.269505240657282e+00 1.509476826791352e+01 +200 1 1 2.465000000000000e+01 2.846336827104855e+00 1.506451005381648e+01 +201 2 1 2.958000000000000e+01 1.423168413552428e+01 1.846233090874204e+01 +202 2 1 1.725500000000000e+01 1.850118937618155e+01 1.830892906667390e+01 +203 2 1 3.204500000000000e+01 1.992435778973398e+01 1.840011296435520e+01 +204 2 1 1.109250000000000e+01 1.636643675585292e+01 1.815423076555236e+01 +205 2 1 9.859999999999999e+00 1.565485254907670e+01 1.857780537003584e+01 +206 2 1 2.341750000000000e+01 1.352009992874806e+01 1.824080722484135e+01 +207 2 1 2.465000000000000e+01 1.423168413552428e+01 1.836017802635158e+01 +208 2 1 2.341750000000000e+01 1.778960516940534e+01 1.828410032494974e+01 +209 2 1 2.711499999999999e+01 1.992435778973398e+01 1.844731239573154e+01 +210 2 1 2.834750000000000e+01 2.063594199651019e+01 1.828146439901283e+01 +211 2 1 2.465000000000000e+01 1.850118937618155e+01 1.836242662973500e+01 +212 2 1 2.711500000000000e+01 1.423168413552428e+01 1.836150573422813e+01 +213 2 1 2.588250000000000e+01 1.352009992874806e+01 1.830533607491024e+01 +214 2 1 3.204499999999999e+01 1.423168413552428e+01 1.852693962525193e+01 +215 2 1 3.327750000000000e+01 2.063594199651019e+01 1.845057006323066e+01 +216 2 1 2.218500000000000e+01 1.850118937618155e+01 1.834530693106420e+01 +217 2 1 2.095250000000000e+01 1.778960516940534e+01 1.817360355124612e+01 +218 2 1 2.711500000000000e+01 1.850118937618155e+01 1.845768039438554e+01 +219 2 1 1.848750000000000e+01 1.778960516940534e+01 1.822837106768257e+01 +220 2 1 1.972000000000000e+01 1.850118937618155e+01 1.834146516606220e+01 +221 2 1 1.602250000000000e+01 1.778960516940534e+01 1.837935563986790e+01 +222 2 1 2.958000000000000e+01 1.992435778973398e+01 1.860134630351601e+01 +223 2 1 3.081250000000000e+01 2.063594199651019e+01 1.829143841375619e+01 +224 2 1 2.588250000000000e+01 1.778960516940534e+01 1.828834782396325e+01 +225 2 1 2.834750000000000e+01 1.352009992874806e+01 1.856412094918868e+01 +226 2 1 3.081250000000000e+01 1.352009992874806e+01 1.853801808786659e+01 +227 2 1 1.355750000000000e+01 2.063594199651019e+01 1.848883167175910e+01 +228 2 1 2.588250000000000e+01 2.063594199651019e+01 1.830177176844362e+01 +229 2 1 1.109250000000000e+01 1.778960516940534e+01 1.835319724200392e+01 +230 2 1 1.848750000000000e+01 2.063594199651019e+01 1.847119667517633e+01 +231 2 1 2.218500000000000e+01 1.565485254907670e+01 1.860318710827055e+01 +232 2 1 2.341750000000000e+01 1.636643675585292e+01 1.837094744555149e+01 +233 2 1 3.327750000000000e+01 1.778960516940534e+01 1.833243244791216e+01 +234 2 1 3.327750000000000e+01 1.636643675585292e+01 1.841374627283294e+01 +235 2 1 3.204499999999999e+01 1.565485254907670e+01 1.831879406900189e+01 +236 2 1 2.095250000000000e+01 1.636643675585292e+01 1.847406800172368e+01 +237 2 1 3.450999999999999e+01 1.850118937618155e+01 1.825509330024598e+01 +238 2 1 2.588250000000000e+01 1.636643675585292e+01 1.858281516013951e+01 +239 2 1 1.602250000000000e+01 2.063594199651019e+01 1.843602760618910e+01 +240 2 1 1.479000000000000e+01 1.992435778973398e+01 1.838252211650205e+01 +241 2 1 2.711499999999999e+01 1.565485254907670e+01 1.853744396051707e+01 +242 2 1 2.834750000000000e+01 1.636643675585292e+01 1.827644925946220e+01 +243 2 1 3.081250000000000e+01 1.636643675585292e+01 1.839489332257254e+01 +244 2 1 2.958000000000000e+01 1.565485254907670e+01 1.835082606731893e+01 +245 2 1 2.465000000000000e+01 1.565485254907670e+01 1.824093445834070e+01 +246 2 1 2.834750000000000e+01 1.778960516940534e+01 1.839125877129669e+01 +247 2 1 1.972000000000000e+01 1.565485254907670e+01 1.850135584349750e+01 +248 2 1 1.972000000000000e+01 1.992435778973398e+01 1.833453778991944e+01 +249 2 1 1.232500000000000e+01 1.565485254907670e+01 1.861569706632533e+01 +250 2 1 1.355750000000000e+01 1.636643675585292e+01 1.838074525366760e+01 +251 2 1 2.465000000000000e+01 1.992435778973398e+01 1.848031566286595e+01 +252 2 1 2.958000000000000e+01 1.850118937618155e+01 1.834558681120988e+01 +253 2 1 1.232500000000000e+01 1.992435778973398e+01 1.837502909143642e+01 +254 2 1 1.479000000000000e+01 1.850118937618155e+01 1.838311174584445e+01 +255 2 1 1.479000000000000e+01 1.565485254907670e+01 1.832442132291042e+01 +256 2 1 1.232500000000000e+01 1.850118937618155e+01 1.828810769113426e+01 +257 2 1 1.602250000000000e+01 1.636643675585292e+01 1.855251516549562e+01 +258 2 1 2.341750000000000e+01 2.063594199651019e+01 1.838894036475336e+01 +259 2 1 2.218500000000000e+01 1.992435778973398e+01 1.846784434616029e+01 +260 2 1 1.725500000000000e+01 1.565485254907670e+01 1.835189752692777e+01 +261 2 1 1.848750000000000e+01 1.636643675585292e+01 1.842967763285558e+01 +262 2 1 3.081250000000000e+01 1.778960516940534e+01 1.844833766662363e+01 +263 2 1 3.204499999999999e+01 1.850118937618155e+01 1.847737939507963e+01 +264 2 1 2.095250000000000e+01 2.063594199651019e+01 1.847095133969059e+01 +265 2 1 1.355750000000000e+01 1.778960516940534e+01 1.828894868367980e+01 +266 2 1 1.725500000000000e+01 1.992435778973398e+01 1.834596243435063e+01 +267 2 1 2.957999999999999e+01 9.962178894866991e+00 1.832354414995078e+01 +268 2 1 2.095250000000000e+01 1.352009992874806e+01 1.831118657380274e+01 +269 2 1 1.972000000000000e+01 2.846336827104855e+00 1.837664127263829e+01 +270 2 1 2.095250000000000e+01 3.557921033881068e+00 1.845927782292901e+01 +271 2 1 2.218500000000000e+01 2.846336827104855e+00 1.847140305919736e+01 +272 2 1 2.341750000000000e+01 3.557921033881068e+00 1.843247974382396e+01 +273 2 1 2.465000000000000e+01 2.846336827104855e+00 1.837823139065125e+01 +274 2 1 2.588250000000000e+01 3.557921033881068e+00 1.832687883090416e+01 +275 2 1 3.697500000000000e+00 4.981089447433495e+00 1.847217701470688e+01 +276 2 1 4.930000000000000e+00 5.692673654209710e+00 1.856242710641034e+01 +277 2 1 6.162500000000000e+00 4.981089447433495e+00 1.843965491743299e+01 +278 2 1 7.395000000000000e+00 5.692673654209710e+00 1.830667264718264e+01 +279 2 1 8.627500000000000e+00 4.981089447433495e+00 1.838064863521239e+01 +280 2 1 9.859999999999999e+00 5.692673654209710e+00 1.861740907316864e+01 +281 2 1 1.109250000000000e+01 4.981089447433495e+00 1.838405249119109e+01 +282 2 1 1.232500000000000e+01 5.692673654209710e+00 1.836039437384349e+01 +283 2 1 1.355750000000000e+01 4.981089447433495e+00 1.831221958504840e+01 +284 2 1 1.479000000000000e+01 5.692673654209710e+00 1.828617147888200e+01 +285 2 1 1.602250000000000e+01 4.981089447433495e+00 1.855140653175703e+01 +286 2 1 1.725500000000000e+01 5.692673654209710e+00 1.841767199745545e+01 +287 2 1 1.848750000000000e+01 4.981089447433495e+00 1.832477807209270e+01 +288 2 1 1.972000000000000e+01 5.692673654209710e+00 1.846923771304869e+01 +289 2 1 2.095250000000000e+01 4.981089447433495e+00 1.836832598911283e+01 +290 2 1 2.218500000000000e+01 5.692673654209710e+00 1.843546423544375e+01 +291 2 1 2.341750000000000e+01 4.981089447433495e+00 1.855277898292336e+01 +292 2 1 2.465000000000000e+01 5.692673654209710e+00 1.847587291495339e+01 +293 2 1 2.588250000000000e+01 4.981089447433495e+00 1.826375194964259e+01 +294 2 1 2.711499999999999e+01 5.692673654209710e+00 1.851411320915631e+01 +295 2 1 4.930000000000000e+00 7.115842067762138e+00 1.840825444435020e+01 +296 2 1 6.162500000000000e+00 7.827426274538350e+00 1.833047038974451e+01 +297 2 1 7.395000000000000e+00 7.115842067762138e+00 1.836426082429110e+01 +298 2 1 1.848750000000000e+01 3.557921033881068e+00 1.837403279549467e+01 +299 2 1 1.725500000000000e+01 2.846336827104855e+00 1.835268380461592e+01 +300 2 1 1.602250000000000e+01 3.557921033881068e+00 1.848952507034905e+01 +301 2 1 1.479000000000000e+01 2.846336827104855e+00 1.851644726747239e+01 +302 2 1 1.232500000000000e+00 7.115842067762137e-01 1.832611230156879e+01 +303 2 1 2.465000000000000e+00 1.423168413552427e+00 1.852709756577955e+01 +304 2 1 3.697500000000000e+00 7.115842067762137e-01 1.827857500530802e+01 +305 2 1 4.929999999999999e+00 1.423168413552427e+00 1.826136806124286e+01 +306 2 1 6.162500000000000e+00 7.115842067762137e-01 1.827242936292011e+01 +307 2 1 7.395000000000000e+00 1.423168413552427e+00 1.844551050904462e+01 +308 2 1 8.627500000000000e+00 7.115842067762137e-01 1.844984225027845e+01 +309 2 1 9.859999999999999e+00 1.423168413552427e+00 1.843114129409313e+01 +310 2 1 1.109250000000000e+01 7.115842067762137e-01 1.824449880776195e+01 +311 2 1 1.232500000000000e+01 1.423168413552427e+00 1.856224612585160e+01 +312 2 1 1.355750000000000e+01 7.115842067762137e-01 1.836481578357231e+01 +313 2 1 1.479000000000000e+01 1.423168413552427e+00 1.843036892933161e+01 +314 2 1 1.602250000000000e+01 7.115842067762137e-01 1.835067728786723e+01 +315 2 1 1.725500000000000e+01 1.423168413552427e+00 1.847697931942738e+01 +316 2 1 8.627499999999998e+00 7.827426274538350e+00 1.840542860269897e+01 +317 2 1 1.848750000000000e+01 7.115842067762137e-01 1.843036272469964e+01 +318 2 1 2.095250000000000e+01 7.115842067762137e-01 1.828037025055374e+01 +319 2 1 2.218500000000000e+01 1.423168413552427e+00 1.847794227938386e+01 +320 2 1 2.341750000000000e+01 7.115842067762137e-01 1.836220929695125e+01 +321 2 1 2.465000000000000e+01 1.423168413552427e+00 1.856129777428492e+01 +322 2 1 2.465000000000000e+00 2.846336827104855e+00 1.828958750195393e+01 +323 2 1 3.697500000000000e+00 3.557921033881068e+00 1.848583325162553e+01 +324 2 1 4.930000000000000e+00 2.846336827104855e+00 1.838401024175294e+01 +325 2 1 6.162499999999999e+00 3.557921033881068e+00 1.837437624437527e+01 +326 2 1 7.395000000000000e+00 2.846336827104855e+00 1.841292915268399e+01 +327 2 1 8.627500000000000e+00 3.557921033881068e+00 1.848557970160289e+01 +328 2 1 9.859999999999999e+00 2.846336827104855e+00 1.842924761810127e+01 +329 2 1 1.109250000000000e+01 3.557921033881068e+00 1.831004365073452e+01 +330 2 1 1.232500000000000e+01 2.846336827104855e+00 1.818033371289823e+01 +331 2 1 1.355750000000000e+01 3.557921033881068e+00 1.844566501118075e+01 +332 2 1 1.972000000000000e+01 1.423168413552427e+00 1.846190975036447e+01 +333 2 1 2.218500000000000e+01 1.423168413552428e+01 1.835322517893207e+01 +334 2 1 9.859999999999999e+00 7.115842067762138e+00 1.839789371642158e+01 +335 2 1 1.232500000000000e+01 7.115842067762138e+00 1.847537444410727e+01 +336 2 1 8.627500000000000e+00 1.209693151519563e+01 1.829199174409380e+01 +337 2 1 9.859999999999999e+00 1.138534730841942e+01 1.829413303647114e+01 +338 2 1 1.109250000000000e+01 1.209693151519563e+01 1.856999584032139e+01 +339 2 1 1.232500000000000e+01 1.138534730841942e+01 1.851349651735582e+01 +340 2 1 1.355750000000000e+01 1.209693151519563e+01 1.831123823696192e+01 +341 2 1 1.479000000000000e+01 1.138534730841942e+01 1.843448433334394e+01 +342 2 1 1.602250000000000e+01 1.209693151519563e+01 1.839428881565063e+01 +343 2 1 1.725500000000000e+01 1.138534730841942e+01 1.849178099784848e+01 +344 2 1 1.848750000000000e+01 1.209693151519563e+01 1.824975358434335e+01 +345 2 1 1.972000000000000e+01 1.138534730841942e+01 1.839694145030204e+01 +346 2 1 2.095250000000000e+01 1.209693151519563e+01 1.829096787226717e+01 +347 2 1 2.218500000000000e+01 1.138534730841942e+01 1.840263887228008e+01 +348 2 1 2.341750000000000e+01 1.209693151519563e+01 1.837666030509410e+01 +349 2 1 2.465000000000000e+01 1.138534730841942e+01 1.835828025909527e+01 +350 2 1 2.588250000000000e+01 1.209693151519563e+01 1.833582168089864e+01 +351 2 1 2.711500000000000e+01 1.138534730841942e+01 1.836353031742933e+01 +352 2 1 2.834750000000000e+01 1.209693151519563e+01 1.845852602484125e+01 +353 2 1 2.958000000000000e+01 1.138534730841942e+01 1.853888136458308e+01 +354 2 1 3.081250000000000e+01 1.209693151519563e+01 1.831036168742244e+01 +355 2 1 8.627500000000000e+00 1.352009992874806e+01 1.835261188649090e+01 +356 2 1 9.859999999999999e+00 1.423168413552428e+01 1.821705864207346e+01 +357 2 1 1.109250000000000e+01 1.352009992874806e+01 1.831524712388831e+01 +358 2 1 1.232500000000000e+01 1.423168413552428e+01 1.852378179475058e+01 +359 2 1 1.355750000000000e+01 1.352009992874806e+01 1.852309441840510e+01 +360 2 1 1.479000000000000e+01 1.423168413552428e+01 1.836621027472939e+01 +361 2 1 1.602250000000000e+01 1.352009992874806e+01 1.849039311610116e+01 +362 2 1 1.725500000000000e+01 1.423168413552428e+01 1.842269825087092e+01 +363 2 1 1.848750000000000e+01 1.352009992874806e+01 1.825468998789840e+01 +364 2 1 1.972000000000000e+01 1.423168413552428e+01 1.849561590548242e+01 +365 2 1 7.395000000000000e+00 1.138534730841942e+01 1.859813014678126e+01 +366 2 1 3.451000000000000e+01 1.992435778973398e+01 1.813501916227946e+01 +367 2 1 2.834750000000000e+01 9.250594688090777e+00 1.847653992697568e+01 +368 2 1 2.711499999999999e+01 9.962178894866991e+00 1.849053529347614e+01 +369 2 1 1.355750000000000e+01 7.827426274538350e+00 1.835096749618396e+01 +370 2 1 1.479000000000000e+01 7.115842067762138e+00 1.844059942495262e+01 +371 2 1 1.602250000000000e+01 7.827426274538350e+00 1.844461353068087e+01 +372 2 1 1.725500000000000e+01 7.115842067762138e+00 1.836290600804645e+01 +373 2 1 1.848750000000000e+01 7.827426274538350e+00 1.825818280452995e+01 +374 2 1 1.972000000000000e+01 7.115842067762138e+00 1.837997086460227e+01 +375 2 1 2.095250000000000e+01 7.827426274538350e+00 1.826491847987811e+01 +376 2 1 2.218500000000000e+01 7.115842067762138e+00 1.841142851923555e+01 +377 2 1 2.341750000000000e+01 7.827426274538350e+00 1.826594520665525e+01 +378 2 1 2.465000000000000e+01 7.115842067762138e+00 1.838708488224049e+01 +379 2 1 2.588250000000000e+01 7.827426274538350e+00 1.830434555380351e+01 +380 2 1 2.711500000000000e+01 7.115842067762138e+00 1.859652575977937e+01 +381 2 1 2.834750000000000e+01 7.827426274538350e+00 1.844094595194482e+01 +382 2 1 6.162499999999999e+00 9.250594688090777e+00 1.856484810097502e+01 +383 2 1 1.109250000000000e+01 7.827426274538350e+00 1.847502232204046e+01 +384 2 1 7.395000000000000e+00 9.962178894866991e+00 1.854741705791729e+01 +385 2 1 9.859999999999999e+00 9.962178894866991e+00 1.837074522628645e+01 +386 2 1 1.109250000000000e+01 9.250594688090777e+00 1.846206781979952e+01 +387 2 1 1.232500000000000e+01 9.962178894866991e+00 1.823251181425658e+01 +388 2 1 1.355750000000000e+01 9.250594688090777e+00 1.834993099844037e+01 +389 2 1 1.479000000000000e+01 9.962178894866991e+00 1.843248036437880e+01 +390 2 1 1.602250000000000e+01 9.250594688090777e+00 1.855142577781635e+01 +391 2 1 1.725500000000000e+01 9.962178894866991e+00 1.847587547064991e+01 +392 2 1 1.848750000000000e+01 9.250594688090777e+00 1.850249139638135e+01 +393 2 1 1.972000000000000e+01 9.962178894866991e+00 1.841266132895000e+01 +394 2 1 2.095250000000000e+01 9.250594688090777e+00 1.837466808881276e+01 +395 2 1 2.218500000000000e+01 9.962178894866991e+00 1.834587370280250e+01 +396 2 1 2.341750000000000e+01 9.250594688090777e+00 1.846590574952954e+01 +397 2 1 2.465000000000000e+01 9.962178894866991e+00 1.835650105398410e+01 +398 2 1 2.588250000000000e+01 9.250594688090777e+00 1.838143174570202e+01 +399 2 1 8.627500000000000e+00 9.250594688090777e+00 1.843904853716322e+01 +400 2 1 3.574249999999999e+01 2.063594199651019e+01 1.839864514570517e+01 diff --git a/examples/USER/misc/drip/data.CH b/examples/USER/misc/drip/data.CH new file mode 100644 index 0000000000..17e9f4e18f --- /dev/null +++ b/examples/USER/misc/drip/data.CH @@ -0,0 +1,562 @@ +LAMMPS data file + +545 atoms +2 atom types + +0.0 2.465000000000000e+01 xlo xhi +0.0 2.134752620328641e+01 ylo yhi +0.0 3.000000000000000e+01 zlo zhi +1.232500000000000e+01 0.000000000000000e+00 0.000000000000000e+00 xy xz yz + +Masses + +1 12.011 +2 1.0 + +Atoms # molecular + +1 1 1 0.000000000000000e+00 0.000000000000000e+00 1.498097531971289e+01 +2 1 1 9.859999999999999e+00 1.707802096262913e+01 1.489139792549795e+01 +3 1 1 2.588250000000000e+01 6.404257860985923e+00 1.495586615731768e+01 +4 1 1 2.711500000000000e+01 7.115842067762138e+00 1.501795235919980e+01 +5 1 1 4.930000000000000e+00 8.539010481314564e+00 1.492827527515956e+01 +6 1 1 6.162499999999999e+00 9.250594688090777e+00 1.500678649580791e+01 +7 1 1 3.204499999999999e+01 1.565485254907670e+01 1.511662064028576e+01 +8 1 1 3.081250000000000e+01 1.494326834230049e+01 1.505500683988625e+01 +9 1 1 7.395000000000000e+00 8.539010481314564e+00 1.504923694256975e+01 +10 1 1 8.627500000000000e+00 9.250594688090777e+00 1.503332570633445e+01 +11 1 1 9.859999999999999e+00 8.539010481314564e+00 1.508137430939768e+01 +12 1 1 1.109250000000000e+01 9.250594688090777e+00 1.510475862694483e+01 +13 1 1 1.109250000000000e+01 1.778960516940534e+01 1.494613902888088e+01 +14 1 1 2.958000000000000e+01 1.565485254907670e+01 1.516279958068751e+01 +15 1 1 1.232500000000000e+01 8.539010481314564e+00 1.511276583208523e+01 +16 1 1 1.355750000000000e+01 9.250594688090777e+00 1.495632206546155e+01 +17 1 1 1.479000000000000e+01 8.539010481314564e+00 1.498291715828213e+01 +18 1 1 1.602250000000000e+01 9.250594688090777e+00 1.509801558902469e+01 +19 1 1 2.711499999999999e+01 1.565485254907670e+01 1.500089766276763e+01 +20 1 1 2.588250000000000e+01 1.494326834230049e+01 1.505114888970355e+01 +21 1 1 1.725500000000000e+01 8.539010481314564e+00 1.504495103103041e+01 +22 1 1 1.848750000000000e+01 9.250594688090777e+00 1.513527732850389e+01 +23 1 1 1.972000000000000e+01 8.539010481314564e+00 1.502400693288890e+01 +24 1 1 2.095250000000000e+01 9.250594688090777e+00 1.490419939433632e+01 +25 1 1 2.465000000000000e+01 1.565485254907670e+01 1.492998117758711e+01 +26 1 1 2.834750000000000e+01 1.494326834230049e+01 1.496091474579883e+01 +27 1 1 2.465000000000000e+01 7.115842067762138e+00 1.497394355694102e+01 +28 1 1 2.341750000000000e+01 6.404257860985923e+00 1.500235588455933e+01 +29 1 1 2.218500000000000e+01 7.115842067762138e+00 1.503766448268803e+01 +30 1 1 2.465000000000000e+01 4.269505240657282e+00 1.488340764495658e+01 +31 1 1 2.588250000000000e+01 4.981089447433495e+00 1.490587231994899e+01 +32 1 1 3.697500000000000e+00 6.404257860985923e+00 1.500462204163887e+01 +33 1 1 4.930000000000000e+00 7.115842067762138e+00 1.507823175629797e+01 +34 1 1 2.095250000000000e+01 1.778960516940534e+01 1.485635836857104e+01 +35 1 1 1.972000000000000e+01 1.707802096262913e+01 1.508733405608850e+01 +36 1 1 6.162500000000000e+00 6.404257860985923e+00 1.495657175139946e+01 +37 1 1 7.395000000000000e+00 7.115842067762138e+00 1.505630699893542e+01 +38 1 1 8.627500000000000e+00 6.404257860985923e+00 1.493710859708546e+01 +39 1 1 9.859999999999999e+00 7.115842067762138e+00 1.498031036104573e+01 +40 1 1 1.848750000000000e+01 1.778960516940534e+01 1.492663969598082e+01 +41 1 1 1.725500000000000e+01 1.707802096262913e+01 1.487928391741343e+01 +42 1 1 2.218500000000000e+01 1.280851572197185e+01 1.493339893560164e+01 +43 1 1 1.232500000000000e+01 7.115842067762138e+00 1.507943978677017e+01 +44 1 1 1.355750000000000e+01 6.404257860985923e+00 1.484914917113341e+01 +45 1 1 1.479000000000000e+01 7.115842067762138e+00 1.516663648122805e+01 +46 1 1 1.602250000000000e+01 1.778960516940534e+01 1.494170266401908e+01 +47 1 1 1.479000000000000e+01 1.707802096262913e+01 1.489834582180523e+01 +48 1 1 1.602250000000000e+01 6.404257860985923e+00 1.502658138746657e+01 +49 1 1 1.725500000000000e+01 7.115842067762138e+00 1.498697322036154e+01 +50 1 1 1.848750000000000e+01 6.404257860985923e+00 1.504573856434245e+01 +51 1 1 1.972000000000000e+01 7.115842067762138e+00 1.498510668772038e+01 +52 1 1 1.355750000000000e+01 1.778960516940534e+01 1.503160986637731e+01 +53 1 1 1.232500000000000e+01 1.707802096262913e+01 1.482446479934924e+01 +54 1 1 2.095250000000000e+01 6.404257860985923e+00 1.510811524523195e+01 +55 1 1 2.341750000000000e+01 1.494326834230049e+01 1.505440697642049e+01 +56 1 1 2.218500000000000e+01 1.707802096262913e+01 1.489480063588714e+01 +57 1 1 2.218500000000000e+01 8.539010481314564e+00 1.495045959051609e+01 +58 1 1 2.465000000000000e+01 8.539010481314564e+00 1.512601015985335e+01 +59 1 1 2.588250000000000e+01 1.067376310164321e+01 1.495691790117351e+01 +60 1 1 2.711500000000000e+01 1.138534730841942e+01 1.496195578420333e+01 +61 1 1 9.859999999999999e+00 1.565485254907670e+01 1.488138963237187e+01 +62 1 1 8.627500000000000e+00 1.494326834230049e+01 1.498700505084123e+01 +63 1 1 2.834750000000000e+01 1.067376310164321e+01 1.504459111637339e+01 +64 1 1 2.958000000000000e+01 1.138534730841942e+01 1.495098625433358e+01 +65 1 1 7.395000000000000e+00 1.280851572197185e+01 1.505608046573023e+01 +66 1 1 8.627500000000000e+00 1.352009992874806e+01 1.484199719552881e+01 +67 1 1 3.081250000000000e+01 1.352009992874806e+01 1.483451056838223e+01 +68 1 1 2.958000000000000e+01 1.280851572197185e+01 1.502332948089694e+01 +69 1 1 9.859999999999999e+00 1.280851572197185e+01 1.506286085730730e+01 +70 1 1 2.465000000000000e+01 1.138534730841942e+01 1.506305034228861e+01 +71 1 1 1.109250000000000e+01 1.352009992874806e+01 1.491918072685150e+01 +72 1 1 1.355750000000000e+01 1.352009992874806e+01 1.494644661191470e+01 +73 1 1 2.834750000000000e+01 1.352009992874806e+01 1.496099714517733e+01 +74 1 1 2.711500000000000e+01 1.280851572197185e+01 1.498298656405413e+01 +75 1 1 1.479000000000000e+01 1.280851572197185e+01 1.511808602386498e+01 +76 1 1 1.602250000000000e+01 1.352009992874806e+01 1.509196186449678e+01 +77 1 1 1.725500000000000e+01 1.280851572197185e+01 1.494017769280163e+01 +78 1 1 1.848750000000000e+01 1.352009992874806e+01 1.486540173862453e+01 +79 1 1 2.588250000000000e+01 1.352009992874806e+01 1.502414429870090e+01 +80 1 1 2.465000000000000e+01 1.280851572197185e+01 1.491189258035136e+01 +81 1 1 1.972000000000000e+01 1.280851572197185e+01 1.503451993485524e+01 +82 1 1 2.095250000000000e+01 1.352009992874806e+01 1.503423133885440e+01 +83 1 1 1.232500000000000e+01 1.280851572197185e+01 1.492432047742539e+01 +84 1 1 2.341750000000000e+01 1.067376310164321e+01 1.500488865182437e+01 +85 1 1 1.109250000000000e+01 1.494326834230049e+01 1.509530225402135e+01 +86 1 1 1.232500000000000e+01 1.565485254907670e+01 1.500246060086581e+01 +87 1 1 2.588250000000000e+01 9.250594688090777e+00 1.498734533172262e+01 +88 1 1 2.218500000000000e+01 1.565485254907670e+01 1.504729297899704e+01 +89 1 1 2.095250000000000e+01 1.494326834230049e+01 1.486622917148261e+01 +90 1 1 2.711500000000000e+01 8.539010481314564e+00 1.494373650471835e+01 +91 1 1 2.834750000000000e+01 9.250594688090777e+00 1.488792788684821e+01 +92 1 1 6.162500000000000e+00 1.067376310164321e+01 1.486731884367082e+01 +93 1 1 7.395000000000000e+00 1.138534730841942e+01 1.509646856144050e+01 +94 1 1 1.972000000000000e+01 1.565485254907670e+01 1.488798024124609e+01 +95 1 1 1.848750000000000e+01 1.494326834230049e+01 1.489558509878004e+01 +96 1 1 8.627500000000000e+00 1.067376310164321e+01 1.497336164791434e+01 +97 1 1 9.859999999999999e+00 1.138534730841942e+01 1.496081048392299e+01 +98 1 1 1.109250000000000e+01 1.067376310164321e+01 1.494580009249847e+01 +99 1 1 1.232500000000000e+01 1.138534730841942e+01 1.510396759497348e+01 +100 1 1 1.725500000000000e+01 1.565485254907670e+01 1.499338417222946e+01 +101 1 1 1.602250000000000e+01 1.494326834230049e+01 1.511840116374763e+01 +102 1 1 1.355750000000000e+01 1.067376310164321e+01 1.503281161003896e+01 +103 1 1 1.479000000000000e+01 1.138534730841942e+01 1.499843298302028e+01 +104 1 1 1.602250000000000e+01 1.067376310164321e+01 1.491311607132768e+01 +105 1 1 1.725500000000000e+01 1.138534730841942e+01 1.504030511972019e+01 +106 1 1 1.479000000000000e+01 1.565485254907670e+01 1.486944422096690e+01 +107 1 1 1.355750000000000e+01 1.494326834230049e+01 1.476511580670247e+01 +108 1 1 1.848750000000000e+01 1.067376310164321e+01 1.483733215135541e+01 +109 1 1 1.972000000000000e+01 1.138534730841942e+01 1.483307878319485e+01 +110 1 1 2.095250000000000e+01 1.067376310164321e+01 1.472377202887134e+01 +111 1 1 2.218500000000000e+01 1.138534730841942e+01 1.494032335018560e+01 +112 1 1 2.341750000000000e+01 9.250594688090777e+00 1.511930030385710e+01 +113 1 1 2.341750000000000e+01 1.778960516940534e+01 1.506163255648677e+01 +114 1 1 1.109250000000000e+01 6.404257860985923e+00 1.507183137955260e+01 +115 1 1 2.218500000000000e+01 4.269505240657282e+00 1.492921198534790e+01 +116 1 1 2.341750000000000e+01 7.115842067762137e-01 1.506491820629175e+01 +117 1 1 1.232500000000000e+00 2.134752620328641e+00 1.507012124249483e+01 +118 1 1 2.465000000000000e+00 2.846336827104855e+00 1.503655403336380e+01 +119 1 1 2.218500000000000e+01 1.992435778973398e+01 1.505948767536701e+01 +120 1 1 2.095250000000000e+01 1.921277358295777e+01 1.514330257618634e+01 +121 1 1 3.697500000000000e+00 2.134752620328641e+00 1.502497496406354e+01 +122 1 1 4.930000000000000e+00 2.846336827104855e+00 1.507374298221752e+01 +123 1 1 6.162500000000000e+00 2.134752620328641e+00 1.493733326297393e+01 +124 1 1 7.395000000000000e+00 2.846336827104855e+00 1.487495201368372e+01 +125 1 1 1.972000000000000e+01 1.992435778973398e+01 1.505808760634221e+01 +126 1 1 1.848750000000000e+01 1.921277358295777e+01 1.493872889432326e+01 +127 1 1 2.218500000000000e+01 0.000000000000000e+00 1.501312853963581e+01 +128 1 1 8.627500000000000e+00 2.134752620328641e+00 1.505205628279858e+01 +129 1 1 2.341750000000000e+01 4.981089447433495e+00 1.507571160792217e+01 +130 1 1 1.109250000000000e+01 2.134752620328641e+00 1.489358054803088e+01 +131 1 1 1.232500000000000e+01 2.846336827104855e+00 1.499912561242418e+01 +132 1 1 1.725500000000000e+01 1.992435778973398e+01 1.497577189332382e+01 +133 1 1 1.602250000000000e+01 1.921277358295777e+01 1.499040615876794e+01 +134 1 1 1.355750000000000e+01 2.134752620328641e+00 1.516072772863512e+01 +135 1 1 1.479000000000000e+01 2.846336827104855e+00 1.507211585538748e+01 +136 1 1 1.602250000000000e+01 2.134752620328641e+00 1.504045728176403e+01 +137 1 1 1.725500000000000e+01 2.846336827104855e+00 1.504684394670705e+01 +138 1 1 1.479000000000000e+01 1.992435778973398e+01 1.510384904069957e+01 +139 1 1 1.355750000000000e+01 1.921277358295777e+01 1.511446984282775e+01 +140 1 1 9.859999999999999e+00 2.846336827104855e+00 1.502182693962230e+01 +141 1 1 1.848750000000000e+01 2.134752620328641e+00 1.492115016417242e+01 +142 1 1 2.341750000000000e+01 1.921277358295777e+01 1.511940999724034e+01 +143 1 1 2.095250000000000e+01 7.115842067762137e-01 1.499411067303495e+01 +144 1 1 1.232500000000000e+00 7.115842067762137e-01 1.506494802778743e+01 +145 1 1 3.451000000000000e+01 1.992435778973398e+01 1.504957420337895e+01 +146 1 1 3.327750000000000e+01 1.921277358295777e+01 1.511072511003059e+01 +147 1 1 2.465000000000000e+00 0.000000000000000e+00 1.500837434607164e+01 +148 1 1 3.697500000000000e+00 7.115842067762137e-01 1.499541651074234e+01 +149 1 1 4.930000000000000e+00 0.000000000000000e+00 1.509518604163723e+01 +150 1 1 6.162500000000000e+00 7.115842067762137e-01 1.497074687620619e+01 +151 1 1 3.204500000000000e+01 1.992435778973398e+01 1.500792890976805e+01 +152 1 1 3.081250000000000e+01 1.921277358295777e+01 1.496690270418216e+01 +153 1 1 7.395000000000000e+00 0.000000000000000e+00 1.524069684472765e+01 +154 1 1 8.627500000000000e+00 7.115842067762137e-01 1.491839348334605e+01 +155 1 1 2.465000000000000e+01 1.992435778973398e+01 1.498895095057103e+01 +156 1 1 9.859999999999999e+00 0.000000000000000e+00 1.499465288102860e+01 +157 1 1 2.958000000000000e+01 1.992435778973398e+01 1.495366550654662e+01 +158 1 1 2.834750000000000e+01 1.921277358295777e+01 1.498688543050304e+01 +159 1 1 1.232500000000000e+01 0.000000000000000e+00 1.502461005163719e+01 +160 1 1 1.355750000000000e+01 7.115842067762137e-01 1.488675470180450e+01 +161 1 1 1.479000000000000e+01 0.000000000000000e+00 1.499317346174183e+01 +162 1 1 1.602250000000000e+01 7.115842067762137e-01 1.499167690758548e+01 +163 1 1 2.711499999999999e+01 1.992435778973398e+01 1.501975964337061e+01 +164 1 1 2.588250000000000e+01 1.921277358295777e+01 1.486203378273598e+01 +165 1 1 1.725500000000000e+01 0.000000000000000e+00 1.504809379785000e+01 +166 1 1 1.848750000000000e+01 7.115842067762137e-01 1.491114701451727e+01 +167 1 1 1.972000000000000e+01 0.000000000000000e+00 1.512011452965299e+01 +168 1 1 1.109250000000000e+01 7.115842067762137e-01 1.487408794621075e+01 +169 1 1 1.972000000000000e+01 2.846336827104855e+00 1.507831721537003e+01 +170 1 1 2.341750000000000e+01 1.352009992874806e+01 1.495718486297744e+01 +171 1 1 2.958000000000000e+01 1.707802096262913e+01 1.493147208418856e+01 +172 1 1 1.848750000000000e+01 4.981089447433495e+00 1.494913539471411e+01 +173 1 1 3.697500000000000e+00 4.981089447433495e+00 1.478998858443710e+01 +174 1 1 3.327750000000000e+01 1.778960516940534e+01 1.495502006800012e+01 +175 1 1 3.204500000000000e+01 1.707802096262913e+01 1.495051064694342e+01 +176 1 1 4.930000000000000e+00 4.269505240657282e+00 1.498350377115313e+01 +177 1 1 6.162500000000000e+00 4.981089447433495e+00 1.494667393795457e+01 +178 1 1 7.395000000000000e+00 4.269505240657282e+00 1.507985366541724e+01 +179 1 1 2.588250000000000e+01 1.778960516940534e+01 1.494716376988664e+01 +180 1 1 8.627500000000000e+00 4.981089447433495e+00 1.499320258596098e+01 +181 1 1 1.602250000000000e+01 4.981089447433495e+00 1.500127272897711e+01 +182 1 1 1.479000000000000e+01 4.269505240657282e+00 1.493241109430999e+01 +183 1 1 2.711500000000000e+01 1.707802096262913e+01 1.513215736063149e+01 +184 1 1 2.834750000000000e+01 1.778960516940534e+01 1.491995000096713e+01 +185 1 1 9.859999999999999e+00 4.269505240657282e+00 1.523967414046218e+01 +186 1 1 1.109250000000000e+01 4.981089447433495e+00 1.507658824600498e+01 +187 1 1 1.355750000000000e+01 4.981089447433495e+00 1.498019661433922e+01 +188 1 1 3.081250000000000e+01 1.778960516940534e+01 1.488921763404584e+01 +189 1 1 2.465000000000000e+01 1.707802096262913e+01 1.491522695293121e+01 +190 1 1 1.725500000000000e+01 4.269505240657282e+00 1.484531224085001e+01 +191 1 1 1.972000000000000e+01 4.269505240657282e+00 1.512087841047699e+01 +192 1 1 2.095250000000000e+01 2.134752620328641e+00 1.501366356379743e+01 +193 1 1 2.218500000000000e+01 2.846336827104855e+00 1.512768073569268e+01 +194 1 1 1.232500000000000e+01 1.992435778973398e+01 1.479694154125662e+01 +195 1 1 1.109250000000000e+01 1.921277358295777e+01 1.508375643482666e+01 +196 1 1 2.095250000000000e+01 4.981089447433495e+00 1.502213574954626e+01 +197 1 1 2.465000000000000e+00 4.269505240657282e+00 1.501785776522257e+01 +198 1 1 2.341750000000000e+01 2.134752620328641e+00 1.477223550033331e+01 +199 1 1 1.232500000000000e+01 4.269505240657282e+00 1.509476826791352e+01 +200 1 1 2.465000000000000e+01 2.846336827104855e+00 1.506451005381648e+01 +201 2 1 2.958000000000000e+01 1.423168413552428e+01 1.846233090874204e+01 +202 2 1 1.725500000000000e+01 1.850118937618155e+01 1.830892906667390e+01 +203 2 1 3.204500000000000e+01 1.992435778973398e+01 1.840011296435520e+01 +204 2 1 1.109250000000000e+01 1.636643675585292e+01 1.815423076555236e+01 +205 2 1 9.859999999999999e+00 1.565485254907670e+01 1.857780537003584e+01 +206 2 1 2.341750000000000e+01 1.352009992874806e+01 1.824080722484135e+01 +207 2 1 2.465000000000000e+01 1.423168413552428e+01 1.836017802635158e+01 +208 2 1 2.341750000000000e+01 1.778960516940534e+01 1.828410032494974e+01 +209 2 1 2.711499999999999e+01 1.992435778973398e+01 1.844731239573154e+01 +210 2 1 2.834750000000000e+01 2.063594199651019e+01 1.828146439901283e+01 +211 2 1 2.465000000000000e+01 1.850118937618155e+01 1.836242662973500e+01 +212 2 1 2.711500000000000e+01 1.423168413552428e+01 1.836150573422813e+01 +213 2 1 2.588250000000000e+01 1.352009992874806e+01 1.830533607491024e+01 +214 2 1 3.204499999999999e+01 1.423168413552428e+01 1.852693962525193e+01 +215 2 1 3.327750000000000e+01 2.063594199651019e+01 1.845057006323066e+01 +216 2 1 2.218500000000000e+01 1.850118937618155e+01 1.834530693106420e+01 +217 2 1 2.095250000000000e+01 1.778960516940534e+01 1.817360355124612e+01 +218 2 1 2.711500000000000e+01 1.850118937618155e+01 1.845768039438554e+01 +219 2 1 1.848750000000000e+01 1.778960516940534e+01 1.822837106768257e+01 +220 2 1 1.972000000000000e+01 1.850118937618155e+01 1.834146516606220e+01 +221 2 1 1.602250000000000e+01 1.778960516940534e+01 1.837935563986790e+01 +222 2 1 2.958000000000000e+01 1.992435778973398e+01 1.860134630351601e+01 +223 2 1 3.081250000000000e+01 2.063594199651019e+01 1.829143841375619e+01 +224 2 1 2.588250000000000e+01 1.778960516940534e+01 1.828834782396325e+01 +225 2 1 2.834750000000000e+01 1.352009992874806e+01 1.856412094918868e+01 +226 2 1 3.081250000000000e+01 1.352009992874806e+01 1.853801808786659e+01 +227 2 1 1.355750000000000e+01 2.063594199651019e+01 1.848883167175910e+01 +228 2 1 2.588250000000000e+01 2.063594199651019e+01 1.830177176844362e+01 +229 2 1 1.109250000000000e+01 1.778960516940534e+01 1.835319724200392e+01 +230 2 1 1.848750000000000e+01 2.063594199651019e+01 1.847119667517633e+01 +231 2 1 2.218500000000000e+01 1.565485254907670e+01 1.860318710827055e+01 +232 2 1 2.341750000000000e+01 1.636643675585292e+01 1.837094744555149e+01 +233 2 1 3.327750000000000e+01 1.778960516940534e+01 1.833243244791216e+01 +234 2 1 3.327750000000000e+01 1.636643675585292e+01 1.841374627283294e+01 +235 2 1 3.204499999999999e+01 1.565485254907670e+01 1.831879406900189e+01 +236 2 1 2.095250000000000e+01 1.636643675585292e+01 1.847406800172368e+01 +237 2 1 3.450999999999999e+01 1.850118937618155e+01 1.825509330024598e+01 +238 2 1 2.588250000000000e+01 1.636643675585292e+01 1.858281516013951e+01 +239 2 1 1.602250000000000e+01 2.063594199651019e+01 1.843602760618910e+01 +240 2 1 1.479000000000000e+01 1.992435778973398e+01 1.838252211650205e+01 +241 2 1 2.711499999999999e+01 1.565485254907670e+01 1.853744396051707e+01 +242 2 1 2.834750000000000e+01 1.636643675585292e+01 1.827644925946220e+01 +243 2 1 3.081250000000000e+01 1.636643675585292e+01 1.839489332257254e+01 +244 2 1 2.958000000000000e+01 1.565485254907670e+01 1.835082606731893e+01 +245 2 1 2.465000000000000e+01 1.565485254907670e+01 1.824093445834070e+01 +246 2 1 2.834750000000000e+01 1.778960516940534e+01 1.839125877129669e+01 +247 2 1 1.972000000000000e+01 1.565485254907670e+01 1.850135584349750e+01 +248 2 1 1.972000000000000e+01 1.992435778973398e+01 1.833453778991944e+01 +249 2 1 1.232500000000000e+01 1.565485254907670e+01 1.861569706632533e+01 +250 2 1 1.355750000000000e+01 1.636643675585292e+01 1.838074525366760e+01 +251 2 1 2.465000000000000e+01 1.992435778973398e+01 1.848031566286595e+01 +252 2 1 2.958000000000000e+01 1.850118937618155e+01 1.834558681120988e+01 +253 2 1 1.232500000000000e+01 1.992435778973398e+01 1.837502909143642e+01 +254 2 1 1.479000000000000e+01 1.850118937618155e+01 1.838311174584445e+01 +255 2 1 1.479000000000000e+01 1.565485254907670e+01 1.832442132291042e+01 +256 2 1 1.232500000000000e+01 1.850118937618155e+01 1.828810769113426e+01 +257 2 1 1.602250000000000e+01 1.636643675585292e+01 1.855251516549562e+01 +258 2 1 2.341750000000000e+01 2.063594199651019e+01 1.838894036475336e+01 +259 2 1 2.218500000000000e+01 1.992435778973398e+01 1.846784434616029e+01 +260 2 1 1.725500000000000e+01 1.565485254907670e+01 1.835189752692777e+01 +261 2 1 1.848750000000000e+01 1.636643675585292e+01 1.842967763285558e+01 +262 2 1 3.081250000000000e+01 1.778960516940534e+01 1.844833766662363e+01 +263 2 1 3.204499999999999e+01 1.850118937618155e+01 1.847737939507963e+01 +264 2 1 2.095250000000000e+01 2.063594199651019e+01 1.847095133969059e+01 +265 2 1 1.355750000000000e+01 1.778960516940534e+01 1.828894868367980e+01 +266 2 1 1.725500000000000e+01 1.992435778973398e+01 1.834596243435063e+01 +267 2 1 2.957999999999999e+01 9.962178894866991e+00 1.832354414995078e+01 +268 2 1 2.095250000000000e+01 1.352009992874806e+01 1.831118657380274e+01 +269 2 1 1.972000000000000e+01 2.846336827104855e+00 1.837664127263829e+01 +270 2 1 2.095250000000000e+01 3.557921033881068e+00 1.845927782292901e+01 +271 2 1 2.218500000000000e+01 2.846336827104855e+00 1.847140305919736e+01 +272 2 1 2.341750000000000e+01 3.557921033881068e+00 1.843247974382396e+01 +273 2 1 2.465000000000000e+01 2.846336827104855e+00 1.837823139065125e+01 +274 2 1 2.588250000000000e+01 3.557921033881068e+00 1.832687883090416e+01 +275 2 1 3.697500000000000e+00 4.981089447433495e+00 1.847217701470688e+01 +276 2 1 4.930000000000000e+00 5.692673654209710e+00 1.856242710641034e+01 +277 2 1 6.162500000000000e+00 4.981089447433495e+00 1.843965491743299e+01 +278 2 1 7.395000000000000e+00 5.692673654209710e+00 1.830667264718264e+01 +279 2 1 8.627500000000000e+00 4.981089447433495e+00 1.838064863521239e+01 +280 2 1 9.859999999999999e+00 5.692673654209710e+00 1.861740907316864e+01 +281 2 1 1.109250000000000e+01 4.981089447433495e+00 1.838405249119109e+01 +282 2 1 1.232500000000000e+01 5.692673654209710e+00 1.836039437384349e+01 +283 2 1 1.355750000000000e+01 4.981089447433495e+00 1.831221958504840e+01 +284 2 1 1.479000000000000e+01 5.692673654209710e+00 1.828617147888200e+01 +285 2 1 1.602250000000000e+01 4.981089447433495e+00 1.855140653175703e+01 +286 2 1 1.725500000000000e+01 5.692673654209710e+00 1.841767199745545e+01 +287 2 1 1.848750000000000e+01 4.981089447433495e+00 1.832477807209270e+01 +288 2 1 1.972000000000000e+01 5.692673654209710e+00 1.846923771304869e+01 +289 2 1 2.095250000000000e+01 4.981089447433495e+00 1.836832598911283e+01 +290 2 1 2.218500000000000e+01 5.692673654209710e+00 1.843546423544375e+01 +291 2 1 2.341750000000000e+01 4.981089447433495e+00 1.855277898292336e+01 +292 2 1 2.465000000000000e+01 5.692673654209710e+00 1.847587291495339e+01 +293 2 1 2.588250000000000e+01 4.981089447433495e+00 1.826375194964259e+01 +294 2 1 2.711499999999999e+01 5.692673654209710e+00 1.851411320915631e+01 +295 2 1 4.930000000000000e+00 7.115842067762138e+00 1.840825444435020e+01 +296 2 1 6.162500000000000e+00 7.827426274538350e+00 1.833047038974451e+01 +297 2 1 7.395000000000000e+00 7.115842067762138e+00 1.836426082429110e+01 +298 2 1 1.848750000000000e+01 3.557921033881068e+00 1.837403279549467e+01 +299 2 1 1.725500000000000e+01 2.846336827104855e+00 1.835268380461592e+01 +300 2 1 1.602250000000000e+01 3.557921033881068e+00 1.848952507034905e+01 +301 2 1 1.479000000000000e+01 2.846336827104855e+00 1.851644726747239e+01 +302 2 1 1.232500000000000e+00 7.115842067762137e-01 1.832611230156879e+01 +303 2 1 2.465000000000000e+00 1.423168413552427e+00 1.852709756577955e+01 +304 2 1 3.697500000000000e+00 7.115842067762137e-01 1.827857500530802e+01 +305 2 1 4.929999999999999e+00 1.423168413552427e+00 1.826136806124286e+01 +306 2 1 6.162500000000000e+00 7.115842067762137e-01 1.827242936292011e+01 +307 2 1 7.395000000000000e+00 1.423168413552427e+00 1.844551050904462e+01 +308 2 1 8.627500000000000e+00 7.115842067762137e-01 1.844984225027845e+01 +309 2 1 9.859999999999999e+00 1.423168413552427e+00 1.843114129409313e+01 +310 2 1 1.109250000000000e+01 7.115842067762137e-01 1.824449880776195e+01 +311 2 1 1.232500000000000e+01 1.423168413552427e+00 1.856224612585160e+01 +312 2 1 1.355750000000000e+01 7.115842067762137e-01 1.836481578357231e+01 +313 2 1 1.479000000000000e+01 1.423168413552427e+00 1.843036892933161e+01 +314 2 1 1.602250000000000e+01 7.115842067762137e-01 1.835067728786723e+01 +315 2 1 1.725500000000000e+01 1.423168413552427e+00 1.847697931942738e+01 +316 2 1 8.627499999999998e+00 7.827426274538350e+00 1.840542860269897e+01 +317 2 1 1.848750000000000e+01 7.115842067762137e-01 1.843036272469964e+01 +318 2 1 2.095250000000000e+01 7.115842067762137e-01 1.828037025055374e+01 +319 2 1 2.218500000000000e+01 1.423168413552427e+00 1.847794227938386e+01 +320 2 1 2.341750000000000e+01 7.115842067762137e-01 1.836220929695125e+01 +321 2 1 2.465000000000000e+01 1.423168413552427e+00 1.856129777428492e+01 +322 2 1 2.465000000000000e+00 2.846336827104855e+00 1.828958750195393e+01 +323 2 1 3.697500000000000e+00 3.557921033881068e+00 1.848583325162553e+01 +324 2 1 4.930000000000000e+00 2.846336827104855e+00 1.838401024175294e+01 +325 2 1 6.162499999999999e+00 3.557921033881068e+00 1.837437624437527e+01 +326 2 1 7.395000000000000e+00 2.846336827104855e+00 1.841292915268399e+01 +327 2 1 8.627500000000000e+00 3.557921033881068e+00 1.848557970160289e+01 +328 2 1 9.859999999999999e+00 2.846336827104855e+00 1.842924761810127e+01 +329 2 1 1.109250000000000e+01 3.557921033881068e+00 1.831004365073452e+01 +330 2 1 1.232500000000000e+01 2.846336827104855e+00 1.818033371289823e+01 +331 2 1 1.355750000000000e+01 3.557921033881068e+00 1.844566501118075e+01 +332 2 1 1.972000000000000e+01 1.423168413552427e+00 1.846190975036447e+01 +333 2 1 2.218500000000000e+01 1.423168413552428e+01 1.835322517893207e+01 +334 2 1 9.859999999999999e+00 7.115842067762138e+00 1.839789371642158e+01 +335 2 1 1.232500000000000e+01 7.115842067762138e+00 1.847537444410727e+01 +336 2 1 8.627500000000000e+00 1.209693151519563e+01 1.829199174409380e+01 +337 2 1 9.859999999999999e+00 1.138534730841942e+01 1.829413303647114e+01 +338 2 1 1.109250000000000e+01 1.209693151519563e+01 1.856999584032139e+01 +339 2 1 1.232500000000000e+01 1.138534730841942e+01 1.851349651735582e+01 +340 2 1 1.355750000000000e+01 1.209693151519563e+01 1.831123823696192e+01 +341 2 1 1.479000000000000e+01 1.138534730841942e+01 1.843448433334394e+01 +342 2 1 1.602250000000000e+01 1.209693151519563e+01 1.839428881565063e+01 +343 2 1 1.725500000000000e+01 1.138534730841942e+01 1.849178099784848e+01 +344 2 1 1.848750000000000e+01 1.209693151519563e+01 1.824975358434335e+01 +345 2 1 1.972000000000000e+01 1.138534730841942e+01 1.839694145030204e+01 +346 2 1 2.095250000000000e+01 1.209693151519563e+01 1.829096787226717e+01 +347 2 1 2.218500000000000e+01 1.138534730841942e+01 1.840263887228008e+01 +348 2 1 2.341750000000000e+01 1.209693151519563e+01 1.837666030509410e+01 +349 2 1 2.465000000000000e+01 1.138534730841942e+01 1.835828025909527e+01 +350 2 1 2.588250000000000e+01 1.209693151519563e+01 1.833582168089864e+01 +351 2 1 2.711500000000000e+01 1.138534730841942e+01 1.836353031742933e+01 +352 2 1 2.834750000000000e+01 1.209693151519563e+01 1.845852602484125e+01 +353 2 1 2.958000000000000e+01 1.138534730841942e+01 1.853888136458308e+01 +354 2 1 3.081250000000000e+01 1.209693151519563e+01 1.831036168742244e+01 +355 2 1 8.627500000000000e+00 1.352009992874806e+01 1.835261188649090e+01 +356 2 1 9.859999999999999e+00 1.423168413552428e+01 1.821705864207346e+01 +357 2 1 1.109250000000000e+01 1.352009992874806e+01 1.831524712388831e+01 +358 2 1 1.232500000000000e+01 1.423168413552428e+01 1.852378179475058e+01 +359 2 1 1.355750000000000e+01 1.352009992874806e+01 1.852309441840510e+01 +360 2 1 1.479000000000000e+01 1.423168413552428e+01 1.836621027472939e+01 +361 2 1 1.602250000000000e+01 1.352009992874806e+01 1.849039311610116e+01 +362 2 1 1.725500000000000e+01 1.423168413552428e+01 1.842269825087092e+01 +363 2 1 1.848750000000000e+01 1.352009992874806e+01 1.825468998789840e+01 +364 2 1 1.972000000000000e+01 1.423168413552428e+01 1.849561590548242e+01 +365 2 1 7.395000000000000e+00 1.138534730841942e+01 1.859813014678126e+01 +366 2 1 3.451000000000000e+01 1.992435778973398e+01 1.813501916227946e+01 +367 2 1 2.834750000000000e+01 9.250594688090777e+00 1.847653992697568e+01 +368 2 1 2.711499999999999e+01 9.962178894866991e+00 1.849053529347614e+01 +369 2 1 1.355750000000000e+01 7.827426274538350e+00 1.835096749618396e+01 +370 2 1 1.479000000000000e+01 7.115842067762138e+00 1.844059942495262e+01 +371 2 1 1.602250000000000e+01 7.827426274538350e+00 1.844461353068087e+01 +372 2 1 1.725500000000000e+01 7.115842067762138e+00 1.836290600804645e+01 +373 2 1 1.848750000000000e+01 7.827426274538350e+00 1.825818280452995e+01 +374 2 1 1.972000000000000e+01 7.115842067762138e+00 1.837997086460227e+01 +375 2 1 2.095250000000000e+01 7.827426274538350e+00 1.826491847987811e+01 +376 2 1 2.218500000000000e+01 7.115842067762138e+00 1.841142851923555e+01 +377 2 1 2.341750000000000e+01 7.827426274538350e+00 1.826594520665525e+01 +378 2 1 2.465000000000000e+01 7.115842067762138e+00 1.838708488224049e+01 +379 2 1 2.588250000000000e+01 7.827426274538350e+00 1.830434555380351e+01 +380 2 1 2.711500000000000e+01 7.115842067762138e+00 1.859652575977937e+01 +381 2 1 2.834750000000000e+01 7.827426274538350e+00 1.844094595194482e+01 +382 2 1 6.162499999999999e+00 9.250594688090777e+00 1.856484810097502e+01 +383 2 1 1.109250000000000e+01 7.827426274538350e+00 1.847502232204046e+01 +384 2 1 7.395000000000000e+00 9.962178894866991e+00 1.854741705791729e+01 +385 2 1 9.859999999999999e+00 9.962178894866991e+00 1.837074522628645e+01 +386 2 1 1.109250000000000e+01 9.250594688090777e+00 1.846206781979952e+01 +387 2 1 1.232500000000000e+01 9.962178894866991e+00 1.823251181425658e+01 +388 2 1 1.355750000000000e+01 9.250594688090777e+00 1.834993099844037e+01 +389 2 1 1.479000000000000e+01 9.962178894866991e+00 1.843248036437880e+01 +390 2 1 1.602250000000000e+01 9.250594688090777e+00 1.855142577781635e+01 +391 2 1 1.725500000000000e+01 9.962178894866991e+00 1.847587547064991e+01 +392 2 1 1.848750000000000e+01 9.250594688090777e+00 1.850249139638135e+01 +393 2 1 1.972000000000000e+01 9.962178894866991e+00 1.841266132895000e+01 +394 2 1 2.095250000000000e+01 9.250594688090777e+00 1.837466808881276e+01 +395 2 1 2.218500000000000e+01 9.962178894866991e+00 1.834587370280250e+01 +396 2 1 2.341750000000000e+01 9.250594688090777e+00 1.846590574952954e+01 +397 2 1 2.465000000000000e+01 9.962178894866991e+00 1.835650105398410e+01 +398 2 1 2.588250000000000e+01 9.250594688090777e+00 1.838143174570202e+01 +399 2 1 8.627500000000000e+00 9.250594688090777e+00 1.843904853716322e+01 +400 2 1 3.574249999999999e+01 2.063594199651019e+01 1.839864514570517e+01 +401 2 2 2.958000000000000e+01 1.423168413552428e+01 2.000000000000000e+01 +402 2 2 1.725500000000000e+01 1.850118937618155e+01 2.000000000000000e+01 +403 2 2 3.204500000000000e+01 1.992435778973398e+01 2.000000000000000e+01 +404 2 2 1.109250000000000e+01 1.636643675585292e+01 2.000000000000000e+01 +405 2 2 9.859999999999999e+00 1.565485254907670e+01 2.000000000000000e+01 +406 2 2 2.341750000000000e+01 1.352009992874806e+01 2.000000000000000e+01 +407 2 2 2.465000000000000e+01 1.423168413552428e+01 2.000000000000000e+01 +408 2 2 2.341750000000000e+01 1.778960516940534e+01 2.000000000000000e+01 +409 2 2 2.711499999999999e+01 1.992435778973398e+01 2.000000000000000e+01 +410 2 2 2.834750000000000e+01 2.063594199651019e+01 2.000000000000000e+01 +411 2 2 2.465000000000000e+01 1.850118937618155e+01 2.000000000000000e+01 +412 2 2 2.711500000000000e+01 1.423168413552428e+01 2.000000000000000e+01 +413 2 2 2.588250000000000e+01 1.352009992874806e+01 2.000000000000000e+01 +414 2 2 3.204499999999999e+01 1.423168413552428e+01 2.000000000000000e+01 +415 2 2 3.327750000000000e+01 2.063594199651019e+01 2.000000000000000e+01 +416 2 2 2.218500000000000e+01 1.850118937618155e+01 2.000000000000000e+01 +417 2 2 2.095250000000000e+01 1.778960516940534e+01 2.000000000000000e+01 +418 2 2 2.711500000000000e+01 1.850118937618155e+01 2.000000000000000e+01 +419 2 2 1.848750000000000e+01 1.778960516940534e+01 2.000000000000000e+01 +420 2 2 1.972000000000000e+01 1.850118937618155e+01 2.000000000000000e+01 +421 2 2 1.602250000000000e+01 1.778960516940534e+01 2.000000000000000e+01 +422 2 2 2.958000000000000e+01 1.992435778973398e+01 2.000000000000000e+01 +423 2 2 3.081250000000000e+01 2.063594199651019e+01 2.000000000000000e+01 +424 2 2 2.588250000000000e+01 1.778960516940534e+01 2.000000000000000e+01 +425 2 2 2.834750000000000e+01 1.352009992874806e+01 2.000000000000000e+01 +426 2 2 3.081250000000000e+01 1.352009992874806e+01 2.000000000000000e+01 +427 2 2 1.355750000000000e+01 2.063594199651019e+01 2.000000000000000e+01 +428 2 2 2.588250000000000e+01 2.063594199651019e+01 2.000000000000000e+01 +429 2 2 1.109250000000000e+01 1.778960516940534e+01 2.000000000000000e+01 +430 2 2 2.341750000000000e+01 1.636643675585292e+01 2.000000000000000e+01 +431 2 2 3.327750000000000e+01 1.778960516940534e+01 2.000000000000000e+01 +432 2 2 3.327750000000000e+01 1.636643675585292e+01 2.000000000000000e+01 +433 2 2 3.204499999999999e+01 1.565485254907670e+01 2.000000000000000e+01 +434 2 2 2.588250000000000e+01 1.636643675585292e+01 2.000000000000000e+01 +435 2 2 1.602250000000000e+01 2.063594199651019e+01 2.000000000000000e+01 +436 2 2 1.479000000000000e+01 1.992435778973398e+01 2.000000000000000e+01 +437 2 2 2.711499999999999e+01 1.565485254907670e+01 2.000000000000000e+01 +438 2 2 2.465000000000000e+01 1.565485254907670e+01 2.000000000000000e+01 +439 2 2 2.834750000000000e+01 1.778960516940534e+01 2.000000000000000e+01 +440 2 2 1.972000000000000e+01 1.565485254907670e+01 2.000000000000000e+01 +441 2 2 1.972000000000000e+01 1.992435778973398e+01 2.000000000000000e+01 +442 2 2 2.958000000000000e+01 1.850118937618155e+01 2.000000000000000e+01 +443 2 2 1.232500000000000e+01 1.992435778973398e+01 2.000000000000000e+01 +444 2 2 1.479000000000000e+01 1.850118937618155e+01 2.000000000000000e+01 +445 2 2 1.479000000000000e+01 1.565485254907670e+01 2.000000000000000e+01 +446 2 2 2.218500000000000e+01 1.992435778973398e+01 2.000000000000000e+01 +447 2 2 1.725500000000000e+01 1.565485254907670e+01 2.000000000000000e+01 +448 2 2 1.848750000000000e+01 1.636643675585292e+01 2.000000000000000e+01 +449 2 2 3.081250000000000e+01 1.778960516940534e+01 2.000000000000000e+01 +450 2 2 3.204499999999999e+01 1.850118937618155e+01 2.000000000000000e+01 +451 2 2 2.957999999999999e+01 9.962178894866991e+00 2.000000000000000e+01 +452 2 2 2.095250000000000e+01 1.352009992874806e+01 2.000000000000000e+01 +453 2 2 1.972000000000000e+01 2.846336827104855e+00 2.000000000000000e+01 +454 2 2 2.095250000000000e+01 3.557921033881068e+00 2.000000000000000e+01 +455 2 2 2.218500000000000e+01 2.846336827104855e+00 2.000000000000000e+01 +456 2 2 3.697500000000000e+00 4.981089447433495e+00 2.000000000000000e+01 +457 2 2 4.930000000000000e+00 5.692673654209710e+00 2.000000000000000e+01 +458 2 2 6.162500000000000e+00 4.981089447433495e+00 2.000000000000000e+01 +459 2 2 7.395000000000000e+00 5.692673654209710e+00 2.000000000000000e+01 +460 2 2 8.627500000000000e+00 4.981089447433495e+00 2.000000000000000e+01 +461 2 2 1.355750000000000e+01 4.981089447433495e+00 2.000000000000000e+01 +462 2 2 1.479000000000000e+01 5.692673654209710e+00 2.000000000000000e+01 +463 2 2 1.602250000000000e+01 4.981089447433495e+00 2.000000000000000e+01 +464 2 2 1.725500000000000e+01 5.692673654209710e+00 2.000000000000000e+01 +465 2 2 1.848750000000000e+01 4.981089447433495e+00 2.000000000000000e+01 +466 2 2 2.341750000000000e+01 4.981089447433495e+00 2.000000000000000e+01 +467 2 2 2.465000000000000e+01 5.692673654209710e+00 2.000000000000000e+01 +468 2 2 6.162500000000000e+00 7.827426274538350e+00 2.000000000000000e+01 +469 2 2 7.395000000000000e+00 7.115842067762138e+00 2.000000000000000e+01 +470 2 2 1.848750000000000e+01 3.557921033881068e+00 2.000000000000000e+01 +471 2 2 1.725500000000000e+01 2.846336827104855e+00 2.000000000000000e+01 +472 2 2 1.602250000000000e+01 3.557921033881068e+00 2.000000000000000e+01 +473 2 2 1.479000000000000e+01 2.846336827104855e+00 2.000000000000000e+01 +474 2 2 1.232500000000000e+00 7.115842067762137e-01 2.000000000000000e+01 +475 2 2 2.465000000000000e+00 1.423168413552427e+00 2.000000000000000e+01 +476 2 2 3.697500000000000e+00 7.115842067762137e-01 2.000000000000000e+01 +477 2 2 4.929999999999999e+00 1.423168413552427e+00 2.000000000000000e+01 +478 2 2 9.859999999999999e+00 1.423168413552427e+00 2.000000000000000e+01 +479 2 2 1.109250000000000e+01 7.115842067762137e-01 2.000000000000000e+01 +480 2 2 1.232500000000000e+01 1.423168413552427e+00 2.000000000000000e+01 +481 2 2 1.355750000000000e+01 7.115842067762137e-01 2.000000000000000e+01 +482 2 2 1.479000000000000e+01 1.423168413552427e+00 2.000000000000000e+01 +483 2 2 1.602250000000000e+01 7.115842067762137e-01 2.000000000000000e+01 +484 2 2 2.095250000000000e+01 7.115842067762137e-01 2.000000000000000e+01 +485 2 2 2.218500000000000e+01 1.423168413552427e+00 2.000000000000000e+01 +486 2 2 2.341750000000000e+01 7.115842067762137e-01 2.000000000000000e+01 +487 2 2 2.465000000000000e+01 1.423168413552427e+00 2.000000000000000e+01 +488 2 2 2.465000000000000e+00 2.846336827104855e+00 2.000000000000000e+01 +489 2 2 3.697500000000000e+00 3.557921033881068e+00 2.000000000000000e+01 +490 2 2 8.627500000000000e+00 3.557921033881068e+00 2.000000000000000e+01 +491 2 2 9.859999999999999e+00 2.846336827104855e+00 2.000000000000000e+01 +492 2 2 1.109250000000000e+01 3.557921033881068e+00 2.000000000000000e+01 +493 2 2 1.232500000000000e+01 2.846336827104855e+00 2.000000000000000e+01 +494 2 2 1.355750000000000e+01 3.557921033881068e+00 2.000000000000000e+01 +495 2 2 1.972000000000000e+01 1.423168413552427e+00 2.000000000000000e+01 +496 2 2 8.627500000000000e+00 1.209693151519563e+01 2.000000000000000e+01 +497 2 2 9.859999999999999e+00 1.138534730841942e+01 2.000000000000000e+01 +498 2 2 1.109250000000000e+01 1.209693151519563e+01 2.000000000000000e+01 +499 2 2 1.232500000000000e+01 1.138534730841942e+01 2.000000000000000e+01 +500 2 2 1.355750000000000e+01 1.209693151519563e+01 2.000000000000000e+01 +501 2 2 1.479000000000000e+01 1.138534730841942e+01 2.000000000000000e+01 +502 2 2 1.602250000000000e+01 1.209693151519563e+01 2.000000000000000e+01 +503 2 2 2.095250000000000e+01 1.209693151519563e+01 2.000000000000000e+01 +504 2 2 2.218500000000000e+01 1.138534730841942e+01 2.000000000000000e+01 +505 2 2 2.341750000000000e+01 1.209693151519563e+01 2.000000000000000e+01 +506 2 2 2.465000000000000e+01 1.138534730841942e+01 2.000000000000000e+01 +507 2 2 2.588250000000000e+01 1.209693151519563e+01 2.000000000000000e+01 +508 2 2 2.711500000000000e+01 1.138534730841942e+01 2.000000000000000e+01 +509 2 2 2.834750000000000e+01 1.209693151519563e+01 2.000000000000000e+01 +510 2 2 2.958000000000000e+01 1.138534730841942e+01 2.000000000000000e+01 +511 2 2 3.081250000000000e+01 1.209693151519563e+01 2.000000000000000e+01 +512 2 2 8.627500000000000e+00 1.352009992874806e+01 2.000000000000000e+01 +513 2 2 9.859999999999999e+00 1.423168413552428e+01 2.000000000000000e+01 +514 2 2 1.109250000000000e+01 1.352009992874806e+01 2.000000000000000e+01 +515 2 2 1.602250000000000e+01 1.352009992874806e+01 2.000000000000000e+01 +516 2 2 1.725500000000000e+01 1.423168413552428e+01 2.000000000000000e+01 +517 2 2 1.848750000000000e+01 1.352009992874806e+01 2.000000000000000e+01 +518 2 2 1.972000000000000e+01 1.423168413552428e+01 2.000000000000000e+01 +519 2 2 7.395000000000000e+00 1.138534730841942e+01 2.000000000000000e+01 +520 2 2 3.451000000000000e+01 1.992435778973398e+01 2.000000000000000e+01 +521 2 2 2.834750000000000e+01 9.250594688090777e+00 2.000000000000000e+01 +522 2 2 2.711499999999999e+01 9.962178894866991e+00 2.000000000000000e+01 +523 2 2 1.355750000000000e+01 7.827426274538350e+00 2.000000000000000e+01 +524 2 2 1.479000000000000e+01 7.115842067762138e+00 2.000000000000000e+01 +525 2 2 1.972000000000000e+01 7.115842067762138e+00 2.000000000000000e+01 +526 2 2 2.095250000000000e+01 7.827426274538350e+00 2.000000000000000e+01 +527 2 2 2.218500000000000e+01 7.115842067762138e+00 2.000000000000000e+01 +528 2 2 2.341750000000000e+01 7.827426274538350e+00 2.000000000000000e+01 +529 2 2 2.465000000000000e+01 7.115842067762138e+00 2.000000000000000e+01 +530 2 2 2.588250000000000e+01 7.827426274538350e+00 2.000000000000000e+01 +531 2 2 2.711500000000000e+01 7.115842067762138e+00 2.000000000000000e+01 +532 2 2 2.834750000000000e+01 7.827426274538350e+00 2.000000000000000e+01 +533 2 2 6.162499999999999e+00 9.250594688090777e+00 2.000000000000000e+01 +534 2 2 1.109250000000000e+01 7.827426274538350e+00 2.000000000000000e+01 +535 2 2 1.232500000000000e+01 9.962178894866991e+00 2.000000000000000e+01 +536 2 2 1.355750000000000e+01 9.250594688090777e+00 2.000000000000000e+01 +537 2 2 1.479000000000000e+01 9.962178894866991e+00 2.000000000000000e+01 +538 2 2 1.602250000000000e+01 9.250594688090777e+00 2.000000000000000e+01 +539 2 2 1.725500000000000e+01 9.962178894866991e+00 2.000000000000000e+01 +540 2 2 1.848750000000000e+01 9.250594688090777e+00 2.000000000000000e+01 +541 2 2 2.341750000000000e+01 9.250594688090777e+00 2.000000000000000e+01 +542 2 2 2.465000000000000e+01 9.962178894866991e+00 2.000000000000000e+01 +543 2 2 2.588250000000000e+01 9.250594688090777e+00 2.000000000000000e+01 +544 2 2 8.627500000000000e+00 9.250594688090777e+00 2.000000000000000e+01 +545 2 2 3.574249999999999e+01 2.063594199651019e+01 2.000000000000000e+01 diff --git a/examples/USER/misc/drip/in.CH_drip b/examples/USER/misc/drip/in.CH_drip new file mode 100644 index 0000000000..cf67fae639 --- /dev/null +++ b/examples/USER/misc/drip/in.CH_drip @@ -0,0 +1,30 @@ +# Define unit set and class of atomic model +units metal +atom_style molecular + +# BC +boundary p p s + +# read config +read_data data.CH + + +# potential +pair_style hybrid/overlay drip rebo +pair_coeff * * drip C.drip C NULL # only applies to species 1, i.e. C +pair_coeff * * rebo CH.rebo C H # species 1 is C and species 2 is H + + +compute peratom all pe/atom + +# set what thermodynamic information to print to log +thermo 10 # print every 1 timestep + +# set what information to write to dump file +dump id all custom 1 lammps.dump id type x y z fx fy fz c_peratom +dump_modify id every 10 format line "%d %d %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e" +dump_modify id sort id + +# minimize energy +minimize 1.0e-15 1.0e-15 100 100 + diff --git a/examples/USER/misc/drip/in.C_drip b/examples/USER/misc/drip/in.C_drip new file mode 100644 index 0000000000..0b66d0b9f7 --- /dev/null +++ b/examples/USER/misc/drip/in.C_drip @@ -0,0 +1,29 @@ +# Define unit set and class of atomic model +units metal +atom_style molecular + +# BC +boundary p p s + +# read config +read_data data.C + + +# potential +pair_style hybrid/overlay drip rebo +pair_coeff * * drip C.drip C +pair_coeff * * rebo CH.rebo C + +compute peratom all pe/atom + +# set what thermodynamic information to print to log +thermo 10 # print every 1 timestep + +# set what information to write to dump file +dump id all custom 1 lammps.dump id type x y z fx fy fz c_peratom +dump_modify id every 10 format line "%d %d %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e" +dump_modify id sort id + +# minimize energy +minimize 1.0e-15 1.0e-15 100 100 + diff --git a/examples/USER/misc/drip/log.30Apr19.CH_drip.g++.1 b/examples/USER/misc/drip/log.30Apr19.CH_drip.g++.1 new file mode 100644 index 0000000000..9aad2cd22f --- /dev/null +++ b/examples/USER/misc/drip/log.30Apr19.CH_drip.g++.1 @@ -0,0 +1,111 @@ +LAMMPS (30 Apr 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88) + using 1 OpenMP thread(s) per MPI task +# Define unit set and class of atomic model +units metal +atom_style molecular + +# BC +boundary p p s + +# read config +read_data data.CH + triclinic box = (0 0 0) to (24.65 21.3475 30) with tilt (12.325 0 0) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 545 atoms + 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.000152826 secs + read_data CPU = 0.000973701 secs + + +# potential +pair_style hybrid/overlay drip rebo +pair_coeff * * drip C.drip C NULL # only applies to species 1, i.e. C +Reading potential file C.drip with DATE: 2019-04-19 +pair_coeff * * rebo CH.rebo C H # species 1 is C and species 2 is H +Reading potential file CH.rebo with DATE: 2018-7-3 + + +compute peratom all pe/atom + +# set what thermodynamic information to print to log +thermo 10 # print every 1 timestep + +# set what information to write to dump file +dump id all custom 1 lammps.dump id type x y z fx fy fz c_peratom +dump_modify id every 10 format line "%d %d %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e" +dump_modify id sort id + +# minimize energy +minimize 1.0e-15 1.0e-15 100 100 +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:168) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 17.7 + ghost atom cutoff = 17.7 + binsize = 8.85, bins = 5 3 1 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair drip, perpetual, skip from (2) + attributes: full, newton on, ghost + pair build: skip/ghost + stencil: none + bin: none + (2) pair rebo, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 12.92 | 12.92 | 12.92 Mbytes +Step Temp E_pair E_mol TotEng Press Volume + 0 0 -2884.3731 0 -2884.3731 366196.9 2779.5956 + 10 0 -3240.4807 0 -3240.4807 -20237.368 2779.5956 + 20 0 -3281.0671 0 -3281.0671 -13303.696 2779.5956 + 30 0 -3282.2176 0 -3282.2176 -19187.215 2779.5956 + 40 0 -3282.4004 0 -3282.4004 -21740.059 2779.5956 + 50 0 -3282.4755 0 -3282.4755 -22659.554 2779.5956 + 57 0 -3282.5011 0 -3282.5011 -23313.198 2779.5956 +Loop time of 3.04218 on 1 procs for 57 steps with 545 atoms + +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = max force evaluations + Energy initial, next-to-last, final = + -2884.37307546 -3282.49993222 -3282.5010627 + Force two-norm initial, final = 115.342 0.193154 + Force max component initial, final = 12.0934 0.03617 + Final line search alpha, max atom move = 1 0.03617 + Iterations, force evaluations = 57 100 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.0291 | 3.0291 | 3.0291 | 0.0 | 99.57 +Bond | 1.8835e-05 | 1.8835e-05 | 1.8835e-05 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.0016081 | 0.0016081 | 0.0016081 | 0.0 | 0.05 +Output | 0.0079796 | 0.0079796 | 0.0079796 | 0.0 | 0.26 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.003517 | | | 0.12 + +Nlocal: 545 ave 545 max 545 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 3175 ave 3175 max 3175 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 294122 ave 294122 max 294122 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 294122 +Ave neighs/atom = 539.673 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:03 diff --git a/examples/USER/misc/drip/log.30Apr19.CH_drip.g++.4 b/examples/USER/misc/drip/log.30Apr19.CH_drip.g++.4 new file mode 100644 index 0000000000..9d439bca45 --- /dev/null +++ b/examples/USER/misc/drip/log.30Apr19.CH_drip.g++.4 @@ -0,0 +1,111 @@ +LAMMPS (30 Apr 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88) + using 1 OpenMP thread(s) per MPI task +# Define unit set and class of atomic model +units metal +atom_style molecular + +# BC +boundary p p s + +# read config +read_data data.CH + triclinic box = (0 0 0) to (24.65 21.3475 30) with tilt (12.325 0 0) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 545 atoms + 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.000135422 secs + read_data CPU = 0.00368595 secs + + +# potential +pair_style hybrid/overlay drip rebo +pair_coeff * * drip C.drip C NULL # only applies to species 1, i.e. C +Reading potential file C.drip with DATE: 2019-04-19 +pair_coeff * * rebo CH.rebo C H # species 1 is C and species 2 is H +Reading potential file CH.rebo with DATE: 2018-7-3 + + +compute peratom all pe/atom + +# set what thermodynamic information to print to log +thermo 10 # print every 1 timestep + +# set what information to write to dump file +dump id all custom 1 lammps.dump id type x y z fx fy fz c_peratom +dump_modify id every 10 format line "%d %d %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e" +dump_modify id sort id + +# minimize energy +minimize 1.0e-15 1.0e-15 100 100 +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:168) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 17.7 + ghost atom cutoff = 17.7 + binsize = 8.85, bins = 5 3 1 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair drip, perpetual, skip from (2) + attributes: full, newton on, ghost + pair build: skip/ghost + stencil: none + bin: none + (2) pair rebo, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 11.03 | 11.1 | 11.16 Mbytes +Step Temp E_pair E_mol TotEng Press Volume + 0 0 -2884.3731 0 -2884.3731 366196.9 2779.5956 + 10 0 -3240.4807 0 -3240.4807 -20237.368 2779.5956 + 20 0 -3281.0671 0 -3281.0671 -13303.696 2779.5956 + 30 0 -3282.2176 0 -3282.2176 -19187.216 2779.5956 + 40 0 -3282.4004 0 -3282.4004 -21740.027 2779.5956 + 50 0 -3282.4753 0 -3282.4753 -22682.604 2779.5956 + 57 0 -3282.5023 0 -3282.5023 -23355.081 2779.5956 +Loop time of 1.66218 on 4 procs for 57 steps with 545 atoms + +99.0% CPU use with 4 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = max force evaluations + Energy initial, next-to-last, final = + -2884.37307546 -3282.50070864 -3282.50227121 + Force two-norm initial, final = 115.342 0.228488 + Force max component initial, final = 12.0934 0.03365 + Final line search alpha, max atom move = 1 0.03365 + Iterations, force evaluations = 57 100 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.5571 | 1.5945 | 1.6314 | 2.3 | 95.93 +Bond | 2.265e-05 | 2.9087e-05 | 3.4571e-05 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.020248 | 0.05608 | 0.092328 | 11.8 | 3.37 +Output | 0.0053282 | 0.0054213 | 0.0056982 | 0.2 | 0.33 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.006172 | | | 0.37 + +Nlocal: 136.25 ave 177 max 100 min +Histogram: 2 0 0 0 0 0 0 0 1 1 +Nghost: 2874.75 ave 2912 max 2835 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 73530.5 ave 73544 max 73517 min +Histogram: 1 0 0 0 1 1 0 0 0 1 + +Total # of neighbors = 294122 +Ave neighs/atom = 539.673 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:01 diff --git a/examples/USER/misc/drip/log.30Apr19.C_drip.g++.1 b/examples/USER/misc/drip/log.30Apr19.C_drip.g++.1 new file mode 100644 index 0000000000..6f19cee048 --- /dev/null +++ b/examples/USER/misc/drip/log.30Apr19.C_drip.g++.1 @@ -0,0 +1,110 @@ +LAMMPS (30 Apr 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88) + using 1 OpenMP thread(s) per MPI task +# Define unit set and class of atomic model +units metal +atom_style molecular + +# BC +boundary p p s + +# read config +read_data data.C + triclinic box = (0 0 0) to (24.65 21.3475 30) with tilt (12.325 0 0) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 400 atoms + 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.000912905 secs + read_data CPU = 0.00252986 secs + + +# potential +pair_style hybrid/overlay drip rebo +pair_coeff * * drip C.drip C +Reading potential file C.drip with DATE: 2019-04-19 +pair_coeff * * rebo CH.rebo C +Reading potential file CH.rebo with DATE: 2018-7-3 + +compute peratom all pe/atom + +# set what thermodynamic information to print to log +thermo 10 # print every 1 timestep + +# set what information to write to dump file +dump id all custom 1 lammps.dump id type x y z fx fy fz c_peratom +dump_modify id every 10 format line "%d %d %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e" +dump_modify id sort id + +# minimize energy +minimize 1.0e-15 1.0e-15 100 100 +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:168) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 17.7 + ghost atom cutoff = 17.7 + binsize = 8.85, bins = 5 3 1 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair drip, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) pair rebo, perpetual, copy from (1) + attributes: full, newton on, ghost + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 12.21 | 12.21 | 12.21 Mbytes +Step Temp E_pair E_mol TotEng Press Volume + 0 0 -2941.0549 0 -2941.0549 -52204.715 2052.0534 + 10 0 -2966.9787 0 -2966.9787 -29717.01 2052.0534 + 20 0 -2967.0695 0 -2967.0695 -29614.636 2052.0534 + 30 0 -2967.0859 0 -2967.0859 -29867.385 2052.0534 + 40 0 -2967.0888 0 -2967.0888 -29997.486 2052.0534 + 50 0 -2967.0896 0 -2967.0896 -30072.387 2052.0534 + 51 0 -2967.0896 0 -2967.0896 -30076.548 2052.0534 +Loop time of 2.93337 on 1 procs for 51 steps with 400 atoms + +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = max force evaluations + Energy initial, next-to-last, final = + -2941.05486197 -2967.08958376 -2967.08962073 + Force two-norm initial, final = 35.5666 0.0471918 + Force max component initial, final = 6.23617 0.0050012 + Final line search alpha, max atom move = 1 0.0050012 + Iterations, force evaluations = 51 101 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.9239 | 2.9239 | 2.9239 | 0.0 | 99.68 +Bond | 1.2398e-05 | 1.2398e-05 | 1.2398e-05 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.0010808 | 0.0010808 | 0.0010808 | 0.0 | 0.04 +Output | 0.0059283 | 0.0059283 | 0.0059283 | 0.0 | 0.20 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.002466 | | | 0.08 + +Nlocal: 400 ave 400 max 400 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 2357 ave 2357 max 2357 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 294122 ave 294122 max 294122 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 294122 +Ave neighs/atom = 735.305 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:03 diff --git a/examples/USER/misc/drip/log.30Apr19.C_drip.g++.4 b/examples/USER/misc/drip/log.30Apr19.C_drip.g++.4 new file mode 100644 index 0000000000..54f9462b59 --- /dev/null +++ b/examples/USER/misc/drip/log.30Apr19.C_drip.g++.4 @@ -0,0 +1,111 @@ +LAMMPS (30 Apr 2019) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88) + using 1 OpenMP thread(s) per MPI task +# Define unit set and class of atomic model +units metal +atom_style molecular + +# BC +boundary p p s + +# read config +read_data data.C + triclinic box = (0 0 0) to (24.65 21.3475 30) with tilt (12.325 0 0) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 400 atoms + 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.0003407 secs + read_data CPU = 0.00411105 secs + + +# potential +pair_style hybrid/overlay drip rebo +pair_coeff * * drip C.drip C +Reading potential file C.drip with DATE: 2019-04-19 +pair_coeff * * rebo CH.rebo C +Reading potential file CH.rebo with DATE: 2018-7-3 + +compute peratom all pe/atom + +# set what thermodynamic information to print to log +thermo 10 # print every 1 timestep + +# set what information to write to dump file +dump id all custom 1 lammps.dump id type x y z fx fy fz c_peratom +dump_modify id every 10 format line "%d %d %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e %13.5e" +dump_modify id sort id + +# minimize energy +minimize 1.0e-15 1.0e-15 100 100 +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:168) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 17.7 + ghost atom cutoff = 17.7 + binsize = 8.85, bins = 5 3 1 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair drip, perpetual + attributes: full, newton on, ghost + pair build: full/bin/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) pair rebo, perpetual, copy from (1) + attributes: full, newton on, ghost + pair build: copy + stencil: none + bin: none +WARNING: Proc sub-domain size < neighbor skin, could lead to lost atoms (src/domain.cpp:934) +Per MPI rank memory allocation (min/avg/max) = 10.7 | 10.77 | 10.83 Mbytes +Step Temp E_pair E_mol TotEng Press Volume + 0 0 -2941.0549 0 -2941.0549 -52204.715 2052.0534 + 10 0 -2966.9787 0 -2966.9787 -29717.01 2052.0534 + 20 0 -2967.0695 0 -2967.0695 -29614.636 2052.0534 + 30 0 -2967.0859 0 -2967.0859 -29867.385 2052.0534 + 40 0 -2967.0888 0 -2967.0888 -29997.486 2052.0534 + 50 0 -2967.0896 0 -2967.0896 -30072.387 2052.0534 + 51 0 -2967.0896 0 -2967.0896 -30076.548 2052.0534 +Loop time of 1.47901 on 4 procs for 51 steps with 400 atoms + +99.1% CPU use with 4 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = max force evaluations + Energy initial, next-to-last, final = + -2941.05486197 -2967.08958376 -2967.08962073 + Force two-norm initial, final = 35.5666 0.0471918 + Force max component initial, final = 6.23617 0.0050012 + Final line search alpha, max atom move = 1 0.0050012 + Iterations, force evaluations = 51 101 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.4314 | 1.4405 | 1.4548 | 0.8 | 97.40 +Bond | 1.955e-05 | 2.265e-05 | 2.4796e-05 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.014506 | 0.029363 | 0.038964 | 5.5 | 1.99 +Output | 0.00424 | 0.0043345 | 0.0046172 | 0.2 | 0.29 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.004772 | | | 0.32 + +Nlocal: 100 ave 100 max 100 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Nghost: 2132 ave 2132 max 2132 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 73530.5 ave 73544 max 73517 min +Histogram: 1 0 0 0 1 1 0 0 0 1 + +Total # of neighbors = 294122 +Ave neighs/atom = 735.305 +Ave special neighs/atom = 0 +Neighbor list builds = 0 +Dangerous builds = 0 + +Total wall time: 0:00:01 diff --git a/potentials/C.drip b/potentials/C.drip new file mode 100644 index 0000000000..435efe40a9 --- /dev/null +++ b/potentials/C.drip @@ -0,0 +1,19 @@ +# DATE: 2019-04-19 CONTRIBUTOR: Mingjian Wen, wenxx151@umn.edu +# +# Parameters of the Dihedral-angle-corrected registry-dependent interlayer (DRIP) +# potential for multilayer graphene structures. +# +# Cite as M. Wen, S. Carr, S. Fang, E. Kaxiras, and E. B. Tadmor, Phys. Rev. B, 98, 235404 (2018). + + +# C0 C2 C4 C delta lambda A z0 B eta rho_cut r_cut normal_cut +C C 1.1598e-02 1.2981e-02 3.2515e-02 7.8151e-03 8.3679e-01 2.7158 2.2216e-02 3.34 7.6799e-03 1.1432 1.562 12.0 3.7 + + +# C0, C2, C4, C, A, and B in [eV] +# delta, z0, eta, rho_cut, r_cut, and normal_cut in [Angstrom] +# lambda in [1/Angstrom] +# +# normal_cut is a parameter not present in the Wen paper, but specific to the +# LAMMPS implementation, which is used to find the 3 nearest neighbors of an +# atom to construct the normal. diff --git a/src/.gitignore b/src/.gitignore index c98fced1ca..9e10059ddb 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -806,6 +806,8 @@ /pair_dpd_mt.h /pair_dsmc.cpp /pair_dsmc.h +/pair_drip.cpp +/pair_drip.h /pair_eam.cpp /pair_eam.h /pair_eam_alloy.cpp diff --git a/src/USER-MISC/README b/src/USER-MISC/README index 9adc817986..a9d8f8a4a7 100644 --- a/src/USER-MISC/README +++ b/src/USER-MISC/README @@ -70,6 +70,7 @@ pair_style buck/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15 pair_style coul/diel, Axel Kohlmeyer, akohlmey at gmail.com, 1 Dec 11 pair_style coul/shield, Wengen Ouyang (Tel Aviv University), w.g.ouyang at gmail dot com, 30 Mar 18 pair_style dipole/sf, Mario Orsi, orsimario at gmail.com, 8 Aug 11 +pair_style drip, Mingjian Wen, University of Minnesota, wenxx151 at umn.edu, 17 Apr 19 pair_style edip, Luca Ferraro, luca.ferraro at caspur.it, 15 Sep 11 pair_style extep, Jaap Kroes (Radboud U), jaapkroes at gmail dot com, 28 Nov 17 pair_style gauss/cut, Axel Kohlmeyer, akohlmey at gmail.com, 1 Dec 11 diff --git a/src/USER-MISC/pair_drip.cpp b/src/USER-MISC/pair_drip.cpp new file mode 100644 index 0000000000..118c033b5c --- /dev/null +++ b/src/USER-MISC/pair_drip.cpp @@ -0,0 +1,1107 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Mingjian Wen (University of Minnesota) + e-mail: wenxx151@umn.edu, wenxx151@gmail.com + + This implements the DRIP model as described in + M. Wen, S. Carr, S. Fang, E. Kaxiras, and E. B. Tadmor, + Phys. Rev. B, 98, 235404 (2018). +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include "pair_drip.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "my_page.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define MAXLINE 1024 +#define DELTA 4 +#define HALF 0.5 + +/* ---------------------------------------------------------------------- */ + +PairDRIP::PairDRIP(LAMMPS *lmp) : Pair(lmp) +{ + single_enable = 0; + restartinfo = 0; + manybody_flag = 1; + + params = NULL; + nearest3neigh = NULL; + elements = NULL; + elem2param = NULL; + map = NULL; + nelements = 0; + cutmax = 0.0; +} + +/* ---------------------------------------------------------------------- */ + +PairDRIP::~PairDRIP() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + delete [] map; + } + + if (elements != NULL) { + for (int i = 0; i < nelements; i++) delete [] elements[i]; + delete [] elements; + elements = NULL; + } + memory->destroy(params); + memory->destroy(elem2param); + memory->destroy(nearest3neigh); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairDRIP::init_style() +{ + if (force->newton_pair == 0) + error->all(FLERR,"Pair style drip requires newton pair on"); + if (!atom->molecule_flag) + error->all(FLERR,"Pair style drip requires atom attribute molecule"); + + // need a full neighbor list, including neighbors of ghosts + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->ghost = 1; +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairDRIP::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"); + map = new int[n+1]; +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairDRIP::settings(int narg, char ** /* arg */) +{ + if (narg != 0) error->all(FLERR,"Illegal pair_style command"); + if (strcmp(force->pair_style,"hybrid/overlay")!=0) + error->all(FLERR,"ERROR: requires hybrid/overlay pair_style"); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairDRIP::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] = NULL; + + 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_file(arg[2]); + + + // 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; + + 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 for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairDRIP::init_one(int i, int j) +{ + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); + + int itype = map[i]; + int jtype = map[j]; + int iparam_ij = elem2param[itype][jtype]; + Param& p = params[iparam_ij]; + + // max cutoff is the main cutoff plus the normal cutoff such that + double cutmax = p.rcut + p.ncut; + + return cutmax; +} + +/* ---------------------------------------------------------------------- + read DRIP file +------------------------------------------------------------------------- */ + +void PairDRIP::read_file(char *filename) +{ + int params_per_line = 15; + char **words = new char*[params_per_line+1]; + memory->sfree(params); + int nparams = 0; + int maxparam = 0; + + // open file on proc 0 + + FILE *fp; + if (comm->me == 0) { + fp = force->open_potential(filename); + if (fp == NULL) { + char str[128]; + snprintf(str,128,"Cannot open DRIP potential file %s",filename); + error->one(FLERR,str); + } + } + + // read each line out of file, skipping blank lines or leading '#' + // store line of params if all 3 element tags are in element list + + int i,j,n,m,nwords,ielement,jelement; + char line[MAXLINE],*ptr; + int eof = 0; + + while (1) { + if (comm->me == 0) { + ptr = fgets(line,MAXLINE,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + + // strip comment, skip line if blank + + if ((ptr = strchr(line,'#'))) *ptr = '\0'; + nwords = atom->count_words(line); + if (nwords == 0) continue; + + // concatenate additional lines until have params_per_line words + + while (nwords < params_per_line) { + n = strlen(line); + if (comm->me == 0) { + ptr = fgets(&line[n],MAXLINE-n,fp); + if (ptr == NULL) { + eof = 1; + fclose(fp); + } else n = strlen(line) + 1; + } + MPI_Bcast(&eof,1,MPI_INT,0,world); + if (eof) break; + MPI_Bcast(&n,1,MPI_INT,0,world); + MPI_Bcast(line,n,MPI_CHAR,0,world); + if ((ptr = strchr(line,'#'))) *ptr = '\0'; + nwords = atom->count_words(line); + } + + if (nwords != params_per_line) + error->all(FLERR,"Insufficient format in DRIP potential file"); + + // words = ptrs to all words in line + + nwords = 0; + words[nwords++] = strtok(line," \t\n\r\f"); + while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; + + // ielement,jelement = 1st args + // if these 2 args are in element list, then parse this line + // else skip to next line (continue) + + for (ielement = 0; ielement < nelements; ielement++) + if (strcmp(words[0],elements[ielement]) == 0) break; + if (ielement == nelements) continue; + for (jelement = 0; jelement < nelements; jelement++) + if (strcmp(words[1],elements[jelement]) == 0) break; + if (jelement == 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"); + } + + params[nparams].ielement = ielement; + params[nparams].jelement = jelement; + params[nparams].C0 = atof(words[2]); + params[nparams].C2 = atof(words[3]); + params[nparams].C4 = atof(words[4]); + params[nparams].C = atof(words[5]); + params[nparams].delta = atof(words[6]); + params[nparams].lambda = atof(words[7]); + params[nparams].A = atof(words[8]); + params[nparams].z0 = atof(words[9]); + params[nparams].B = atof(words[10]); + params[nparams].eta = atof(words[11]); + params[nparams].rhocut = atof(words[12]); + params[nparams].rcut = atof(words[13]); + params[nparams].ncut = atof(words[14]); + + // convenient precomputations + params[nparams].rhocutsq = params[nparams].rhocut * params[nparams].rhocut; + params[nparams].rcutsq = params[nparams].rcut * params[nparams].rcut; + params[nparams].ncutsq = params[nparams].ncut * params[nparams].ncut; + + nparams++; + } + + memory->destroy(elem2param); + memory->create(elem2param,nelements,nelements,"pair:elem2param"); + for (i = 0; i < nelements; i++) { + for (j = 0; j < nelements; j++) { + n = -1; + for (m = 0; m < nparams; m++) { + if (i == params[m].ielement && j == params[m].jelement) { + 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] = n; + } + } + delete [] words; +} + +/* ---------------------------------------------------------------------- */ + +void PairDRIP::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,rsq; + int *ilist,*jlist,*numneigh,**firstneigh; + + double ni[DIM]; + double dni_dri[DIM][DIM], dni_drnb1[DIM][DIM]; + double dni_drnb2[DIM][DIM], dni_drnb3[DIM][DIM]; + + ev_init(eflag,vflag); + + double **x = atom->x; + double **f = atom->f; + int *type = atom->type; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + find_nearest3neigh(); + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (nearest3neigh[i][0] == -1) { + continue; + } + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = map[type[i]]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // normal and its derivatives w.r.t. atom i and its 3 nearest neighbors + calc_normal(i, ni, dni_dri,dni_drnb1, dni_drnb2, dni_drnb3); + + double fi[DIM] = {0., 0., 0.}; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + if (nearest3neigh[j][0] == -1) { + continue; + } + jtype = map[type[j]]; + + delx = x[j][0] - xtmp; + dely = x[j][1] - ytmp; + delz = x[j][2] - ztmp; + rsq = delx*delx + dely*dely + delz*delz; + int iparam_ij = elem2param[itype][jtype]; + Param& p = params[iparam_ij]; + double rcutsq = p.rcutsq; + + // only include the interation between different layers + if (rsq < rcutsq && atom->molecule[i] != atom->molecule[j]) { + + double fj[DIM] = {0., 0., 0.}; + double rvec[DIM] = {delx, dely, delz}; + + double phi_attr = calc_attractive(p, rsq, rvec, fi, fj); + + double phi_repul = calc_repulsive(i, j, p, rsq, rvec, + ni, dni_dri, dni_drnb1, dni_drnb2, dni_drnb3, fi, fj); + + if (eflag) evdwl = HALF * (phi_repul + phi_attr); + else evdwl = 0.0; + if (evflag) ev_tally(i,j,nlocal,newton_pair, evdwl,0.0,0,0,0,0); + + f[j][0] += fj[0]; + f[j][1] += fj[1]; + f[j][2] += fj[2]; + + // multiply 2 since v_tally has a 0.5 coeff + fj[0] *= 2; fj[1] *= 2; fj[2] *= 2; + if (vflag_atom) v_tally(j, fj, x[j]); + + } + } //loop over jj + + f[i][0] += fi[0]; + f[i][1] += fi[1]; + f[i][2] += fi[2]; + + // multiply 2 since v_tally has a 0.5 coeff + fi[0] *= 2; fi[1] *= 2; fi[2] *= 2; + if (vflag_atom) v_tally(i, fi, x[i]); + + } // loop over ii + + +if (vflag_fdotr) + virial_fdotr_compute(); + +} + +/* ---------------------------------------------------------------------- + Attractive part, i.e. the r^(-6) part +------------------------------------------------------------------------- */ + +double PairDRIP::calc_attractive(Param& p, double const rsq, double const *rvec, + double *const fi, double *const fj) +{ + double const z0 = p.z0; + double const A = p.A; + double const cutoff = p.rcut; + double const r = sqrt(rsq); + + double roz0_sq = rsq / (z0 * z0); + double dtp; + double tp = tap(r, cutoff, dtp); + double r6 = A / (roz0_sq * roz0_sq * roz0_sq); + double dr6 = -6 * r6 / r; + double phi = -r6 * tp; + + double fpair = -HALF * (r6 * dtp + dr6 * tp); + + fi[0] += rvec[0] * fpair / r; + fi[1] += rvec[1] * fpair / r; + fi[2] += rvec[2] * fpair / r; + fj[0] -= rvec[0] * fpair / r; + fj[1] -= rvec[1] * fpair / r; + fj[2] -= rvec[2] * fpair / r; + + return phi; +} + +/* ---------------------------------------------------------------------- + Repulsive part that depends on transverse distance and dihedral angle +------------------------------------------------------------------------- */ + +double PairDRIP::calc_repulsive(int const i, int const j, Param& p, + double const rsq, double const *rvec, double const *ni, + V3 const *dni_dri, V3 const *dni_drnb1, V3 const *dni_drnb2, + V3 const *dni_drnb3, double *const fi, double *const fj) +{ + double **f = atom->f; + double **x = atom->x; + + double C0 = p.C0; + double C2 = p.C2; + double C4 = p.C4; + double C = p.C; + double delta = p.delta; + double lambda = p.lambda; + double z0 = p.z0; + double cutoff = p.rcut; + + // nearest 3 neighbors of atoms i and j + int nbi1 = nearest3neigh[i][0]; + int nbi2 = nearest3neigh[i][1]; + int nbi3 = nearest3neigh[i][2]; + int nbj1 = nearest3neigh[j][0]; + int nbj2 = nearest3neigh[j][1]; + int nbj3 = nearest3neigh[j][2]; + + double fnbi1[DIM]; + double fnbi2[DIM]; + double fnbi3[DIM]; + double fnbj1[DIM]; + double fnbj2[DIM]; + double fnbj3[DIM]; + V3 dgij_dri; + V3 dgij_drj; + V3 dgij_drk1; + V3 dgij_drk2; + V3 dgij_drk3; + V3 dgij_drl1; + V3 dgij_drl2; + V3 dgij_drl3; + V3 drhosqij_dri; + V3 drhosqij_drj; + V3 drhosqij_drnb1; + V3 drhosqij_drnb2; + V3 drhosqij_drnb3; + + double r = sqrt(rsq); + + // derivative of rhosq w.r.t. atoms i j and the nearests 3 neighs of i + get_drhosqij(rvec, ni, dni_dri, dni_drnb1, dni_drnb2, dni_drnb3, drhosqij_dri, + drhosqij_drj, drhosqij_drnb1, drhosqij_drnb2, drhosqij_drnb3); + + // transverse decay function f(rho) and its derivative w.r.t. rhosq + double rhosqij; + double dtdij; + double tdij = td(C0, C2, C4, delta, rvec, r, ni, rhosqij, dtdij); + + // dihedral angle function and its derivateives + double dgij_drhosq; + double gij = dihedral(i, j, p, rhosqij, dgij_drhosq, dgij_dri, dgij_drj, + dgij_drk1, dgij_drk2, dgij_drk3, dgij_drl1, dgij_drl2, dgij_drl3); + + double V2 = C + tdij + gij; + + // tap part + double dtp; + double tp = tap(r, cutoff, dtp); + + // exponential part + double V1 = exp(-lambda * (r - z0)); + double dV1 = -V1 * lambda; + + // total energy + double phi = tp * V1 * V2; + + for (int k = 0; k < DIM; k++) { + // forces due to derivatives of tap and V1 + double tmp = HALF * (dtp * V1 + tp * dV1) * V2 * rvec[k] / r; + fi[k] += tmp; + fj[k] -= tmp; + + // contributions from transverse decay part tdij and the dihedral part gij + + // derivative of V2 contribute to atoms i, j + fi[k] -= HALF*tp*V1*((dtdij+dgij_drhosq)*drhosqij_dri[k]+dgij_dri[k]); + fj[k] -= HALF*tp*V1*((dtdij+dgij_drhosq)*drhosqij_drj[k]+dgij_drj[k]); + // derivative of V2 contribute to nearest 3 neighs of atom i + fnbi1[k] = -HALF*tp*V1*((dtdij+dgij_drhosq)*drhosqij_drnb1[k]+dgij_drk1[k]); + fnbi2[k] = -HALF*tp*V1*((dtdij+dgij_drhosq)*drhosqij_drnb2[k]+dgij_drk2[k]); + fnbi3[k] = -HALF*tp*V1*((dtdij+dgij_drhosq)*drhosqij_drnb3[k]+dgij_drk3[k]); + // derivative of V2 contribute to nearest 3 neighs of atom j + fnbj1[k] = -HALF * tp * V1 * dgij_drl1[k]; + fnbj2[k] = -HALF * tp * V1 * dgij_drl2[k]; + fnbj3[k] = -HALF * tp * V1 * dgij_drl3[k]; + } + + for (int k = 0; k < DIM; k++) { + f[nbi1][k] += fnbi1[k]; + f[nbi2][k] += fnbi2[k]; + f[nbi3][k] += fnbi3[k]; + f[nbj1][k] += fnbj1[k]; + f[nbj2][k] += fnbj2[k]; + f[nbj3][k] += fnbj3[k]; + } + + if (vflag_atom) { + // multiply since v_tally has a 0.5 coeff + for (int k = 0; k < DIM; k++) { + fnbi1[k] *= 2; + fnbi2[k] *= 2; + fnbi3[k] *= 2; + fnbj1[k] *= 2; + fnbj2[k] *= 2; + fnbj3[k] *= 2; + } + v_tally(nbi1, fnbi1, x[nbi1]); + v_tally(nbi2, fnbi2, x[nbi2]); + v_tally(nbi3, fnbi3, x[nbi3]); + v_tally(nbj1, fnbj1, x[nbj1]); + v_tally(nbj2, fnbj2, x[nbj2]); + v_tally(nbj3, fnbj3, x[nbj3]); + } + + return phi; +} + +/* ---------------------------------------------------------------------- */ + +void PairDRIP::find_nearest3neigh() +{ + int i, j, ii, jj, allnum, inum, jnum, itype, jtype, size; + double xtmp, ytmp, ztmp, delx, dely, delz, rsq; + int *ilist, *jlist, *numneigh, **firstneigh; + + double **x = atom->x; + int *type = atom->type; + + + allnum = list->inum + list->gnum; + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + size = allnum; + memory->destroy(nearest3neigh); + memory->create(nearest3neigh, size, 3, "pair:nearest3neigh"); + + for (ii = 0; ii < allnum; ii++) { + i = ilist[ii]; + + // If "NULL" used in pair_coeff, i could be larger than allnum + if (i >= size) { + size = i+1; + memory->grow(nearest3neigh, size, 3, "pair:nearest3neigh"); + } + + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = map[type[i]]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // init nb1 to be the 1st nearest neigh, nb3 the 3rd nearest + int nb1 = -1; + int nb2 = -1; + int nb3 = -1; + double nb1_rsq = 1.0e10 + 1; + double nb2_rsq = 2.0e10; + double nb3_rsq = 3.0e10; + + for (jj = 0; jj < jnum; jj++) { + + j = jlist[jj]; + j &= NEIGHMASK; + jtype = map[type[j]]; + delx = x[j][0] - xtmp; + dely = x[j][1] - ytmp; + delz = x[j][2] - ztmp; + rsq = delx * delx + dely * dely + delz * delz; + + int iparam_ij = elem2param[itype][jtype]; + double ncutsq = params[iparam_ij].ncutsq; + + if (rsq < ncutsq && atom->molecule[i] == atom->molecule[j]) { + // find the 3 nearest neigh + if (rsq < nb1_rsq) { + nb3 = nb2; + nb2 = nb1; + nb1 = j; + nb3_rsq = nb2_rsq; + nb2_rsq = nb1_rsq; + nb1_rsq = rsq; + } + else if (rsq < nb2_rsq) { + nb3 = nb2; + nb2 = j; + nb3_rsq = nb2_rsq; + nb2_rsq = rsq; + } + else if (rsq < nb3_rsq) { + nb3 = j; + nb3_rsq = rsq; + } + + } + } // loop over jj + + // store neighbors to be used later to compute normal + if (nb3_rsq >= 1.0e10) { + if (ione(FLERR, "No enough neighbors to construct normal. Check the " + "configuration to see whether atoms fly away."); + } else { + // This only happens for ghost atoms that are near the boundary of the + // domain (i.e. r > r_cut + n_cut). These ghost atoms will not be + // the i j atoms in the compute function, but only neighbors of j atoms. + // It is allowed not to have three neighbors for these atoms, since + // their normals are not needed. + nearest3neigh[i][0] = -1; + nearest3neigh[i][1] = -1; + nearest3neigh[i][2] = -1; + } + } + else{ + nearest3neigh[i][0] = nb1; + nearest3neigh[i][1] = nb2; + nearest3neigh[i][2] = nb3; + } + } // loop over ii + +} + +/* ---------------------------------------------------------------------- */ + +void PairDRIP::calc_normal(int const i, double *const normal, + V3 *const dn_dri, V3 *const dn_drk1, V3 *const dn_drk2, V3 *const dn_drk3) +{ + int k1 = nearest3neigh[i][0]; + int k2 = nearest3neigh[i][1]; + int k3 = nearest3neigh[i][2]; + + // normal does not depend on i, setting to zero + for (int j = 0; j < DIM; j++) { + for (int k = 0; k < DIM; k++) { + dn_dri[j][k] = 0.0; + } + } + + // get normal and derives of normal w.r.t to its 3 nearest neighbors + double **x = atom->x; + deriv_cross(x[k1], x[k2], x[k3], normal, dn_drk1, dn_drk2, dn_drk3); +} + +/* ---------------------------------------------------------------------- */ + +void PairDRIP::get_drhosqij(double const *rij, double const *ni, + V3 const *dni_dri, V3 const *dni_drn1, V3 const *dni_drn2, + V3 const *dni_drn3, double *const drhosq_dri, double *const drhosq_drj, + double *const drhosq_drn1, double *const drhosq_drn2, + double *const drhosq_drn3) +{ + int k; + double ni_dot_rij = 0; + double dni_dri_dot_rij[DIM]; + double dni_drn1_dot_rij[DIM]; + double dni_drn2_dot_rij[DIM]; + double dni_drn3_dot_rij[DIM]; + + ni_dot_rij = dot(ni, rij); + mat_dot_vec(dni_dri, rij, dni_dri_dot_rij); + mat_dot_vec(dni_drn1, rij, dni_drn1_dot_rij); + mat_dot_vec(dni_drn2, rij, dni_drn2_dot_rij); + mat_dot_vec(dni_drn3, rij, dni_drn3_dot_rij); + + for (k = 0; k < DIM; k++) { + drhosq_dri[k] = -2*rij[k] - 2 * ni_dot_rij * (-ni[k] + dni_dri_dot_rij[k]); + drhosq_drj[k] = 2 * rij[k] - 2 * ni_dot_rij * ni[k]; + drhosq_drn1[k] = -2 * ni_dot_rij * dni_drn1_dot_rij[k]; + drhosq_drn2[k] = -2 * ni_dot_rij * dni_drn2_dot_rij[k]; + drhosq_drn3[k] = -2 * ni_dot_rij * dni_drn3_dot_rij[k]; + } +} + +/* ---------------------------------------------------------------------- + derivartive of transverse decay function f(rho) w.r.t. rho +------------------------------------------------------------------------- */ + +double PairDRIP::td(double C0, double C2, double C4, double delta, + double const *const rvec, double r, const double *const n, + double& rho_sq, double& dtd) +{ + double n_dot_r = dot(n, rvec); + + rho_sq = r * r - n_dot_r * n_dot_r; + + // in case n is [0, 0, 1] and rho_sq is negative due to numerical error + if (rho_sq < 0) { + rho_sq = 0; + } + + double del_sq = delta * delta; + double rod_sq = rho_sq / del_sq; + double td = exp(-rod_sq) * (C0 + rod_sq * (C2 + rod_sq * C4)); + dtd = -td / del_sq + exp(-rod_sq) * (C2 + 2 * C4 * rod_sq) / del_sq; + + return td; +} + +/* ---------------------------------------------------------------------- + derivartive of dihedral angle func gij w.r.t rho, and atom positions +------------------------------------------------------------------------- */ + +double PairDRIP::dihedral(const int i, const int j, Param& p, + double const rhosq, double& d_drhosq, + double *const d_dri, double *const d_drj, + double *const d_drk1, double *const d_drk2, double *const d_drk3, + double *const d_drl1, double *const d_drl2, double *const d_drl3) +{ + double **x = atom->x; + + // get parameter + double B = p.B; + double eta = p.eta; + double cut_rhosq = p.rhocutsq; + + // local vars + double cos_kl[3][3]; // cos_omega_k1ijl1, cos_omega_k1ijl2 ... + double d_dcos_kl[3][3]; // deriv of dihedral w.r.t to cos_omega_kijl + double dcos_kl[3][3][4][DIM]; // 4 indicates k, i, j, l. e.g. dcoskl[0][1][0] + // means dcos_omega_k1ijl2 / drk + + + // if larger than cutoff of rho, return 0 + if (rhosq >= cut_rhosq) { + d_drhosq = 0; + for (int dim = 0; dim < DIM; dim++) { + d_dri[dim] = 0; + d_drj[dim] = 0; + d_drk1[dim] = 0; + d_drk2[dim] = 0; + d_drk3[dim] = 0; + d_drl1[dim] = 0; + d_drl2[dim] = 0; + d_drl3[dim] = 0; + } + double dihe = 0.0; + return dihe; + } + // 3 neighs of atoms i and j + int k[3]; + int l[3]; + for (int m = 0; m < 3; m++) { + k[m] = nearest3neigh[i][m]; + l[m] = nearest3neigh[j][m]; + } + + // cos_omega_kijl and the derivatives w.r.t coordinates + for (int m = 0; m < 3; m++) { + for (int n = 0; n < 3; n++) { + cos_kl[m][n] = deriv_cos_omega(x[k[m]], x[i], x[j], x[l[n]], + dcos_kl[m][n][0], dcos_kl[m][n][1], + dcos_kl[m][n][2], dcos_kl[m][n][3]); + } + } + + double epart1 = exp(-eta * cos_kl[0][0] * cos_kl[0][1] * cos_kl[0][2]); + double epart2 = exp(-eta * cos_kl[1][0] * cos_kl[1][1] * cos_kl[1][2]); + double epart3 = exp(-eta * cos_kl[2][0] * cos_kl[2][1] * cos_kl[2][2]); + double D2 = epart1 + epart2 + epart3; + + // cutoff function + double d_drhosq_tap; + double D0 = B * tap_rho(rhosq, cut_rhosq, d_drhosq_tap); + + // dihedral energy + double dihe = D0 * D2; + + // deriv of dihedral w.r.t rhosq + d_drhosq = B * d_drhosq_tap * D2; + + // deriv of dihedral w.r.t cos_omega_kijl + d_dcos_kl[0][0] = -D0 * epart1 * eta * cos_kl[0][1] * cos_kl[0][2]; + d_dcos_kl[0][1] = -D0 * epart1 * eta * cos_kl[0][0] * cos_kl[0][2]; + d_dcos_kl[0][2] = -D0 * epart1 * eta * cos_kl[0][0] * cos_kl[0][1]; + d_dcos_kl[1][0] = -D0 * epart2 * eta * cos_kl[1][1] * cos_kl[1][2]; + d_dcos_kl[1][1] = -D0 * epart2 * eta * cos_kl[1][0] * cos_kl[1][2]; + d_dcos_kl[1][2] = -D0 * epart2 * eta * cos_kl[1][0] * cos_kl[1][1]; + d_dcos_kl[2][0] = -D0 * epart3 * eta * cos_kl[2][1] * cos_kl[2][2]; + d_dcos_kl[2][1] = -D0 * epart3 * eta * cos_kl[2][0] * cos_kl[2][2]; + d_dcos_kl[2][2] = -D0 * epart3 * eta * cos_kl[2][0] * cos_kl[2][1]; + + // initialization to be zero and later add values + for (int dim = 0; dim < DIM; dim++) { + d_drk1[dim] = 0.; + d_drk2[dim] = 0.; + d_drk3[dim] = 0.; + d_dri[dim] = 0.; + d_drj[dim] = 0.; + d_drl1[dim] = 0.; + d_drl2[dim] = 0.; + d_drl3[dim] = 0.; + } + + for (int m = 0; m < 3; m++) { + for (int dim = 0; dim < 3; dim++) { + d_drk1[dim] += d_dcos_kl[0][m] * dcos_kl[0][m][0][dim]; + d_drk2[dim] += d_dcos_kl[1][m] * dcos_kl[1][m][0][dim]; + d_drk3[dim] += d_dcos_kl[2][m] * dcos_kl[2][m][0][dim]; + d_drl1[dim] += d_dcos_kl[m][0] * dcos_kl[m][0][3][dim]; + d_drl2[dim] += d_dcos_kl[m][1] * dcos_kl[m][1][3][dim]; + d_drl3[dim] += d_dcos_kl[m][2] * dcos_kl[m][2][3][dim]; + } + for (int n = 0; n < 3; n++) { + for (int dim = 0; dim < 3; dim++) { + d_dri[dim] += d_dcos_kl[m][n] * dcos_kl[m][n][1][dim]; + d_drj[dim] += d_dcos_kl[m][n] * dcos_kl[m][n][2][dim]; + } + } + } + + return dihe; +} + +/* ---------------------------------------------------------------------- + compute cos(omega_kijl) and the derivateives +------------------------------------------------------------------------- */ + +double PairDRIP::deriv_cos_omega(double const *rk, double const *ri, + double const *rj, double const *rl, double *const dcos_drk, + double *const dcos_dri, double *const dcos_drj, double *const dcos_drl) +{ + double ejik[DIM]; + double eijl[DIM]; + double tmp1[DIM]; + double tmp2[DIM]; + double dejik_dri[DIM][DIM]; + double dejik_drj[DIM][DIM]; + double dejik_drk[DIM][DIM]; + double deijl_dri[DIM][DIM]; + double deijl_drj[DIM][DIM]; + double deijl_drl[DIM][DIM]; + + + // ejik and derivatives + // Note the returned dejik_dri ... are actually the transpose + deriv_cross(ri, rj, rk, ejik, dejik_dri, dejik_drj, dejik_drk); + + // flip sign + // deriv_cross computes rij cross rik, here we need rji cross rik + for (int m = 0; m < DIM; m++) { + ejik[m] = -ejik[m]; + for (int n = 0; n < DIM; n++) { + dejik_dri[m][n] = -dejik_dri[m][n]; + dejik_drj[m][n] = -dejik_drj[m][n]; + dejik_drk[m][n] = -dejik_drk[m][n]; + } + } + + // eijl and derivatives + deriv_cross(rj, ri, rl, eijl, deijl_drj, deijl_dri, deijl_drl); + // flip sign + for (int m = 0; m < DIM; m++) { + eijl[m] = -eijl[m]; + for (int n = 0; n < DIM; n++) { + deijl_drj[m][n] = -deijl_drj[m][n]; + deijl_dri[m][n] = -deijl_dri[m][n]; + deijl_drl[m][n] = -deijl_drl[m][n]; + } + } + + // dcos_drk + mat_dot_vec(dejik_drk, eijl, dcos_drk); + // dcos_dri + mat_dot_vec(dejik_dri, eijl, tmp1); + mat_dot_vec(deijl_dri, ejik, tmp2); + for (int m = 0; m < DIM; m++) { + dcos_dri[m] = tmp1[m] + tmp2[m]; + } + // dcos_drj + mat_dot_vec(dejik_drj, eijl, tmp1); + mat_dot_vec(deijl_drj, ejik, tmp2); + for (int m = 0; m < DIM; m++) { + dcos_drj[m] = tmp1[m] + tmp2[m]; + } + // dcos drl + mat_dot_vec(deijl_drl, ejik, dcos_drl); + + // cos_oemga_kijl + double cos_omega = dot(ejik, eijl); + + return cos_omega; +} + +/* ---------------------------------------------------------------------- */ + +double PairDRIP::tap(double r, double cutoff, double& dtap) +{ + double t; + double r_min = 0; + + if (r <= r_min) { + t = 1; + dtap = 0; + } + else { + double roc = (r - r_min) / (cutoff - r_min); + double roc_sq = roc * roc; + t = roc_sq*roc_sq*(-35.0 + 84.0 * roc + roc_sq * (-70.0 + 20.0 * roc)) + 1; + dtap = roc_sq * roc / (cutoff - r_min) + * (-140.0 + 420.0 * roc + roc_sq * (-420.0 + 140.0 * roc)); + } + + return t; +} + +/* ---------------------------------------------------------------------- */ + +double PairDRIP::tap_rho(double rhosq, double cut_rhosq, double& drhosq) +{ + double roc_sq; + double roc; + double t; + + roc_sq = rhosq / cut_rhosq; + roc = sqrt(roc_sq); + t = roc_sq*roc_sq*(-35.0 + 84.0 * roc + roc_sq * (-70.0 + 20.0 * roc)) + 1; + + // Note this dtap/drho_sq not dtap/drho + drhosq = roc_sq/cut_rhosq*(-70.0 + 210.0*roc + roc_sq*(-210.0 + 70.0*roc)); + + return t; +} + +/* ---------------------------------------------------------------------- + Compute the normalized cross product of two vector rkl, rkm, and the + derivates w.r.t rk, rl, rm. + Note, the returned dcross_drk, dcross_drl, and dcross_drm are actually the + transpose. +------------------------------------------------------------------------- */ + +void PairDRIP::deriv_cross(double const *rk, double const *rl, + double const *rm, double *const cross, + V3 *const dcross_drk, V3 *const dcross_drl, V3 *const dcross_drm) +{ + double x[DIM]; + double y[DIM]; + double p[DIM]; + double q; + double q_cubic; + double d_invq_d_x0; + double d_invq_d_x1; + double d_invq_d_x2; + double d_invq_d_y0; + double d_invq_d_y1; + double d_invq_d_y2; + + int i, j; + + + // get x = rkl and y = rkm + for (i = 0; i < DIM; i++) { + x[i] = rl[i] - rk[i]; + y[i] = rm[i] - rk[i]; + } + + // cross product + p[0] = x[1] * y[2] - x[2] * y[1]; + p[1] = x[2] * y[0] - x[0] * y[2]; + p[2] = x[0] * y[1] - x[1] * y[0]; + + q = sqrt(p[0] * p[0] + p[1] * p[1] + p[2] * p[2]); + + // normalized cross + cross[0] = p[0] / q; + cross[1] = p[1] / q; + cross[2] = p[2] / q; + + // compute derivatives + // derivative of inverse q (i.e. 1/q) w.r.t x and y + q_cubic = q * q * q; + d_invq_d_x0 = (+p[1] * y[2] - p[2] * y[1]) / q_cubic; + d_invq_d_x1 = (-p[0] * y[2] + p[2] * y[0]) / q_cubic; + d_invq_d_x2 = (p[0] * y[1] - p[1] * y[0]) / q_cubic; + d_invq_d_y0 = (-p[1] * x[2] + p[2] * x[1]) / q_cubic; + d_invq_d_y1 = (p[0] * x[2] - p[2] * x[0]) / q_cubic; + d_invq_d_y2 = (-p[0] * x[1] + p[1] * x[0]) / q_cubic; + + // dcross/drl transposed + dcross_drl[0][0] = p[0] * d_invq_d_x0; + dcross_drl[0][1] = -y[2] / q + p[1] * d_invq_d_x0; + dcross_drl[0][2] = y[1] / q + p[2] * d_invq_d_x0; + + dcross_drl[1][0] = y[2] / q + p[0] * d_invq_d_x1; + dcross_drl[1][1] = p[1] * d_invq_d_x1; + dcross_drl[1][2] = -y[0] / q + p[2] * d_invq_d_x1; + + dcross_drl[2][0] = -y[1] / q + p[0] * d_invq_d_x2; + dcross_drl[2][1] = y[0] / q + p[1] * d_invq_d_x2; + dcross_drl[2][2] = p[2] * d_invq_d_x2; + + // dcross/drm transposed + dcross_drm[0][0] = p[0] * d_invq_d_y0; + dcross_drm[0][1] = x[2] / q + p[1] * d_invq_d_y0; + dcross_drm[0][2] = -x[1] / q + p[2] * d_invq_d_y0; + + dcross_drm[1][0] = -x[2] / q + p[0] * d_invq_d_y1; + dcross_drm[1][1] = p[1] * d_invq_d_y1; + dcross_drm[1][2] = x[0] / q + p[2] * d_invq_d_y1; + + dcross_drm[2][0] = x[1] / q + p[0] * d_invq_d_y2; + dcross_drm[2][1] = -x[0] / q + p[1] * d_invq_d_y2; + dcross_drm[2][2] = p[2] * d_invq_d_y2; + + // dcross/drk transposed + for (i = 0; i < DIM; i++) { + for (j = 0; j < DIM; j++) { + dcross_drk[i][j] = -(dcross_drl[i][j] + dcross_drm[i][j]); + } + } +} diff --git a/src/USER-MISC/pair_drip.h b/src/USER-MISC/pair_drip.h new file mode 100644 index 0000000000..0a8f90dfc2 --- /dev/null +++ b/src/USER-MISC/pair_drip.h @@ -0,0 +1,148 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Mingjian Wen (University of Minnesota) + e-mail: wenxx151@umn.edu + + This implements the DRIP model as described in + M. Wen, S. Carr, S. Fang, E. Kaxiras, and E. B. Tadmor, + Phys. Rev. B, 98, 235404 (2018). +------------------------------------------------------------------------- */ + + +#ifdef PAIR_CLASS + +PairStyle(drip, PairDRIP) + +#else + +#ifndef LMP_PAIR_DRIP_H +#define LMP_PAIR_DRIP_H + +#include "pair.h" +#include "my_page.h" +#include + +namespace LAMMPS_NS { + +#define DIM 3 +typedef double V3[3]; + + +class PairDRIP : public Pair { +public: + PairDRIP(class LAMMPS *); + virtual ~PairDRIP(); + + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + double init_one(int, int); + void init_style(); + +protected: + struct Param + { + int ielement, jelement; + double C0, C2, C4, C, delta, lambda, A, z0, B, eta, rhocut, rcut, ncut; + double rhocutsq, rcutsq, ncutsq; + }; + Param *params; // parameter set for I-J interactions + int **nearest3neigh; // nearest 3 neighbors of atoms + char **elements; // names of unique elements + int **elem2param; // mapping from element pairs to parameters + int *map; // mapping from atom types to elements + int nelements; // # of unique elements + double cutmax; // max cutoff for all species + + void read_file(char *); + void allocate(); + + // DRIP specific functions + double calc_attractive(Param&, double const, double const *, + double *const, double *const); + + double calc_repulsive(int const, int const, Param&, double const, + double const *, double const *, V3 const *, V3 const *, V3 const *, + V3 const *, double *const, double *const); + + void find_nearest3neigh(); + + void calc_normal(int const, double *const, V3 *const, V3 *const, V3 *const, + V3 *const); + + void get_drhosqij(double const *, double const *, V3 const *, V3 const *, + V3 const *, V3 const *, double *const, double *const, double *const, + double *const, double *const); + + double td(double, double, double, double, double const *const, double, + const double *const, double&, double&); + + double dihedral(const int, const int, Param&, double const, double&, + double *const, double *const, double *const, double *const, double *const, + double *const, double *const, double *const); + + double deriv_cos_omega(double const *, double const *, double const *, + double const *, double *const, double *const, double *const, + double *const); + + double tap(double, double, double&); + + double tap_rho(double, double, double&); + + void deriv_cross(double const *, double const *, double const *, + double *const, V3 *const, V3 *const, V3 *const); + + // inline functions + inline double dot(double const *x, double const *y) const + { + return x[0]*y[0]+x[1]*y[1]+x[2]*y[2]; + } + + inline void mat_dot_vec(V3 const *X, double const *y, double *const z) const + { + for (int k = 0; k < 3; k++) { + z[k] = X[k][0]*y[0]+X[k][1]*y[1]+X[k][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: 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: No enough neighbors to construct normal + +Cannot find three neighbors within cutoff of the target atom. +Check the configuration. + +*/