From 2a33e3674ed6a11972ae13b55923e3affe714527 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 24 May 2021 14:51:28 -0500 Subject: [PATCH 01/80] Added src/USER-DIELECTRIC and examples/USER/dielectric --- examples/USER/dielectric/README | 45 + examples/USER/dielectric/data.confined | 4019 +++++++++++++++++ examples/USER/dielectric/data.cylinder | 3616 +++++++++++++++ examples/USER/dielectric/data.minimal | 50 + examples/USER/dielectric/data.plane | 2019 +++++++++ examples/USER/dielectric/data.sphere | 2582 +++++++++++ examples/USER/dielectric/in.confined | 80 + examples/USER/dielectric/in.minimal | 39 + examples/USER/dielectric/in.nopbc | 51 + examples/USER/dielectric/in.pbc | 54 + src/GPU/pair_lj_cut_gpu.cpp | 33 +- src/USER-DIELECTRIC/Install.sh | 56 + src/USER-DIELECTRIC/README | 73 + src/USER-DIELECTRIC/atom_vec_dielectric.cpp | 1270 ++++++ src/USER-DIELECTRIC/atom_vec_dielectric.h | 89 + .../fix_polarize_bem_gmres.cpp | 959 ++++ src/USER-DIELECTRIC/fix_polarize_bem_gmres.h | 115 + src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 450 ++ src/USER-DIELECTRIC/fix_polarize_bem_icc.h | 79 + .../fix_polarize_functional.cpp | 1172 +++++ src/USER-DIELECTRIC/fix_polarize_functional.h | 127 + src/USER-DIELECTRIC/fix_qeq_dielectric.cpp | 1281 ++++++ src/USER-DIELECTRIC/fix_qeq_dielectric.h | 153 + src/USER-DIELECTRIC/msm_dielectric.cpp | 366 ++ src/USER-DIELECTRIC/msm_dielectric.h | 55 + .../pair_coul_cut_dielectric.cpp | 177 + .../pair_coul_cut_dielectric.h | 62 + .../pair_coul_long_dielectric.cpp | 236 + .../pair_coul_long_dielectric.h | 67 + .../pair_lj_cut_coul_cut_dielectric.cpp | 240 + .../pair_lj_cut_coul_cut_dielectric.h | 64 + .../pair_lj_cut_coul_cut_dielectric_omp.cpp | 232 + .../pair_lj_cut_coul_cut_dielectric_omp.h | 60 + .../pair_lj_cut_coul_debye_dielectric.cpp | 249 + .../pair_lj_cut_coul_debye_dielectric.h | 64 + .../pair_lj_cut_coul_long_dielectric.cpp | 340 ++ .../pair_lj_cut_coul_long_dielectric.h | 74 + .../pair_lj_cut_coul_long_dielectric_omp.cpp | 278 ++ .../pair_lj_cut_coul_long_dielectric_omp.h | 70 + .../pair_lj_cut_coul_msm_dielectric.cpp | 389 ++ .../pair_lj_cut_coul_msm_dielectric.h | 59 + .../pair_lj_long_coul_long_dielectric.cpp | 365 ++ .../pair_lj_long_coul_long_dielectric.h | 56 + src/USER-DIELECTRIC/pppm_dielectric.cpp | 1439 ++++++ src/USER-DIELECTRIC/pppm_dielectric.h | 94 + src/USER-DIELECTRIC/pppm_disp_dielectric.cpp | 820 ++++ src/USER-DIELECTRIC/pppm_disp_dielectric.h | 62 + src/pair_hybrid.cpp | 3 +- 48 files changed, 24315 insertions(+), 18 deletions(-) create mode 100644 examples/USER/dielectric/README create mode 100644 examples/USER/dielectric/data.confined create mode 100644 examples/USER/dielectric/data.cylinder create mode 100644 examples/USER/dielectric/data.minimal create mode 100644 examples/USER/dielectric/data.plane create mode 100644 examples/USER/dielectric/data.sphere create mode 100644 examples/USER/dielectric/in.confined create mode 100644 examples/USER/dielectric/in.minimal create mode 100644 examples/USER/dielectric/in.nopbc create mode 100644 examples/USER/dielectric/in.pbc create mode 100644 src/USER-DIELECTRIC/Install.sh create mode 100644 src/USER-DIELECTRIC/README create mode 100644 src/USER-DIELECTRIC/atom_vec_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/atom_vec_dielectric.h create mode 100644 src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp create mode 100644 src/USER-DIELECTRIC/fix_polarize_bem_gmres.h create mode 100644 src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp create mode 100644 src/USER-DIELECTRIC/fix_polarize_bem_icc.h create mode 100644 src/USER-DIELECTRIC/fix_polarize_functional.cpp create mode 100644 src/USER-DIELECTRIC/fix_polarize_functional.h create mode 100644 src/USER-DIELECTRIC/fix_qeq_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/fix_qeq_dielectric.h create mode 100644 src/USER-DIELECTRIC/msm_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/msm_dielectric.h create mode 100644 src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/pair_coul_cut_dielectric.h create mode 100644 src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/pair_coul_long_dielectric.h create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h create mode 100644 src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h create mode 100644 src/USER-DIELECTRIC/pppm_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/pppm_dielectric.h create mode 100644 src/USER-DIELECTRIC/pppm_disp_dielectric.cpp create mode 100644 src/USER-DIELECTRIC/pppm_disp_dielectric.h diff --git a/examples/USER/dielectric/README b/examples/USER/dielectric/README new file mode 100644 index 0000000000..ac415190ec --- /dev/null +++ b/examples/USER/dielectric/README @@ -0,0 +1,45 @@ +This folder contains some example data and input scripts for the USER-DIELECTRIC package. + +- data.minimal : two point opposite charges facing a flat interface +- data.plane : two point opposite charges facing a larger flat interface +- data.confined : two point opposite charges confined between two interfaces (epsilon1=2/epsilon2=10/epsilon2=2) +- data.sphere : two point opposite charges outside a spherical interface (epsilon_in=1/epsilon2=10) +- data.cylinder : single point charge facing a cylindrical interface + +- in.minimal : read in data.minimal +- in.nopbc : read in data.* files, using non-periodic boundary conditions, with a large cutoff + using "-v data data.foo" from the LAMMPS command line arguments +- in.pbc : read in data.* files using periodic boundary conditions + with a slab correction for kspace_style pppm and ewald; not required for msm + +For "atom_style dielectric" the Atoms section in the data file contains 15 following columns: + +id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature + +where + +id, mol, type, q, x, y and z are similar to those in atom_style full + +normx, normy and normz are the three components of the normal unit vector +of the interface at the patch (vertex). For real charges (ions), these 3 values +are irrelevant and can be anything (e.g. 0,0,1). + +ed = dielectric difference at the vertex along the normal vector direction. +For example, if (normx,normy,normz) points from medium with epsilon_in to medium with epsilon_out, +then ed = epsilon_out - epsilon_in + +em = (epsilon_out + epsilon_in)/2: the mean dielectric value + +epsilon = the local epsilon value at the vertex or at the ion. +For real charges, epsilon is the medium dielectric constant, q is the actual real charges. +For interface particles, if q is zero (zero surface charges), epsilon is set to be 1.0; +if q is nonzero (charged surfaces), epsilon is set to be em (the mean dielectric value above). + +area_per_patch: surface area of the patch. For real charges, this value is irrelevant, can be 1.0. + +curvature: surface curvature at the patch. +For example, for spherical interfaces, curvature = 1/spherical radius. +For planar interfaces, curvature = 0. + + + diff --git a/examples/USER/dielectric/data.confined b/examples/USER/dielectric/data.confined new file mode 100644 index 0000000000..0906c6cd82 --- /dev/null +++ b/examples/USER/dielectric/data.confined @@ -0,0 +1,4019 @@ +LAMMPS data file: using 2001 atoms for single point charge (no pbc), or 2002 atoms for two opposite charges (to have charge neutrality for pbc) + +4002 atoms +3 atom types + +0.0000000000000000e+00 4.0000006274935302e+01 xlo xhi +0.0000000000000000e+00 4.3301276792816687e+01 ylo yhi +0.0000000000000000e+00 4.0000000000000000e+01 zlo zhi + +Masses + +1 1 +2 1 +3 1 + +Atoms # dielectric: id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature + +1 0 1 0 0 0 9.99798 0 0 1 0.866 8 6 1 0 +2 0 1 0 0.500101 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +3 0 1 0 1.0002 0 9.99798 0 0 1 0.866 8 6 1 0 +4 0 1 0 1.5003 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +5 0 1 0 2.0004 0 9.99798 0 0 1 0.866 8 6 1 0 +6 0 1 0 2.50051 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +7 0 1 0 3.00061 0 9.99798 0 0 1 0.866 8 6 1 0 +8 0 1 0 3.50071 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +9 0 1 0 4.00081 0 9.99798 0 0 1 0.866 8 6 1 0 +10 0 1 0 4.50091 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +11 0 1 0 5.00101 0 9.99798 0 0 1 0.866 8 6 1 0 +12 0 1 0 5.50111 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +13 0 1 0 6.00121 0 9.99798 0 0 1 0.866 8 6 1 0 +14 0 1 0 6.50132 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +15 0 1 0 7.00142 0 9.99798 0 0 1 0.866 8 6 1 0 +16 0 1 0 7.50152 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +17 0 1 0 8.00162 0 9.99798 0 0 1 0.866 8 6 1 0 +18 0 1 0 8.50172 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +19 0 1 0 9.00182 0 9.99798 0 0 1 0.866 8 6 1 0 +20 0 1 0 9.50192 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +21 0 1 0 10.002 0 9.99798 0 0 1 0.866 8 6 1 0 +22 0 1 0 10.5021 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +23 0 1 0 11.0022 0 9.99798 0 0 1 0.866 8 6 1 0 +24 0 1 0 11.5023 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +25 0 1 0 12.0024 0 9.99798 0 0 1 0.866 8 6 1 0 +26 0 1 0 12.5025 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +27 0 1 0 13.0026 0 9.99798 0 0 1 0.866 8 6 1 0 +28 0 1 0 13.5027 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +29 0 1 0 14.0028 0 9.99798 0 0 1 0.866 8 6 1 0 +30 0 1 0 14.5029 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +31 0 1 0 15.003 0 9.99798 0 0 1 0.866 8 6 1 0 +32 0 1 0 15.5031 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +33 0 1 0 16.0032 0 9.99798 0 0 1 0.866 8 6 1 0 +34 0 1 0 16.5033 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +35 0 1 0 17.0034 0 9.99798 0 0 1 0.866 8 6 1 0 +36 0 1 0 17.5035 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +37 0 1 0 18.0036 0 9.99798 0 0 1 0.866 8 6 1 0 +38 0 1 0 18.5037 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +39 0 1 0 19.0038 0 9.99798 0 0 1 0.866 8 6 1 0 +40 0 1 0 19.5039 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +41 0 1 0 20.004 0 9.99798 0 0 1 0.866 8 6 1 0 +42 0 1 0 20.5041 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +43 0 1 0 21.0042 0 9.99798 0 0 1 0.866 8 6 1 0 +44 0 1 0 21.5043 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +45 0 1 0 22.0045 0 9.99798 0 0 1 0.866 8 6 1 0 +46 0 1 0 22.5046 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +47 0 1 0 23.0047 0 9.99798 0 0 1 0.866 8 6 1 0 +48 0 1 0 23.5048 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +49 0 1 0 24.0049 0 9.99798 0 0 1 0.866 8 6 1 0 +50 0 1 0 24.505 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +51 0 1 0 25.0051 0 9.99798 0 0 1 0.866 8 6 1 0 +52 0 1 0 25.5052 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +53 0 1 0 26.0053 0 9.99798 0 0 1 0.866 8 6 1 0 +54 0 1 0 26.5054 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +55 0 1 0 27.0055 0 9.99798 0 0 1 0.866 8 6 1 0 +56 0 1 0 27.5056 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +57 0 1 0 28.0057 0 9.99798 0 0 1 0.866 8 6 1 0 +58 0 1 0 28.5058 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +59 0 1 0 29.0059 0 9.99798 0 0 1 0.866 8 6 1 0 +60 0 1 0 29.506 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +61 0 1 0 30.0061 0 9.99798 0 0 1 0.866 8 6 1 0 +62 0 1 0 30.5062 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +63 0 1 0 31.0063 0 9.99798 0 0 1 0.866 8 6 1 0 +64 0 1 0 31.5064 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +65 0 1 0 32.0065 0 9.99798 0 0 1 0.866 8 6 1 0 +66 0 1 0 32.5066 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +67 0 1 0 33.0067 0 9.99798 0 0 1 0.866 8 6 1 0 +68 0 1 0 33.5068 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +69 0 1 0 34.0069 0 9.99798 0 0 1 0.866 8 6 1 0 +70 0 1 0 34.507 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +71 0 1 0 35.0071 0 9.99798 0 0 1 0.866 8 6 1 0 +72 0 1 0 35.5072 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +73 0 1 0 36.0073 0 9.99798 0 0 1 0.866 8 6 1 0 +74 0 1 0 36.5074 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +75 0 1 0 37.0075 0 9.99798 0 0 1 0.866 8 6 1 0 +76 0 1 0 37.5076 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +77 0 1 0 38.0077 0 9.99798 0 0 1 0.866 8 6 1 0 +78 0 1 0 38.5078 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +79 0 1 0 39.0079 0 9.99798 0 0 1 0.866 8 6 1 0 +80 0 1 0 39.508 0.866201 9.99798 0 0 1 0.866 8 6 1 0 +81 0 1 0 0 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +82 0 1 0 0.500101 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +83 0 1 0 1.0002 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +84 0 1 0 1.5003 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +85 0 1 0 2.0004 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +86 0 1 0 2.50051 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +87 0 1 0 3.00061 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +88 0 1 0 3.50071 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +89 0 1 0 4.00081 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +90 0 1 0 4.50091 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +91 0 1 0 5.00101 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +92 0 1 0 5.50111 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +93 0 1 0 6.00121 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +94 0 1 0 6.50132 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +95 0 1 0 7.00142 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +96 0 1 0 7.50152 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +97 0 1 0 8.00162 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +98 0 1 0 8.50172 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +99 0 1 0 9.00182 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +100 0 1 0 9.50192 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +101 0 1 0 10.002 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +102 0 1 0 10.5021 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +103 0 1 0 11.0022 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +104 0 1 0 11.5023 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +105 0 1 0 12.0024 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +106 0 1 0 12.5025 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +107 0 1 0 13.0026 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +108 0 1 0 13.5027 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +109 0 1 0 14.0028 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +110 0 1 0 14.5029 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +111 0 1 0 15.003 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +112 0 1 0 15.5031 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +113 0 1 0 16.0032 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +114 0 1 0 16.5033 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +115 0 1 0 17.0034 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +116 0 1 0 17.5035 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +117 0 1 0 18.0036 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +118 0 1 0 18.5037 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +119 0 1 0 19.0038 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +120 0 1 0 19.5039 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +121 0 1 0 20.004 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +122 0 1 0 20.5041 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +123 0 1 0 21.0042 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +124 0 1 0 21.5043 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +125 0 1 0 22.0045 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +126 0 1 0 22.5046 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +127 0 1 0 23.0047 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +128 0 1 0 23.5048 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +129 0 1 0 24.0049 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +130 0 1 0 24.505 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +131 0 1 0 25.0051 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +132 0 1 0 25.5052 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +133 0 1 0 26.0053 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +134 0 1 0 26.5054 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +135 0 1 0 27.0055 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +136 0 1 0 27.5056 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +137 0 1 0 28.0057 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +138 0 1 0 28.5058 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +139 0 1 0 29.0059 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +140 0 1 0 29.506 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +141 0 1 0 30.0061 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +142 0 1 0 30.5062 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +143 0 1 0 31.0063 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +144 0 1 0 31.5064 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +145 0 1 0 32.0065 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +146 0 1 0 32.5066 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +147 0 1 0 33.0067 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +148 0 1 0 33.5068 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +149 0 1 0 34.0069 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +150 0 1 0 34.507 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +151 0 1 0 35.0071 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +152 0 1 0 35.5072 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +153 0 1 0 36.0073 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +154 0 1 0 36.5074 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +155 0 1 0 37.0075 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +156 0 1 0 37.5076 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +157 0 1 0 38.0077 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +158 0 1 0 38.5078 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +159 0 1 0 39.0079 1.7324 9.99798 0 0 1 0.866 8 6 1 0 +160 0 1 0 39.508 2.5986 9.99798 0 0 1 0.866 8 6 1 0 +161 0 1 0 0 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +162 0 1 0 0.500101 4.331 9.99798 0 0 1 0.866 8 6 1 0 +163 0 1 0 1.0002 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +164 0 1 0 1.5003 4.331 9.99798 0 0 1 0.866 8 6 1 0 +165 0 1 0 2.0004 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +166 0 1 0 2.50051 4.331 9.99798 0 0 1 0.866 8 6 1 0 +167 0 1 0 3.00061 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +168 0 1 0 3.50071 4.331 9.99798 0 0 1 0.866 8 6 1 0 +169 0 1 0 4.00081 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +170 0 1 0 4.50091 4.331 9.99798 0 0 1 0.866 8 6 1 0 +171 0 1 0 5.00101 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +172 0 1 0 5.50111 4.331 9.99798 0 0 1 0.866 8 6 1 0 +173 0 1 0 6.00121 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +174 0 1 0 6.50132 4.331 9.99798 0 0 1 0.866 8 6 1 0 +175 0 1 0 7.00142 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +176 0 1 0 7.50152 4.331 9.99798 0 0 1 0.866 8 6 1 0 +177 0 1 0 8.00162 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +178 0 1 0 8.50172 4.331 9.99798 0 0 1 0.866 8 6 1 0 +179 0 1 0 9.00182 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +180 0 1 0 9.50192 4.331 9.99798 0 0 1 0.866 8 6 1 0 +181 0 1 0 10.002 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +182 0 1 0 10.5021 4.331 9.99798 0 0 1 0.866 8 6 1 0 +183 0 1 0 11.0022 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +184 0 1 0 11.5023 4.331 9.99798 0 0 1 0.866 8 6 1 0 +185 0 1 0 12.0024 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +186 0 1 0 12.5025 4.331 9.99798 0 0 1 0.866 8 6 1 0 +187 0 1 0 13.0026 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +188 0 1 0 13.5027 4.331 9.99798 0 0 1 0.866 8 6 1 0 +189 0 1 0 14.0028 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +190 0 1 0 14.5029 4.331 9.99798 0 0 1 0.866 8 6 1 0 +191 0 1 0 15.003 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +192 0 1 0 15.5031 4.331 9.99798 0 0 1 0.866 8 6 1 0 +193 0 1 0 16.0032 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +194 0 1 0 16.5033 4.331 9.99798 0 0 1 0.866 8 6 1 0 +195 0 1 0 17.0034 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +196 0 1 0 17.5035 4.331 9.99798 0 0 1 0.866 8 6 1 0 +197 0 1 0 18.0036 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +198 0 1 0 18.5037 4.331 9.99798 0 0 1 0.866 8 6 1 0 +199 0 1 0 19.0038 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +200 0 1 0 19.5039 4.331 9.99798 0 0 1 0.866 8 6 1 0 +201 0 1 0 20.004 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +202 0 1 0 20.5041 4.331 9.99798 0 0 1 0.866 8 6 1 0 +203 0 1 0 21.0042 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +204 0 1 0 21.5043 4.331 9.99798 0 0 1 0.866 8 6 1 0 +205 0 1 0 22.0045 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +206 0 1 0 22.5046 4.331 9.99798 0 0 1 0.866 8 6 1 0 +207 0 1 0 23.0047 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +208 0 1 0 23.5048 4.331 9.99798 0 0 1 0.866 8 6 1 0 +209 0 1 0 24.0049 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +210 0 1 0 24.505 4.331 9.99798 0 0 1 0.866 8 6 1 0 +211 0 1 0 25.0051 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +212 0 1 0 25.5052 4.331 9.99798 0 0 1 0.866 8 6 1 0 +213 0 1 0 26.0053 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +214 0 1 0 26.5054 4.331 9.99798 0 0 1 0.866 8 6 1 0 +215 0 1 0 27.0055 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +216 0 1 0 27.5056 4.331 9.99798 0 0 1 0.866 8 6 1 0 +217 0 1 0 28.0057 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +218 0 1 0 28.5058 4.331 9.99798 0 0 1 0.866 8 6 1 0 +219 0 1 0 29.0059 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +220 0 1 0 29.506 4.331 9.99798 0 0 1 0.866 8 6 1 0 +221 0 1 0 30.0061 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +222 0 1 0 30.5062 4.331 9.99798 0 0 1 0.866 8 6 1 0 +223 0 1 0 31.0063 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +224 0 1 0 31.5064 4.331 9.99798 0 0 1 0.866 8 6 1 0 +225 0 1 0 32.0065 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +226 0 1 0 32.5066 4.331 9.99798 0 0 1 0.866 8 6 1 0 +227 0 1 0 33.0067 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +228 0 1 0 33.5068 4.331 9.99798 0 0 1 0.866 8 6 1 0 +229 0 1 0 34.0069 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +230 0 1 0 34.507 4.331 9.99798 0 0 1 0.866 8 6 1 0 +231 0 1 0 35.0071 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +232 0 1 0 35.5072 4.331 9.99798 0 0 1 0.866 8 6 1 0 +233 0 1 0 36.0073 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +234 0 1 0 36.5074 4.331 9.99798 0 0 1 0.866 8 6 1 0 +235 0 1 0 37.0075 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +236 0 1 0 37.5076 4.331 9.99798 0 0 1 0.866 8 6 1 0 +237 0 1 0 38.0077 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +238 0 1 0 38.5078 4.331 9.99798 0 0 1 0.866 8 6 1 0 +239 0 1 0 39.0079 3.4648 9.99798 0 0 1 0.866 8 6 1 0 +240 0 1 0 39.508 4.331 9.99798 0 0 1 0.866 8 6 1 0 +241 0 1 0 0 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +242 0 1 0 0.500101 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +243 0 1 0 1.0002 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +244 0 1 0 1.5003 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +245 0 1 0 2.0004 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +246 0 1 0 2.50051 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +247 0 1 0 3.00061 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +248 0 1 0 3.50071 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +249 0 1 0 4.00081 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +250 0 1 0 4.50091 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +251 0 1 0 5.00101 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +252 0 1 0 5.50111 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +253 0 1 0 6.00121 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +254 0 1 0 6.50132 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +255 0 1 0 7.00142 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +256 0 1 0 7.50152 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +257 0 1 0 8.00162 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +258 0 1 0 8.50172 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +259 0 1 0 9.00182 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +260 0 1 0 9.50192 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +261 0 1 0 10.002 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +262 0 1 0 10.5021 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +263 0 1 0 11.0022 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +264 0 1 0 11.5023 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +265 0 1 0 12.0024 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +266 0 1 0 12.5025 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +267 0 1 0 13.0026 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +268 0 1 0 13.5027 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +269 0 1 0 14.0028 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +270 0 1 0 14.5029 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +271 0 1 0 15.003 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +272 0 1 0 15.5031 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +273 0 1 0 16.0032 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +274 0 1 0 16.5033 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +275 0 1 0 17.0034 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +276 0 1 0 17.5035 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +277 0 1 0 18.0036 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +278 0 1 0 18.5037 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +279 0 1 0 19.0038 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +280 0 1 0 19.5039 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +281 0 1 0 20.004 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +282 0 1 0 20.5041 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +283 0 1 0 21.0042 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +284 0 1 0 21.5043 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +285 0 1 0 22.0045 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +286 0 1 0 22.5046 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +287 0 1 0 23.0047 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +288 0 1 0 23.5048 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +289 0 1 0 24.0049 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +290 0 1 0 24.505 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +291 0 1 0 25.0051 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +292 0 1 0 25.5052 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +293 0 1 0 26.0053 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +294 0 1 0 26.5054 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +295 0 1 0 27.0055 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +296 0 1 0 27.5056 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +297 0 1 0 28.0057 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +298 0 1 0 28.5058 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +299 0 1 0 29.0059 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +300 0 1 0 29.506 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +301 0 1 0 30.0061 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +302 0 1 0 30.5062 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +303 0 1 0 31.0063 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +304 0 1 0 31.5064 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +305 0 1 0 32.0065 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +306 0 1 0 32.5066 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +307 0 1 0 33.0067 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +308 0 1 0 33.5068 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +309 0 1 0 34.0069 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +310 0 1 0 34.507 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +311 0 1 0 35.0071 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +312 0 1 0 35.5072 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +313 0 1 0 36.0073 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +314 0 1 0 36.5074 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +315 0 1 0 37.0075 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +316 0 1 0 37.5076 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +317 0 1 0 38.0077 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +318 0 1 0 38.5078 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +319 0 1 0 39.0079 5.1972 9.99798 0 0 1 0.866 8 6 1 0 +320 0 1 0 39.508 6.0634 9.99798 0 0 1 0.866 8 6 1 0 +321 0 1 0 0 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +322 0 1 0 0.500101 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +323 0 1 0 1.0002 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +324 0 1 0 1.5003 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +325 0 1 0 2.0004 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +326 0 1 0 2.50051 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +327 0 1 0 3.00061 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +328 0 1 0 3.50071 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +329 0 1 0 4.00081 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +330 0 1 0 4.50091 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +331 0 1 0 5.00101 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +332 0 1 0 5.50111 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +333 0 1 0 6.00121 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +334 0 1 0 6.50132 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +335 0 1 0 7.00142 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +336 0 1 0 7.50152 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +337 0 1 0 8.00162 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +338 0 1 0 8.50172 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +339 0 1 0 9.00182 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +340 0 1 0 9.50192 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +341 0 1 0 10.002 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +342 0 1 0 10.5021 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +343 0 1 0 11.0022 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +344 0 1 0 11.5023 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +345 0 1 0 12.0024 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +346 0 1 0 12.5025 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +347 0 1 0 13.0026 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +348 0 1 0 13.5027 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +349 0 1 0 14.0028 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +350 0 1 0 14.5029 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +351 0 1 0 15.003 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +352 0 1 0 15.5031 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +353 0 1 0 16.0032 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +354 0 1 0 16.5033 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +355 0 1 0 17.0034 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +356 0 1 0 17.5035 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +357 0 1 0 18.0036 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +358 0 1 0 18.5037 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +359 0 1 0 19.0038 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +360 0 1 0 19.5039 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +361 0 1 0 20.004 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +362 0 1 0 20.5041 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +363 0 1 0 21.0042 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +364 0 1 0 21.5043 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +365 0 1 0 22.0045 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +366 0 1 0 22.5046 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +367 0 1 0 23.0047 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +368 0 1 0 23.5048 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +369 0 1 0 24.0049 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +370 0 1 0 24.505 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +371 0 1 0 25.0051 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +372 0 1 0 25.5052 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +373 0 1 0 26.0053 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +374 0 1 0 26.5054 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +375 0 1 0 27.0055 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +376 0 1 0 27.5056 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +377 0 1 0 28.0057 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +378 0 1 0 28.5058 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +379 0 1 0 29.0059 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +380 0 1 0 29.506 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +381 0 1 0 30.0061 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +382 0 1 0 30.5062 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +383 0 1 0 31.0063 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +384 0 1 0 31.5064 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +385 0 1 0 32.0065 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +386 0 1 0 32.5066 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +387 0 1 0 33.0067 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +388 0 1 0 33.5068 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +389 0 1 0 34.0069 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +390 0 1 0 34.507 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +391 0 1 0 35.0071 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +392 0 1 0 35.5072 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +393 0 1 0 36.0073 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +394 0 1 0 36.5074 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +395 0 1 0 37.0075 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +396 0 1 0 37.5076 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +397 0 1 0 38.0077 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +398 0 1 0 38.5078 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +399 0 1 0 39.0079 6.9296 9.99798 0 0 1 0.866 8 6 1 0 +400 0 1 0 39.508 7.79581 9.99798 0 0 1 0.866 8 6 1 0 +401 0 1 0 0 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +402 0 1 0 0.500101 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +403 0 1 0 1.0002 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +404 0 1 0 1.5003 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +405 0 1 0 2.0004 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +406 0 1 0 2.50051 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +407 0 1 0 3.00061 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +408 0 1 0 3.50071 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +409 0 1 0 4.00081 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +410 0 1 0 4.50091 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +411 0 1 0 5.00101 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +412 0 1 0 5.50111 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +413 0 1 0 6.00121 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +414 0 1 0 6.50132 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +415 0 1 0 7.00142 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +416 0 1 0 7.50152 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +417 0 1 0 8.00162 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +418 0 1 0 8.50172 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +419 0 1 0 9.00182 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +420 0 1 0 9.50192 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +421 0 1 0 10.002 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +422 0 1 0 10.5021 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +423 0 1 0 11.0022 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +424 0 1 0 11.5023 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +425 0 1 0 12.0024 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +426 0 1 0 12.5025 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +427 0 1 0 13.0026 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +428 0 1 0 13.5027 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +429 0 1 0 14.0028 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +430 0 1 0 14.5029 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +431 0 1 0 15.003 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +432 0 1 0 15.5031 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +433 0 1 0 16.0032 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +434 0 1 0 16.5033 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +435 0 1 0 17.0034 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +436 0 1 0 17.5035 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +437 0 1 0 18.0036 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +438 0 1 0 18.5037 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +439 0 1 0 19.0038 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +440 0 1 0 19.5039 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +441 0 1 0 20.004 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +442 0 1 0 20.5041 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +443 0 1 0 21.0042 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +444 0 1 0 21.5043 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +445 0 1 0 22.0045 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +446 0 1 0 22.5046 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +447 0 1 0 23.0047 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +448 0 1 0 23.5048 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +449 0 1 0 24.0049 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +450 0 1 0 24.505 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +451 0 1 0 25.0051 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +452 0 1 0 25.5052 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +453 0 1 0 26.0053 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +454 0 1 0 26.5054 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +455 0 1 0 27.0055 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +456 0 1 0 27.5056 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +457 0 1 0 28.0057 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +458 0 1 0 28.5058 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +459 0 1 0 29.0059 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +460 0 1 0 29.506 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +461 0 1 0 30.0061 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +462 0 1 0 30.5062 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +463 0 1 0 31.0063 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +464 0 1 0 31.5064 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +465 0 1 0 32.0065 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +466 0 1 0 32.5066 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +467 0 1 0 33.0067 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +468 0 1 0 33.5068 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +469 0 1 0 34.0069 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +470 0 1 0 34.507 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +471 0 1 0 35.0071 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +472 0 1 0 35.5072 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +473 0 1 0 36.0073 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +474 0 1 0 36.5074 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +475 0 1 0 37.0075 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +476 0 1 0 37.5076 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +477 0 1 0 38.0077 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +478 0 1 0 38.5078 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +479 0 1 0 39.0079 8.66201 9.99798 0 0 1 0.866 8 6 1 0 +480 0 1 0 39.508 9.52821 9.99798 0 0 1 0.866 8 6 1 0 +481 0 1 0 0 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +482 0 1 0 0.500101 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +483 0 1 0 1.0002 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +484 0 1 0 1.5003 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +485 0 1 0 2.0004 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +486 0 1 0 2.50051 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +487 0 1 0 3.00061 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +488 0 1 0 3.50071 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +489 0 1 0 4.00081 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +490 0 1 0 4.50091 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +491 0 1 0 5.00101 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +492 0 1 0 5.50111 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +493 0 1 0 6.00121 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +494 0 1 0 6.50132 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +495 0 1 0 7.00142 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +496 0 1 0 7.50152 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +497 0 1 0 8.00162 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +498 0 1 0 8.50172 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +499 0 1 0 9.00182 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +500 0 1 0 9.50192 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +501 0 1 0 10.002 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +502 0 1 0 10.5021 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +503 0 1 0 11.0022 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +504 0 1 0 11.5023 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +505 0 1 0 12.0024 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +506 0 1 0 12.5025 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +507 0 1 0 13.0026 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +508 0 1 0 13.5027 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +509 0 1 0 14.0028 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +510 0 1 0 14.5029 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +511 0 1 0 15.003 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +512 0 1 0 15.5031 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +513 0 1 0 16.0032 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +514 0 1 0 16.5033 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +515 0 1 0 17.0034 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +516 0 1 0 17.5035 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +517 0 1 0 18.0036 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +518 0 1 0 18.5037 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +519 0 1 0 19.0038 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +520 0 1 0 19.5039 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +521 0 1 0 20.004 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +522 0 1 0 20.5041 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +523 0 1 0 21.0042 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +524 0 1 0 21.5043 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +525 0 1 0 22.0045 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +526 0 1 0 22.5046 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +527 0 1 0 23.0047 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +528 0 1 0 23.5048 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +529 0 1 0 24.0049 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +530 0 1 0 24.505 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +531 0 1 0 25.0051 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +532 0 1 0 25.5052 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +533 0 1 0 26.0053 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +534 0 1 0 26.5054 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +535 0 1 0 27.0055 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +536 0 1 0 27.5056 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +537 0 1 0 28.0057 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +538 0 1 0 28.5058 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +539 0 1 0 29.0059 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +540 0 1 0 29.506 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +541 0 1 0 30.0061 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +542 0 1 0 30.5062 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +543 0 1 0 31.0063 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +544 0 1 0 31.5064 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +545 0 1 0 32.0065 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +546 0 1 0 32.5066 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +547 0 1 0 33.0067 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +548 0 1 0 33.5068 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +549 0 1 0 34.0069 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +550 0 1 0 34.507 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +551 0 1 0 35.0071 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +552 0 1 0 35.5072 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +553 0 1 0 36.0073 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +554 0 1 0 36.5074 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +555 0 1 0 37.0075 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +556 0 1 0 37.5076 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +557 0 1 0 38.0077 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +558 0 1 0 38.5078 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +559 0 1 0 39.0079 10.3944 9.99798 0 0 1 0.866 8 6 1 0 +560 0 1 0 39.508 11.2606 9.99798 0 0 1 0.866 8 6 1 0 +561 0 1 0 0 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +562 0 1 0 0.500101 12.993 9.99798 0 0 1 0.866 8 6 1 0 +563 0 1 0 1.0002 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +564 0 1 0 1.5003 12.993 9.99798 0 0 1 0.866 8 6 1 0 +565 0 1 0 2.0004 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +566 0 1 0 2.50051 12.993 9.99798 0 0 1 0.866 8 6 1 0 +567 0 1 0 3.00061 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +568 0 1 0 3.50071 12.993 9.99798 0 0 1 0.866 8 6 1 0 +569 0 1 0 4.00081 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +570 0 1 0 4.50091 12.993 9.99798 0 0 1 0.866 8 6 1 0 +571 0 1 0 5.00101 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +572 0 1 0 5.50111 12.993 9.99798 0 0 1 0.866 8 6 1 0 +573 0 1 0 6.00121 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +574 0 1 0 6.50132 12.993 9.99798 0 0 1 0.866 8 6 1 0 +575 0 1 0 7.00142 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +576 0 1 0 7.50152 12.993 9.99798 0 0 1 0.866 8 6 1 0 +577 0 1 0 8.00162 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +578 0 1 0 8.50172 12.993 9.99798 0 0 1 0.866 8 6 1 0 +579 0 1 0 9.00182 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +580 0 1 0 9.50192 12.993 9.99798 0 0 1 0.866 8 6 1 0 +581 0 1 0 10.002 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +582 0 1 0 10.5021 12.993 9.99798 0 0 1 0.866 8 6 1 0 +583 0 1 0 11.0022 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +584 0 1 0 11.5023 12.993 9.99798 0 0 1 0.866 8 6 1 0 +585 0 1 0 12.0024 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +586 0 1 0 12.5025 12.993 9.99798 0 0 1 0.866 8 6 1 0 +587 0 1 0 13.0026 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +588 0 1 0 13.5027 12.993 9.99798 0 0 1 0.866 8 6 1 0 +589 0 1 0 14.0028 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +590 0 1 0 14.5029 12.993 9.99798 0 0 1 0.866 8 6 1 0 +591 0 1 0 15.003 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +592 0 1 0 15.5031 12.993 9.99798 0 0 1 0.866 8 6 1 0 +593 0 1 0 16.0032 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +594 0 1 0 16.5033 12.993 9.99798 0 0 1 0.866 8 6 1 0 +595 0 1 0 17.0034 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +596 0 1 0 17.5035 12.993 9.99798 0 0 1 0.866 8 6 1 0 +597 0 1 0 18.0036 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +598 0 1 0 18.5037 12.993 9.99798 0 0 1 0.866 8 6 1 0 +599 0 1 0 19.0038 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +600 0 1 0 19.5039 12.993 9.99798 0 0 1 0.866 8 6 1 0 +601 0 1 0 20.004 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +602 0 1 0 20.5041 12.993 9.99798 0 0 1 0.866 8 6 1 0 +603 0 1 0 21.0042 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +604 0 1 0 21.5043 12.993 9.99798 0 0 1 0.866 8 6 1 0 +605 0 1 0 22.0045 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +606 0 1 0 22.5046 12.993 9.99798 0 0 1 0.866 8 6 1 0 +607 0 1 0 23.0047 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +608 0 1 0 23.5048 12.993 9.99798 0 0 1 0.866 8 6 1 0 +609 0 1 0 24.0049 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +610 0 1 0 24.505 12.993 9.99798 0 0 1 0.866 8 6 1 0 +611 0 1 0 25.0051 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +612 0 1 0 25.5052 12.993 9.99798 0 0 1 0.866 8 6 1 0 +613 0 1 0 26.0053 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +614 0 1 0 26.5054 12.993 9.99798 0 0 1 0.866 8 6 1 0 +615 0 1 0 27.0055 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +616 0 1 0 27.5056 12.993 9.99798 0 0 1 0.866 8 6 1 0 +617 0 1 0 28.0057 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +618 0 1 0 28.5058 12.993 9.99798 0 0 1 0.866 8 6 1 0 +619 0 1 0 29.0059 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +620 0 1 0 29.506 12.993 9.99798 0 0 1 0.866 8 6 1 0 +621 0 1 0 30.0061 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +622 0 1 0 30.5062 12.993 9.99798 0 0 1 0.866 8 6 1 0 +623 0 1 0 31.0063 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +624 0 1 0 31.5064 12.993 9.99798 0 0 1 0.866 8 6 1 0 +625 0 1 0 32.0065 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +626 0 1 0 32.5066 12.993 9.99798 0 0 1 0.866 8 6 1 0 +627 0 1 0 33.0067 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +628 0 1 0 33.5068 12.993 9.99798 0 0 1 0.866 8 6 1 0 +629 0 1 0 34.0069 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +630 0 1 0 34.507 12.993 9.99798 0 0 1 0.866 8 6 1 0 +631 0 1 0 35.0071 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +632 0 1 0 35.5072 12.993 9.99798 0 0 1 0.866 8 6 1 0 +633 0 1 0 36.0073 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +634 0 1 0 36.5074 12.993 9.99798 0 0 1 0.866 8 6 1 0 +635 0 1 0 37.0075 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +636 0 1 0 37.5076 12.993 9.99798 0 0 1 0.866 8 6 1 0 +637 0 1 0 38.0077 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +638 0 1 0 38.5078 12.993 9.99798 0 0 1 0.866 8 6 1 0 +639 0 1 0 39.0079 12.1268 9.99798 0 0 1 0.866 8 6 1 0 +640 0 1 0 39.508 12.993 9.99798 0 0 1 0.866 8 6 1 0 +641 0 1 0 0 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +642 0 1 0 0.500101 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +643 0 1 0 1.0002 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +644 0 1 0 1.5003 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +645 0 1 0 2.0004 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +646 0 1 0 2.50051 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +647 0 1 0 3.00061 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +648 0 1 0 3.50071 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +649 0 1 0 4.00081 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +650 0 1 0 4.50091 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +651 0 1 0 5.00101 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +652 0 1 0 5.50111 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +653 0 1 0 6.00121 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +654 0 1 0 6.50132 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +655 0 1 0 7.00142 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +656 0 1 0 7.50152 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +657 0 1 0 8.00162 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +658 0 1 0 8.50172 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +659 0 1 0 9.00182 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +660 0 1 0 9.50192 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +661 0 1 0 10.002 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +662 0 1 0 10.5021 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +663 0 1 0 11.0022 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +664 0 1 0 11.5023 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +665 0 1 0 12.0024 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +666 0 1 0 12.5025 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +667 0 1 0 13.0026 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +668 0 1 0 13.5027 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +669 0 1 0 14.0028 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +670 0 1 0 14.5029 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +671 0 1 0 15.003 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +672 0 1 0 15.5031 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +673 0 1 0 16.0032 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +674 0 1 0 16.5033 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +675 0 1 0 17.0034 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +676 0 1 0 17.5035 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +677 0 1 0 18.0036 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +678 0 1 0 18.5037 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +679 0 1 0 19.0038 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +680 0 1 0 19.5039 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +681 0 1 0 20.004 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +682 0 1 0 20.5041 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +683 0 1 0 21.0042 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +684 0 1 0 21.5043 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +685 0 1 0 22.0045 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +686 0 1 0 22.5046 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +687 0 1 0 23.0047 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +688 0 1 0 23.5048 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +689 0 1 0 24.0049 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +690 0 1 0 24.505 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +691 0 1 0 25.0051 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +692 0 1 0 25.5052 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +693 0 1 0 26.0053 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +694 0 1 0 26.5054 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +695 0 1 0 27.0055 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +696 0 1 0 27.5056 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +697 0 1 0 28.0057 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +698 0 1 0 28.5058 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +699 0 1 0 29.0059 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +700 0 1 0 29.506 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +701 0 1 0 30.0061 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +702 0 1 0 30.5062 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +703 0 1 0 31.0063 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +704 0 1 0 31.5064 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +705 0 1 0 32.0065 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +706 0 1 0 32.5066 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +707 0 1 0 33.0067 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +708 0 1 0 33.5068 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +709 0 1 0 34.0069 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +710 0 1 0 34.507 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +711 0 1 0 35.0071 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +712 0 1 0 35.5072 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +713 0 1 0 36.0073 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +714 0 1 0 36.5074 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +715 0 1 0 37.0075 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +716 0 1 0 37.5076 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +717 0 1 0 38.0077 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +718 0 1 0 38.5078 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +719 0 1 0 39.0079 13.8592 9.99798 0 0 1 0.866 8 6 1 0 +720 0 1 0 39.508 14.7254 9.99798 0 0 1 0.866 8 6 1 0 +721 0 1 0 0 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +722 0 1 0 0.500101 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +723 0 1 0 1.0002 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +724 0 1 0 1.5003 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +725 0 1 0 2.0004 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +726 0 1 0 2.50051 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +727 0 1 0 3.00061 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +728 0 1 0 3.50071 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +729 0 1 0 4.00081 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +730 0 1 0 4.50091 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +731 0 1 0 5.00101 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +732 0 1 0 5.50111 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +733 0 1 0 6.00121 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +734 0 1 0 6.50132 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +735 0 1 0 7.00142 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +736 0 1 0 7.50152 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +737 0 1 0 8.00162 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +738 0 1 0 8.50172 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +739 0 1 0 9.00182 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +740 0 1 0 9.50192 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +741 0 1 0 10.002 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +742 0 1 0 10.5021 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +743 0 1 0 11.0022 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +744 0 1 0 11.5023 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +745 0 1 0 12.0024 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +746 0 1 0 12.5025 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +747 0 1 0 13.0026 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +748 0 1 0 13.5027 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +749 0 1 0 14.0028 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +750 0 1 0 14.5029 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +751 0 1 0 15.003 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +752 0 1 0 15.5031 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +753 0 1 0 16.0032 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +754 0 1 0 16.5033 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +755 0 1 0 17.0034 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +756 0 1 0 17.5035 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +757 0 1 0 18.0036 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +758 0 1 0 18.5037 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +759 0 1 0 19.0038 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +760 0 1 0 19.5039 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +761 0 1 0 20.004 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +762 0 1 0 20.5041 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +763 0 1 0 21.0042 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +764 0 1 0 21.5043 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +765 0 1 0 22.0045 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +766 0 1 0 22.5046 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +767 0 1 0 23.0047 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +768 0 1 0 23.5048 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +769 0 1 0 24.0049 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +770 0 1 0 24.505 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +771 0 1 0 25.0051 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +772 0 1 0 25.5052 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +773 0 1 0 26.0053 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +774 0 1 0 26.5054 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +775 0 1 0 27.0055 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +776 0 1 0 27.5056 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +777 0 1 0 28.0057 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +778 0 1 0 28.5058 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +779 0 1 0 29.0059 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +780 0 1 0 29.506 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +781 0 1 0 30.0061 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +782 0 1 0 30.5062 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +783 0 1 0 31.0063 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +784 0 1 0 31.5064 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +785 0 1 0 32.0065 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +786 0 1 0 32.5066 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +787 0 1 0 33.0067 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +788 0 1 0 33.5068 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +789 0 1 0 34.0069 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +790 0 1 0 34.507 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +791 0 1 0 35.0071 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +792 0 1 0 35.5072 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +793 0 1 0 36.0073 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +794 0 1 0 36.5074 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +795 0 1 0 37.0075 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +796 0 1 0 37.5076 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +797 0 1 0 38.0077 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +798 0 1 0 38.5078 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +799 0 1 0 39.0079 15.5916 9.99798 0 0 1 0.866 8 6 1 0 +800 0 1 0 39.508 16.4578 9.99798 0 0 1 0.866 8 6 1 0 +801 0 1 0 0 17.324 9.99798 0 0 1 0.866 8 6 1 0 +802 0 1 0 0.500101 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +803 0 1 0 1.0002 17.324 9.99798 0 0 1 0.866 8 6 1 0 +804 0 1 0 1.5003 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +805 0 1 0 2.0004 17.324 9.99798 0 0 1 0.866 8 6 1 0 +806 0 1 0 2.50051 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +807 0 1 0 3.00061 17.324 9.99798 0 0 1 0.866 8 6 1 0 +808 0 1 0 3.50071 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +809 0 1 0 4.00081 17.324 9.99798 0 0 1 0.866 8 6 1 0 +810 0 1 0 4.50091 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +811 0 1 0 5.00101 17.324 9.99798 0 0 1 0.866 8 6 1 0 +812 0 1 0 5.50111 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +813 0 1 0 6.00121 17.324 9.99798 0 0 1 0.866 8 6 1 0 +814 0 1 0 6.50132 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +815 0 1 0 7.00142 17.324 9.99798 0 0 1 0.866 8 6 1 0 +816 0 1 0 7.50152 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +817 0 1 0 8.00162 17.324 9.99798 0 0 1 0.866 8 6 1 0 +818 0 1 0 8.50172 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +819 0 1 0 9.00182 17.324 9.99798 0 0 1 0.866 8 6 1 0 +820 0 1 0 9.50192 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +821 0 1 0 10.002 17.324 9.99798 0 0 1 0.866 8 6 1 0 +822 0 1 0 10.5021 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +823 0 1 0 11.0022 17.324 9.99798 0 0 1 0.866 8 6 1 0 +824 0 1 0 11.5023 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +825 0 1 0 12.0024 17.324 9.99798 0 0 1 0.866 8 6 1 0 +826 0 1 0 12.5025 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +827 0 1 0 13.0026 17.324 9.99798 0 0 1 0.866 8 6 1 0 +828 0 1 0 13.5027 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +829 0 1 0 14.0028 17.324 9.99798 0 0 1 0.866 8 6 1 0 +830 0 1 0 14.5029 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +831 0 1 0 15.003 17.324 9.99798 0 0 1 0.866 8 6 1 0 +832 0 1 0 15.5031 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +833 0 1 0 16.0032 17.324 9.99798 0 0 1 0.866 8 6 1 0 +834 0 1 0 16.5033 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +835 0 1 0 17.0034 17.324 9.99798 0 0 1 0.866 8 6 1 0 +836 0 1 0 17.5035 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +837 0 1 0 18.0036 17.324 9.99798 0 0 1 0.866 8 6 1 0 +838 0 1 0 18.5037 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +839 0 1 0 19.0038 17.324 9.99798 0 0 1 0.866 8 6 1 0 +840 0 1 0 19.5039 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +841 0 1 0 20.004 17.324 9.99798 0 0 1 0.866 8 6 1 0 +842 0 1 0 20.5041 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +843 0 1 0 21.0042 17.324 9.99798 0 0 1 0.866 8 6 1 0 +844 0 1 0 21.5043 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +845 0 1 0 22.0045 17.324 9.99798 0 0 1 0.866 8 6 1 0 +846 0 1 0 22.5046 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +847 0 1 0 23.0047 17.324 9.99798 0 0 1 0.866 8 6 1 0 +848 0 1 0 23.5048 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +849 0 1 0 24.0049 17.324 9.99798 0 0 1 0.866 8 6 1 0 +850 0 1 0 24.505 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +851 0 1 0 25.0051 17.324 9.99798 0 0 1 0.866 8 6 1 0 +852 0 1 0 25.5052 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +853 0 1 0 26.0053 17.324 9.99798 0 0 1 0.866 8 6 1 0 +854 0 1 0 26.5054 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +855 0 1 0 27.0055 17.324 9.99798 0 0 1 0.866 8 6 1 0 +856 0 1 0 27.5056 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +857 0 1 0 28.0057 17.324 9.99798 0 0 1 0.866 8 6 1 0 +858 0 1 0 28.5058 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +859 0 1 0 29.0059 17.324 9.99798 0 0 1 0.866 8 6 1 0 +860 0 1 0 29.506 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +861 0 1 0 30.0061 17.324 9.99798 0 0 1 0.866 8 6 1 0 +862 0 1 0 30.5062 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +863 0 1 0 31.0063 17.324 9.99798 0 0 1 0.866 8 6 1 0 +864 0 1 0 31.5064 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +865 0 1 0 32.0065 17.324 9.99798 0 0 1 0.866 8 6 1 0 +866 0 1 0 32.5066 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +867 0 1 0 33.0067 17.324 9.99798 0 0 1 0.866 8 6 1 0 +868 0 1 0 33.5068 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +869 0 1 0 34.0069 17.324 9.99798 0 0 1 0.866 8 6 1 0 +870 0 1 0 34.507 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +871 0 1 0 35.0071 17.324 9.99798 0 0 1 0.866 8 6 1 0 +872 0 1 0 35.5072 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +873 0 1 0 36.0073 17.324 9.99798 0 0 1 0.866 8 6 1 0 +874 0 1 0 36.5074 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +875 0 1 0 37.0075 17.324 9.99798 0 0 1 0.866 8 6 1 0 +876 0 1 0 37.5076 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +877 0 1 0 38.0077 17.324 9.99798 0 0 1 0.866 8 6 1 0 +878 0 1 0 38.5078 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +879 0 1 0 39.0079 17.324 9.99798 0 0 1 0.866 8 6 1 0 +880 0 1 0 39.508 18.1902 9.99798 0 0 1 0.866 8 6 1 0 +881 0 1 0 0 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +882 0 1 0 0.500101 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +883 0 1 0 1.0002 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +884 0 1 0 1.5003 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +885 0 1 0 2.0004 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +886 0 1 0 2.50051 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +887 0 1 0 3.00061 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +888 0 1 0 3.50071 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +889 0 1 0 4.00081 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +890 0 1 0 4.50091 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +891 0 1 0 5.00101 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +892 0 1 0 5.50111 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +893 0 1 0 6.00121 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +894 0 1 0 6.50132 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +895 0 1 0 7.00142 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +896 0 1 0 7.50152 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +897 0 1 0 8.00162 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +898 0 1 0 8.50172 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +899 0 1 0 9.00182 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +900 0 1 0 9.50192 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +901 0 1 0 10.002 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +902 0 1 0 10.5021 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +903 0 1 0 11.0022 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +904 0 1 0 11.5023 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +905 0 1 0 12.0024 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +906 0 1 0 12.5025 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +907 0 1 0 13.0026 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +908 0 1 0 13.5027 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +909 0 1 0 14.0028 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +910 0 1 0 14.5029 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +911 0 1 0 15.003 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +912 0 1 0 15.5031 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +913 0 1 0 16.0032 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +914 0 1 0 16.5033 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +915 0 1 0 17.0034 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +916 0 1 0 17.5035 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +917 0 1 0 18.0036 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +918 0 1 0 18.5037 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +919 0 1 0 19.0038 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +920 0 1 0 19.5039 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +921 0 1 0 20.004 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +922 0 1 0 20.5041 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +923 0 1 0 21.0042 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +924 0 1 0 21.5043 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +925 0 1 0 22.0045 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +926 0 1 0 22.5046 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +927 0 1 0 23.0047 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +928 0 1 0 23.5048 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +929 0 1 0 24.0049 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +930 0 1 0 24.505 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +931 0 1 0 25.0051 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +932 0 1 0 25.5052 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +933 0 1 0 26.0053 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +934 0 1 0 26.5054 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +935 0 1 0 27.0055 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +936 0 1 0 27.5056 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +937 0 1 0 28.0057 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +938 0 1 0 28.5058 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +939 0 1 0 29.0059 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +940 0 1 0 29.506 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +941 0 1 0 30.0061 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +942 0 1 0 30.5062 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +943 0 1 0 31.0063 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +944 0 1 0 31.5064 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +945 0 1 0 32.0065 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +946 0 1 0 32.5066 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +947 0 1 0 33.0067 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +948 0 1 0 33.5068 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +949 0 1 0 34.0069 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +950 0 1 0 34.507 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +951 0 1 0 35.0071 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +952 0 1 0 35.5072 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +953 0 1 0 36.0073 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +954 0 1 0 36.5074 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +955 0 1 0 37.0075 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +956 0 1 0 37.5076 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +957 0 1 0 38.0077 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +958 0 1 0 38.5078 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +959 0 1 0 39.0079 19.0564 9.99798 0 0 1 0.866 8 6 1 0 +960 0 1 0 39.508 19.9226 9.99798 0 0 1 0.866 8 6 1 0 +961 0 1 0 0 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +962 0 1 0 0.500101 21.655 9.99798 0 0 1 0.866 8 6 1 0 +963 0 1 0 1.0002 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +964 0 1 0 1.5003 21.655 9.99798 0 0 1 0.866 8 6 1 0 +965 0 1 0 2.0004 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +966 0 1 0 2.50051 21.655 9.99798 0 0 1 0.866 8 6 1 0 +967 0 1 0 3.00061 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +968 0 1 0 3.50071 21.655 9.99798 0 0 1 0.866 8 6 1 0 +969 0 1 0 4.00081 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +970 0 1 0 4.50091 21.655 9.99798 0 0 1 0.866 8 6 1 0 +971 0 1 0 5.00101 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +972 0 1 0 5.50111 21.655 9.99798 0 0 1 0.866 8 6 1 0 +973 0 1 0 6.00121 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +974 0 1 0 6.50132 21.655 9.99798 0 0 1 0.866 8 6 1 0 +975 0 1 0 7.00142 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +976 0 1 0 7.50152 21.655 9.99798 0 0 1 0.866 8 6 1 0 +977 0 1 0 8.00162 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +978 0 1 0 8.50172 21.655 9.99798 0 0 1 0.866 8 6 1 0 +979 0 1 0 9.00182 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +980 0 1 0 9.50192 21.655 9.99798 0 0 1 0.866 8 6 1 0 +981 0 1 0 10.002 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +982 0 1 0 10.5021 21.655 9.99798 0 0 1 0.866 8 6 1 0 +983 0 1 0 11.0022 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +984 0 1 0 11.5023 21.655 9.99798 0 0 1 0.866 8 6 1 0 +985 0 1 0 12.0024 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +986 0 1 0 12.5025 21.655 9.99798 0 0 1 0.866 8 6 1 0 +987 0 1 0 13.0026 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +988 0 1 0 13.5027 21.655 9.99798 0 0 1 0.866 8 6 1 0 +989 0 1 0 14.0028 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +990 0 1 0 14.5029 21.655 9.99798 0 0 1 0.866 8 6 1 0 +991 0 1 0 15.003 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +992 0 1 0 15.5031 21.655 9.99798 0 0 1 0.866 8 6 1 0 +993 0 1 0 16.0032 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +994 0 1 0 16.5033 21.655 9.99798 0 0 1 0.866 8 6 1 0 +995 0 1 0 17.0034 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +996 0 1 0 17.5035 21.655 9.99798 0 0 1 0.866 8 6 1 0 +997 0 1 0 18.0036 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +998 0 1 0 18.5037 21.655 9.99798 0 0 1 0.866 8 6 1 0 +999 0 1 0 19.0038 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1000 0 1 0 19.5039 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1001 0 1 0 20.004 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1002 0 1 0 20.5041 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1003 0 1 0 21.0042 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1004 0 1 0 21.5043 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1005 0 1 0 22.0045 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1006 0 1 0 22.5046 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1007 0 1 0 23.0047 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1008 0 1 0 23.5048 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1009 0 1 0 24.0049 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1010 0 1 0 24.505 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1011 0 1 0 25.0051 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1012 0 1 0 25.5052 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1013 0 1 0 26.0053 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1014 0 1 0 26.5054 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1015 0 1 0 27.0055 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1016 0 1 0 27.5056 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1017 0 1 0 28.0057 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1018 0 1 0 28.5058 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1019 0 1 0 29.0059 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1020 0 1 0 29.506 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1021 0 1 0 30.0061 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1022 0 1 0 30.5062 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1023 0 1 0 31.0063 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1024 0 1 0 31.5064 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1025 0 1 0 32.0065 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1026 0 1 0 32.5066 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1027 0 1 0 33.0067 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1028 0 1 0 33.5068 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1029 0 1 0 34.0069 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1030 0 1 0 34.507 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1031 0 1 0 35.0071 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1032 0 1 0 35.5072 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1033 0 1 0 36.0073 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1034 0 1 0 36.5074 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1035 0 1 0 37.0075 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1036 0 1 0 37.5076 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1037 0 1 0 38.0077 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1038 0 1 0 38.5078 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1039 0 1 0 39.0079 20.7888 9.99798 0 0 1 0.866 8 6 1 0 +1040 0 1 0 39.508 21.655 9.99798 0 0 1 0.866 8 6 1 0 +1041 0 1 0 0 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1042 0 1 0 0.500101 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1043 0 1 0 1.0002 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1044 0 1 0 1.5003 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1045 0 1 0 2.0004 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1046 0 1 0 2.50051 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1047 0 1 0 3.00061 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1048 0 1 0 3.50071 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1049 0 1 0 4.00081 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1050 0 1 0 4.50091 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1051 0 1 0 5.00101 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1052 0 1 0 5.50111 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1053 0 1 0 6.00121 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1054 0 1 0 6.50132 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1055 0 1 0 7.00142 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1056 0 1 0 7.50152 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1057 0 1 0 8.00162 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1058 0 1 0 8.50172 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1059 0 1 0 9.00182 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1060 0 1 0 9.50192 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1061 0 1 0 10.002 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1062 0 1 0 10.5021 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1063 0 1 0 11.0022 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1064 0 1 0 11.5023 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1065 0 1 0 12.0024 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1066 0 1 0 12.5025 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1067 0 1 0 13.0026 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1068 0 1 0 13.5027 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1069 0 1 0 14.0028 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1070 0 1 0 14.5029 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1071 0 1 0 15.003 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1072 0 1 0 15.5031 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1073 0 1 0 16.0032 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1074 0 1 0 16.5033 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1075 0 1 0 17.0034 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1076 0 1 0 17.5035 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1077 0 1 0 18.0036 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1078 0 1 0 18.5037 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1079 0 1 0 19.0038 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1080 0 1 0 19.5039 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1081 0 1 0 20.004 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1082 0 1 0 20.5041 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1083 0 1 0 21.0042 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1084 0 1 0 21.5043 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1085 0 1 0 22.0045 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1086 0 1 0 22.5046 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1087 0 1 0 23.0047 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1088 0 1 0 23.5048 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1089 0 1 0 24.0049 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1090 0 1 0 24.505 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1091 0 1 0 25.0051 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1092 0 1 0 25.5052 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1093 0 1 0 26.0053 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1094 0 1 0 26.5054 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1095 0 1 0 27.0055 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1096 0 1 0 27.5056 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1097 0 1 0 28.0057 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1098 0 1 0 28.5058 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1099 0 1 0 29.0059 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1100 0 1 0 29.506 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1101 0 1 0 30.0061 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1102 0 1 0 30.5062 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1103 0 1 0 31.0063 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1104 0 1 0 31.5064 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1105 0 1 0 32.0065 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1106 0 1 0 32.5066 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1107 0 1 0 33.0067 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1108 0 1 0 33.5068 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1109 0 1 0 34.0069 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1110 0 1 0 34.507 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1111 0 1 0 35.0071 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1112 0 1 0 35.5072 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1113 0 1 0 36.0073 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1114 0 1 0 36.5074 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1115 0 1 0 37.0075 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1116 0 1 0 37.5076 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1117 0 1 0 38.0077 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1118 0 1 0 38.5078 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1119 0 1 0 39.0079 22.5212 9.99798 0 0 1 0.866 8 6 1 0 +1120 0 1 0 39.508 23.3874 9.99798 0 0 1 0.866 8 6 1 0 +1121 0 1 0 0 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1122 0 1 0 0.500101 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1123 0 1 0 1.0002 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1124 0 1 0 1.5003 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1125 0 1 0 2.0004 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1126 0 1 0 2.50051 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1127 0 1 0 3.00061 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1128 0 1 0 3.50071 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1129 0 1 0 4.00081 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1130 0 1 0 4.50091 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1131 0 1 0 5.00101 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1132 0 1 0 5.50111 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1133 0 1 0 6.00121 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1134 0 1 0 6.50132 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1135 0 1 0 7.00142 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1136 0 1 0 7.50152 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1137 0 1 0 8.00162 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1138 0 1 0 8.50172 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1139 0 1 0 9.00182 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1140 0 1 0 9.50192 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1141 0 1 0 10.002 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1142 0 1 0 10.5021 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1143 0 1 0 11.0022 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1144 0 1 0 11.5023 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1145 0 1 0 12.0024 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1146 0 1 0 12.5025 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1147 0 1 0 13.0026 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1148 0 1 0 13.5027 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1149 0 1 0 14.0028 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1150 0 1 0 14.5029 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1151 0 1 0 15.003 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1152 0 1 0 15.5031 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1153 0 1 0 16.0032 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1154 0 1 0 16.5033 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1155 0 1 0 17.0034 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1156 0 1 0 17.5035 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1157 0 1 0 18.0036 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1158 0 1 0 18.5037 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1159 0 1 0 19.0038 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1160 0 1 0 19.5039 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1161 0 1 0 20.004 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1162 0 1 0 20.5041 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1163 0 1 0 21.0042 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1164 0 1 0 21.5043 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1165 0 1 0 22.0045 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1166 0 1 0 22.5046 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1167 0 1 0 23.0047 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1168 0 1 0 23.5048 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1169 0 1 0 24.0049 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1170 0 1 0 24.505 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1171 0 1 0 25.0051 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1172 0 1 0 25.5052 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1173 0 1 0 26.0053 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1174 0 1 0 26.5054 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1175 0 1 0 27.0055 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1176 0 1 0 27.5056 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1177 0 1 0 28.0057 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1178 0 1 0 28.5058 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1179 0 1 0 29.0059 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1180 0 1 0 29.506 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1181 0 1 0 30.0061 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1182 0 1 0 30.5062 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1183 0 1 0 31.0063 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1184 0 1 0 31.5064 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1185 0 1 0 32.0065 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1186 0 1 0 32.5066 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1187 0 1 0 33.0067 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1188 0 1 0 33.5068 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1189 0 1 0 34.0069 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1190 0 1 0 34.507 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1191 0 1 0 35.0071 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1192 0 1 0 35.5072 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1193 0 1 0 36.0073 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1194 0 1 0 36.5074 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1195 0 1 0 37.0075 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1196 0 1 0 37.5076 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1197 0 1 0 38.0077 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1198 0 1 0 38.5078 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1199 0 1 0 39.0079 24.2536 9.99798 0 0 1 0.866 8 6 1 0 +1200 0 1 0 39.508 25.1198 9.99798 0 0 1 0.866 8 6 1 0 +1201 0 1 0 0 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1202 0 1 0 0.500101 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1203 0 1 0 1.0002 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1204 0 1 0 1.5003 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1205 0 1 0 2.0004 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1206 0 1 0 2.50051 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1207 0 1 0 3.00061 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1208 0 1 0 3.50071 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1209 0 1 0 4.00081 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1210 0 1 0 4.50091 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1211 0 1 0 5.00101 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1212 0 1 0 5.50111 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1213 0 1 0 6.00121 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1214 0 1 0 6.50132 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1215 0 1 0 7.00142 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1216 0 1 0 7.50152 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1217 0 1 0 8.00162 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1218 0 1 0 8.50172 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1219 0 1 0 9.00182 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1220 0 1 0 9.50192 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1221 0 1 0 10.002 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1222 0 1 0 10.5021 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1223 0 1 0 11.0022 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1224 0 1 0 11.5023 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1225 0 1 0 12.0024 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1226 0 1 0 12.5025 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1227 0 1 0 13.0026 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1228 0 1 0 13.5027 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1229 0 1 0 14.0028 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1230 0 1 0 14.5029 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1231 0 1 0 15.003 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1232 0 1 0 15.5031 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1233 0 1 0 16.0032 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1234 0 1 0 16.5033 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1235 0 1 0 17.0034 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1236 0 1 0 17.5035 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1237 0 1 0 18.0036 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1238 0 1 0 18.5037 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1239 0 1 0 19.0038 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1240 0 1 0 19.5039 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1241 0 1 0 20.004 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1242 0 1 0 20.5041 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1243 0 1 0 21.0042 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1244 0 1 0 21.5043 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1245 0 1 0 22.0045 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1246 0 1 0 22.5046 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1247 0 1 0 23.0047 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1248 0 1 0 23.5048 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1249 0 1 0 24.0049 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1250 0 1 0 24.505 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1251 0 1 0 25.0051 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1252 0 1 0 25.5052 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1253 0 1 0 26.0053 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1254 0 1 0 26.5054 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1255 0 1 0 27.0055 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1256 0 1 0 27.5056 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1257 0 1 0 28.0057 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1258 0 1 0 28.5058 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1259 0 1 0 29.0059 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1260 0 1 0 29.506 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1261 0 1 0 30.0061 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1262 0 1 0 30.5062 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1263 0 1 0 31.0063 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1264 0 1 0 31.5064 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1265 0 1 0 32.0065 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1266 0 1 0 32.5066 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1267 0 1 0 33.0067 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1268 0 1 0 33.5068 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1269 0 1 0 34.0069 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1270 0 1 0 34.507 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1271 0 1 0 35.0071 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1272 0 1 0 35.5072 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1273 0 1 0 36.0073 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1274 0 1 0 36.5074 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1275 0 1 0 37.0075 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1276 0 1 0 37.5076 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1277 0 1 0 38.0077 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1278 0 1 0 38.5078 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1279 0 1 0 39.0079 25.986 9.99798 0 0 1 0.866 8 6 1 0 +1280 0 1 0 39.508 26.8522 9.99798 0 0 1 0.866 8 6 1 0 +1281 0 1 0 0 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1282 0 1 0 0.500101 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1283 0 1 0 1.0002 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1284 0 1 0 1.5003 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1285 0 1 0 2.0004 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1286 0 1 0 2.50051 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1287 0 1 0 3.00061 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1288 0 1 0 3.50071 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1289 0 1 0 4.00081 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1290 0 1 0 4.50091 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1291 0 1 0 5.00101 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1292 0 1 0 5.50111 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1293 0 1 0 6.00121 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1294 0 1 0 6.50132 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1295 0 1 0 7.00142 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1296 0 1 0 7.50152 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1297 0 1 0 8.00162 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1298 0 1 0 8.50172 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1299 0 1 0 9.00182 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1300 0 1 0 9.50192 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1301 0 1 0 10.002 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1302 0 1 0 10.5021 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1303 0 1 0 11.0022 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1304 0 1 0 11.5023 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1305 0 1 0 12.0024 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1306 0 1 0 12.5025 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1307 0 1 0 13.0026 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1308 0 1 0 13.5027 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1309 0 1 0 14.0028 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1310 0 1 0 14.5029 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1311 0 1 0 15.003 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1312 0 1 0 15.5031 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1313 0 1 0 16.0032 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1314 0 1 0 16.5033 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1315 0 1 0 17.0034 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1316 0 1 0 17.5035 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1317 0 1 0 18.0036 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1318 0 1 0 18.5037 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1319 0 1 0 19.0038 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1320 0 1 0 19.5039 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1321 0 1 0 20.004 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1322 0 1 0 20.5041 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1323 0 1 0 21.0042 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1324 0 1 0 21.5043 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1325 0 1 0 22.0045 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1326 0 1 0 22.5046 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1327 0 1 0 23.0047 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1328 0 1 0 23.5048 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1329 0 1 0 24.0049 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1330 0 1 0 24.505 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1331 0 1 0 25.0051 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1332 0 1 0 25.5052 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1333 0 1 0 26.0053 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1334 0 1 0 26.5054 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1335 0 1 0 27.0055 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1336 0 1 0 27.5056 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1337 0 1 0 28.0057 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1338 0 1 0 28.5058 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1339 0 1 0 29.0059 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1340 0 1 0 29.506 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1341 0 1 0 30.0061 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1342 0 1 0 30.5062 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1343 0 1 0 31.0063 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1344 0 1 0 31.5064 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1345 0 1 0 32.0065 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1346 0 1 0 32.5066 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1347 0 1 0 33.0067 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1348 0 1 0 33.5068 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1349 0 1 0 34.0069 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1350 0 1 0 34.507 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1351 0 1 0 35.0071 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1352 0 1 0 35.5072 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1353 0 1 0 36.0073 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1354 0 1 0 36.5074 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1355 0 1 0 37.0075 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1356 0 1 0 37.5076 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1357 0 1 0 38.0077 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1358 0 1 0 38.5078 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1359 0 1 0 39.0079 27.7184 9.99798 0 0 1 0.866 8 6 1 0 +1360 0 1 0 39.508 28.5846 9.99798 0 0 1 0.866 8 6 1 0 +1361 0 1 0 0 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1362 0 1 0 0.500101 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1363 0 1 0 1.0002 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1364 0 1 0 1.5003 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1365 0 1 0 2.0004 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1366 0 1 0 2.50051 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1367 0 1 0 3.00061 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1368 0 1 0 3.50071 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1369 0 1 0 4.00081 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1370 0 1 0 4.50091 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1371 0 1 0 5.00101 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1372 0 1 0 5.50111 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1373 0 1 0 6.00121 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1374 0 1 0 6.50132 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1375 0 1 0 7.00142 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1376 0 1 0 7.50152 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1377 0 1 0 8.00162 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1378 0 1 0 8.50172 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1379 0 1 0 9.00182 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1380 0 1 0 9.50192 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1381 0 1 0 10.002 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1382 0 1 0 10.5021 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1383 0 1 0 11.0022 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1384 0 1 0 11.5023 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1385 0 1 0 12.0024 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1386 0 1 0 12.5025 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1387 0 1 0 13.0026 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1388 0 1 0 13.5027 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1389 0 1 0 14.0028 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1390 0 1 0 14.5029 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1391 0 1 0 15.003 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1392 0 1 0 15.5031 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1393 0 1 0 16.0032 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1394 0 1 0 16.5033 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1395 0 1 0 17.0034 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1396 0 1 0 17.5035 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1397 0 1 0 18.0036 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1398 0 1 0 18.5037 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1399 0 1 0 19.0038 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1400 0 1 0 19.5039 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1401 0 1 0 20.004 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1402 0 1 0 20.5041 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1403 0 1 0 21.0042 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1404 0 1 0 21.5043 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1405 0 1 0 22.0045 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1406 0 1 0 22.5046 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1407 0 1 0 23.0047 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1408 0 1 0 23.5048 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1409 0 1 0 24.0049 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1410 0 1 0 24.505 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1411 0 1 0 25.0051 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1412 0 1 0 25.5052 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1413 0 1 0 26.0053 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1414 0 1 0 26.5054 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1415 0 1 0 27.0055 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1416 0 1 0 27.5056 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1417 0 1 0 28.0057 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1418 0 1 0 28.5058 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1419 0 1 0 29.0059 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1420 0 1 0 29.506 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1421 0 1 0 30.0061 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1422 0 1 0 30.5062 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1423 0 1 0 31.0063 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1424 0 1 0 31.5064 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1425 0 1 0 32.0065 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1426 0 1 0 32.5066 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1427 0 1 0 33.0067 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1428 0 1 0 33.5068 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1429 0 1 0 34.0069 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1430 0 1 0 34.507 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1431 0 1 0 35.0071 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1432 0 1 0 35.5072 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1433 0 1 0 36.0073 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1434 0 1 0 36.5074 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1435 0 1 0 37.0075 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1436 0 1 0 37.5076 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1437 0 1 0 38.0077 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1438 0 1 0 38.5078 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1439 0 1 0 39.0079 29.4508 9.99798 0 0 1 0.866 8 6 1 0 +1440 0 1 0 39.508 30.317 9.99798 0 0 1 0.866 8 6 1 0 +1441 0 1 0 0 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1442 0 1 0 0.500101 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1443 0 1 0 1.0002 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1444 0 1 0 1.5003 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1445 0 1 0 2.0004 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1446 0 1 0 2.50051 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1447 0 1 0 3.00061 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1448 0 1 0 3.50071 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1449 0 1 0 4.00081 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1450 0 1 0 4.50091 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1451 0 1 0 5.00101 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1452 0 1 0 5.50111 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1453 0 1 0 6.00121 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1454 0 1 0 6.50132 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1455 0 1 0 7.00142 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1456 0 1 0 7.50152 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1457 0 1 0 8.00162 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1458 0 1 0 8.50172 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1459 0 1 0 9.00182 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1460 0 1 0 9.50192 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1461 0 1 0 10.002 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1462 0 1 0 10.5021 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1463 0 1 0 11.0022 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1464 0 1 0 11.5023 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1465 0 1 0 12.0024 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1466 0 1 0 12.5025 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1467 0 1 0 13.0026 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1468 0 1 0 13.5027 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1469 0 1 0 14.0028 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1470 0 1 0 14.5029 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1471 0 1 0 15.003 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1472 0 1 0 15.5031 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1473 0 1 0 16.0032 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1474 0 1 0 16.5033 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1475 0 1 0 17.0034 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1476 0 1 0 17.5035 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1477 0 1 0 18.0036 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1478 0 1 0 18.5037 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1479 0 1 0 19.0038 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1480 0 1 0 19.5039 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1481 0 1 0 20.004 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1482 0 1 0 20.5041 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1483 0 1 0 21.0042 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1484 0 1 0 21.5043 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1485 0 1 0 22.0045 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1486 0 1 0 22.5046 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1487 0 1 0 23.0047 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1488 0 1 0 23.5048 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1489 0 1 0 24.0049 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1490 0 1 0 24.505 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1491 0 1 0 25.0051 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1492 0 1 0 25.5052 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1493 0 1 0 26.0053 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1494 0 1 0 26.5054 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1495 0 1 0 27.0055 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1496 0 1 0 27.5056 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1497 0 1 0 28.0057 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1498 0 1 0 28.5058 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1499 0 1 0 29.0059 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1500 0 1 0 29.506 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1501 0 1 0 30.0061 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1502 0 1 0 30.5062 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1503 0 1 0 31.0063 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1504 0 1 0 31.5064 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1505 0 1 0 32.0065 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1506 0 1 0 32.5066 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1507 0 1 0 33.0067 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1508 0 1 0 33.5068 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1509 0 1 0 34.0069 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1510 0 1 0 34.507 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1511 0 1 0 35.0071 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1512 0 1 0 35.5072 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1513 0 1 0 36.0073 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1514 0 1 0 36.5074 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1515 0 1 0 37.0075 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1516 0 1 0 37.5076 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1517 0 1 0 38.0077 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1518 0 1 0 38.5078 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1519 0 1 0 39.0079 31.1832 9.99798 0 0 1 0.866 8 6 1 0 +1520 0 1 0 39.508 32.0494 9.99798 0 0 1 0.866 8 6 1 0 +1521 0 1 0 0 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1522 0 1 0 0.500101 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1523 0 1 0 1.0002 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1524 0 1 0 1.5003 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1525 0 1 0 2.0004 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1526 0 1 0 2.50051 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1527 0 1 0 3.00061 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1528 0 1 0 3.50071 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1529 0 1 0 4.00081 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1530 0 1 0 4.50091 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1531 0 1 0 5.00101 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1532 0 1 0 5.50111 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1533 0 1 0 6.00121 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1534 0 1 0 6.50132 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1535 0 1 0 7.00142 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1536 0 1 0 7.50152 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1537 0 1 0 8.00162 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1538 0 1 0 8.50172 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1539 0 1 0 9.00182 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1540 0 1 0 9.50192 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1541 0 1 0 10.002 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1542 0 1 0 10.5021 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1543 0 1 0 11.0022 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1544 0 1 0 11.5023 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1545 0 1 0 12.0024 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1546 0 1 0 12.5025 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1547 0 1 0 13.0026 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1548 0 1 0 13.5027 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1549 0 1 0 14.0028 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1550 0 1 0 14.5029 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1551 0 1 0 15.003 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1552 0 1 0 15.5031 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1553 0 1 0 16.0032 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1554 0 1 0 16.5033 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1555 0 1 0 17.0034 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1556 0 1 0 17.5035 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1557 0 1 0 18.0036 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1558 0 1 0 18.5037 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1559 0 1 0 19.0038 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1560 0 1 0 19.5039 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1561 0 1 0 20.004 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1562 0 1 0 20.5041 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1563 0 1 0 21.0042 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1564 0 1 0 21.5043 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1565 0 1 0 22.0045 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1566 0 1 0 22.5046 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1567 0 1 0 23.0047 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1568 0 1 0 23.5048 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1569 0 1 0 24.0049 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1570 0 1 0 24.505 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1571 0 1 0 25.0051 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1572 0 1 0 25.5052 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1573 0 1 0 26.0053 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1574 0 1 0 26.5054 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1575 0 1 0 27.0055 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1576 0 1 0 27.5056 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1577 0 1 0 28.0057 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1578 0 1 0 28.5058 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1579 0 1 0 29.0059 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1580 0 1 0 29.506 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1581 0 1 0 30.0061 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1582 0 1 0 30.5062 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1583 0 1 0 31.0063 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1584 0 1 0 31.5064 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1585 0 1 0 32.0065 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1586 0 1 0 32.5066 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1587 0 1 0 33.0067 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1588 0 1 0 33.5068 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1589 0 1 0 34.0069 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1590 0 1 0 34.507 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1591 0 1 0 35.0071 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1592 0 1 0 35.5072 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1593 0 1 0 36.0073 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1594 0 1 0 36.5074 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1595 0 1 0 37.0075 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1596 0 1 0 37.5076 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1597 0 1 0 38.0077 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1598 0 1 0 38.5078 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1599 0 1 0 39.0079 32.9156 9.99798 0 0 1 0.866 8 6 1 0 +1600 0 1 0 39.508 33.7818 9.99798 0 0 1 0.866 8 6 1 0 +1601 0 1 0 0 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1602 0 1 0 0.500101 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1603 0 1 0 1.0002 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1604 0 1 0 1.5003 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1605 0 1 0 2.0004 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1606 0 1 0 2.50051 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1607 0 1 0 3.00061 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1608 0 1 0 3.50071 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1609 0 1 0 4.00081 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1610 0 1 0 4.50091 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1611 0 1 0 5.00101 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1612 0 1 0 5.50111 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1613 0 1 0 6.00121 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1614 0 1 0 6.50132 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1615 0 1 0 7.00142 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1616 0 1 0 7.50152 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1617 0 1 0 8.00162 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1618 0 1 0 8.50172 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1619 0 1 0 9.00182 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1620 0 1 0 9.50192 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1621 0 1 0 10.002 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1622 0 1 0 10.5021 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1623 0 1 0 11.0022 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1624 0 1 0 11.5023 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1625 0 1 0 12.0024 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1626 0 1 0 12.5025 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1627 0 1 0 13.0026 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1628 0 1 0 13.5027 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1629 0 1 0 14.0028 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1630 0 1 0 14.5029 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1631 0 1 0 15.003 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1632 0 1 0 15.5031 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1633 0 1 0 16.0032 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1634 0 1 0 16.5033 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1635 0 1 0 17.0034 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1636 0 1 0 17.5035 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1637 0 1 0 18.0036 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1638 0 1 0 18.5037 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1639 0 1 0 19.0038 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1640 0 1 0 19.5039 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1641 0 1 0 20.004 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1642 0 1 0 20.5041 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1643 0 1 0 21.0042 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1644 0 1 0 21.5043 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1645 0 1 0 22.0045 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1646 0 1 0 22.5046 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1647 0 1 0 23.0047 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1648 0 1 0 23.5048 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1649 0 1 0 24.0049 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1650 0 1 0 24.505 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1651 0 1 0 25.0051 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1652 0 1 0 25.5052 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1653 0 1 0 26.0053 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1654 0 1 0 26.5054 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1655 0 1 0 27.0055 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1656 0 1 0 27.5056 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1657 0 1 0 28.0057 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1658 0 1 0 28.5058 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1659 0 1 0 29.0059 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1660 0 1 0 29.506 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1661 0 1 0 30.0061 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1662 0 1 0 30.5062 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1663 0 1 0 31.0063 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1664 0 1 0 31.5064 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1665 0 1 0 32.0065 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1666 0 1 0 32.5066 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1667 0 1 0 33.0067 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1668 0 1 0 33.5068 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1669 0 1 0 34.0069 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1670 0 1 0 34.507 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1671 0 1 0 35.0071 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1672 0 1 0 35.5072 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1673 0 1 0 36.0073 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1674 0 1 0 36.5074 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1675 0 1 0 37.0075 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1676 0 1 0 37.5076 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1677 0 1 0 38.0077 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1678 0 1 0 38.5078 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1679 0 1 0 39.0079 34.648 9.99798 0 0 1 0.866 8 6 1 0 +1680 0 1 0 39.508 35.5142 9.99798 0 0 1 0.866 8 6 1 0 +1681 0 1 0 0 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1682 0 1 0 0.500101 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1683 0 1 0 1.0002 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1684 0 1 0 1.5003 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1685 0 1 0 2.0004 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1686 0 1 0 2.50051 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1687 0 1 0 3.00061 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1688 0 1 0 3.50071 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1689 0 1 0 4.00081 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1690 0 1 0 4.50091 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1691 0 1 0 5.00101 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1692 0 1 0 5.50111 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1693 0 1 0 6.00121 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1694 0 1 0 6.50132 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1695 0 1 0 7.00142 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1696 0 1 0 7.50152 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1697 0 1 0 8.00162 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1698 0 1 0 8.50172 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1699 0 1 0 9.00182 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1700 0 1 0 9.50192 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1701 0 1 0 10.002 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1702 0 1 0 10.5021 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1703 0 1 0 11.0022 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1704 0 1 0 11.5023 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1705 0 1 0 12.0024 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1706 0 1 0 12.5025 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1707 0 1 0 13.0026 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1708 0 1 0 13.5027 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1709 0 1 0 14.0028 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1710 0 1 0 14.5029 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1711 0 1 0 15.003 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1712 0 1 0 15.5031 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1713 0 1 0 16.0032 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1714 0 1 0 16.5033 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1715 0 1 0 17.0034 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1716 0 1 0 17.5035 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1717 0 1 0 18.0036 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1718 0 1 0 18.5037 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1719 0 1 0 19.0038 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1720 0 1 0 19.5039 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1721 0 1 0 20.004 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1722 0 1 0 20.5041 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1723 0 1 0 21.0042 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1724 0 1 0 21.5043 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1725 0 1 0 22.0045 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1726 0 1 0 22.5046 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1727 0 1 0 23.0047 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1728 0 1 0 23.5048 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1729 0 1 0 24.0049 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1730 0 1 0 24.505 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1731 0 1 0 25.0051 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1732 0 1 0 25.5052 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1733 0 1 0 26.0053 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1734 0 1 0 26.5054 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1735 0 1 0 27.0055 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1736 0 1 0 27.5056 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1737 0 1 0 28.0057 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1738 0 1 0 28.5058 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1739 0 1 0 29.0059 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1740 0 1 0 29.506 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1741 0 1 0 30.0061 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1742 0 1 0 30.5062 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1743 0 1 0 31.0063 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1744 0 1 0 31.5064 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1745 0 1 0 32.0065 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1746 0 1 0 32.5066 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1747 0 1 0 33.0067 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1748 0 1 0 33.5068 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1749 0 1 0 34.0069 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1750 0 1 0 34.507 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1751 0 1 0 35.0071 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1752 0 1 0 35.5072 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1753 0 1 0 36.0073 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1754 0 1 0 36.5074 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1755 0 1 0 37.0075 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1756 0 1 0 37.5076 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1757 0 1 0 38.0077 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1758 0 1 0 38.5078 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1759 0 1 0 39.0079 36.3804 9.99798 0 0 1 0.866 8 6 1 0 +1760 0 1 0 39.508 37.2466 9.99798 0 0 1 0.866 8 6 1 0 +1761 0 1 0 0 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1762 0 1 0 0.500101 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1763 0 1 0 1.0002 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1764 0 1 0 1.5003 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1765 0 1 0 2.0004 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1766 0 1 0 2.50051 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1767 0 1 0 3.00061 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1768 0 1 0 3.50071 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1769 0 1 0 4.00081 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1770 0 1 0 4.50091 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1771 0 1 0 5.00101 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1772 0 1 0 5.50111 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1773 0 1 0 6.00121 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1774 0 1 0 6.50132 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1775 0 1 0 7.00142 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1776 0 1 0 7.50152 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1777 0 1 0 8.00162 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1778 0 1 0 8.50172 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1779 0 1 0 9.00182 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1780 0 1 0 9.50192 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1781 0 1 0 10.002 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1782 0 1 0 10.5021 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1783 0 1 0 11.0022 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1784 0 1 0 11.5023 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1785 0 1 0 12.0024 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1786 0 1 0 12.5025 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1787 0 1 0 13.0026 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1788 0 1 0 13.5027 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1789 0 1 0 14.0028 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1790 0 1 0 14.5029 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1791 0 1 0 15.003 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1792 0 1 0 15.5031 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1793 0 1 0 16.0032 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1794 0 1 0 16.5033 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1795 0 1 0 17.0034 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1796 0 1 0 17.5035 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1797 0 1 0 18.0036 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1798 0 1 0 18.5037 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1799 0 1 0 19.0038 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1800 0 1 0 19.5039 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1801 0 1 0 20.004 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1802 0 1 0 20.5041 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1803 0 1 0 21.0042 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1804 0 1 0 21.5043 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1805 0 1 0 22.0045 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1806 0 1 0 22.5046 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1807 0 1 0 23.0047 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1808 0 1 0 23.5048 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1809 0 1 0 24.0049 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1810 0 1 0 24.505 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1811 0 1 0 25.0051 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1812 0 1 0 25.5052 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1813 0 1 0 26.0053 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1814 0 1 0 26.5054 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1815 0 1 0 27.0055 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1816 0 1 0 27.5056 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1817 0 1 0 28.0057 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1818 0 1 0 28.5058 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1819 0 1 0 29.0059 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1820 0 1 0 29.506 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1821 0 1 0 30.0061 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1822 0 1 0 30.5062 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1823 0 1 0 31.0063 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1824 0 1 0 31.5064 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1825 0 1 0 32.0065 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1826 0 1 0 32.5066 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1827 0 1 0 33.0067 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1828 0 1 0 33.5068 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1829 0 1 0 34.0069 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1830 0 1 0 34.507 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1831 0 1 0 35.0071 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1832 0 1 0 35.5072 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1833 0 1 0 36.0073 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1834 0 1 0 36.5074 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1835 0 1 0 37.0075 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1836 0 1 0 37.5076 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1837 0 1 0 38.0077 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1838 0 1 0 38.5078 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1839 0 1 0 39.0079 38.1128 9.99798 0 0 1 0.866 8 6 1 0 +1840 0 1 0 39.508 38.979 9.99798 0 0 1 0.866 8 6 1 0 +1841 0 1 0 0 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1842 0 1 0 0.500101 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1843 0 1 0 1.0002 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1844 0 1 0 1.5003 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1845 0 1 0 2.0004 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1846 0 1 0 2.50051 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1847 0 1 0 3.00061 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1848 0 1 0 3.50071 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1849 0 1 0 4.00081 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1850 0 1 0 4.50091 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1851 0 1 0 5.00101 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1852 0 1 0 5.50111 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1853 0 1 0 6.00121 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1854 0 1 0 6.50132 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1855 0 1 0 7.00142 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1856 0 1 0 7.50152 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1857 0 1 0 8.00162 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1858 0 1 0 8.50172 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1859 0 1 0 9.00182 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1860 0 1 0 9.50192 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1861 0 1 0 10.002 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1862 0 1 0 10.5021 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1863 0 1 0 11.0022 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1864 0 1 0 11.5023 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1865 0 1 0 12.0024 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1866 0 1 0 12.5025 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1867 0 1 0 13.0026 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1868 0 1 0 13.5027 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1869 0 1 0 14.0028 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1870 0 1 0 14.5029 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1871 0 1 0 15.003 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1872 0 1 0 15.5031 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1873 0 1 0 16.0032 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1874 0 1 0 16.5033 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1875 0 1 0 17.0034 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1876 0 1 0 17.5035 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1877 0 1 0 18.0036 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1878 0 1 0 18.5037 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1879 0 1 0 19.0038 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1880 0 1 0 19.5039 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1881 0 1 0 20.004 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1882 0 1 0 20.5041 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1883 0 1 0 21.0042 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1884 0 1 0 21.5043 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1885 0 1 0 22.0045 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1886 0 1 0 22.5046 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1887 0 1 0 23.0047 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1888 0 1 0 23.5048 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1889 0 1 0 24.0049 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1890 0 1 0 24.505 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1891 0 1 0 25.0051 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1892 0 1 0 25.5052 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1893 0 1 0 26.0053 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1894 0 1 0 26.5054 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1895 0 1 0 27.0055 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1896 0 1 0 27.5056 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1897 0 1 0 28.0057 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1898 0 1 0 28.5058 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1899 0 1 0 29.0059 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1900 0 1 0 29.506 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1901 0 1 0 30.0061 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1902 0 1 0 30.5062 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1903 0 1 0 31.0063 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1904 0 1 0 31.5064 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1905 0 1 0 32.0065 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1906 0 1 0 32.5066 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1907 0 1 0 33.0067 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1908 0 1 0 33.5068 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1909 0 1 0 34.0069 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1910 0 1 0 34.507 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1911 0 1 0 35.0071 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1912 0 1 0 35.5072 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1913 0 1 0 36.0073 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1914 0 1 0 36.5074 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1915 0 1 0 37.0075 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1916 0 1 0 37.5076 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1917 0 1 0 38.0077 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1918 0 1 0 38.5078 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1919 0 1 0 39.0079 39.8452 9.99798 0 0 1 0.866 8 6 1 0 +1920 0 1 0 39.508 40.7114 9.99798 0 0 1 0.866 8 6 1 0 +1921 0 1 0 0 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1922 0 1 0 0.500101 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1923 0 1 0 1.0002 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1924 0 1 0 1.5003 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1925 0 1 0 2.0004 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1926 0 1 0 2.50051 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1927 0 1 0 3.00061 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1928 0 1 0 3.50071 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1929 0 1 0 4.00081 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1930 0 1 0 4.50091 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1931 0 1 0 5.00101 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1932 0 1 0 5.50111 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1933 0 1 0 6.00121 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1934 0 1 0 6.50132 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1935 0 1 0 7.00142 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1936 0 1 0 7.50152 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1937 0 1 0 8.00162 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1938 0 1 0 8.50172 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1939 0 1 0 9.00182 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1940 0 1 0 9.50192 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1941 0 1 0 10.002 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1942 0 1 0 10.5021 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1943 0 1 0 11.0022 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1944 0 1 0 11.5023 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1945 0 1 0 12.0024 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1946 0 1 0 12.5025 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1947 0 1 0 13.0026 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1948 0 1 0 13.5027 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1949 0 1 0 14.0028 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1950 0 1 0 14.5029 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1951 0 1 0 15.003 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1952 0 1 0 15.5031 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1953 0 1 0 16.0032 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1954 0 1 0 16.5033 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1955 0 1 0 17.0034 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1956 0 1 0 17.5035 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1957 0 1 0 18.0036 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1958 0 1 0 18.5037 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1959 0 1 0 19.0038 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1960 0 1 0 19.5039 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1961 0 1 0 20.004 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1962 0 1 0 20.5041 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1963 0 1 0 21.0042 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1964 0 1 0 21.5043 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1965 0 1 0 22.0045 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1966 0 1 0 22.5046 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1967 0 1 0 23.0047 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1968 0 1 0 23.5048 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1969 0 1 0 24.0049 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1970 0 1 0 24.505 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1971 0 1 0 25.0051 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1972 0 1 0 25.5052 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1973 0 1 0 26.0053 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1974 0 1 0 26.5054 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1975 0 1 0 27.0055 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1976 0 1 0 27.5056 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1977 0 1 0 28.0057 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1978 0 1 0 28.5058 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1979 0 1 0 29.0059 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1980 0 1 0 29.506 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1981 0 1 0 30.0061 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1982 0 1 0 30.5062 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1983 0 1 0 31.0063 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1984 0 1 0 31.5064 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1985 0 1 0 32.0065 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1986 0 1 0 32.5066 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1987 0 1 0 33.0067 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1988 0 1 0 33.5068 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1989 0 1 0 34.0069 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1990 0 1 0 34.507 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1991 0 1 0 35.0071 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1992 0 1 0 35.5072 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1993 0 1 0 36.0073 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1994 0 1 0 36.5074 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1995 0 1 0 37.0075 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1996 0 1 0 37.5076 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1997 0 1 0 38.0077 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +1998 0 1 0 38.5078 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +1999 0 1 0 39.0079 41.5776 9.99798 0 0 1 0.866 8 6 1 0 +2000 0 1 0 39.508 42.4438 9.99798 0 0 1 0.866 8 6 1 0 +2001 0 1 0 0 0 30.002 0 0 -1 0.866 8 6 1 0 +2002 0 1 0 0.500101 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2003 0 1 0 1.0002 0 30.002 0 0 -1 0.866 8 6 1 0 +2004 0 1 0 1.5003 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2005 0 1 0 2.0004 0 30.002 0 0 -1 0.866 8 6 1 0 +2006 0 1 0 2.50051 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2007 0 1 0 3.00061 0 30.002 0 0 -1 0.866 8 6 1 0 +2008 0 1 0 3.50071 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2009 0 1 0 4.00081 0 30.002 0 0 -1 0.866 8 6 1 0 +2010 0 1 0 4.50091 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2011 0 1 0 5.00101 0 30.002 0 0 -1 0.866 8 6 1 0 +2012 0 1 0 5.50111 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2013 0 1 0 6.00121 0 30.002 0 0 -1 0.866 8 6 1 0 +2014 0 1 0 6.50132 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2015 0 1 0 7.00142 0 30.002 0 0 -1 0.866 8 6 1 0 +2016 0 1 0 7.50152 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2017 0 1 0 8.00162 0 30.002 0 0 -1 0.866 8 6 1 0 +2018 0 1 0 8.50172 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2019 0 1 0 9.00182 0 30.002 0 0 -1 0.866 8 6 1 0 +2020 0 1 0 9.50192 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2021 0 1 0 10.002 0 30.002 0 0 -1 0.866 8 6 1 0 +2022 0 1 0 10.5021 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2023 0 1 0 11.0022 0 30.002 0 0 -1 0.866 8 6 1 0 +2024 0 1 0 11.5023 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2025 0 1 0 12.0024 0 30.002 0 0 -1 0.866 8 6 1 0 +2026 0 1 0 12.5025 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2027 0 1 0 13.0026 0 30.002 0 0 -1 0.866 8 6 1 0 +2028 0 1 0 13.5027 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2029 0 1 0 14.0028 0 30.002 0 0 -1 0.866 8 6 1 0 +2030 0 1 0 14.5029 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2031 0 1 0 15.003 0 30.002 0 0 -1 0.866 8 6 1 0 +2032 0 1 0 15.5031 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2033 0 1 0 16.0032 0 30.002 0 0 -1 0.866 8 6 1 0 +2034 0 1 0 16.5033 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2035 0 1 0 17.0034 0 30.002 0 0 -1 0.866 8 6 1 0 +2036 0 1 0 17.5035 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2037 0 1 0 18.0036 0 30.002 0 0 -1 0.866 8 6 1 0 +2038 0 1 0 18.5037 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2039 0 1 0 19.0038 0 30.002 0 0 -1 0.866 8 6 1 0 +2040 0 1 0 19.5039 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2041 0 1 0 20.004 0 30.002 0 0 -1 0.866 8 6 1 0 +2042 0 1 0 20.5041 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2043 0 1 0 21.0042 0 30.002 0 0 -1 0.866 8 6 1 0 +2044 0 1 0 21.5043 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2045 0 1 0 22.0045 0 30.002 0 0 -1 0.866 8 6 1 0 +2046 0 1 0 22.5046 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2047 0 1 0 23.0047 0 30.002 0 0 -1 0.866 8 6 1 0 +2048 0 1 0 23.5048 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2049 0 1 0 24.0049 0 30.002 0 0 -1 0.866 8 6 1 0 +2050 0 1 0 24.505 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2051 0 1 0 25.0051 0 30.002 0 0 -1 0.866 8 6 1 0 +2052 0 1 0 25.5052 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2053 0 1 0 26.0053 0 30.002 0 0 -1 0.866 8 6 1 0 +2054 0 1 0 26.5054 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2055 0 1 0 27.0055 0 30.002 0 0 -1 0.866 8 6 1 0 +2056 0 1 0 27.5056 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2057 0 1 0 28.0057 0 30.002 0 0 -1 0.866 8 6 1 0 +2058 0 1 0 28.5058 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2059 0 1 0 29.0059 0 30.002 0 0 -1 0.866 8 6 1 0 +2060 0 1 0 29.506 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2061 0 1 0 30.0061 0 30.002 0 0 -1 0.866 8 6 1 0 +2062 0 1 0 30.5062 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2063 0 1 0 31.0063 0 30.002 0 0 -1 0.866 8 6 1 0 +2064 0 1 0 31.5064 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2065 0 1 0 32.0065 0 30.002 0 0 -1 0.866 8 6 1 0 +2066 0 1 0 32.5066 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2067 0 1 0 33.0067 0 30.002 0 0 -1 0.866 8 6 1 0 +2068 0 1 0 33.5068 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2069 0 1 0 34.0069 0 30.002 0 0 -1 0.866 8 6 1 0 +2070 0 1 0 34.507 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2071 0 1 0 35.0071 0 30.002 0 0 -1 0.866 8 6 1 0 +2072 0 1 0 35.5072 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2073 0 1 0 36.0073 0 30.002 0 0 -1 0.866 8 6 1 0 +2074 0 1 0 36.5074 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2075 0 1 0 37.0075 0 30.002 0 0 -1 0.866 8 6 1 0 +2076 0 1 0 37.5076 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2077 0 1 0 38.0077 0 30.002 0 0 -1 0.866 8 6 1 0 +2078 0 1 0 38.5078 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2079 0 1 0 39.0079 0 30.002 0 0 -1 0.866 8 6 1 0 +2080 0 1 0 39.508 0.866201 30.002 0 0 -1 0.866 8 6 1 0 +2081 0 1 0 0 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2082 0 1 0 0.500101 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2083 0 1 0 1.0002 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2084 0 1 0 1.5003 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2085 0 1 0 2.0004 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2086 0 1 0 2.50051 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2087 0 1 0 3.00061 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2088 0 1 0 3.50071 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2089 0 1 0 4.00081 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2090 0 1 0 4.50091 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2091 0 1 0 5.00101 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2092 0 1 0 5.50111 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2093 0 1 0 6.00121 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2094 0 1 0 6.50132 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2095 0 1 0 7.00142 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2096 0 1 0 7.50152 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2097 0 1 0 8.00162 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2098 0 1 0 8.50172 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2099 0 1 0 9.00182 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2100 0 1 0 9.50192 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2101 0 1 0 10.002 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2102 0 1 0 10.5021 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2103 0 1 0 11.0022 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2104 0 1 0 11.5023 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2105 0 1 0 12.0024 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2106 0 1 0 12.5025 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2107 0 1 0 13.0026 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2108 0 1 0 13.5027 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2109 0 1 0 14.0028 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2110 0 1 0 14.5029 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2111 0 1 0 15.003 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2112 0 1 0 15.5031 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2113 0 1 0 16.0032 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2114 0 1 0 16.5033 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2115 0 1 0 17.0034 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2116 0 1 0 17.5035 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2117 0 1 0 18.0036 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2118 0 1 0 18.5037 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2119 0 1 0 19.0038 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2120 0 1 0 19.5039 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2121 0 1 0 20.004 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2122 0 1 0 20.5041 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2123 0 1 0 21.0042 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2124 0 1 0 21.5043 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2125 0 1 0 22.0045 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2126 0 1 0 22.5046 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2127 0 1 0 23.0047 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2128 0 1 0 23.5048 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2129 0 1 0 24.0049 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2130 0 1 0 24.505 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2131 0 1 0 25.0051 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2132 0 1 0 25.5052 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2133 0 1 0 26.0053 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2134 0 1 0 26.5054 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2135 0 1 0 27.0055 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2136 0 1 0 27.5056 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2137 0 1 0 28.0057 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2138 0 1 0 28.5058 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2139 0 1 0 29.0059 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2140 0 1 0 29.506 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2141 0 1 0 30.0061 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2142 0 1 0 30.5062 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2143 0 1 0 31.0063 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2144 0 1 0 31.5064 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2145 0 1 0 32.0065 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2146 0 1 0 32.5066 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2147 0 1 0 33.0067 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2148 0 1 0 33.5068 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2149 0 1 0 34.0069 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2150 0 1 0 34.507 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2151 0 1 0 35.0071 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2152 0 1 0 35.5072 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2153 0 1 0 36.0073 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2154 0 1 0 36.5074 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2155 0 1 0 37.0075 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2156 0 1 0 37.5076 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2157 0 1 0 38.0077 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2158 0 1 0 38.5078 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2159 0 1 0 39.0079 1.7324 30.002 0 0 -1 0.866 8 6 1 0 +2160 0 1 0 39.508 2.5986 30.002 0 0 -1 0.866 8 6 1 0 +2161 0 1 0 0 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2162 0 1 0 0.500101 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2163 0 1 0 1.0002 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2164 0 1 0 1.5003 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2165 0 1 0 2.0004 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2166 0 1 0 2.50051 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2167 0 1 0 3.00061 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2168 0 1 0 3.50071 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2169 0 1 0 4.00081 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2170 0 1 0 4.50091 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2171 0 1 0 5.00101 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2172 0 1 0 5.50111 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2173 0 1 0 6.00121 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2174 0 1 0 6.50132 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2175 0 1 0 7.00142 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2176 0 1 0 7.50152 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2177 0 1 0 8.00162 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2178 0 1 0 8.50172 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2179 0 1 0 9.00182 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2180 0 1 0 9.50192 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2181 0 1 0 10.002 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2182 0 1 0 10.5021 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2183 0 1 0 11.0022 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2184 0 1 0 11.5023 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2185 0 1 0 12.0024 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2186 0 1 0 12.5025 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2187 0 1 0 13.0026 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2188 0 1 0 13.5027 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2189 0 1 0 14.0028 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2190 0 1 0 14.5029 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2191 0 1 0 15.003 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2192 0 1 0 15.5031 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2193 0 1 0 16.0032 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2194 0 1 0 16.5033 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2195 0 1 0 17.0034 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2196 0 1 0 17.5035 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2197 0 1 0 18.0036 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2198 0 1 0 18.5037 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2199 0 1 0 19.0038 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2200 0 1 0 19.5039 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2201 0 1 0 20.004 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2202 0 1 0 20.5041 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2203 0 1 0 21.0042 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2204 0 1 0 21.5043 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2205 0 1 0 22.0045 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2206 0 1 0 22.5046 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2207 0 1 0 23.0047 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2208 0 1 0 23.5048 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2209 0 1 0 24.0049 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2210 0 1 0 24.505 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2211 0 1 0 25.0051 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2212 0 1 0 25.5052 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2213 0 1 0 26.0053 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2214 0 1 0 26.5054 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2215 0 1 0 27.0055 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2216 0 1 0 27.5056 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2217 0 1 0 28.0057 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2218 0 1 0 28.5058 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2219 0 1 0 29.0059 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2220 0 1 0 29.506 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2221 0 1 0 30.0061 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2222 0 1 0 30.5062 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2223 0 1 0 31.0063 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2224 0 1 0 31.5064 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2225 0 1 0 32.0065 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2226 0 1 0 32.5066 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2227 0 1 0 33.0067 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2228 0 1 0 33.5068 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2229 0 1 0 34.0069 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2230 0 1 0 34.507 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2231 0 1 0 35.0071 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2232 0 1 0 35.5072 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2233 0 1 0 36.0073 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2234 0 1 0 36.5074 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2235 0 1 0 37.0075 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2236 0 1 0 37.5076 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2237 0 1 0 38.0077 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2238 0 1 0 38.5078 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2239 0 1 0 39.0079 3.4648 30.002 0 0 -1 0.866 8 6 1 0 +2240 0 1 0 39.508 4.331 30.002 0 0 -1 0.866 8 6 1 0 +2241 0 1 0 0 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2242 0 1 0 0.500101 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2243 0 1 0 1.0002 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2244 0 1 0 1.5003 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2245 0 1 0 2.0004 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2246 0 1 0 2.50051 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2247 0 1 0 3.00061 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2248 0 1 0 3.50071 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2249 0 1 0 4.00081 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2250 0 1 0 4.50091 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2251 0 1 0 5.00101 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2252 0 1 0 5.50111 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2253 0 1 0 6.00121 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2254 0 1 0 6.50132 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2255 0 1 0 7.00142 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2256 0 1 0 7.50152 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2257 0 1 0 8.00162 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2258 0 1 0 8.50172 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2259 0 1 0 9.00182 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2260 0 1 0 9.50192 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2261 0 1 0 10.002 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2262 0 1 0 10.5021 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2263 0 1 0 11.0022 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2264 0 1 0 11.5023 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2265 0 1 0 12.0024 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2266 0 1 0 12.5025 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2267 0 1 0 13.0026 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2268 0 1 0 13.5027 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2269 0 1 0 14.0028 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2270 0 1 0 14.5029 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2271 0 1 0 15.003 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2272 0 1 0 15.5031 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2273 0 1 0 16.0032 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2274 0 1 0 16.5033 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2275 0 1 0 17.0034 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2276 0 1 0 17.5035 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2277 0 1 0 18.0036 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2278 0 1 0 18.5037 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2279 0 1 0 19.0038 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2280 0 1 0 19.5039 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2281 0 1 0 20.004 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2282 0 1 0 20.5041 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2283 0 1 0 21.0042 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2284 0 1 0 21.5043 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2285 0 1 0 22.0045 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2286 0 1 0 22.5046 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2287 0 1 0 23.0047 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2288 0 1 0 23.5048 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2289 0 1 0 24.0049 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2290 0 1 0 24.505 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2291 0 1 0 25.0051 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2292 0 1 0 25.5052 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2293 0 1 0 26.0053 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2294 0 1 0 26.5054 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2295 0 1 0 27.0055 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2296 0 1 0 27.5056 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2297 0 1 0 28.0057 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2298 0 1 0 28.5058 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2299 0 1 0 29.0059 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2300 0 1 0 29.506 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2301 0 1 0 30.0061 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2302 0 1 0 30.5062 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2303 0 1 0 31.0063 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2304 0 1 0 31.5064 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2305 0 1 0 32.0065 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2306 0 1 0 32.5066 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2307 0 1 0 33.0067 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2308 0 1 0 33.5068 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2309 0 1 0 34.0069 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2310 0 1 0 34.507 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2311 0 1 0 35.0071 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2312 0 1 0 35.5072 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2313 0 1 0 36.0073 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2314 0 1 0 36.5074 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2315 0 1 0 37.0075 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2316 0 1 0 37.5076 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2317 0 1 0 38.0077 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2318 0 1 0 38.5078 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2319 0 1 0 39.0079 5.1972 30.002 0 0 -1 0.866 8 6 1 0 +2320 0 1 0 39.508 6.0634 30.002 0 0 -1 0.866 8 6 1 0 +2321 0 1 0 0 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2322 0 1 0 0.500101 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2323 0 1 0 1.0002 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2324 0 1 0 1.5003 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2325 0 1 0 2.0004 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2326 0 1 0 2.50051 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2327 0 1 0 3.00061 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2328 0 1 0 3.50071 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2329 0 1 0 4.00081 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2330 0 1 0 4.50091 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2331 0 1 0 5.00101 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2332 0 1 0 5.50111 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2333 0 1 0 6.00121 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2334 0 1 0 6.50132 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2335 0 1 0 7.00142 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2336 0 1 0 7.50152 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2337 0 1 0 8.00162 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2338 0 1 0 8.50172 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2339 0 1 0 9.00182 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2340 0 1 0 9.50192 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2341 0 1 0 10.002 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2342 0 1 0 10.5021 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2343 0 1 0 11.0022 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2344 0 1 0 11.5023 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2345 0 1 0 12.0024 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2346 0 1 0 12.5025 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2347 0 1 0 13.0026 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2348 0 1 0 13.5027 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2349 0 1 0 14.0028 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2350 0 1 0 14.5029 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2351 0 1 0 15.003 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2352 0 1 0 15.5031 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2353 0 1 0 16.0032 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2354 0 1 0 16.5033 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2355 0 1 0 17.0034 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2356 0 1 0 17.5035 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2357 0 1 0 18.0036 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2358 0 1 0 18.5037 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2359 0 1 0 19.0038 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2360 0 1 0 19.5039 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2361 0 1 0 20.004 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2362 0 1 0 20.5041 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2363 0 1 0 21.0042 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2364 0 1 0 21.5043 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2365 0 1 0 22.0045 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2366 0 1 0 22.5046 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2367 0 1 0 23.0047 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2368 0 1 0 23.5048 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2369 0 1 0 24.0049 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2370 0 1 0 24.505 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2371 0 1 0 25.0051 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2372 0 1 0 25.5052 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2373 0 1 0 26.0053 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2374 0 1 0 26.5054 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2375 0 1 0 27.0055 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2376 0 1 0 27.5056 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2377 0 1 0 28.0057 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2378 0 1 0 28.5058 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2379 0 1 0 29.0059 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2380 0 1 0 29.506 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2381 0 1 0 30.0061 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2382 0 1 0 30.5062 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2383 0 1 0 31.0063 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2384 0 1 0 31.5064 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2385 0 1 0 32.0065 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2386 0 1 0 32.5066 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2387 0 1 0 33.0067 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2388 0 1 0 33.5068 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2389 0 1 0 34.0069 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2390 0 1 0 34.507 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2391 0 1 0 35.0071 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2392 0 1 0 35.5072 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2393 0 1 0 36.0073 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2394 0 1 0 36.5074 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2395 0 1 0 37.0075 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2396 0 1 0 37.5076 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2397 0 1 0 38.0077 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2398 0 1 0 38.5078 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2399 0 1 0 39.0079 6.9296 30.002 0 0 -1 0.866 8 6 1 0 +2400 0 1 0 39.508 7.79581 30.002 0 0 -1 0.866 8 6 1 0 +2401 0 1 0 0 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2402 0 1 0 0.500101 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2403 0 1 0 1.0002 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2404 0 1 0 1.5003 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2405 0 1 0 2.0004 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2406 0 1 0 2.50051 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2407 0 1 0 3.00061 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2408 0 1 0 3.50071 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2409 0 1 0 4.00081 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2410 0 1 0 4.50091 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2411 0 1 0 5.00101 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2412 0 1 0 5.50111 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2413 0 1 0 6.00121 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2414 0 1 0 6.50132 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2415 0 1 0 7.00142 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2416 0 1 0 7.50152 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2417 0 1 0 8.00162 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2418 0 1 0 8.50172 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2419 0 1 0 9.00182 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2420 0 1 0 9.50192 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2421 0 1 0 10.002 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2422 0 1 0 10.5021 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2423 0 1 0 11.0022 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2424 0 1 0 11.5023 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2425 0 1 0 12.0024 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2426 0 1 0 12.5025 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2427 0 1 0 13.0026 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2428 0 1 0 13.5027 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2429 0 1 0 14.0028 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2430 0 1 0 14.5029 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2431 0 1 0 15.003 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2432 0 1 0 15.5031 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2433 0 1 0 16.0032 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2434 0 1 0 16.5033 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2435 0 1 0 17.0034 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2436 0 1 0 17.5035 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2437 0 1 0 18.0036 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2438 0 1 0 18.5037 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2439 0 1 0 19.0038 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2440 0 1 0 19.5039 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2441 0 1 0 20.004 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2442 0 1 0 20.5041 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2443 0 1 0 21.0042 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2444 0 1 0 21.5043 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2445 0 1 0 22.0045 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2446 0 1 0 22.5046 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2447 0 1 0 23.0047 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2448 0 1 0 23.5048 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2449 0 1 0 24.0049 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2450 0 1 0 24.505 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2451 0 1 0 25.0051 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2452 0 1 0 25.5052 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2453 0 1 0 26.0053 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2454 0 1 0 26.5054 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2455 0 1 0 27.0055 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2456 0 1 0 27.5056 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2457 0 1 0 28.0057 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2458 0 1 0 28.5058 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2459 0 1 0 29.0059 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2460 0 1 0 29.506 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2461 0 1 0 30.0061 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2462 0 1 0 30.5062 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2463 0 1 0 31.0063 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2464 0 1 0 31.5064 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2465 0 1 0 32.0065 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2466 0 1 0 32.5066 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2467 0 1 0 33.0067 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2468 0 1 0 33.5068 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2469 0 1 0 34.0069 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2470 0 1 0 34.507 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2471 0 1 0 35.0071 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2472 0 1 0 35.5072 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2473 0 1 0 36.0073 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2474 0 1 0 36.5074 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2475 0 1 0 37.0075 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2476 0 1 0 37.5076 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2477 0 1 0 38.0077 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2478 0 1 0 38.5078 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2479 0 1 0 39.0079 8.66201 30.002 0 0 -1 0.866 8 6 1 0 +2480 0 1 0 39.508 9.52821 30.002 0 0 -1 0.866 8 6 1 0 +2481 0 1 0 0 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2482 0 1 0 0.500101 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2483 0 1 0 1.0002 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2484 0 1 0 1.5003 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2485 0 1 0 2.0004 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2486 0 1 0 2.50051 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2487 0 1 0 3.00061 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2488 0 1 0 3.50071 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2489 0 1 0 4.00081 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2490 0 1 0 4.50091 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2491 0 1 0 5.00101 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2492 0 1 0 5.50111 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2493 0 1 0 6.00121 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2494 0 1 0 6.50132 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2495 0 1 0 7.00142 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2496 0 1 0 7.50152 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2497 0 1 0 8.00162 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2498 0 1 0 8.50172 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2499 0 1 0 9.00182 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2500 0 1 0 9.50192 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2501 0 1 0 10.002 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2502 0 1 0 10.5021 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2503 0 1 0 11.0022 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2504 0 1 0 11.5023 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2505 0 1 0 12.0024 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2506 0 1 0 12.5025 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2507 0 1 0 13.0026 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2508 0 1 0 13.5027 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2509 0 1 0 14.0028 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2510 0 1 0 14.5029 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2511 0 1 0 15.003 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2512 0 1 0 15.5031 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2513 0 1 0 16.0032 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2514 0 1 0 16.5033 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2515 0 1 0 17.0034 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2516 0 1 0 17.5035 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2517 0 1 0 18.0036 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2518 0 1 0 18.5037 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2519 0 1 0 19.0038 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2520 0 1 0 19.5039 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2521 0 1 0 20.004 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2522 0 1 0 20.5041 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2523 0 1 0 21.0042 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2524 0 1 0 21.5043 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2525 0 1 0 22.0045 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2526 0 1 0 22.5046 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2527 0 1 0 23.0047 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2528 0 1 0 23.5048 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2529 0 1 0 24.0049 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2530 0 1 0 24.505 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2531 0 1 0 25.0051 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2532 0 1 0 25.5052 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2533 0 1 0 26.0053 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2534 0 1 0 26.5054 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2535 0 1 0 27.0055 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2536 0 1 0 27.5056 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2537 0 1 0 28.0057 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2538 0 1 0 28.5058 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2539 0 1 0 29.0059 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2540 0 1 0 29.506 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2541 0 1 0 30.0061 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2542 0 1 0 30.5062 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2543 0 1 0 31.0063 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2544 0 1 0 31.5064 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2545 0 1 0 32.0065 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2546 0 1 0 32.5066 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2547 0 1 0 33.0067 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2548 0 1 0 33.5068 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2549 0 1 0 34.0069 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2550 0 1 0 34.507 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2551 0 1 0 35.0071 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2552 0 1 0 35.5072 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2553 0 1 0 36.0073 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2554 0 1 0 36.5074 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2555 0 1 0 37.0075 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2556 0 1 0 37.5076 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2557 0 1 0 38.0077 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2558 0 1 0 38.5078 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2559 0 1 0 39.0079 10.3944 30.002 0 0 -1 0.866 8 6 1 0 +2560 0 1 0 39.508 11.2606 30.002 0 0 -1 0.866 8 6 1 0 +2561 0 1 0 0 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2562 0 1 0 0.500101 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2563 0 1 0 1.0002 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2564 0 1 0 1.5003 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2565 0 1 0 2.0004 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2566 0 1 0 2.50051 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2567 0 1 0 3.00061 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2568 0 1 0 3.50071 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2569 0 1 0 4.00081 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2570 0 1 0 4.50091 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2571 0 1 0 5.00101 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2572 0 1 0 5.50111 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2573 0 1 0 6.00121 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2574 0 1 0 6.50132 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2575 0 1 0 7.00142 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2576 0 1 0 7.50152 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2577 0 1 0 8.00162 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2578 0 1 0 8.50172 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2579 0 1 0 9.00182 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2580 0 1 0 9.50192 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2581 0 1 0 10.002 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2582 0 1 0 10.5021 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2583 0 1 0 11.0022 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2584 0 1 0 11.5023 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2585 0 1 0 12.0024 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2586 0 1 0 12.5025 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2587 0 1 0 13.0026 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2588 0 1 0 13.5027 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2589 0 1 0 14.0028 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2590 0 1 0 14.5029 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2591 0 1 0 15.003 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2592 0 1 0 15.5031 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2593 0 1 0 16.0032 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2594 0 1 0 16.5033 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2595 0 1 0 17.0034 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2596 0 1 0 17.5035 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2597 0 1 0 18.0036 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2598 0 1 0 18.5037 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2599 0 1 0 19.0038 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2600 0 1 0 19.5039 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2601 0 1 0 20.004 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2602 0 1 0 20.5041 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2603 0 1 0 21.0042 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2604 0 1 0 21.5043 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2605 0 1 0 22.0045 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2606 0 1 0 22.5046 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2607 0 1 0 23.0047 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2608 0 1 0 23.5048 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2609 0 1 0 24.0049 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2610 0 1 0 24.505 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2611 0 1 0 25.0051 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2612 0 1 0 25.5052 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2613 0 1 0 26.0053 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2614 0 1 0 26.5054 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2615 0 1 0 27.0055 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2616 0 1 0 27.5056 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2617 0 1 0 28.0057 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2618 0 1 0 28.5058 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2619 0 1 0 29.0059 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2620 0 1 0 29.506 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2621 0 1 0 30.0061 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2622 0 1 0 30.5062 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2623 0 1 0 31.0063 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2624 0 1 0 31.5064 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2625 0 1 0 32.0065 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2626 0 1 0 32.5066 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2627 0 1 0 33.0067 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2628 0 1 0 33.5068 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2629 0 1 0 34.0069 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2630 0 1 0 34.507 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2631 0 1 0 35.0071 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2632 0 1 0 35.5072 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2633 0 1 0 36.0073 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2634 0 1 0 36.5074 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2635 0 1 0 37.0075 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2636 0 1 0 37.5076 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2637 0 1 0 38.0077 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2638 0 1 0 38.5078 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2639 0 1 0 39.0079 12.1268 30.002 0 0 -1 0.866 8 6 1 0 +2640 0 1 0 39.508 12.993 30.002 0 0 -1 0.866 8 6 1 0 +2641 0 1 0 0 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2642 0 1 0 0.500101 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2643 0 1 0 1.0002 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2644 0 1 0 1.5003 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2645 0 1 0 2.0004 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2646 0 1 0 2.50051 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2647 0 1 0 3.00061 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2648 0 1 0 3.50071 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2649 0 1 0 4.00081 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2650 0 1 0 4.50091 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2651 0 1 0 5.00101 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2652 0 1 0 5.50111 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2653 0 1 0 6.00121 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2654 0 1 0 6.50132 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2655 0 1 0 7.00142 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2656 0 1 0 7.50152 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2657 0 1 0 8.00162 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2658 0 1 0 8.50172 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2659 0 1 0 9.00182 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2660 0 1 0 9.50192 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2661 0 1 0 10.002 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2662 0 1 0 10.5021 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2663 0 1 0 11.0022 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2664 0 1 0 11.5023 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2665 0 1 0 12.0024 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2666 0 1 0 12.5025 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2667 0 1 0 13.0026 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2668 0 1 0 13.5027 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2669 0 1 0 14.0028 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2670 0 1 0 14.5029 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2671 0 1 0 15.003 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2672 0 1 0 15.5031 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2673 0 1 0 16.0032 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2674 0 1 0 16.5033 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2675 0 1 0 17.0034 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2676 0 1 0 17.5035 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2677 0 1 0 18.0036 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2678 0 1 0 18.5037 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2679 0 1 0 19.0038 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2680 0 1 0 19.5039 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2681 0 1 0 20.004 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2682 0 1 0 20.5041 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2683 0 1 0 21.0042 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2684 0 1 0 21.5043 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2685 0 1 0 22.0045 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2686 0 1 0 22.5046 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2687 0 1 0 23.0047 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2688 0 1 0 23.5048 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2689 0 1 0 24.0049 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2690 0 1 0 24.505 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2691 0 1 0 25.0051 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2692 0 1 0 25.5052 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2693 0 1 0 26.0053 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2694 0 1 0 26.5054 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2695 0 1 0 27.0055 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2696 0 1 0 27.5056 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2697 0 1 0 28.0057 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2698 0 1 0 28.5058 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2699 0 1 0 29.0059 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2700 0 1 0 29.506 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2701 0 1 0 30.0061 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2702 0 1 0 30.5062 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2703 0 1 0 31.0063 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2704 0 1 0 31.5064 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2705 0 1 0 32.0065 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2706 0 1 0 32.5066 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2707 0 1 0 33.0067 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2708 0 1 0 33.5068 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2709 0 1 0 34.0069 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2710 0 1 0 34.507 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2711 0 1 0 35.0071 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2712 0 1 0 35.5072 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2713 0 1 0 36.0073 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2714 0 1 0 36.5074 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2715 0 1 0 37.0075 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2716 0 1 0 37.5076 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2717 0 1 0 38.0077 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2718 0 1 0 38.5078 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2719 0 1 0 39.0079 13.8592 30.002 0 0 -1 0.866 8 6 1 0 +2720 0 1 0 39.508 14.7254 30.002 0 0 -1 0.866 8 6 1 0 +2721 0 1 0 0 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2722 0 1 0 0.500101 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2723 0 1 0 1.0002 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2724 0 1 0 1.5003 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2725 0 1 0 2.0004 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2726 0 1 0 2.50051 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2727 0 1 0 3.00061 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2728 0 1 0 3.50071 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2729 0 1 0 4.00081 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2730 0 1 0 4.50091 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2731 0 1 0 5.00101 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2732 0 1 0 5.50111 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2733 0 1 0 6.00121 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2734 0 1 0 6.50132 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2735 0 1 0 7.00142 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2736 0 1 0 7.50152 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2737 0 1 0 8.00162 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2738 0 1 0 8.50172 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2739 0 1 0 9.00182 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2740 0 1 0 9.50192 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2741 0 1 0 10.002 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2742 0 1 0 10.5021 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2743 0 1 0 11.0022 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2744 0 1 0 11.5023 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2745 0 1 0 12.0024 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2746 0 1 0 12.5025 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2747 0 1 0 13.0026 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2748 0 1 0 13.5027 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2749 0 1 0 14.0028 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2750 0 1 0 14.5029 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2751 0 1 0 15.003 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2752 0 1 0 15.5031 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2753 0 1 0 16.0032 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2754 0 1 0 16.5033 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2755 0 1 0 17.0034 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2756 0 1 0 17.5035 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2757 0 1 0 18.0036 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2758 0 1 0 18.5037 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2759 0 1 0 19.0038 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2760 0 1 0 19.5039 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2761 0 1 0 20.004 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2762 0 1 0 20.5041 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2763 0 1 0 21.0042 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2764 0 1 0 21.5043 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2765 0 1 0 22.0045 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2766 0 1 0 22.5046 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2767 0 1 0 23.0047 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2768 0 1 0 23.5048 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2769 0 1 0 24.0049 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2770 0 1 0 24.505 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2771 0 1 0 25.0051 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2772 0 1 0 25.5052 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2773 0 1 0 26.0053 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2774 0 1 0 26.5054 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2775 0 1 0 27.0055 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2776 0 1 0 27.5056 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2777 0 1 0 28.0057 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2778 0 1 0 28.5058 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2779 0 1 0 29.0059 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2780 0 1 0 29.506 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2781 0 1 0 30.0061 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2782 0 1 0 30.5062 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2783 0 1 0 31.0063 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2784 0 1 0 31.5064 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2785 0 1 0 32.0065 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2786 0 1 0 32.5066 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2787 0 1 0 33.0067 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2788 0 1 0 33.5068 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2789 0 1 0 34.0069 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2790 0 1 0 34.507 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2791 0 1 0 35.0071 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2792 0 1 0 35.5072 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2793 0 1 0 36.0073 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2794 0 1 0 36.5074 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2795 0 1 0 37.0075 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2796 0 1 0 37.5076 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2797 0 1 0 38.0077 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2798 0 1 0 38.5078 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2799 0 1 0 39.0079 15.5916 30.002 0 0 -1 0.866 8 6 1 0 +2800 0 1 0 39.508 16.4578 30.002 0 0 -1 0.866 8 6 1 0 +2801 0 1 0 0 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2802 0 1 0 0.500101 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2803 0 1 0 1.0002 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2804 0 1 0 1.5003 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2805 0 1 0 2.0004 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2806 0 1 0 2.50051 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2807 0 1 0 3.00061 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2808 0 1 0 3.50071 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2809 0 1 0 4.00081 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2810 0 1 0 4.50091 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2811 0 1 0 5.00101 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2812 0 1 0 5.50111 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2813 0 1 0 6.00121 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2814 0 1 0 6.50132 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2815 0 1 0 7.00142 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2816 0 1 0 7.50152 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2817 0 1 0 8.00162 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2818 0 1 0 8.50172 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2819 0 1 0 9.00182 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2820 0 1 0 9.50192 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2821 0 1 0 10.002 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2822 0 1 0 10.5021 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2823 0 1 0 11.0022 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2824 0 1 0 11.5023 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2825 0 1 0 12.0024 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2826 0 1 0 12.5025 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2827 0 1 0 13.0026 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2828 0 1 0 13.5027 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2829 0 1 0 14.0028 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2830 0 1 0 14.5029 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2831 0 1 0 15.003 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2832 0 1 0 15.5031 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2833 0 1 0 16.0032 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2834 0 1 0 16.5033 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2835 0 1 0 17.0034 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2836 0 1 0 17.5035 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2837 0 1 0 18.0036 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2838 0 1 0 18.5037 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2839 0 1 0 19.0038 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2840 0 1 0 19.5039 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2841 0 1 0 20.004 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2842 0 1 0 20.5041 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2843 0 1 0 21.0042 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2844 0 1 0 21.5043 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2845 0 1 0 22.0045 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2846 0 1 0 22.5046 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2847 0 1 0 23.0047 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2848 0 1 0 23.5048 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2849 0 1 0 24.0049 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2850 0 1 0 24.505 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2851 0 1 0 25.0051 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2852 0 1 0 25.5052 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2853 0 1 0 26.0053 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2854 0 1 0 26.5054 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2855 0 1 0 27.0055 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2856 0 1 0 27.5056 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2857 0 1 0 28.0057 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2858 0 1 0 28.5058 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2859 0 1 0 29.0059 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2860 0 1 0 29.506 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2861 0 1 0 30.0061 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2862 0 1 0 30.5062 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2863 0 1 0 31.0063 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2864 0 1 0 31.5064 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2865 0 1 0 32.0065 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2866 0 1 0 32.5066 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2867 0 1 0 33.0067 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2868 0 1 0 33.5068 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2869 0 1 0 34.0069 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2870 0 1 0 34.507 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2871 0 1 0 35.0071 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2872 0 1 0 35.5072 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2873 0 1 0 36.0073 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2874 0 1 0 36.5074 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2875 0 1 0 37.0075 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2876 0 1 0 37.5076 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2877 0 1 0 38.0077 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2878 0 1 0 38.5078 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2879 0 1 0 39.0079 17.324 30.002 0 0 -1 0.866 8 6 1 0 +2880 0 1 0 39.508 18.1902 30.002 0 0 -1 0.866 8 6 1 0 +2881 0 1 0 0 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2882 0 1 0 0.500101 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2883 0 1 0 1.0002 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2884 0 1 0 1.5003 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2885 0 1 0 2.0004 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2886 0 1 0 2.50051 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2887 0 1 0 3.00061 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2888 0 1 0 3.50071 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2889 0 1 0 4.00081 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2890 0 1 0 4.50091 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2891 0 1 0 5.00101 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2892 0 1 0 5.50111 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2893 0 1 0 6.00121 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2894 0 1 0 6.50132 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2895 0 1 0 7.00142 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2896 0 1 0 7.50152 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2897 0 1 0 8.00162 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2898 0 1 0 8.50172 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2899 0 1 0 9.00182 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2900 0 1 0 9.50192 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2901 0 1 0 10.002 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2902 0 1 0 10.5021 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2903 0 1 0 11.0022 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2904 0 1 0 11.5023 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2905 0 1 0 12.0024 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2906 0 1 0 12.5025 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2907 0 1 0 13.0026 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2908 0 1 0 13.5027 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2909 0 1 0 14.0028 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2910 0 1 0 14.5029 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2911 0 1 0 15.003 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2912 0 1 0 15.5031 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2913 0 1 0 16.0032 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2914 0 1 0 16.5033 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2915 0 1 0 17.0034 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2916 0 1 0 17.5035 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2917 0 1 0 18.0036 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2918 0 1 0 18.5037 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2919 0 1 0 19.0038 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2920 0 1 0 19.5039 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2921 0 1 0 20.004 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2922 0 1 0 20.5041 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2923 0 1 0 21.0042 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2924 0 1 0 21.5043 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2925 0 1 0 22.0045 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2926 0 1 0 22.5046 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2927 0 1 0 23.0047 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2928 0 1 0 23.5048 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2929 0 1 0 24.0049 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2930 0 1 0 24.505 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2931 0 1 0 25.0051 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2932 0 1 0 25.5052 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2933 0 1 0 26.0053 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2934 0 1 0 26.5054 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2935 0 1 0 27.0055 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2936 0 1 0 27.5056 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2937 0 1 0 28.0057 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2938 0 1 0 28.5058 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2939 0 1 0 29.0059 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2940 0 1 0 29.506 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2941 0 1 0 30.0061 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2942 0 1 0 30.5062 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2943 0 1 0 31.0063 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2944 0 1 0 31.5064 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2945 0 1 0 32.0065 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2946 0 1 0 32.5066 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2947 0 1 0 33.0067 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2948 0 1 0 33.5068 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2949 0 1 0 34.0069 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2950 0 1 0 34.507 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2951 0 1 0 35.0071 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2952 0 1 0 35.5072 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2953 0 1 0 36.0073 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2954 0 1 0 36.5074 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2955 0 1 0 37.0075 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2956 0 1 0 37.5076 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2957 0 1 0 38.0077 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2958 0 1 0 38.5078 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2959 0 1 0 39.0079 19.0564 30.002 0 0 -1 0.866 8 6 1 0 +2960 0 1 0 39.508 19.9226 30.002 0 0 -1 0.866 8 6 1 0 +2961 0 1 0 0 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2962 0 1 0 0.500101 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2963 0 1 0 1.0002 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2964 0 1 0 1.5003 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2965 0 1 0 2.0004 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2966 0 1 0 2.50051 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2967 0 1 0 3.00061 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2968 0 1 0 3.50071 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2969 0 1 0 4.00081 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2970 0 1 0 4.50091 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2971 0 1 0 5.00101 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2972 0 1 0 5.50111 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2973 0 1 0 6.00121 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2974 0 1 0 6.50132 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2975 0 1 0 7.00142 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2976 0 1 0 7.50152 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2977 0 1 0 8.00162 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2978 0 1 0 8.50172 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2979 0 1 0 9.00182 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2980 0 1 0 9.50192 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2981 0 1 0 10.002 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2982 0 1 0 10.5021 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2983 0 1 0 11.0022 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2984 0 1 0 11.5023 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2985 0 1 0 12.0024 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2986 0 1 0 12.5025 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2987 0 1 0 13.0026 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2988 0 1 0 13.5027 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2989 0 1 0 14.0028 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2990 0 1 0 14.5029 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2991 0 1 0 15.003 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2992 0 1 0 15.5031 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2993 0 1 0 16.0032 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2994 0 1 0 16.5033 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2995 0 1 0 17.0034 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2996 0 1 0 17.5035 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2997 0 1 0 18.0036 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +2998 0 1 0 18.5037 21.655 30.002 0 0 -1 0.866 8 6 1 0 +2999 0 1 0 19.0038 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3000 0 1 0 19.5039 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3001 0 1 0 20.004 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3002 0 1 0 20.5041 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3003 0 1 0 21.0042 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3004 0 1 0 21.5043 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3005 0 1 0 22.0045 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3006 0 1 0 22.5046 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3007 0 1 0 23.0047 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3008 0 1 0 23.5048 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3009 0 1 0 24.0049 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3010 0 1 0 24.505 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3011 0 1 0 25.0051 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3012 0 1 0 25.5052 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3013 0 1 0 26.0053 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3014 0 1 0 26.5054 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3015 0 1 0 27.0055 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3016 0 1 0 27.5056 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3017 0 1 0 28.0057 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3018 0 1 0 28.5058 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3019 0 1 0 29.0059 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3020 0 1 0 29.506 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3021 0 1 0 30.0061 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3022 0 1 0 30.5062 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3023 0 1 0 31.0063 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3024 0 1 0 31.5064 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3025 0 1 0 32.0065 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3026 0 1 0 32.5066 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3027 0 1 0 33.0067 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3028 0 1 0 33.5068 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3029 0 1 0 34.0069 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3030 0 1 0 34.507 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3031 0 1 0 35.0071 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3032 0 1 0 35.5072 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3033 0 1 0 36.0073 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3034 0 1 0 36.5074 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3035 0 1 0 37.0075 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3036 0 1 0 37.5076 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3037 0 1 0 38.0077 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3038 0 1 0 38.5078 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3039 0 1 0 39.0079 20.7888 30.002 0 0 -1 0.866 8 6 1 0 +3040 0 1 0 39.508 21.655 30.002 0 0 -1 0.866 8 6 1 0 +3041 0 1 0 0 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3042 0 1 0 0.500101 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3043 0 1 0 1.0002 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3044 0 1 0 1.5003 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3045 0 1 0 2.0004 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3046 0 1 0 2.50051 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3047 0 1 0 3.00061 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3048 0 1 0 3.50071 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3049 0 1 0 4.00081 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3050 0 1 0 4.50091 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3051 0 1 0 5.00101 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3052 0 1 0 5.50111 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3053 0 1 0 6.00121 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3054 0 1 0 6.50132 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3055 0 1 0 7.00142 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3056 0 1 0 7.50152 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3057 0 1 0 8.00162 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3058 0 1 0 8.50172 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3059 0 1 0 9.00182 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3060 0 1 0 9.50192 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3061 0 1 0 10.002 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3062 0 1 0 10.5021 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3063 0 1 0 11.0022 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3064 0 1 0 11.5023 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3065 0 1 0 12.0024 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3066 0 1 0 12.5025 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3067 0 1 0 13.0026 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3068 0 1 0 13.5027 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3069 0 1 0 14.0028 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3070 0 1 0 14.5029 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3071 0 1 0 15.003 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3072 0 1 0 15.5031 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3073 0 1 0 16.0032 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3074 0 1 0 16.5033 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3075 0 1 0 17.0034 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3076 0 1 0 17.5035 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3077 0 1 0 18.0036 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3078 0 1 0 18.5037 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3079 0 1 0 19.0038 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3080 0 1 0 19.5039 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3081 0 1 0 20.004 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3082 0 1 0 20.5041 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3083 0 1 0 21.0042 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3084 0 1 0 21.5043 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3085 0 1 0 22.0045 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3086 0 1 0 22.5046 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3087 0 1 0 23.0047 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3088 0 1 0 23.5048 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3089 0 1 0 24.0049 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3090 0 1 0 24.505 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3091 0 1 0 25.0051 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3092 0 1 0 25.5052 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3093 0 1 0 26.0053 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3094 0 1 0 26.5054 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3095 0 1 0 27.0055 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3096 0 1 0 27.5056 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3097 0 1 0 28.0057 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3098 0 1 0 28.5058 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3099 0 1 0 29.0059 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3100 0 1 0 29.506 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3101 0 1 0 30.0061 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3102 0 1 0 30.5062 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3103 0 1 0 31.0063 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3104 0 1 0 31.5064 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3105 0 1 0 32.0065 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3106 0 1 0 32.5066 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3107 0 1 0 33.0067 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3108 0 1 0 33.5068 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3109 0 1 0 34.0069 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3110 0 1 0 34.507 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3111 0 1 0 35.0071 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3112 0 1 0 35.5072 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3113 0 1 0 36.0073 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3114 0 1 0 36.5074 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3115 0 1 0 37.0075 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3116 0 1 0 37.5076 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3117 0 1 0 38.0077 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3118 0 1 0 38.5078 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3119 0 1 0 39.0079 22.5212 30.002 0 0 -1 0.866 8 6 1 0 +3120 0 1 0 39.508 23.3874 30.002 0 0 -1 0.866 8 6 1 0 +3121 0 1 0 0 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3122 0 1 0 0.500101 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3123 0 1 0 1.0002 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3124 0 1 0 1.5003 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3125 0 1 0 2.0004 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3126 0 1 0 2.50051 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3127 0 1 0 3.00061 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3128 0 1 0 3.50071 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3129 0 1 0 4.00081 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3130 0 1 0 4.50091 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3131 0 1 0 5.00101 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3132 0 1 0 5.50111 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3133 0 1 0 6.00121 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3134 0 1 0 6.50132 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3135 0 1 0 7.00142 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3136 0 1 0 7.50152 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3137 0 1 0 8.00162 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3138 0 1 0 8.50172 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3139 0 1 0 9.00182 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3140 0 1 0 9.50192 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3141 0 1 0 10.002 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3142 0 1 0 10.5021 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3143 0 1 0 11.0022 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3144 0 1 0 11.5023 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3145 0 1 0 12.0024 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3146 0 1 0 12.5025 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3147 0 1 0 13.0026 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3148 0 1 0 13.5027 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3149 0 1 0 14.0028 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3150 0 1 0 14.5029 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3151 0 1 0 15.003 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3152 0 1 0 15.5031 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3153 0 1 0 16.0032 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3154 0 1 0 16.5033 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3155 0 1 0 17.0034 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3156 0 1 0 17.5035 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3157 0 1 0 18.0036 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3158 0 1 0 18.5037 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3159 0 1 0 19.0038 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3160 0 1 0 19.5039 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3161 0 1 0 20.004 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3162 0 1 0 20.5041 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3163 0 1 0 21.0042 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3164 0 1 0 21.5043 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3165 0 1 0 22.0045 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3166 0 1 0 22.5046 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3167 0 1 0 23.0047 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3168 0 1 0 23.5048 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3169 0 1 0 24.0049 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3170 0 1 0 24.505 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3171 0 1 0 25.0051 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3172 0 1 0 25.5052 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3173 0 1 0 26.0053 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3174 0 1 0 26.5054 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3175 0 1 0 27.0055 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3176 0 1 0 27.5056 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3177 0 1 0 28.0057 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3178 0 1 0 28.5058 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3179 0 1 0 29.0059 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3180 0 1 0 29.506 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3181 0 1 0 30.0061 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3182 0 1 0 30.5062 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3183 0 1 0 31.0063 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3184 0 1 0 31.5064 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3185 0 1 0 32.0065 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3186 0 1 0 32.5066 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3187 0 1 0 33.0067 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3188 0 1 0 33.5068 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3189 0 1 0 34.0069 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3190 0 1 0 34.507 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3191 0 1 0 35.0071 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3192 0 1 0 35.5072 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3193 0 1 0 36.0073 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3194 0 1 0 36.5074 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3195 0 1 0 37.0075 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3196 0 1 0 37.5076 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3197 0 1 0 38.0077 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3198 0 1 0 38.5078 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3199 0 1 0 39.0079 24.2536 30.002 0 0 -1 0.866 8 6 1 0 +3200 0 1 0 39.508 25.1198 30.002 0 0 -1 0.866 8 6 1 0 +3201 0 1 0 0 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3202 0 1 0 0.500101 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3203 0 1 0 1.0002 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3204 0 1 0 1.5003 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3205 0 1 0 2.0004 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3206 0 1 0 2.50051 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3207 0 1 0 3.00061 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3208 0 1 0 3.50071 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3209 0 1 0 4.00081 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3210 0 1 0 4.50091 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3211 0 1 0 5.00101 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3212 0 1 0 5.50111 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3213 0 1 0 6.00121 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3214 0 1 0 6.50132 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3215 0 1 0 7.00142 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3216 0 1 0 7.50152 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3217 0 1 0 8.00162 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3218 0 1 0 8.50172 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3219 0 1 0 9.00182 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3220 0 1 0 9.50192 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3221 0 1 0 10.002 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3222 0 1 0 10.5021 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3223 0 1 0 11.0022 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3224 0 1 0 11.5023 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3225 0 1 0 12.0024 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3226 0 1 0 12.5025 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3227 0 1 0 13.0026 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3228 0 1 0 13.5027 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3229 0 1 0 14.0028 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3230 0 1 0 14.5029 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3231 0 1 0 15.003 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3232 0 1 0 15.5031 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3233 0 1 0 16.0032 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3234 0 1 0 16.5033 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3235 0 1 0 17.0034 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3236 0 1 0 17.5035 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3237 0 1 0 18.0036 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3238 0 1 0 18.5037 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3239 0 1 0 19.0038 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3240 0 1 0 19.5039 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3241 0 1 0 20.004 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3242 0 1 0 20.5041 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3243 0 1 0 21.0042 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3244 0 1 0 21.5043 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3245 0 1 0 22.0045 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3246 0 1 0 22.5046 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3247 0 1 0 23.0047 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3248 0 1 0 23.5048 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3249 0 1 0 24.0049 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3250 0 1 0 24.505 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3251 0 1 0 25.0051 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3252 0 1 0 25.5052 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3253 0 1 0 26.0053 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3254 0 1 0 26.5054 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3255 0 1 0 27.0055 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3256 0 1 0 27.5056 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3257 0 1 0 28.0057 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3258 0 1 0 28.5058 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3259 0 1 0 29.0059 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3260 0 1 0 29.506 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3261 0 1 0 30.0061 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3262 0 1 0 30.5062 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3263 0 1 0 31.0063 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3264 0 1 0 31.5064 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3265 0 1 0 32.0065 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3266 0 1 0 32.5066 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3267 0 1 0 33.0067 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3268 0 1 0 33.5068 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3269 0 1 0 34.0069 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3270 0 1 0 34.507 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3271 0 1 0 35.0071 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3272 0 1 0 35.5072 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3273 0 1 0 36.0073 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3274 0 1 0 36.5074 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3275 0 1 0 37.0075 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3276 0 1 0 37.5076 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3277 0 1 0 38.0077 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3278 0 1 0 38.5078 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3279 0 1 0 39.0079 25.986 30.002 0 0 -1 0.866 8 6 1 0 +3280 0 1 0 39.508 26.8522 30.002 0 0 -1 0.866 8 6 1 0 +3281 0 1 0 0 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3282 0 1 0 0.500101 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3283 0 1 0 1.0002 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3284 0 1 0 1.5003 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3285 0 1 0 2.0004 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3286 0 1 0 2.50051 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3287 0 1 0 3.00061 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3288 0 1 0 3.50071 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3289 0 1 0 4.00081 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3290 0 1 0 4.50091 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3291 0 1 0 5.00101 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3292 0 1 0 5.50111 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3293 0 1 0 6.00121 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3294 0 1 0 6.50132 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3295 0 1 0 7.00142 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3296 0 1 0 7.50152 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3297 0 1 0 8.00162 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3298 0 1 0 8.50172 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3299 0 1 0 9.00182 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3300 0 1 0 9.50192 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3301 0 1 0 10.002 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3302 0 1 0 10.5021 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3303 0 1 0 11.0022 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3304 0 1 0 11.5023 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3305 0 1 0 12.0024 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3306 0 1 0 12.5025 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3307 0 1 0 13.0026 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3308 0 1 0 13.5027 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3309 0 1 0 14.0028 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3310 0 1 0 14.5029 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3311 0 1 0 15.003 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3312 0 1 0 15.5031 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3313 0 1 0 16.0032 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3314 0 1 0 16.5033 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3315 0 1 0 17.0034 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3316 0 1 0 17.5035 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3317 0 1 0 18.0036 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3318 0 1 0 18.5037 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3319 0 1 0 19.0038 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3320 0 1 0 19.5039 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3321 0 1 0 20.004 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3322 0 1 0 20.5041 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3323 0 1 0 21.0042 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3324 0 1 0 21.5043 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3325 0 1 0 22.0045 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3326 0 1 0 22.5046 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3327 0 1 0 23.0047 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3328 0 1 0 23.5048 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3329 0 1 0 24.0049 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3330 0 1 0 24.505 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3331 0 1 0 25.0051 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3332 0 1 0 25.5052 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3333 0 1 0 26.0053 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3334 0 1 0 26.5054 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3335 0 1 0 27.0055 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3336 0 1 0 27.5056 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3337 0 1 0 28.0057 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3338 0 1 0 28.5058 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3339 0 1 0 29.0059 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3340 0 1 0 29.506 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3341 0 1 0 30.0061 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3342 0 1 0 30.5062 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3343 0 1 0 31.0063 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3344 0 1 0 31.5064 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3345 0 1 0 32.0065 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3346 0 1 0 32.5066 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3347 0 1 0 33.0067 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3348 0 1 0 33.5068 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3349 0 1 0 34.0069 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3350 0 1 0 34.507 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3351 0 1 0 35.0071 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3352 0 1 0 35.5072 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3353 0 1 0 36.0073 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3354 0 1 0 36.5074 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3355 0 1 0 37.0075 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3356 0 1 0 37.5076 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3357 0 1 0 38.0077 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3358 0 1 0 38.5078 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3359 0 1 0 39.0079 27.7184 30.002 0 0 -1 0.866 8 6 1 0 +3360 0 1 0 39.508 28.5846 30.002 0 0 -1 0.866 8 6 1 0 +3361 0 1 0 0 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3362 0 1 0 0.500101 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3363 0 1 0 1.0002 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3364 0 1 0 1.5003 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3365 0 1 0 2.0004 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3366 0 1 0 2.50051 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3367 0 1 0 3.00061 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3368 0 1 0 3.50071 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3369 0 1 0 4.00081 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3370 0 1 0 4.50091 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3371 0 1 0 5.00101 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3372 0 1 0 5.50111 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3373 0 1 0 6.00121 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3374 0 1 0 6.50132 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3375 0 1 0 7.00142 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3376 0 1 0 7.50152 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3377 0 1 0 8.00162 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3378 0 1 0 8.50172 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3379 0 1 0 9.00182 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3380 0 1 0 9.50192 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3381 0 1 0 10.002 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3382 0 1 0 10.5021 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3383 0 1 0 11.0022 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3384 0 1 0 11.5023 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3385 0 1 0 12.0024 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3386 0 1 0 12.5025 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3387 0 1 0 13.0026 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3388 0 1 0 13.5027 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3389 0 1 0 14.0028 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3390 0 1 0 14.5029 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3391 0 1 0 15.003 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3392 0 1 0 15.5031 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3393 0 1 0 16.0032 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3394 0 1 0 16.5033 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3395 0 1 0 17.0034 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3396 0 1 0 17.5035 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3397 0 1 0 18.0036 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3398 0 1 0 18.5037 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3399 0 1 0 19.0038 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3400 0 1 0 19.5039 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3401 0 1 0 20.004 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3402 0 1 0 20.5041 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3403 0 1 0 21.0042 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3404 0 1 0 21.5043 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3405 0 1 0 22.0045 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3406 0 1 0 22.5046 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3407 0 1 0 23.0047 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3408 0 1 0 23.5048 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3409 0 1 0 24.0049 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3410 0 1 0 24.505 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3411 0 1 0 25.0051 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3412 0 1 0 25.5052 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3413 0 1 0 26.0053 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3414 0 1 0 26.5054 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3415 0 1 0 27.0055 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3416 0 1 0 27.5056 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3417 0 1 0 28.0057 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3418 0 1 0 28.5058 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3419 0 1 0 29.0059 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3420 0 1 0 29.506 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3421 0 1 0 30.0061 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3422 0 1 0 30.5062 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3423 0 1 0 31.0063 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3424 0 1 0 31.5064 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3425 0 1 0 32.0065 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3426 0 1 0 32.5066 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3427 0 1 0 33.0067 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3428 0 1 0 33.5068 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3429 0 1 0 34.0069 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3430 0 1 0 34.507 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3431 0 1 0 35.0071 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3432 0 1 0 35.5072 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3433 0 1 0 36.0073 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3434 0 1 0 36.5074 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3435 0 1 0 37.0075 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3436 0 1 0 37.5076 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3437 0 1 0 38.0077 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3438 0 1 0 38.5078 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3439 0 1 0 39.0079 29.4508 30.002 0 0 -1 0.866 8 6 1 0 +3440 0 1 0 39.508 30.317 30.002 0 0 -1 0.866 8 6 1 0 +3441 0 1 0 0 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3442 0 1 0 0.500101 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3443 0 1 0 1.0002 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3444 0 1 0 1.5003 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3445 0 1 0 2.0004 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3446 0 1 0 2.50051 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3447 0 1 0 3.00061 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3448 0 1 0 3.50071 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3449 0 1 0 4.00081 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3450 0 1 0 4.50091 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3451 0 1 0 5.00101 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3452 0 1 0 5.50111 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3453 0 1 0 6.00121 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3454 0 1 0 6.50132 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3455 0 1 0 7.00142 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3456 0 1 0 7.50152 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3457 0 1 0 8.00162 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3458 0 1 0 8.50172 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3459 0 1 0 9.00182 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3460 0 1 0 9.50192 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3461 0 1 0 10.002 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3462 0 1 0 10.5021 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3463 0 1 0 11.0022 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3464 0 1 0 11.5023 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3465 0 1 0 12.0024 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3466 0 1 0 12.5025 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3467 0 1 0 13.0026 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3468 0 1 0 13.5027 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3469 0 1 0 14.0028 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3470 0 1 0 14.5029 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3471 0 1 0 15.003 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3472 0 1 0 15.5031 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3473 0 1 0 16.0032 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3474 0 1 0 16.5033 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3475 0 1 0 17.0034 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3476 0 1 0 17.5035 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3477 0 1 0 18.0036 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3478 0 1 0 18.5037 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3479 0 1 0 19.0038 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3480 0 1 0 19.5039 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3481 0 1 0 20.004 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3482 0 1 0 20.5041 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3483 0 1 0 21.0042 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3484 0 1 0 21.5043 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3485 0 1 0 22.0045 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3486 0 1 0 22.5046 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3487 0 1 0 23.0047 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3488 0 1 0 23.5048 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3489 0 1 0 24.0049 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3490 0 1 0 24.505 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3491 0 1 0 25.0051 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3492 0 1 0 25.5052 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3493 0 1 0 26.0053 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3494 0 1 0 26.5054 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3495 0 1 0 27.0055 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3496 0 1 0 27.5056 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3497 0 1 0 28.0057 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3498 0 1 0 28.5058 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3499 0 1 0 29.0059 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3500 0 1 0 29.506 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3501 0 1 0 30.0061 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3502 0 1 0 30.5062 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3503 0 1 0 31.0063 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3504 0 1 0 31.5064 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3505 0 1 0 32.0065 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3506 0 1 0 32.5066 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3507 0 1 0 33.0067 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3508 0 1 0 33.5068 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3509 0 1 0 34.0069 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3510 0 1 0 34.507 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3511 0 1 0 35.0071 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3512 0 1 0 35.5072 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3513 0 1 0 36.0073 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3514 0 1 0 36.5074 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3515 0 1 0 37.0075 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3516 0 1 0 37.5076 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3517 0 1 0 38.0077 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3518 0 1 0 38.5078 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3519 0 1 0 39.0079 31.1832 30.002 0 0 -1 0.866 8 6 1 0 +3520 0 1 0 39.508 32.0494 30.002 0 0 -1 0.866 8 6 1 0 +3521 0 1 0 0 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3522 0 1 0 0.500101 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3523 0 1 0 1.0002 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3524 0 1 0 1.5003 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3525 0 1 0 2.0004 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3526 0 1 0 2.50051 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3527 0 1 0 3.00061 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3528 0 1 0 3.50071 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3529 0 1 0 4.00081 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3530 0 1 0 4.50091 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3531 0 1 0 5.00101 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3532 0 1 0 5.50111 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3533 0 1 0 6.00121 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3534 0 1 0 6.50132 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3535 0 1 0 7.00142 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3536 0 1 0 7.50152 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3537 0 1 0 8.00162 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3538 0 1 0 8.50172 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3539 0 1 0 9.00182 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3540 0 1 0 9.50192 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3541 0 1 0 10.002 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3542 0 1 0 10.5021 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3543 0 1 0 11.0022 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3544 0 1 0 11.5023 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3545 0 1 0 12.0024 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3546 0 1 0 12.5025 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3547 0 1 0 13.0026 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3548 0 1 0 13.5027 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3549 0 1 0 14.0028 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3550 0 1 0 14.5029 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3551 0 1 0 15.003 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3552 0 1 0 15.5031 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3553 0 1 0 16.0032 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3554 0 1 0 16.5033 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3555 0 1 0 17.0034 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3556 0 1 0 17.5035 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3557 0 1 0 18.0036 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3558 0 1 0 18.5037 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3559 0 1 0 19.0038 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3560 0 1 0 19.5039 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3561 0 1 0 20.004 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3562 0 1 0 20.5041 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3563 0 1 0 21.0042 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3564 0 1 0 21.5043 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3565 0 1 0 22.0045 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3566 0 1 0 22.5046 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3567 0 1 0 23.0047 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3568 0 1 0 23.5048 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3569 0 1 0 24.0049 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3570 0 1 0 24.505 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3571 0 1 0 25.0051 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3572 0 1 0 25.5052 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3573 0 1 0 26.0053 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3574 0 1 0 26.5054 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3575 0 1 0 27.0055 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3576 0 1 0 27.5056 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3577 0 1 0 28.0057 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3578 0 1 0 28.5058 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3579 0 1 0 29.0059 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3580 0 1 0 29.506 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3581 0 1 0 30.0061 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3582 0 1 0 30.5062 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3583 0 1 0 31.0063 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3584 0 1 0 31.5064 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3585 0 1 0 32.0065 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3586 0 1 0 32.5066 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3587 0 1 0 33.0067 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3588 0 1 0 33.5068 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3589 0 1 0 34.0069 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3590 0 1 0 34.507 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3591 0 1 0 35.0071 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3592 0 1 0 35.5072 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3593 0 1 0 36.0073 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3594 0 1 0 36.5074 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3595 0 1 0 37.0075 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3596 0 1 0 37.5076 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3597 0 1 0 38.0077 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3598 0 1 0 38.5078 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3599 0 1 0 39.0079 32.9156 30.002 0 0 -1 0.866 8 6 1 0 +3600 0 1 0 39.508 33.7818 30.002 0 0 -1 0.866 8 6 1 0 +3601 0 1 0 0 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3602 0 1 0 0.500101 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3603 0 1 0 1.0002 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3604 0 1 0 1.5003 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3605 0 1 0 2.0004 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3606 0 1 0 2.50051 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3607 0 1 0 3.00061 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3608 0 1 0 3.50071 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3609 0 1 0 4.00081 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3610 0 1 0 4.50091 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3611 0 1 0 5.00101 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3612 0 1 0 5.50111 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3613 0 1 0 6.00121 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3614 0 1 0 6.50132 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3615 0 1 0 7.00142 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3616 0 1 0 7.50152 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3617 0 1 0 8.00162 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3618 0 1 0 8.50172 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3619 0 1 0 9.00182 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3620 0 1 0 9.50192 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3621 0 1 0 10.002 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3622 0 1 0 10.5021 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3623 0 1 0 11.0022 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3624 0 1 0 11.5023 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3625 0 1 0 12.0024 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3626 0 1 0 12.5025 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3627 0 1 0 13.0026 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3628 0 1 0 13.5027 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3629 0 1 0 14.0028 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3630 0 1 0 14.5029 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3631 0 1 0 15.003 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3632 0 1 0 15.5031 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3633 0 1 0 16.0032 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3634 0 1 0 16.5033 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3635 0 1 0 17.0034 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3636 0 1 0 17.5035 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3637 0 1 0 18.0036 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3638 0 1 0 18.5037 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3639 0 1 0 19.0038 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3640 0 1 0 19.5039 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3641 0 1 0 20.004 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3642 0 1 0 20.5041 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3643 0 1 0 21.0042 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3644 0 1 0 21.5043 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3645 0 1 0 22.0045 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3646 0 1 0 22.5046 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3647 0 1 0 23.0047 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3648 0 1 0 23.5048 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3649 0 1 0 24.0049 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3650 0 1 0 24.505 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3651 0 1 0 25.0051 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3652 0 1 0 25.5052 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3653 0 1 0 26.0053 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3654 0 1 0 26.5054 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3655 0 1 0 27.0055 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3656 0 1 0 27.5056 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3657 0 1 0 28.0057 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3658 0 1 0 28.5058 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3659 0 1 0 29.0059 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3660 0 1 0 29.506 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3661 0 1 0 30.0061 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3662 0 1 0 30.5062 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3663 0 1 0 31.0063 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3664 0 1 0 31.5064 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3665 0 1 0 32.0065 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3666 0 1 0 32.5066 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3667 0 1 0 33.0067 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3668 0 1 0 33.5068 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3669 0 1 0 34.0069 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3670 0 1 0 34.507 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3671 0 1 0 35.0071 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3672 0 1 0 35.5072 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3673 0 1 0 36.0073 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3674 0 1 0 36.5074 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3675 0 1 0 37.0075 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3676 0 1 0 37.5076 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3677 0 1 0 38.0077 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3678 0 1 0 38.5078 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3679 0 1 0 39.0079 34.648 30.002 0 0 -1 0.866 8 6 1 0 +3680 0 1 0 39.508 35.5142 30.002 0 0 -1 0.866 8 6 1 0 +3681 0 1 0 0 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3682 0 1 0 0.500101 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3683 0 1 0 1.0002 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3684 0 1 0 1.5003 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3685 0 1 0 2.0004 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3686 0 1 0 2.50051 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3687 0 1 0 3.00061 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3688 0 1 0 3.50071 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3689 0 1 0 4.00081 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3690 0 1 0 4.50091 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3691 0 1 0 5.00101 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3692 0 1 0 5.50111 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3693 0 1 0 6.00121 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3694 0 1 0 6.50132 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3695 0 1 0 7.00142 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3696 0 1 0 7.50152 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3697 0 1 0 8.00162 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3698 0 1 0 8.50172 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3699 0 1 0 9.00182 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3700 0 1 0 9.50192 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3701 0 1 0 10.002 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3702 0 1 0 10.5021 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3703 0 1 0 11.0022 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3704 0 1 0 11.5023 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3705 0 1 0 12.0024 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3706 0 1 0 12.5025 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3707 0 1 0 13.0026 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3708 0 1 0 13.5027 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3709 0 1 0 14.0028 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3710 0 1 0 14.5029 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3711 0 1 0 15.003 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3712 0 1 0 15.5031 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3713 0 1 0 16.0032 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3714 0 1 0 16.5033 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3715 0 1 0 17.0034 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3716 0 1 0 17.5035 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3717 0 1 0 18.0036 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3718 0 1 0 18.5037 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3719 0 1 0 19.0038 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3720 0 1 0 19.5039 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3721 0 1 0 20.004 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3722 0 1 0 20.5041 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3723 0 1 0 21.0042 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3724 0 1 0 21.5043 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3725 0 1 0 22.0045 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3726 0 1 0 22.5046 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3727 0 1 0 23.0047 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3728 0 1 0 23.5048 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3729 0 1 0 24.0049 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3730 0 1 0 24.505 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3731 0 1 0 25.0051 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3732 0 1 0 25.5052 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3733 0 1 0 26.0053 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3734 0 1 0 26.5054 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3735 0 1 0 27.0055 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3736 0 1 0 27.5056 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3737 0 1 0 28.0057 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3738 0 1 0 28.5058 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3739 0 1 0 29.0059 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3740 0 1 0 29.506 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3741 0 1 0 30.0061 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3742 0 1 0 30.5062 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3743 0 1 0 31.0063 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3744 0 1 0 31.5064 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3745 0 1 0 32.0065 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3746 0 1 0 32.5066 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3747 0 1 0 33.0067 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3748 0 1 0 33.5068 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3749 0 1 0 34.0069 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3750 0 1 0 34.507 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3751 0 1 0 35.0071 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3752 0 1 0 35.5072 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3753 0 1 0 36.0073 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3754 0 1 0 36.5074 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3755 0 1 0 37.0075 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3756 0 1 0 37.5076 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3757 0 1 0 38.0077 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3758 0 1 0 38.5078 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3759 0 1 0 39.0079 36.3804 30.002 0 0 -1 0.866 8 6 1 0 +3760 0 1 0 39.508 37.2466 30.002 0 0 -1 0.866 8 6 1 0 +3761 0 1 0 0 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3762 0 1 0 0.500101 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3763 0 1 0 1.0002 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3764 0 1 0 1.5003 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3765 0 1 0 2.0004 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3766 0 1 0 2.50051 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3767 0 1 0 3.00061 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3768 0 1 0 3.50071 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3769 0 1 0 4.00081 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3770 0 1 0 4.50091 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3771 0 1 0 5.00101 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3772 0 1 0 5.50111 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3773 0 1 0 6.00121 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3774 0 1 0 6.50132 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3775 0 1 0 7.00142 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3776 0 1 0 7.50152 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3777 0 1 0 8.00162 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3778 0 1 0 8.50172 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3779 0 1 0 9.00182 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3780 0 1 0 9.50192 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3781 0 1 0 10.002 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3782 0 1 0 10.5021 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3783 0 1 0 11.0022 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3784 0 1 0 11.5023 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3785 0 1 0 12.0024 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3786 0 1 0 12.5025 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3787 0 1 0 13.0026 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3788 0 1 0 13.5027 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3789 0 1 0 14.0028 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3790 0 1 0 14.5029 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3791 0 1 0 15.003 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3792 0 1 0 15.5031 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3793 0 1 0 16.0032 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3794 0 1 0 16.5033 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3795 0 1 0 17.0034 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3796 0 1 0 17.5035 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3797 0 1 0 18.0036 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3798 0 1 0 18.5037 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3799 0 1 0 19.0038 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3800 0 1 0 19.5039 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3801 0 1 0 20.004 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3802 0 1 0 20.5041 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3803 0 1 0 21.0042 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3804 0 1 0 21.5043 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3805 0 1 0 22.0045 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3806 0 1 0 22.5046 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3807 0 1 0 23.0047 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3808 0 1 0 23.5048 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3809 0 1 0 24.0049 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3810 0 1 0 24.505 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3811 0 1 0 25.0051 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3812 0 1 0 25.5052 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3813 0 1 0 26.0053 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3814 0 1 0 26.5054 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3815 0 1 0 27.0055 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3816 0 1 0 27.5056 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3817 0 1 0 28.0057 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3818 0 1 0 28.5058 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3819 0 1 0 29.0059 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3820 0 1 0 29.506 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3821 0 1 0 30.0061 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3822 0 1 0 30.5062 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3823 0 1 0 31.0063 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3824 0 1 0 31.5064 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3825 0 1 0 32.0065 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3826 0 1 0 32.5066 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3827 0 1 0 33.0067 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3828 0 1 0 33.5068 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3829 0 1 0 34.0069 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3830 0 1 0 34.507 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3831 0 1 0 35.0071 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3832 0 1 0 35.5072 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3833 0 1 0 36.0073 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3834 0 1 0 36.5074 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3835 0 1 0 37.0075 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3836 0 1 0 37.5076 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3837 0 1 0 38.0077 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3838 0 1 0 38.5078 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3839 0 1 0 39.0079 38.1128 30.002 0 0 -1 0.866 8 6 1 0 +3840 0 1 0 39.508 38.979 30.002 0 0 -1 0.866 8 6 1 0 +3841 0 1 0 0 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3842 0 1 0 0.500101 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3843 0 1 0 1.0002 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3844 0 1 0 1.5003 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3845 0 1 0 2.0004 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3846 0 1 0 2.50051 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3847 0 1 0 3.00061 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3848 0 1 0 3.50071 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3849 0 1 0 4.00081 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3850 0 1 0 4.50091 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3851 0 1 0 5.00101 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3852 0 1 0 5.50111 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3853 0 1 0 6.00121 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3854 0 1 0 6.50132 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3855 0 1 0 7.00142 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3856 0 1 0 7.50152 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3857 0 1 0 8.00162 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3858 0 1 0 8.50172 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3859 0 1 0 9.00182 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3860 0 1 0 9.50192 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3861 0 1 0 10.002 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3862 0 1 0 10.5021 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3863 0 1 0 11.0022 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3864 0 1 0 11.5023 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3865 0 1 0 12.0024 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3866 0 1 0 12.5025 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3867 0 1 0 13.0026 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3868 0 1 0 13.5027 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3869 0 1 0 14.0028 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3870 0 1 0 14.5029 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3871 0 1 0 15.003 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3872 0 1 0 15.5031 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3873 0 1 0 16.0032 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3874 0 1 0 16.5033 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3875 0 1 0 17.0034 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3876 0 1 0 17.5035 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3877 0 1 0 18.0036 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3878 0 1 0 18.5037 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3879 0 1 0 19.0038 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3880 0 1 0 19.5039 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3881 0 1 0 20.004 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3882 0 1 0 20.5041 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3883 0 1 0 21.0042 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3884 0 1 0 21.5043 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3885 0 1 0 22.0045 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3886 0 1 0 22.5046 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3887 0 1 0 23.0047 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3888 0 1 0 23.5048 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3889 0 1 0 24.0049 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3890 0 1 0 24.505 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3891 0 1 0 25.0051 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3892 0 1 0 25.5052 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3893 0 1 0 26.0053 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3894 0 1 0 26.5054 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3895 0 1 0 27.0055 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3896 0 1 0 27.5056 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3897 0 1 0 28.0057 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3898 0 1 0 28.5058 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3899 0 1 0 29.0059 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3900 0 1 0 29.506 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3901 0 1 0 30.0061 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3902 0 1 0 30.5062 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3903 0 1 0 31.0063 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3904 0 1 0 31.5064 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3905 0 1 0 32.0065 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3906 0 1 0 32.5066 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3907 0 1 0 33.0067 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3908 0 1 0 33.5068 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3909 0 1 0 34.0069 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3910 0 1 0 34.507 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3911 0 1 0 35.0071 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3912 0 1 0 35.5072 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3913 0 1 0 36.0073 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3914 0 1 0 36.5074 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3915 0 1 0 37.0075 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3916 0 1 0 37.5076 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3917 0 1 0 38.0077 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3918 0 1 0 38.5078 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3919 0 1 0 39.0079 39.8452 30.002 0 0 -1 0.866 8 6 1 0 +3920 0 1 0 39.508 40.7114 30.002 0 0 -1 0.866 8 6 1 0 +3921 0 1 0 0 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3922 0 1 0 0.500101 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3923 0 1 0 1.0002 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3924 0 1 0 1.5003 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3925 0 1 0 2.0004 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3926 0 1 0 2.50051 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3927 0 1 0 3.00061 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3928 0 1 0 3.50071 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3929 0 1 0 4.00081 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3930 0 1 0 4.50091 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3931 0 1 0 5.00101 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3932 0 1 0 5.50111 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3933 0 1 0 6.00121 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3934 0 1 0 6.50132 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3935 0 1 0 7.00142 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3936 0 1 0 7.50152 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3937 0 1 0 8.00162 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3938 0 1 0 8.50172 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3939 0 1 0 9.00182 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3940 0 1 0 9.50192 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3941 0 1 0 10.002 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3942 0 1 0 10.5021 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3943 0 1 0 11.0022 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3944 0 1 0 11.5023 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3945 0 1 0 12.0024 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3946 0 1 0 12.5025 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3947 0 1 0 13.0026 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3948 0 1 0 13.5027 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3949 0 1 0 14.0028 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3950 0 1 0 14.5029 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3951 0 1 0 15.003 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3952 0 1 0 15.5031 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3953 0 1 0 16.0032 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3954 0 1 0 16.5033 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3955 0 1 0 17.0034 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3956 0 1 0 17.5035 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3957 0 1 0 18.0036 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3958 0 1 0 18.5037 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3959 0 1 0 19.0038 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3960 0 1 0 19.5039 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3961 0 1 0 20.004 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3962 0 1 0 20.5041 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3963 0 1 0 21.0042 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3964 0 1 0 21.5043 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3965 0 1 0 22.0045 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3966 0 1 0 22.5046 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3967 0 1 0 23.0047 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3968 0 1 0 23.5048 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3969 0 1 0 24.0049 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3970 0 1 0 24.505 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3971 0 1 0 25.0051 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3972 0 1 0 25.5052 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3973 0 1 0 26.0053 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3974 0 1 0 26.5054 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3975 0 1 0 27.0055 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3976 0 1 0 27.5056 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3977 0 1 0 28.0057 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3978 0 1 0 28.5058 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3979 0 1 0 29.0059 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3980 0 1 0 29.506 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3981 0 1 0 30.0061 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3982 0 1 0 30.5062 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3983 0 1 0 31.0063 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3984 0 1 0 31.5064 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3985 0 1 0 32.0065 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3986 0 1 0 32.5066 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3987 0 1 0 33.0067 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3988 0 1 0 33.5068 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3989 0 1 0 34.0069 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3990 0 1 0 34.507 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3991 0 1 0 35.0071 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3992 0 1 0 35.5072 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3993 0 1 0 36.0073 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3994 0 1 0 36.5074 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3995 0 1 0 37.0075 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3996 0 1 0 37.5076 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3997 0 1 0 38.0077 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +3998 0 1 0 38.5078 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +3999 0 1 0 39.0079 41.5776 30.002 0 0 -1 0.866 8 6 1 0 +4000 0 1 0 39.508 42.4438 30.002 0 0 -1 0.866 8 6 1 0 +4001 0 2 1 15 20 15 0 0 1 0.866 8 6 10 0 +4002 0 3 -1 25 20 25 0 0 1 0.866 8 6 10 0 diff --git a/examples/USER/dielectric/data.cylinder b/examples/USER/dielectric/data.cylinder new file mode 100644 index 0000000000..f398e5a666 --- /dev/null +++ b/examples/USER/dielectric/data.cylinder @@ -0,0 +1,3616 @@ +LAMMPS data file: a cylindrical interface along z axis with radius R = 5.0, and an ion away from center line d = 7.0, epsilon in = 80, out = 5, normal vectors pointing outward +3601 atoms +2 atom types + +0 100.0 xlo xhi +0 100.0 ylo yhi +0 100.0 zlo zhi + +Masses + +1 1.0 +2 1.0 + +Atoms # dielectric: id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature + +1 1 1 0 55.0 50.0 0.0 1.0 0.0 0 0.872664625997 -75 42.5 42.5 0.2 +2 1 1 0 54.9240387651 50.8682408883 0.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3 1 1 0 54.6984631039 51.7101007166 0.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +4 1 1 0 54.3301270189 52.5 0.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +5 1 1 0 53.8302222156 53.2139380484 0.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +6 1 1 0 53.2139380484 53.8302222156 0.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +7 1 1 0 52.5 54.3301270189 0.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +8 1 1 0 51.7101007166 54.6984631039 0.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +9 1 1 0 50.8682408883 54.9240387651 0.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +10 1 1 0 50.0 55.0 0.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +11 1 1 0 49.1317591117 54.9240387651 0.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +12 1 1 0 48.2898992834 54.6984631039 0.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +13 1 1 0 47.5 54.3301270189 0.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +14 1 1 0 46.7860619516 53.8302222156 0.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +15 1 1 0 46.1697777844 53.2139380484 0.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +16 1 1 0 45.6698729811 52.5 0.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +17 1 1 0 45.3015368961 51.7101007166 0.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +18 1 1 0 45.0759612349 50.8682408883 0.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +19 1 1 0 45.0 50.0 0.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 +20 1 1 0 45.0759612349 49.1317591117 0.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +21 1 1 0 45.3015368961 48.2898992834 0.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +22 1 1 0 45.6698729811 47.5 0.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +23 1 1 0 46.1697777844 46.7860619516 0.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +24 1 1 0 46.7860619516 46.1697777844 0.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +25 1 1 0 47.5 45.6698729811 0.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +26 1 1 0 48.2898992834 45.3015368961 0.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +27 1 1 0 49.1317591117 45.0759612349 0.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +28 1 1 0 50.0 45.0 0.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +29 1 1 0 50.8682408883 45.0759612349 0.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +30 1 1 0 51.7101007166 45.3015368961 0.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +31 1 1 0 52.5 45.6698729811 0.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +32 1 1 0 53.2139380484 46.1697777844 0.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +33 1 1 0 53.8302222156 46.7860619516 0.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +34 1 1 0 54.3301270189 47.5 0.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +35 1 1 0 54.6984631039 48.2898992834 0.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +36 1 1 0 54.9240387651 49.1317591117 0.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +37 1 1 0 54.9809734905 50.4357787137 1.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +38 1 1 0 54.8296291314 51.2940952255 1.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +39 1 1 0 54.5315389352 52.1130913087 1.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +40 1 1 0 54.0957602214 52.8678821818 1.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +41 1 1 0 53.5355339059 53.5355339059 1.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +42 1 1 0 52.8678821818 54.0957602214 1.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +43 1 1 0 52.1130913087 54.5315389352 1.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +44 1 1 0 51.2940952255 54.8296291314 1.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +45 1 1 0 50.4357787137 54.9809734905 1.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +46 1 1 0 49.5642212863 54.9809734905 1.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +47 1 1 0 48.7059047745 54.8296291314 1.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +48 1 1 0 47.8869086913 54.5315389352 1.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +49 1 1 0 47.1321178182 54.0957602214 1.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +50 1 1 0 46.4644660941 53.5355339059 1.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +51 1 1 0 45.9042397786 52.8678821818 1.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +52 1 1 0 45.4684610648 52.1130913087 1.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +53 1 1 0 45.1703708686 51.2940952255 1.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +54 1 1 0 45.0190265095 50.4357787137 1.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +55 1 1 0 45.0190265095 49.5642212863 1.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +56 1 1 0 45.1703708686 48.7059047745 1.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +57 1 1 0 45.4684610648 47.8869086913 1.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +58 1 1 0 45.9042397786 47.1321178182 1.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +59 1 1 0 46.4644660941 46.4644660941 1.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +60 1 1 0 47.1321178182 45.9042397786 1.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +61 1 1 0 47.8869086913 45.4684610648 1.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +62 1 1 0 48.7059047745 45.1703708686 1.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +63 1 1 0 49.5642212863 45.0190265095 1.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +64 1 1 0 50.4357787137 45.0190265095 1.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +65 1 1 0 51.2940952255 45.1703708686 1.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +66 1 1 0 52.1130913087 45.4684610648 1.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +67 1 1 0 52.8678821818 45.9042397786 1.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +68 1 1 0 53.5355339059 46.4644660941 1.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +69 1 1 0 54.0957602214 47.1321178182 1.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +70 1 1 0 54.5315389352 47.8869086913 1.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +71 1 1 0 54.8296291314 48.7059047745 1.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +72 1 1 0 54.9809734905 49.5642212863 1.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +73 1 1 0 54.9240387651 50.8682408883 2.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +74 1 1 0 54.6984631039 51.7101007166 2.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +75 1 1 0 54.3301270189 52.5 2.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +76 1 1 0 53.8302222156 53.2139380484 2.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +77 1 1 0 53.2139380484 53.8302222156 2.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +78 1 1 0 52.5 54.3301270189 2.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +79 1 1 0 51.7101007166 54.6984631039 2.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +80 1 1 0 50.8682408883 54.9240387651 2.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +81 1 1 0 50.0 55.0 2.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +82 1 1 0 49.1317591117 54.9240387651 2.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +83 1 1 0 48.2898992834 54.6984631039 2.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +84 1 1 0 47.5 54.3301270189 2.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +85 1 1 0 46.7860619516 53.8302222156 2.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +86 1 1 0 46.1697777844 53.2139380484 2.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +87 1 1 0 45.6698729811 52.5 2.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +88 1 1 0 45.3015368961 51.7101007166 2.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +89 1 1 0 45.0759612349 50.8682408883 2.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +90 1 1 0 45.0 50.0 2.0 -1.0 5.66553889765e-16 0 0.872664625997 -75 42.5 42.5 0.2 +91 1 1 0 45.0759612349 49.1317591117 2.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +92 1 1 0 45.3015368961 48.2898992834 2.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +93 1 1 0 45.6698729811 47.5 2.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +94 1 1 0 46.1697777844 46.7860619516 2.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +95 1 1 0 46.7860619516 46.1697777844 2.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +96 1 1 0 47.5 45.6698729811 2.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +97 1 1 0 48.2898992834 45.3015368961 2.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +98 1 1 0 49.1317591117 45.0759612349 2.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +99 1 1 0 50.0 45.0 2.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +100 1 1 0 50.8682408883 45.0759612349 2.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +101 1 1 0 51.7101007166 45.3015368961 2.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +102 1 1 0 52.5 45.6698729811 2.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +103 1 1 0 53.2139380484 46.1697777844 2.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +104 1 1 0 53.8302222156 46.7860619516 2.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +105 1 1 0 54.3301270189 47.5 2.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +106 1 1 0 54.6984631039 48.2898992834 2.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +107 1 1 0 54.9240387651 49.1317591117 2.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +108 1 1 0 55.0 50.0 2.0 1.0 -2.44929359829e-16 0 0.872664625997 -75 42.5 42.5 0.2 +109 1 1 0 54.8296291314 51.2940952255 3.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +110 1 1 0 54.5315389352 52.1130913087 3.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +111 1 1 0 54.0957602214 52.8678821818 3.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +112 1 1 0 53.5355339059 53.5355339059 3.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +113 1 1 0 52.8678821818 54.0957602214 3.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +114 1 1 0 52.1130913087 54.5315389352 3.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +115 1 1 0 51.2940952255 54.8296291314 3.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +116 1 1 0 50.4357787137 54.9809734905 3.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +117 1 1 0 49.5642212863 54.9809734905 3.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +118 1 1 0 48.7059047745 54.8296291314 3.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +119 1 1 0 47.8869086913 54.5315389352 3.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +120 1 1 0 47.1321178182 54.0957602214 3.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +121 1 1 0 46.4644660941 53.5355339059 3.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +122 1 1 0 45.9042397786 52.8678821818 3.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +123 1 1 0 45.4684610648 52.1130913087 3.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +124 1 1 0 45.1703708686 51.2940952255 3.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +125 1 1 0 45.0190265095 50.4357787137 3.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +126 1 1 0 45.0190265095 49.5642212863 3.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +127 1 1 0 45.1703708686 48.7059047745 3.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +128 1 1 0 45.4684610648 47.8869086913 3.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +129 1 1 0 45.9042397786 47.1321178182 3.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +130 1 1 0 46.4644660941 46.4644660941 3.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +131 1 1 0 47.1321178182 45.9042397786 3.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +132 1 1 0 47.8869086913 45.4684610648 3.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +133 1 1 0 48.7059047745 45.1703708686 3.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +134 1 1 0 49.5642212863 45.0190265095 3.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +135 1 1 0 50.4357787137 45.0190265095 3.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +136 1 1 0 51.2940952255 45.1703708686 3.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +137 1 1 0 52.1130913087 45.4684610648 3.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +138 1 1 0 52.8678821818 45.9042397786 3.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +139 1 1 0 53.5355339059 46.4644660941 3.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +140 1 1 0 54.0957602214 47.1321178182 3.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +141 1 1 0 54.5315389352 47.8869086913 3.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +142 1 1 0 54.8296291314 48.7059047745 3.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +143 1 1 0 54.9809734905 49.5642212863 3.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +144 1 1 0 54.9809734905 50.4357787137 3.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +145 1 1 0 54.6984631039 51.7101007166 4.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +146 1 1 0 54.3301270189 52.5 4.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +147 1 1 0 53.8302222156 53.2139380484 4.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +148 1 1 0 53.2139380484 53.8302222156 4.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +149 1 1 0 52.5 54.3301270189 4.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +150 1 1 0 51.7101007166 54.6984631039 4.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +151 1 1 0 50.8682408883 54.9240387651 4.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +152 1 1 0 50.0 55.0 4.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +153 1 1 0 49.1317591117 54.9240387651 4.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +154 1 1 0 48.2898992834 54.6984631039 4.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +155 1 1 0 47.5 54.3301270189 4.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +156 1 1 0 46.7860619516 53.8302222156 4.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +157 1 1 0 46.1697777844 53.2139380484 4.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +158 1 1 0 45.6698729811 52.5 4.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +159 1 1 0 45.3015368961 51.7101007166 4.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +160 1 1 0 45.0759612349 50.8682408883 4.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +161 1 1 0 45.0 50.0 4.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 +162 1 1 0 45.0759612349 49.1317591117 4.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +163 1 1 0 45.3015368961 48.2898992834 4.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +164 1 1 0 45.6698729811 47.5 4.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +165 1 1 0 46.1697777844 46.7860619516 4.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +166 1 1 0 46.7860619516 46.1697777844 4.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +167 1 1 0 47.5 45.6698729811 4.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +168 1 1 0 48.2898992834 45.3015368961 4.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +169 1 1 0 49.1317591117 45.0759612349 4.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +170 1 1 0 50.0 45.0 4.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +171 1 1 0 50.8682408883 45.0759612349 4.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +172 1 1 0 51.7101007166 45.3015368961 4.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +173 1 1 0 52.5 45.6698729811 4.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +174 1 1 0 53.2139380484 46.1697777844 4.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +175 1 1 0 53.8302222156 46.7860619516 4.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +176 1 1 0 54.3301270189 47.5 4.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +177 1 1 0 54.6984631039 48.2898992834 4.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +178 1 1 0 54.9240387651 49.1317591117 4.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +179 1 1 0 55.0 50.0 4.0 1.0 -1.13310777953e-15 0 0.872664625997 -75 42.5 42.5 0.2 +180 1 1 0 54.9240387651 50.8682408883 4.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +181 1 1 0 54.5315389352 52.1130913087 5.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +182 1 1 0 54.0957602214 52.8678821818 5.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +183 1 1 0 53.5355339059 53.5355339059 5.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +184 1 1 0 52.8678821818 54.0957602214 5.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +185 1 1 0 52.1130913087 54.5315389352 5.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +186 1 1 0 51.2940952255 54.8296291314 5.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +187 1 1 0 50.4357787137 54.9809734905 5.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +188 1 1 0 49.5642212863 54.9809734905 5.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +189 1 1 0 48.7059047745 54.8296291314 5.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +190 1 1 0 47.8869086913 54.5315389352 5.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +191 1 1 0 47.1321178182 54.0957602214 5.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +192 1 1 0 46.4644660941 53.5355339059 5.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +193 1 1 0 45.9042397786 52.8678821818 5.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +194 1 1 0 45.4684610648 52.1130913087 5.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +195 1 1 0 45.1703708686 51.2940952255 5.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +196 1 1 0 45.0190265095 50.4357787137 5.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +197 1 1 0 45.0190265095 49.5642212863 5.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +198 1 1 0 45.1703708686 48.7059047745 5.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +199 1 1 0 45.4684610648 47.8869086913 5.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +200 1 1 0 45.9042397786 47.1321178182 5.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +201 1 1 0 46.4644660941 46.4644660941 5.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +202 1 1 0 47.1321178182 45.9042397786 5.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +203 1 1 0 47.8869086913 45.4684610648 5.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +204 1 1 0 48.7059047745 45.1703708686 5.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +205 1 1 0 49.5642212863 45.0190265095 5.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +206 1 1 0 50.4357787137 45.0190265095 5.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +207 1 1 0 51.2940952255 45.1703708686 5.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +208 1 1 0 52.1130913087 45.4684610648 5.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +209 1 1 0 52.8678821818 45.9042397786 5.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +210 1 1 0 53.5355339059 46.4644660941 5.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +211 1 1 0 54.0957602214 47.1321178182 5.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +212 1 1 0 54.5315389352 47.8869086913 5.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +213 1 1 0 54.8296291314 48.7059047745 5.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +214 1 1 0 54.9809734905 49.5642212863 5.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +215 1 1 0 54.9809734905 50.4357787137 5.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +216 1 1 0 54.8296291314 51.2940952255 5.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +217 1 1 0 54.3301270189 52.5 6.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +218 1 1 0 53.8302222156 53.2139380484 6.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +219 1 1 0 53.2139380484 53.8302222156 6.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +220 1 1 0 52.5 54.3301270189 6.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +221 1 1 0 51.7101007166 54.6984631039 6.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +222 1 1 0 50.8682408883 54.9240387651 6.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +223 1 1 0 50.0 55.0 6.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +224 1 1 0 49.1317591117 54.9240387651 6.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +225 1 1 0 48.2898992834 54.6984631039 6.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +226 1 1 0 47.5 54.3301270189 6.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +227 1 1 0 46.7860619516 53.8302222156 6.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +228 1 1 0 46.1697777844 53.2139380484 6.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +229 1 1 0 45.6698729811 52.5 6.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +230 1 1 0 45.3015368961 51.7101007166 6.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +231 1 1 0 45.0759612349 50.8682408883 6.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +232 1 1 0 45.0 50.0 6.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 +233 1 1 0 45.0759612349 49.1317591117 6.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +234 1 1 0 45.3015368961 48.2898992834 6.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +235 1 1 0 45.6698729811 47.5 6.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +236 1 1 0 46.1697777844 46.7860619516 6.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +237 1 1 0 46.7860619516 46.1697777844 6.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +238 1 1 0 47.5 45.6698729811 6.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +239 1 1 0 48.2898992834 45.3015368961 6.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +240 1 1 0 49.1317591117 45.0759612349 6.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +241 1 1 0 50.0 45.0 6.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +242 1 1 0 50.8682408883 45.0759612349 6.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +243 1 1 0 51.7101007166 45.3015368961 6.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +244 1 1 0 52.5 45.6698729811 6.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +245 1 1 0 53.2139380484 46.1697777844 6.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +246 1 1 0 53.8302222156 46.7860619516 6.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +247 1 1 0 54.3301270189 47.5 6.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +248 1 1 0 54.6984631039 48.2898992834 6.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +249 1 1 0 54.9240387651 49.1317591117 6.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +250 1 1 0 55.0 50.0 6.0 1.0 -2.44929359829e-16 0 0.872664625997 -75 42.5 42.5 0.2 +251 1 1 0 54.9240387651 50.8682408883 6.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +252 1 1 0 54.6984631039 51.7101007166 6.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +253 1 1 0 54.0957602214 52.8678821818 7.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +254 1 1 0 53.5355339059 53.5355339059 7.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +255 1 1 0 52.8678821818 54.0957602214 7.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +256 1 1 0 52.1130913087 54.5315389352 7.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +257 1 1 0 51.2940952255 54.8296291314 7.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +258 1 1 0 50.4357787137 54.9809734905 7.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +259 1 1 0 49.5642212863 54.9809734905 7.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +260 1 1 0 48.7059047745 54.8296291314 7.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +261 1 1 0 47.8869086913 54.5315389352 7.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +262 1 1 0 47.1321178182 54.0957602214 7.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +263 1 1 0 46.4644660941 53.5355339059 7.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +264 1 1 0 45.9042397786 52.8678821818 7.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +265 1 1 0 45.4684610648 52.1130913087 7.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +266 1 1 0 45.1703708686 51.2940952255 7.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +267 1 1 0 45.0190265095 50.4357787137 7.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +268 1 1 0 45.0190265095 49.5642212863 7.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +269 1 1 0 45.1703708686 48.7059047745 7.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +270 1 1 0 45.4684610648 47.8869086913 7.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +271 1 1 0 45.9042397786 47.1321178182 7.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +272 1 1 0 46.4644660941 46.4644660941 7.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +273 1 1 0 47.1321178182 45.9042397786 7.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +274 1 1 0 47.8869086913 45.4684610648 7.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +275 1 1 0 48.7059047745 45.1703708686 7.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +276 1 1 0 49.5642212863 45.0190265095 7.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +277 1 1 0 50.4357787137 45.0190265095 7.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +278 1 1 0 51.2940952255 45.1703708686 7.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +279 1 1 0 52.1130913087 45.4684610648 7.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +280 1 1 0 52.8678821818 45.9042397786 7.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +281 1 1 0 53.5355339059 46.4644660941 7.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +282 1 1 0 54.0957602214 47.1321178182 7.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +283 1 1 0 54.5315389352 47.8869086913 7.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +284 1 1 0 54.8296291314 48.7059047745 7.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +285 1 1 0 54.9809734905 49.5642212863 7.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +286 1 1 0 54.9809734905 50.4357787137 7.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +287 1 1 0 54.8296291314 51.2940952255 7.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +288 1 1 0 54.5315389352 52.1130913087 7.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +289 1 1 0 53.8302222156 53.2139380484 8.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +290 1 1 0 53.2139380484 53.8302222156 8.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +291 1 1 0 52.5 54.3301270189 8.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +292 1 1 0 51.7101007166 54.6984631039 8.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +293 1 1 0 50.8682408883 54.9240387651 8.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +294 1 1 0 50.0 55.0 8.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +295 1 1 0 49.1317591117 54.9240387651 8.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +296 1 1 0 48.2898992834 54.6984631039 8.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +297 1 1 0 47.5 54.3301270189 8.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +298 1 1 0 46.7860619516 53.8302222156 8.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +299 1 1 0 46.1697777844 53.2139380484 8.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +300 1 1 0 45.6698729811 52.5 8.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +301 1 1 0 45.3015368961 51.7101007166 8.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +302 1 1 0 45.0759612349 50.8682408883 8.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +303 1 1 0 45.0 50.0 8.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 +304 1 1 0 45.0759612349 49.1317591117 8.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +305 1 1 0 45.3015368961 48.2898992834 8.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +306 1 1 0 45.6698729811 47.5 8.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +307 1 1 0 46.1697777844 46.7860619516 8.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +308 1 1 0 46.7860619516 46.1697777844 8.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +309 1 1 0 47.5 45.6698729811 8.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +310 1 1 0 48.2898992834 45.3015368961 8.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +311 1 1 0 49.1317591117 45.0759612349 8.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +312 1 1 0 50.0 45.0 8.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +313 1 1 0 50.8682408883 45.0759612349 8.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +314 1 1 0 51.7101007166 45.3015368961 8.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +315 1 1 0 52.5 45.6698729811 8.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +316 1 1 0 53.2139380484 46.1697777844 8.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +317 1 1 0 53.8302222156 46.7860619516 8.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +318 1 1 0 54.3301270189 47.5 8.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +319 1 1 0 54.6984631039 48.2898992834 8.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +320 1 1 0 54.9240387651 49.1317591117 8.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +321 1 1 0 55.0 50.0 8.0 1.0 -2.44929359829e-16 0 0.872664625997 -75 42.5 42.5 0.2 +322 1 1 0 54.9240387651 50.8682408883 8.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +323 1 1 0 54.6984631039 51.7101007166 8.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +324 1 1 0 54.3301270189 52.5 8.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +325 1 1 0 53.5355339059 53.5355339059 9.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +326 1 1 0 52.8678821818 54.0957602214 9.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +327 1 1 0 52.1130913087 54.5315389352 9.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +328 1 1 0 51.2940952255 54.8296291314 9.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +329 1 1 0 50.4357787137 54.9809734905 9.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +330 1 1 0 49.5642212863 54.9809734905 9.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +331 1 1 0 48.7059047745 54.8296291314 9.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +332 1 1 0 47.8869086913 54.5315389352 9.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +333 1 1 0 47.1321178182 54.0957602214 9.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +334 1 1 0 46.4644660941 53.5355339059 9.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +335 1 1 0 45.9042397786 52.8678821818 9.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +336 1 1 0 45.4684610648 52.1130913087 9.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +337 1 1 0 45.1703708686 51.2940952255 9.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +338 1 1 0 45.0190265095 50.4357787137 9.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +339 1 1 0 45.0190265095 49.5642212863 9.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +340 1 1 0 45.1703708686 48.7059047745 9.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +341 1 1 0 45.4684610648 47.8869086913 9.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +342 1 1 0 45.9042397786 47.1321178182 9.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +343 1 1 0 46.4644660941 46.4644660941 9.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +344 1 1 0 47.1321178182 45.9042397786 9.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +345 1 1 0 47.8869086913 45.4684610648 9.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +346 1 1 0 48.7059047745 45.1703708686 9.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +347 1 1 0 49.5642212863 45.0190265095 9.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +348 1 1 0 50.4357787137 45.0190265095 9.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +349 1 1 0 51.2940952255 45.1703708686 9.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +350 1 1 0 52.1130913087 45.4684610648 9.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +351 1 1 0 52.8678821818 45.9042397786 9.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +352 1 1 0 53.5355339059 46.4644660941 9.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +353 1 1 0 54.0957602214 47.1321178182 9.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +354 1 1 0 54.5315389352 47.8869086913 9.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +355 1 1 0 54.8296291314 48.7059047745 9.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +356 1 1 0 54.9809734905 49.5642212863 9.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +357 1 1 0 54.9809734905 50.4357787137 9.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +358 1 1 0 54.8296291314 51.2940952255 9.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +359 1 1 0 54.5315389352 52.1130913087 9.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +360 1 1 0 54.0957602214 52.8678821818 9.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +361 1 1 0 53.2139380484 53.8302222156 10.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +362 1 1 0 52.5 54.3301270189 10.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +363 1 1 0 51.7101007166 54.6984631039 10.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +364 1 1 0 50.8682408883 54.9240387651 10.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +365 1 1 0 50.0 55.0 10.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +366 1 1 0 49.1317591117 54.9240387651 10.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +367 1 1 0 48.2898992834 54.6984631039 10.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +368 1 1 0 47.5 54.3301270189 10.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +369 1 1 0 46.7860619516 53.8302222156 10.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +370 1 1 0 46.1697777844 53.2139380484 10.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +371 1 1 0 45.6698729811 52.5 10.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +372 1 1 0 45.3015368961 51.7101007166 10.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +373 1 1 0 45.0759612349 50.8682408883 10.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +374 1 1 0 45.0 50.0 10.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 +375 1 1 0 45.0759612349 49.1317591117 10.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +376 1 1 0 45.3015368961 48.2898992834 10.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +377 1 1 0 45.6698729811 47.5 10.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +378 1 1 0 46.1697777844 46.7860619516 10.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +379 1 1 0 46.7860619516 46.1697777844 10.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +380 1 1 0 47.5 45.6698729811 10.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +381 1 1 0 48.2898992834 45.3015368961 10.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +382 1 1 0 49.1317591117 45.0759612349 10.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +383 1 1 0 50.0 45.0 10.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +384 1 1 0 50.8682408883 45.0759612349 10.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +385 1 1 0 51.7101007166 45.3015368961 10.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +386 1 1 0 52.5 45.6698729811 10.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +387 1 1 0 53.2139380484 46.1697777844 10.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +388 1 1 0 53.8302222156 46.7860619516 10.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +389 1 1 0 54.3301270189 47.5 10.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +390 1 1 0 54.6984631039 48.2898992834 10.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +391 1 1 0 54.9240387651 49.1317591117 10.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +392 1 1 0 55.0 50.0 10.0 1.0 -2.44929359829e-16 0 0.872664625997 -75 42.5 42.5 0.2 +393 1 1 0 54.9240387651 50.8682408883 10.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +394 1 1 0 54.6984631039 51.7101007166 10.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +395 1 1 0 54.3301270189 52.5 10.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +396 1 1 0 53.8302222156 53.2139380484 10.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +397 1 1 0 52.8678821818 54.0957602214 11.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +398 1 1 0 52.1130913087 54.5315389352 11.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +399 1 1 0 51.2940952255 54.8296291314 11.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +400 1 1 0 50.4357787137 54.9809734905 11.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +401 1 1 0 49.5642212863 54.9809734905 11.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +402 1 1 0 48.7059047745 54.8296291314 11.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +403 1 1 0 47.8869086913 54.5315389352 11.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +404 1 1 0 47.1321178182 54.0957602214 11.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +405 1 1 0 46.4644660941 53.5355339059 11.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +406 1 1 0 45.9042397786 52.8678821818 11.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +407 1 1 0 45.4684610648 52.1130913087 11.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +408 1 1 0 45.1703708686 51.2940952255 11.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +409 1 1 0 45.0190265095 50.4357787137 11.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +410 1 1 0 45.0190265095 49.5642212863 11.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +411 1 1 0 45.1703708686 48.7059047745 11.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +412 1 1 0 45.4684610648 47.8869086913 11.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +413 1 1 0 45.9042397786 47.1321178182 11.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +414 1 1 0 46.4644660941 46.4644660941 11.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +415 1 1 0 47.1321178182 45.9042397786 11.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +416 1 1 0 47.8869086913 45.4684610648 11.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +417 1 1 0 48.7059047745 45.1703708686 11.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +418 1 1 0 49.5642212863 45.0190265095 11.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +419 1 1 0 50.4357787137 45.0190265095 11.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +420 1 1 0 51.2940952255 45.1703708686 11.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +421 1 1 0 52.1130913087 45.4684610648 11.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +422 1 1 0 52.8678821818 45.9042397786 11.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +423 1 1 0 53.5355339059 46.4644660941 11.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +424 1 1 0 54.0957602214 47.1321178182 11.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +425 1 1 0 54.5315389352 47.8869086913 11.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +426 1 1 0 54.8296291314 48.7059047745 11.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +427 1 1 0 54.9809734905 49.5642212863 11.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +428 1 1 0 54.9809734905 50.4357787137 11.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +429 1 1 0 54.8296291314 51.2940952255 11.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +430 1 1 0 54.5315389352 52.1130913087 11.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +431 1 1 0 54.0957602214 52.8678821818 11.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +432 1 1 0 53.5355339059 53.5355339059 11.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +433 1 1 0 52.5 54.3301270189 12.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +434 1 1 0 51.7101007166 54.6984631039 12.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +435 1 1 0 50.8682408883 54.9240387651 12.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +436 1 1 0 50.0 55.0 12.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +437 1 1 0 49.1317591117 54.9240387651 12.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +438 1 1 0 48.2898992834 54.6984631039 12.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +439 1 1 0 47.5 54.3301270189 12.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +440 1 1 0 46.7860619516 53.8302222156 12.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +441 1 1 0 46.1697777844 53.2139380484 12.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +442 1 1 0 45.6698729811 52.5 12.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +443 1 1 0 45.3015368961 51.7101007166 12.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +444 1 1 0 45.0759612349 50.8682408883 12.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +445 1 1 0 45.0 50.0 12.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 +446 1 1 0 45.0759612349 49.1317591117 12.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +447 1 1 0 45.3015368961 48.2898992834 12.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +448 1 1 0 45.6698729811 47.5 12.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +449 1 1 0 46.1697777844 46.7860619516 12.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +450 1 1 0 46.7860619516 46.1697777844 12.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +451 1 1 0 47.5 45.6698729811 12.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +452 1 1 0 48.2898992834 45.3015368961 12.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +453 1 1 0 49.1317591117 45.0759612349 12.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +454 1 1 0 50.0 45.0 12.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +455 1 1 0 50.8682408883 45.0759612349 12.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +456 1 1 0 51.7101007166 45.3015368961 12.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +457 1 1 0 52.5 45.6698729811 12.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +458 1 1 0 53.2139380484 46.1697777844 12.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +459 1 1 0 53.8302222156 46.7860619516 12.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +460 1 1 0 54.3301270189 47.5 12.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +461 1 1 0 54.6984631039 48.2898992834 12.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +462 1 1 0 54.9240387651 49.1317591117 12.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +463 1 1 0 55.0 50.0 12.0 1.0 -2.44929359829e-16 0 0.872664625997 -75 42.5 42.5 0.2 +464 1 1 0 54.9240387651 50.8682408883 12.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +465 1 1 0 54.6984631039 51.7101007166 12.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +466 1 1 0 54.3301270189 52.5 12.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +467 1 1 0 53.8302222156 53.2139380484 12.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +468 1 1 0 53.2139380484 53.8302222156 12.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +469 1 1 0 52.1130913087 54.5315389352 13.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +470 1 1 0 51.2940952255 54.8296291314 13.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +471 1 1 0 50.4357787137 54.9809734905 13.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +472 1 1 0 49.5642212863 54.9809734905 13.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +473 1 1 0 48.7059047745 54.8296291314 13.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +474 1 1 0 47.8869086913 54.5315389352 13.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +475 1 1 0 47.1321178182 54.0957602214 13.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +476 1 1 0 46.4644660941 53.5355339059 13.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +477 1 1 0 45.9042397786 52.8678821818 13.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +478 1 1 0 45.4684610648 52.1130913087 13.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +479 1 1 0 45.1703708686 51.2940952255 13.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +480 1 1 0 45.0190265095 50.4357787137 13.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +481 1 1 0 45.0190265095 49.5642212863 13.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +482 1 1 0 45.1703708686 48.7059047745 13.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +483 1 1 0 45.4684610648 47.8869086913 13.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +484 1 1 0 45.9042397786 47.1321178182 13.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +485 1 1 0 46.4644660941 46.4644660941 13.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +486 1 1 0 47.1321178182 45.9042397786 13.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +487 1 1 0 47.8869086913 45.4684610648 13.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +488 1 1 0 48.7059047745 45.1703708686 13.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +489 1 1 0 49.5642212863 45.0190265095 13.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +490 1 1 0 50.4357787137 45.0190265095 13.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +491 1 1 0 51.2940952255 45.1703708686 13.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +492 1 1 0 52.1130913087 45.4684610648 13.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +493 1 1 0 52.8678821818 45.9042397786 13.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +494 1 1 0 53.5355339059 46.4644660941 13.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +495 1 1 0 54.0957602214 47.1321178182 13.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +496 1 1 0 54.5315389352 47.8869086913 13.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +497 1 1 0 54.8296291314 48.7059047745 13.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +498 1 1 0 54.9809734905 49.5642212863 13.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +499 1 1 0 54.9809734905 50.4357787137 13.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +500 1 1 0 54.8296291314 51.2940952255 13.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +501 1 1 0 54.5315389352 52.1130913087 13.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +502 1 1 0 54.0957602214 52.8678821818 13.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +503 1 1 0 53.5355339059 53.5355339059 13.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +504 1 1 0 52.8678821818 54.0957602214 13.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +505 1 1 0 51.7101007166 54.6984631039 14.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +506 1 1 0 50.8682408883 54.9240387651 14.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +507 1 1 0 50.0 55.0 14.0 2.83276944882e-16 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +508 1 1 0 49.1317591117 54.9240387651 14.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +509 1 1 0 48.2898992834 54.6984631039 14.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +510 1 1 0 47.5 54.3301270189 14.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +511 1 1 0 46.7860619516 53.8302222156 14.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +512 1 1 0 46.1697777844 53.2139380484 14.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +513 1 1 0 45.6698729811 52.5 14.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +514 1 1 0 45.3015368961 51.7101007166 14.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +515 1 1 0 45.0759612349 50.8682408883 14.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +516 1 1 0 45.0 50.0 14.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 +517 1 1 0 45.0759612349 49.1317591117 14.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +518 1 1 0 45.3015368961 48.2898992834 14.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +519 1 1 0 45.6698729811 47.5 14.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +520 1 1 0 46.1697777844 46.7860619516 14.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +521 1 1 0 46.7860619516 46.1697777844 14.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +522 1 1 0 47.5 45.6698729811 14.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +523 1 1 0 48.2898992834 45.3015368961 14.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +524 1 1 0 49.1317591117 45.0759612349 14.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +525 1 1 0 50.0 45.0 14.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +526 1 1 0 50.8682408883 45.0759612349 14.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +527 1 1 0 51.7101007166 45.3015368961 14.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +528 1 1 0 52.5 45.6698729811 14.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +529 1 1 0 53.2139380484 46.1697777844 14.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +530 1 1 0 53.8302222156 46.7860619516 14.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +531 1 1 0 54.3301270189 47.5 14.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +532 1 1 0 54.6984631039 48.2898992834 14.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +533 1 1 0 54.9240387651 49.1317591117 14.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +534 1 1 0 55.0 50.0 14.0 1.0 -1.13310777953e-15 0 0.872664625997 -75 42.5 42.5 0.2 +535 1 1 0 54.9240387651 50.8682408883 14.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +536 1 1 0 54.6984631039 51.7101007166 14.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +537 1 1 0 54.3301270189 52.5 14.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +538 1 1 0 53.8302222156 53.2139380484 14.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +539 1 1 0 53.2139380484 53.8302222156 14.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +540 1 1 0 52.5 54.3301270189 14.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +541 1 1 0 51.2940952255 54.8296291314 15.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +542 1 1 0 50.4357787137 54.9809734905 15.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +543 1 1 0 49.5642212863 54.9809734905 15.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +544 1 1 0 48.7059047745 54.8296291314 15.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +545 1 1 0 47.8869086913 54.5315389352 15.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +546 1 1 0 47.1321178182 54.0957602214 15.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +547 1 1 0 46.4644660941 53.5355339059 15.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +548 1 1 0 45.9042397786 52.8678821818 15.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +549 1 1 0 45.4684610648 52.1130913087 15.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +550 1 1 0 45.1703708686 51.2940952255 15.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +551 1 1 0 45.0190265095 50.4357787137 15.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +552 1 1 0 45.0190265095 49.5642212863 15.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +553 1 1 0 45.1703708686 48.7059047745 15.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +554 1 1 0 45.4684610648 47.8869086913 15.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +555 1 1 0 45.9042397786 47.1321178182 15.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +556 1 1 0 46.4644660941 46.4644660941 15.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +557 1 1 0 47.1321178182 45.9042397786 15.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +558 1 1 0 47.8869086913 45.4684610648 15.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +559 1 1 0 48.7059047745 45.1703708686 15.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +560 1 1 0 49.5642212863 45.0190265095 15.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +561 1 1 0 50.4357787137 45.0190265095 15.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +562 1 1 0 51.2940952255 45.1703708686 15.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +563 1 1 0 52.1130913087 45.4684610648 15.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +564 1 1 0 52.8678821818 45.9042397786 15.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +565 1 1 0 53.5355339059 46.4644660941 15.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +566 1 1 0 54.0957602214 47.1321178182 15.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +567 1 1 0 54.5315389352 47.8869086913 15.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +568 1 1 0 54.8296291314 48.7059047745 15.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +569 1 1 0 54.9809734905 49.5642212863 15.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +570 1 1 0 54.9809734905 50.4357787137 15.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +571 1 1 0 54.8296291314 51.2940952255 15.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +572 1 1 0 54.5315389352 52.1130913087 15.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +573 1 1 0 54.0957602214 52.8678821818 15.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +574 1 1 0 53.5355339059 53.5355339059 15.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +575 1 1 0 52.8678821818 54.0957602214 15.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +576 1 1 0 52.1130913087 54.5315389352 15.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +577 1 1 0 50.8682408883 54.9240387651 16.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +578 1 1 0 50.0 55.0 16.0 5.05321549807e-16 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +579 1 1 0 49.1317591117 54.9240387651 16.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +580 1 1 0 48.2898992834 54.6984631039 16.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +581 1 1 0 47.5 54.3301270189 16.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +582 1 1 0 46.7860619516 53.8302222156 16.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +583 1 1 0 46.1697777844 53.2139380484 16.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +584 1 1 0 45.6698729811 52.5 16.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +585 1 1 0 45.3015368961 51.7101007166 16.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +586 1 1 0 45.0759612349 50.8682408883 16.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +587 1 1 0 45.0 50.0 16.0 -1.0 5.66553889765e-16 0 0.872664625997 -75 42.5 42.5 0.2 +588 1 1 0 45.0759612349 49.1317591117 16.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +589 1 1 0 45.3015368961 48.2898992834 16.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +590 1 1 0 45.6698729811 47.5 16.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +591 1 1 0 46.1697777844 46.7860619516 16.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +592 1 1 0 46.7860619516 46.1697777844 16.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +593 1 1 0 47.5 45.6698729811 16.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +594 1 1 0 48.2898992834 45.3015368961 16.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +595 1 1 0 49.1317591117 45.0759612349 16.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +596 1 1 0 50.0 45.0 16.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +597 1 1 0 50.8682408883 45.0759612349 16.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +598 1 1 0 51.7101007166 45.3015368961 16.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +599 1 1 0 52.5 45.6698729811 16.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +600 1 1 0 53.2139380484 46.1697777844 16.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +601 1 1 0 53.8302222156 46.7860619516 16.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +602 1 1 0 54.3301270189 47.5 16.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +603 1 1 0 54.6984631039 48.2898992834 16.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +604 1 1 0 54.9240387651 49.1317591117 16.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +605 1 1 0 55.0 50.0 16.0 1.0 -1.13310777953e-15 0 0.872664625997 -75 42.5 42.5 0.2 +606 1 1 0 54.9240387651 50.8682408883 16.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +607 1 1 0 54.6984631039 51.7101007166 16.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +608 1 1 0 54.3301270189 52.5 16.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +609 1 1 0 53.8302222156 53.2139380484 16.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +610 1 1 0 53.2139380484 53.8302222156 16.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +611 1 1 0 52.5 54.3301270189 16.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +612 1 1 0 51.7101007166 54.6984631039 16.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +613 1 1 0 50.4357787137 54.9809734905 17.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +614 1 1 0 49.5642212863 54.9809734905 17.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +615 1 1 0 48.7059047745 54.8296291314 17.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +616 1 1 0 47.8869086913 54.5315389352 17.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +617 1 1 0 47.1321178182 54.0957602214 17.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +618 1 1 0 46.4644660941 53.5355339059 17.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +619 1 1 0 45.9042397786 52.8678821818 17.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +620 1 1 0 45.4684610648 52.1130913087 17.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +621 1 1 0 45.1703708686 51.2940952255 17.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +622 1 1 0 45.0190265095 50.4357787137 17.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +623 1 1 0 45.0190265095 49.5642212863 17.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +624 1 1 0 45.1703708686 48.7059047745 17.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +625 1 1 0 45.4684610648 47.8869086913 17.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +626 1 1 0 45.9042397786 47.1321178182 17.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +627 1 1 0 46.4644660941 46.4644660941 17.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +628 1 1 0 47.1321178182 45.9042397786 17.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +629 1 1 0 47.8869086913 45.4684610648 17.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +630 1 1 0 48.7059047745 45.1703708686 17.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +631 1 1 0 49.5642212863 45.0190265095 17.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +632 1 1 0 50.4357787137 45.0190265095 17.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +633 1 1 0 51.2940952255 45.1703708686 17.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +634 1 1 0 52.1130913087 45.4684610648 17.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +635 1 1 0 52.8678821818 45.9042397786 17.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +636 1 1 0 53.5355339059 46.4644660941 17.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +637 1 1 0 54.0957602214 47.1321178182 17.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +638 1 1 0 54.5315389352 47.8869086913 17.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +639 1 1 0 54.8296291314 48.7059047745 17.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +640 1 1 0 54.9809734905 49.5642212863 17.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +641 1 1 0 54.9809734905 50.4357787137 17.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +642 1 1 0 54.8296291314 51.2940952255 17.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +643 1 1 0 54.5315389352 52.1130913087 17.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +644 1 1 0 54.0957602214 52.8678821818 17.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +645 1 1 0 53.5355339059 53.5355339059 17.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +646 1 1 0 52.8678821818 54.0957602214 17.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +647 1 1 0 52.1130913087 54.5315389352 17.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +648 1 1 0 51.2940952255 54.8296291314 17.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +649 1 1 0 50.0 55.0 18.0 7.27366154732e-16 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +650 1 1 0 49.1317591117 54.9240387651 18.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +651 1 1 0 48.2898992834 54.6984631039 18.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +652 1 1 0 47.5 54.3301270189 18.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +653 1 1 0 46.7860619516 53.8302222156 18.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +654 1 1 0 46.1697777844 53.2139380484 18.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +655 1 1 0 45.6698729811 52.5 18.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +656 1 1 0 45.3015368961 51.7101007166 18.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +657 1 1 0 45.0759612349 50.8682408883 18.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +658 1 1 0 45.0 50.0 18.0 -1.0 1.01064309961e-15 0 0.872664625997 -75 42.5 42.5 0.2 +659 1 1 0 45.0759612349 49.1317591117 18.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +660 1 1 0 45.3015368961 48.2898992834 18.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +661 1 1 0 45.6698729811 47.5 18.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +662 1 1 0 46.1697777844 46.7860619516 18.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +663 1 1 0 46.7860619516 46.1697777844 18.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +664 1 1 0 47.5 45.6698729811 18.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +665 1 1 0 48.2898992834 45.3015368961 18.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +666 1 1 0 49.1317591117 45.0759612349 18.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +667 1 1 0 50.0 45.0 18.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +668 1 1 0 50.8682408883 45.0759612349 18.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +669 1 1 0 51.7101007166 45.3015368961 18.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +670 1 1 0 52.5 45.6698729811 18.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +671 1 1 0 53.2139380484 46.1697777844 18.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +672 1 1 0 53.8302222156 46.7860619516 18.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +673 1 1 0 54.3301270189 47.5 18.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +674 1 1 0 54.6984631039 48.2898992834 18.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +675 1 1 0 54.9240387651 49.1317591117 18.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +676 1 1 0 55.0 50.0 18.0 1.0 -1.13310777953e-15 0 0.872664625997 -75 42.5 42.5 0.2 +677 1 1 0 54.9240387651 50.8682408883 18.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +678 1 1 0 54.6984631039 51.7101007166 18.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +679 1 1 0 54.3301270189 52.5 18.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +680 1 1 0 53.8302222156 53.2139380484 18.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +681 1 1 0 53.2139380484 53.8302222156 18.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +682 1 1 0 52.5 54.3301270189 18.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +683 1 1 0 51.7101007166 54.6984631039 18.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +684 1 1 0 50.8682408883 54.9240387651 18.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +685 1 1 0 49.5642212863 54.9809734905 19.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +686 1 1 0 48.7059047745 54.8296291314 19.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +687 1 1 0 47.8869086913 54.5315389352 19.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +688 1 1 0 47.1321178182 54.0957602214 19.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +689 1 1 0 46.4644660941 53.5355339059 19.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +690 1 1 0 45.9042397786 52.8678821818 19.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +691 1 1 0 45.4684610648 52.1130913087 19.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +692 1 1 0 45.1703708686 51.2940952255 19.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +693 1 1 0 45.0190265095 50.4357787137 19.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +694 1 1 0 45.0190265095 49.5642212863 19.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +695 1 1 0 45.1703708686 48.7059047745 19.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +696 1 1 0 45.4684610648 47.8869086913 19.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +697 1 1 0 45.9042397786 47.1321178182 19.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +698 1 1 0 46.4644660941 46.4644660941 19.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +699 1 1 0 47.1321178182 45.9042397786 19.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +700 1 1 0 47.8869086913 45.4684610648 19.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +701 1 1 0 48.7059047745 45.1703708686 19.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +702 1 1 0 49.5642212863 45.0190265095 19.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +703 1 1 0 50.4357787137 45.0190265095 19.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +704 1 1 0 51.2940952255 45.1703708686 19.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +705 1 1 0 52.1130913087 45.4684610648 19.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +706 1 1 0 52.8678821818 45.9042397786 19.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +707 1 1 0 53.5355339059 46.4644660941 19.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +708 1 1 0 54.0957602214 47.1321178182 19.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +709 1 1 0 54.5315389352 47.8869086913 19.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +710 1 1 0 54.8296291314 48.7059047745 19.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +711 1 1 0 54.9809734905 49.5642212863 19.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +712 1 1 0 54.9809734905 50.4357787137 19.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +713 1 1 0 54.8296291314 51.2940952255 19.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +714 1 1 0 54.5315389352 52.1130913087 19.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +715 1 1 0 54.0957602214 52.8678821818 19.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +716 1 1 0 53.5355339059 53.5355339059 19.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +717 1 1 0 52.8678821818 54.0957602214 19.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +718 1 1 0 52.1130913087 54.5315389352 19.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +719 1 1 0 51.2940952255 54.8296291314 19.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +720 1 1 0 50.4357787137 54.9809734905 19.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +721 1 1 0 49.1317591117 54.9240387651 20.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +722 1 1 0 48.2898992834 54.6984631039 20.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +723 1 1 0 47.5 54.3301270189 20.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +724 1 1 0 46.7860619516 53.8302222156 20.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +725 1 1 0 46.1697777844 53.2139380484 20.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +726 1 1 0 45.6698729811 52.5 20.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +727 1 1 0 45.3015368961 51.7101007166 20.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +728 1 1 0 45.0759612349 50.8682408883 20.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +729 1 1 0 45.0 50.0 20.0 -1.0 1.01064309961e-15 0 0.872664625997 -75 42.5 42.5 0.2 +730 1 1 0 45.0759612349 49.1317591117 20.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +731 1 1 0 45.3015368961 48.2898992834 20.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +732 1 1 0 45.6698729811 47.5 20.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +733 1 1 0 46.1697777844 46.7860619516 20.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +734 1 1 0 46.7860619516 46.1697777844 20.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +735 1 1 0 47.5 45.6698729811 20.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +736 1 1 0 48.2898992834 45.3015368961 20.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +737 1 1 0 49.1317591117 45.0759612349 20.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +738 1 1 0 50.0 45.0 20.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +739 1 1 0 50.8682408883 45.0759612349 20.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +740 1 1 0 51.7101007166 45.3015368961 20.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +741 1 1 0 52.5 45.6698729811 20.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +742 1 1 0 53.2139380484 46.1697777844 20.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +743 1 1 0 53.8302222156 46.7860619516 20.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +744 1 1 0 54.3301270189 47.5 20.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +745 1 1 0 54.6984631039 48.2898992834 20.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +746 1 1 0 54.9240387651 49.1317591117 20.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +747 1 1 0 55.0 50.0 20.0 1.0 -1.13310777953e-15 0 0.872664625997 -75 42.5 42.5 0.2 +748 1 1 0 54.9240387651 50.8682408883 20.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +749 1 1 0 54.6984631039 51.7101007166 20.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +750 1 1 0 54.3301270189 52.5 20.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +751 1 1 0 53.8302222156 53.2139380484 20.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +752 1 1 0 53.2139380484 53.8302222156 20.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +753 1 1 0 52.5 54.3301270189 20.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +754 1 1 0 51.7101007166 54.6984631039 20.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +755 1 1 0 50.8682408883 54.9240387651 20.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +756 1 1 0 50.0 55.0 20.0 1.19434011949e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +757 1 1 0 48.7059047745 54.8296291314 21.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +758 1 1 0 47.8869086913 54.5315389352 21.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +759 1 1 0 47.1321178182 54.0957602214 21.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +760 1 1 0 46.4644660941 53.5355339059 21.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +761 1 1 0 45.9042397786 52.8678821818 21.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +762 1 1 0 45.4684610648 52.1130913087 21.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +763 1 1 0 45.1703708686 51.2940952255 21.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +764 1 1 0 45.0190265095 50.4357787137 21.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +765 1 1 0 45.0190265095 49.5642212863 21.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +766 1 1 0 45.1703708686 48.7059047745 21.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +767 1 1 0 45.4684610648 47.8869086913 21.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +768 1 1 0 45.9042397786 47.1321178182 21.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +769 1 1 0 46.4644660941 46.4644660941 21.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +770 1 1 0 47.1321178182 45.9042397786 21.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +771 1 1 0 47.8869086913 45.4684610648 21.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +772 1 1 0 48.7059047745 45.1703708686 21.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +773 1 1 0 49.5642212863 45.0190265095 21.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +774 1 1 0 50.4357787137 45.0190265095 21.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +775 1 1 0 51.2940952255 45.1703708686 21.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +776 1 1 0 52.1130913087 45.4684610648 21.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +777 1 1 0 52.8678821818 45.9042397786 21.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +778 1 1 0 53.5355339059 46.4644660941 21.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +779 1 1 0 54.0957602214 47.1321178182 21.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +780 1 1 0 54.5315389352 47.8869086913 21.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +781 1 1 0 54.8296291314 48.7059047745 21.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +782 1 1 0 54.9809734905 49.5642212863 21.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +783 1 1 0 54.9809734905 50.4357787137 21.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +784 1 1 0 54.8296291314 51.2940952255 21.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +785 1 1 0 54.5315389352 52.1130913087 21.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +786 1 1 0 54.0957602214 52.8678821818 21.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +787 1 1 0 53.5355339059 53.5355339059 21.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +788 1 1 0 52.8678821818 54.0957602214 21.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +789 1 1 0 52.1130913087 54.5315389352 21.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +790 1 1 0 51.2940952255 54.8296291314 21.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +791 1 1 0 50.4357787137 54.9809734905 21.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +792 1 1 0 49.5642212863 54.9809734905 21.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +793 1 1 0 48.2898992834 54.6984631039 22.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +794 1 1 0 47.5 54.3301270189 22.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +795 1 1 0 46.7860619516 53.8302222156 22.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +796 1 1 0 46.1697777844 53.2139380484 22.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +797 1 1 0 45.6698729811 52.5 22.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +798 1 1 0 45.3015368961 51.7101007166 22.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +799 1 1 0 45.0759612349 50.8682408883 22.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +800 1 1 0 45.0 50.0 22.0 -1.0 1.01064309961e-15 0 0.872664625997 -75 42.5 42.5 0.2 +801 1 1 0 45.0759612349 49.1317591117 22.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +802 1 1 0 45.3015368961 48.2898992834 22.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +803 1 1 0 45.6698729811 47.5 22.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +804 1 1 0 46.1697777844 46.7860619516 22.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +805 1 1 0 46.7860619516 46.1697777844 22.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +806 1 1 0 47.5 45.6698729811 22.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +807 1 1 0 48.2898992834 45.3015368961 22.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +808 1 1 0 49.1317591117 45.0759612349 22.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +809 1 1 0 50.0 45.0 22.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +810 1 1 0 50.8682408883 45.0759612349 22.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +811 1 1 0 51.7101007166 45.3015368961 22.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +812 1 1 0 52.5 45.6698729811 22.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +813 1 1 0 53.2139380484 46.1697777844 22.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +814 1 1 0 53.8302222156 46.7860619516 22.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +815 1 1 0 54.3301270189 47.5 22.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +816 1 1 0 54.6984631039 48.2898992834 22.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +817 1 1 0 54.9240387651 49.1317591117 22.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +818 1 1 0 55.0 50.0 22.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 +819 1 1 0 54.9240387651 50.8682408883 22.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +820 1 1 0 54.6984631039 51.7101007166 22.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +821 1 1 0 54.3301270189 52.5 22.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +822 1 1 0 53.8302222156 53.2139380484 22.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +823 1 1 0 53.2139380484 53.8302222156 22.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +824 1 1 0 52.5 54.3301270189 22.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +825 1 1 0 51.7101007166 54.6984631039 22.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +826 1 1 0 50.8682408883 54.9240387651 22.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +827 1 1 0 50.0 55.0 22.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +828 1 1 0 49.1317591117 54.9240387651 22.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +829 1 1 0 47.8869086913 54.5315389352 23.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +830 1 1 0 47.1321178182 54.0957602214 23.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +831 1 1 0 46.4644660941 53.5355339059 23.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +832 1 1 0 45.9042397786 52.8678821818 23.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +833 1 1 0 45.4684610648 52.1130913087 23.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +834 1 1 0 45.1703708686 51.2940952255 23.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +835 1 1 0 45.0190265095 50.4357787137 23.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +836 1 1 0 45.0190265095 49.5642212863 23.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +837 1 1 0 45.1703708686 48.7059047745 23.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +838 1 1 0 45.4684610648 47.8869086913 23.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +839 1 1 0 45.9042397786 47.1321178182 23.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +840 1 1 0 46.4644660941 46.4644660941 23.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +841 1 1 0 47.1321178182 45.9042397786 23.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +842 1 1 0 47.8869086913 45.4684610648 23.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +843 1 1 0 48.7059047745 45.1703708686 23.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +844 1 1 0 49.5642212863 45.0190265095 23.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +845 1 1 0 50.4357787137 45.0190265095 23.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +846 1 1 0 51.2940952255 45.1703708686 23.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +847 1 1 0 52.1130913087 45.4684610648 23.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +848 1 1 0 52.8678821818 45.9042397786 23.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +849 1 1 0 53.5355339059 46.4644660941 23.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +850 1 1 0 54.0957602214 47.1321178182 23.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +851 1 1 0 54.5315389352 47.8869086913 23.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +852 1 1 0 54.8296291314 48.7059047745 23.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +853 1 1 0 54.9809734905 49.5642212863 23.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +854 1 1 0 54.9809734905 50.4357787137 23.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +855 1 1 0 54.8296291314 51.2940952255 23.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +856 1 1 0 54.5315389352 52.1130913087 23.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +857 1 1 0 54.0957602214 52.8678821818 23.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +858 1 1 0 53.5355339059 53.5355339059 23.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +859 1 1 0 52.8678821818 54.0957602214 23.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +860 1 1 0 52.1130913087 54.5315389352 23.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +861 1 1 0 51.2940952255 54.8296291314 23.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +862 1 1 0 50.4357787137 54.9809734905 23.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +863 1 1 0 49.5642212863 54.9809734905 23.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +864 1 1 0 48.7059047745 54.8296291314 23.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +865 1 1 0 47.5 54.3301270189 24.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +866 1 1 0 46.7860619516 53.8302222156 24.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +867 1 1 0 46.1697777844 53.2139380484 24.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +868 1 1 0 45.6698729811 52.5 24.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +869 1 1 0 45.3015368961 51.7101007166 24.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +870 1 1 0 45.0759612349 50.8682408883 24.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +871 1 1 0 45.0 50.0 24.0 -1.0 1.01064309961e-15 0 0.872664625997 -75 42.5 42.5 0.2 +872 1 1 0 45.0759612349 49.1317591117 24.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +873 1 1 0 45.3015368961 48.2898992834 24.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +874 1 1 0 45.6698729811 47.5 24.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +875 1 1 0 46.1697777844 46.7860619516 24.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +876 1 1 0 46.7860619516 46.1697777844 24.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +877 1 1 0 47.5 45.6698729811 24.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +878 1 1 0 48.2898992834 45.3015368961 24.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +879 1 1 0 49.1317591117 45.0759612349 24.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +880 1 1 0 50.0 45.0 24.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +881 1 1 0 50.8682408883 45.0759612349 24.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +882 1 1 0 51.7101007166 45.3015368961 24.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +883 1 1 0 52.5 45.6698729811 24.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +884 1 1 0 53.2139380484 46.1697777844 24.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +885 1 1 0 53.8302222156 46.7860619516 24.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +886 1 1 0 54.3301270189 47.5 24.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +887 1 1 0 54.6984631039 48.2898992834 24.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +888 1 1 0 54.9240387651 49.1317591117 24.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +889 1 1 0 55.0 50.0 24.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 +890 1 1 0 54.9240387651 50.8682408883 24.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +891 1 1 0 54.6984631039 51.7101007166 24.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +892 1 1 0 54.3301270189 52.5 24.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +893 1 1 0 53.8302222156 53.2139380484 24.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +894 1 1 0 53.2139380484 53.8302222156 24.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +895 1 1 0 52.5 54.3301270189 24.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +896 1 1 0 51.7101007166 54.6984631039 24.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +897 1 1 0 50.8682408883 54.9240387651 24.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +898 1 1 0 50.0 55.0 24.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +899 1 1 0 49.1317591117 54.9240387651 24.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +900 1 1 0 48.2898992834 54.6984631039 24.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +901 1 1 0 47.1321178182 54.0957602214 25.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +902 1 1 0 46.4644660941 53.5355339059 25.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +903 1 1 0 45.9042397786 52.8678821818 25.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +904 1 1 0 45.4684610648 52.1130913087 25.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +905 1 1 0 45.1703708686 51.2940952255 25.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +906 1 1 0 45.0190265095 50.4357787137 25.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +907 1 1 0 45.0190265095 49.5642212863 25.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +908 1 1 0 45.1703708686 48.7059047745 25.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +909 1 1 0 45.4684610648 47.8869086913 25.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +910 1 1 0 45.9042397786 47.1321178182 25.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +911 1 1 0 46.4644660941 46.4644660941 25.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +912 1 1 0 47.1321178182 45.9042397786 25.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +913 1 1 0 47.8869086913 45.4684610648 25.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +914 1 1 0 48.7059047745 45.1703708686 25.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +915 1 1 0 49.5642212863 45.0190265095 25.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +916 1 1 0 50.4357787137 45.0190265095 25.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +917 1 1 0 51.2940952255 45.1703708686 25.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +918 1 1 0 52.1130913087 45.4684610648 25.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +919 1 1 0 52.8678821818 45.9042397786 25.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +920 1 1 0 53.5355339059 46.4644660941 25.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +921 1 1 0 54.0957602214 47.1321178182 25.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +922 1 1 0 54.5315389352 47.8869086913 25.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +923 1 1 0 54.8296291314 48.7059047745 25.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +924 1 1 0 54.9809734905 49.5642212863 25.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +925 1 1 0 54.9809734905 50.4357787137 25.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +926 1 1 0 54.8296291314 51.2940952255 25.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +927 1 1 0 54.5315389352 52.1130913087 25.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +928 1 1 0 54.0957602214 52.8678821818 25.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +929 1 1 0 53.5355339059 53.5355339059 25.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +930 1 1 0 52.8678821818 54.0957602214 25.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +931 1 1 0 52.1130913087 54.5315389352 25.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +932 1 1 0 51.2940952255 54.8296291314 25.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +933 1 1 0 50.4357787137 54.9809734905 25.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +934 1 1 0 49.5642212863 54.9809734905 25.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +935 1 1 0 48.7059047745 54.8296291314 25.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +936 1 1 0 47.8869086913 54.5315389352 25.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +937 1 1 0 46.7860619516 53.8302222156 26.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +938 1 1 0 46.1697777844 53.2139380484 26.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +939 1 1 0 45.6698729811 52.5 26.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +940 1 1 0 45.3015368961 51.7101007166 26.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +941 1 1 0 45.0759612349 50.8682408883 26.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +942 1 1 0 45.0 50.0 26.0 -1.0 1.45473230946e-15 0 0.872664625997 -75 42.5 42.5 0.2 +943 1 1 0 45.0759612349 49.1317591117 26.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +944 1 1 0 45.3015368961 48.2898992834 26.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +945 1 1 0 45.6698729811 47.5 26.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +946 1 1 0 46.1697777844 46.7860619516 26.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +947 1 1 0 46.7860619516 46.1697777844 26.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +948 1 1 0 47.5 45.6698729811 26.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +949 1 1 0 48.2898992834 45.3015368961 26.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +950 1 1 0 49.1317591117 45.0759612349 26.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +951 1 1 0 50.0 45.0 26.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +952 1 1 0 50.8682408883 45.0759612349 26.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +953 1 1 0 51.7101007166 45.3015368961 26.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +954 1 1 0 52.5 45.6698729811 26.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +955 1 1 0 53.2139380484 46.1697777844 26.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +956 1 1 0 53.8302222156 46.7860619516 26.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +957 1 1 0 54.3301270189 47.5 26.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +958 1 1 0 54.6984631039 48.2898992834 26.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +959 1 1 0 54.9240387651 49.1317591117 26.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +960 1 1 0 55.0 50.0 26.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 +961 1 1 0 54.9240387651 50.8682408883 26.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +962 1 1 0 54.6984631039 51.7101007166 26.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +963 1 1 0 54.3301270189 52.5 26.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +964 1 1 0 53.8302222156 53.2139380484 26.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +965 1 1 0 53.2139380484 53.8302222156 26.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +966 1 1 0 52.5 54.3301270189 26.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +967 1 1 0 51.7101007166 54.6984631039 26.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +968 1 1 0 50.8682408883 54.9240387651 26.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +969 1 1 0 50.0 55.0 26.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +970 1 1 0 49.1317591117 54.9240387651 26.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +971 1 1 0 48.2898992834 54.6984631039 26.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +972 1 1 0 47.5 54.3301270189 26.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +973 1 1 0 46.4644660941 53.5355339059 27.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +974 1 1 0 45.9042397786 52.8678821818 27.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +975 1 1 0 45.4684610648 52.1130913087 27.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +976 1 1 0 45.1703708686 51.2940952255 27.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +977 1 1 0 45.0190265095 50.4357787137 27.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +978 1 1 0 45.0190265095 49.5642212863 27.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +979 1 1 0 45.1703708686 48.7059047745 27.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +980 1 1 0 45.4684610648 47.8869086913 27.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +981 1 1 0 45.9042397786 47.1321178182 27.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +982 1 1 0 46.4644660941 46.4644660941 27.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +983 1 1 0 47.1321178182 45.9042397786 27.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +984 1 1 0 47.8869086913 45.4684610648 27.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +985 1 1 0 48.7059047745 45.1703708686 27.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +986 1 1 0 49.5642212863 45.0190265095 27.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +987 1 1 0 50.4357787137 45.0190265095 27.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +988 1 1 0 51.2940952255 45.1703708686 27.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +989 1 1 0 52.1130913087 45.4684610648 27.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +990 1 1 0 52.8678821818 45.9042397786 27.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +991 1 1 0 53.5355339059 46.4644660941 27.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +992 1 1 0 54.0957602214 47.1321178182 27.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +993 1 1 0 54.5315389352 47.8869086913 27.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +994 1 1 0 54.8296291314 48.7059047745 27.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +995 1 1 0 54.9809734905 49.5642212863 27.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +996 1 1 0 54.9809734905 50.4357787137 27.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +997 1 1 0 54.8296291314 51.2940952255 27.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +998 1 1 0 54.5315389352 52.1130913087 27.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +999 1 1 0 54.0957602214 52.8678821818 27.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1000 1 1 0 53.5355339059 53.5355339059 27.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1001 1 1 0 52.8678821818 54.0957602214 27.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1002 1 1 0 52.1130913087 54.5315389352 27.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1003 1 1 0 51.2940952255 54.8296291314 27.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1004 1 1 0 50.4357787137 54.9809734905 27.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1005 1 1 0 49.5642212863 54.9809734905 27.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1006 1 1 0 48.7059047745 54.8296291314 27.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1007 1 1 0 47.8869086913 54.5315389352 27.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1008 1 1 0 47.1321178182 54.0957602214 27.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1009 1 1 0 46.1697777844 53.2139380484 28.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1010 1 1 0 45.6698729811 52.5 28.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1011 1 1 0 45.3015368961 51.7101007166 28.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1012 1 1 0 45.0759612349 50.8682408883 28.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1013 1 1 0 45.0 50.0 28.0 -1.0 1.45473230946e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1014 1 1 0 45.0759612349 49.1317591117 28.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1015 1 1 0 45.3015368961 48.2898992834 28.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1016 1 1 0 45.6698729811 47.5 28.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1017 1 1 0 46.1697777844 46.7860619516 28.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1018 1 1 0 46.7860619516 46.1697777844 28.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1019 1 1 0 47.5 45.6698729811 28.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1020 1 1 0 48.2898992834 45.3015368961 28.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1021 1 1 0 49.1317591117 45.0759612349 28.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1022 1 1 0 50.0 45.0 28.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1023 1 1 0 50.8682408883 45.0759612349 28.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1024 1 1 0 51.7101007166 45.3015368961 28.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1025 1 1 0 52.5 45.6698729811 28.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1026 1 1 0 53.2139380484 46.1697777844 28.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1027 1 1 0 53.8302222156 46.7860619516 28.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1028 1 1 0 54.3301270189 47.5 28.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1029 1 1 0 54.6984631039 48.2898992834 28.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1030 1 1 0 54.9240387651 49.1317591117 28.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1031 1 1 0 55.0 50.0 28.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1032 1 1 0 54.9240387651 50.8682408883 28.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1033 1 1 0 54.6984631039 51.7101007166 28.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1034 1 1 0 54.3301270189 52.5 28.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1035 1 1 0 53.8302222156 53.2139380484 28.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1036 1 1 0 53.2139380484 53.8302222156 28.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1037 1 1 0 52.5 54.3301270189 28.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1038 1 1 0 51.7101007166 54.6984631039 28.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1039 1 1 0 50.8682408883 54.9240387651 28.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1040 1 1 0 50.0 55.0 28.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1041 1 1 0 49.1317591117 54.9240387651 28.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1042 1 1 0 48.2898992834 54.6984631039 28.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1043 1 1 0 47.5 54.3301270189 28.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1044 1 1 0 46.7860619516 53.8302222156 28.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1045 1 1 0 45.9042397786 52.8678821818 29.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1046 1 1 0 45.4684610648 52.1130913087 29.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1047 1 1 0 45.1703708686 51.2940952255 29.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1048 1 1 0 45.0190265095 50.4357787137 29.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1049 1 1 0 45.0190265095 49.5642212863 29.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1050 1 1 0 45.1703708686 48.7059047745 29.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1051 1 1 0 45.4684610648 47.8869086913 29.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1052 1 1 0 45.9042397786 47.1321178182 29.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1053 1 1 0 46.4644660941 46.4644660941 29.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1054 1 1 0 47.1321178182 45.9042397786 29.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1055 1 1 0 47.8869086913 45.4684610648 29.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1056 1 1 0 48.7059047745 45.1703708686 29.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1057 1 1 0 49.5642212863 45.0190265095 29.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1058 1 1 0 50.4357787137 45.0190265095 29.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1059 1 1 0 51.2940952255 45.1703708686 29.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1060 1 1 0 52.1130913087 45.4684610648 29.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1061 1 1 0 52.8678821818 45.9042397786 29.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1062 1 1 0 53.5355339059 46.4644660941 29.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1063 1 1 0 54.0957602214 47.1321178182 29.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1064 1 1 0 54.5315389352 47.8869086913 29.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1065 1 1 0 54.8296291314 48.7059047745 29.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1066 1 1 0 54.9809734905 49.5642212863 29.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1067 1 1 0 54.9809734905 50.4357787137 29.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1068 1 1 0 54.8296291314 51.2940952255 29.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1069 1 1 0 54.5315389352 52.1130913087 29.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1070 1 1 0 54.0957602214 52.8678821818 29.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1071 1 1 0 53.5355339059 53.5355339059 29.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1072 1 1 0 52.8678821818 54.0957602214 29.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1073 1 1 0 52.1130913087 54.5315389352 29.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1074 1 1 0 51.2940952255 54.8296291314 29.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1075 1 1 0 50.4357787137 54.9809734905 29.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1076 1 1 0 49.5642212863 54.9809734905 29.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1077 1 1 0 48.7059047745 54.8296291314 29.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1078 1 1 0 47.8869086913 54.5315389352 29.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1079 1 1 0 47.1321178182 54.0957602214 29.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1080 1 1 0 46.4644660941 53.5355339059 29.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1081 1 1 0 45.6698729811 52.5 30.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1082 1 1 0 45.3015368961 51.7101007166 30.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1083 1 1 0 45.0759612349 50.8682408883 30.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1084 1 1 0 45.0 50.0 30.0 -1.0 1.89882151931e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1085 1 1 0 45.0759612349 49.1317591117 30.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1086 1 1 0 45.3015368961 48.2898992834 30.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1087 1 1 0 45.6698729811 47.5 30.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1088 1 1 0 46.1697777844 46.7860619516 30.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1089 1 1 0 46.7860619516 46.1697777844 30.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1090 1 1 0 47.5 45.6698729811 30.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1091 1 1 0 48.2898992834 45.3015368961 30.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1092 1 1 0 49.1317591117 45.0759612349 30.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1093 1 1 0 50.0 45.0 30.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1094 1 1 0 50.8682408883 45.0759612349 30.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1095 1 1 0 51.7101007166 45.3015368961 30.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1096 1 1 0 52.5 45.6698729811 30.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1097 1 1 0 53.2139380484 46.1697777844 30.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1098 1 1 0 53.8302222156 46.7860619516 30.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1099 1 1 0 54.3301270189 47.5 30.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1100 1 1 0 54.6984631039 48.2898992834 30.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1101 1 1 0 54.9240387651 49.1317591117 30.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1102 1 1 0 55.0 50.0 30.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1103 1 1 0 54.9240387651 50.8682408883 30.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1104 1 1 0 54.6984631039 51.7101007166 30.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1105 1 1 0 54.3301270189 52.5 30.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1106 1 1 0 53.8302222156 53.2139380484 30.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1107 1 1 0 53.2139380484 53.8302222156 30.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1108 1 1 0 52.5 54.3301270189 30.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1109 1 1 0 51.7101007166 54.6984631039 30.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1110 1 1 0 50.8682408883 54.9240387651 30.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1111 1 1 0 50.0 55.0 30.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1112 1 1 0 49.1317591117 54.9240387651 30.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1113 1 1 0 48.2898992834 54.6984631039 30.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1114 1 1 0 47.5 54.3301270189 30.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1115 1 1 0 46.7860619516 53.8302222156 30.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1116 1 1 0 46.1697777844 53.2139380484 30.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1117 1 1 0 45.4684610648 52.1130913087 31.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1118 1 1 0 45.1703708686 51.2940952255 31.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1119 1 1 0 45.0190265095 50.4357787137 31.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1120 1 1 0 45.0190265095 49.5642212863 31.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1121 1 1 0 45.1703708686 48.7059047745 31.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1122 1 1 0 45.4684610648 47.8869086913 31.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1123 1 1 0 45.9042397786 47.1321178182 31.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1124 1 1 0 46.4644660941 46.4644660941 31.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1125 1 1 0 47.1321178182 45.9042397786 31.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1126 1 1 0 47.8869086913 45.4684610648 31.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1127 1 1 0 48.7059047745 45.1703708686 31.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1128 1 1 0 49.5642212863 45.0190265095 31.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1129 1 1 0 50.4357787137 45.0190265095 31.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1130 1 1 0 51.2940952255 45.1703708686 31.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1131 1 1 0 52.1130913087 45.4684610648 31.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1132 1 1 0 52.8678821818 45.9042397786 31.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1133 1 1 0 53.5355339059 46.4644660941 31.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1134 1 1 0 54.0957602214 47.1321178182 31.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1135 1 1 0 54.5315389352 47.8869086913 31.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1136 1 1 0 54.8296291314 48.7059047745 31.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1137 1 1 0 54.9809734905 49.5642212863 31.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1138 1 1 0 54.9809734905 50.4357787137 31.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1139 1 1 0 54.8296291314 51.2940952255 31.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1140 1 1 0 54.5315389352 52.1130913087 31.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1141 1 1 0 54.0957602214 52.8678821818 31.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1142 1 1 0 53.5355339059 53.5355339059 31.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1143 1 1 0 52.8678821818 54.0957602214 31.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1144 1 1 0 52.1130913087 54.5315389352 31.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1145 1 1 0 51.2940952255 54.8296291314 31.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1146 1 1 0 50.4357787137 54.9809734905 31.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1147 1 1 0 49.5642212863 54.9809734905 31.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1148 1 1 0 48.7059047745 54.8296291314 31.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1149 1 1 0 47.8869086913 54.5315389352 31.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1150 1 1 0 47.1321178182 54.0957602214 31.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1151 1 1 0 46.4644660941 53.5355339059 31.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1152 1 1 0 45.9042397786 52.8678821818 31.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1153 1 1 0 45.3015368961 51.7101007166 32.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1154 1 1 0 45.0759612349 50.8682408883 32.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1155 1 1 0 45.0 50.0 32.0 -1.0 1.89882151931e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1156 1 1 0 45.0759612349 49.1317591117 32.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1157 1 1 0 45.3015368961 48.2898992834 32.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1158 1 1 0 45.6698729811 47.5 32.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1159 1 1 0 46.1697777844 46.7860619516 32.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1160 1 1 0 46.7860619516 46.1697777844 32.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1161 1 1 0 47.5 45.6698729811 32.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1162 1 1 0 48.2898992834 45.3015368961 32.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1163 1 1 0 49.1317591117 45.0759612349 32.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1164 1 1 0 50.0 45.0 32.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1165 1 1 0 50.8682408883 45.0759612349 32.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1166 1 1 0 51.7101007166 45.3015368961 32.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1167 1 1 0 52.5 45.6698729811 32.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1168 1 1 0 53.2139380484 46.1697777844 32.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1169 1 1 0 53.8302222156 46.7860619516 32.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1170 1 1 0 54.3301270189 47.5 32.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1171 1 1 0 54.6984631039 48.2898992834 32.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1172 1 1 0 54.9240387651 49.1317591117 32.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1173 1 1 0 55.0 50.0 32.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1174 1 1 0 54.9240387651 50.8682408883 32.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1175 1 1 0 54.6984631039 51.7101007166 32.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1176 1 1 0 54.3301270189 52.5 32.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1177 1 1 0 53.8302222156 53.2139380484 32.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1178 1 1 0 53.2139380484 53.8302222156 32.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1179 1 1 0 52.5 54.3301270189 32.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1180 1 1 0 51.7101007166 54.6984631039 32.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1181 1 1 0 50.8682408883 54.9240387651 32.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1182 1 1 0 50.0 55.0 32.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1183 1 1 0 49.1317591117 54.9240387651 32.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1184 1 1 0 48.2898992834 54.6984631039 32.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1185 1 1 0 47.5 54.3301270189 32.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1186 1 1 0 46.7860619516 53.8302222156 32.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1187 1 1 0 46.1697777844 53.2139380484 32.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1188 1 1 0 45.6698729811 52.5 32.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1189 1 1 0 45.1703708686 51.2940952255 33.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1190 1 1 0 45.0190265095 50.4357787137 33.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1191 1 1 0 45.0190265095 49.5642212863 33.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1192 1 1 0 45.1703708686 48.7059047745 33.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1193 1 1 0 45.4684610648 47.8869086913 33.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1194 1 1 0 45.9042397786 47.1321178182 33.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1195 1 1 0 46.4644660941 46.4644660941 33.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1196 1 1 0 47.1321178182 45.9042397786 33.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1197 1 1 0 47.8869086913 45.4684610648 33.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1198 1 1 0 48.7059047745 45.1703708686 33.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1199 1 1 0 49.5642212863 45.0190265095 33.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1200 1 1 0 50.4357787137 45.0190265095 33.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1201 1 1 0 51.2940952255 45.1703708686 33.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1202 1 1 0 52.1130913087 45.4684610648 33.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1203 1 1 0 52.8678821818 45.9042397786 33.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1204 1 1 0 53.5355339059 46.4644660941 33.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1205 1 1 0 54.0957602214 47.1321178182 33.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1206 1 1 0 54.5315389352 47.8869086913 33.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1207 1 1 0 54.8296291314 48.7059047745 33.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1208 1 1 0 54.9809734905 49.5642212863 33.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1209 1 1 0 54.9809734905 50.4357787137 33.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1210 1 1 0 54.8296291314 51.2940952255 33.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1211 1 1 0 54.5315389352 52.1130913087 33.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1212 1 1 0 54.0957602214 52.8678821818 33.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1213 1 1 0 53.5355339059 53.5355339059 33.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1214 1 1 0 52.8678821818 54.0957602214 33.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1215 1 1 0 52.1130913087 54.5315389352 33.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1216 1 1 0 51.2940952255 54.8296291314 33.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1217 1 1 0 50.4357787137 54.9809734905 33.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1218 1 1 0 49.5642212863 54.9809734905 33.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1219 1 1 0 48.7059047745 54.8296291314 33.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1220 1 1 0 47.8869086913 54.5315389352 33.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1221 1 1 0 47.1321178182 54.0957602214 33.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1222 1 1 0 46.4644660941 53.5355339059 33.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1223 1 1 0 45.9042397786 52.8678821818 33.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1224 1 1 0 45.4684610648 52.1130913087 33.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1225 1 1 0 45.0759612349 50.8682408883 34.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1226 1 1 0 45.0 50.0 34.0 -1.0 2.34291072917e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1227 1 1 0 45.0759612349 49.1317591117 34.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1228 1 1 0 45.3015368961 48.2898992834 34.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1229 1 1 0 45.6698729811 47.5 34.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1230 1 1 0 46.1697777844 46.7860619516 34.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1231 1 1 0 46.7860619516 46.1697777844 34.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1232 1 1 0 47.5 45.6698729811 34.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1233 1 1 0 48.2898992834 45.3015368961 34.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1234 1 1 0 49.1317591117 45.0759612349 34.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1235 1 1 0 50.0 45.0 34.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1236 1 1 0 50.8682408883 45.0759612349 34.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1237 1 1 0 51.7101007166 45.3015368961 34.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1238 1 1 0 52.5 45.6698729811 34.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1239 1 1 0 53.2139380484 46.1697777844 34.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1240 1 1 0 53.8302222156 46.7860619516 34.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1241 1 1 0 54.3301270189 47.5 34.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1242 1 1 0 54.6984631039 48.2898992834 34.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1243 1 1 0 54.9240387651 49.1317591117 34.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1244 1 1 0 55.0 50.0 34.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1245 1 1 0 54.9240387651 50.8682408883 34.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1246 1 1 0 54.6984631039 51.7101007166 34.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1247 1 1 0 54.3301270189 52.5 34.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1248 1 1 0 53.8302222156 53.2139380484 34.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1249 1 1 0 53.2139380484 53.8302222156 34.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1250 1 1 0 52.5 54.3301270189 34.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1251 1 1 0 51.7101007166 54.6984631039 34.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1252 1 1 0 50.8682408883 54.9240387651 34.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1253 1 1 0 50.0 55.0 34.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1254 1 1 0 49.1317591117 54.9240387651 34.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1255 1 1 0 48.2898992834 54.6984631039 34.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1256 1 1 0 47.5 54.3301270189 34.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1257 1 1 0 46.7860619516 53.8302222156 34.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1258 1 1 0 46.1697777844 53.2139380484 34.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1259 1 1 0 45.6698729811 52.5 34.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1260 1 1 0 45.3015368961 51.7101007166 34.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1261 1 1 0 45.0190265095 50.4357787137 35.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1262 1 1 0 45.0190265095 49.5642212863 35.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1263 1 1 0 45.1703708686 48.7059047745 35.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1264 1 1 0 45.4684610648 47.8869086913 35.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1265 1 1 0 45.9042397786 47.1321178182 35.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1266 1 1 0 46.4644660941 46.4644660941 35.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1267 1 1 0 47.1321178182 45.9042397786 35.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1268 1 1 0 47.8869086913 45.4684610648 35.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1269 1 1 0 48.7059047745 45.1703708686 35.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1270 1 1 0 49.5642212863 45.0190265095 35.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1271 1 1 0 50.4357787137 45.0190265095 35.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1272 1 1 0 51.2940952255 45.1703708686 35.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1273 1 1 0 52.1130913087 45.4684610648 35.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1274 1 1 0 52.8678821818 45.9042397786 35.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1275 1 1 0 53.5355339059 46.4644660941 35.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1276 1 1 0 54.0957602214 47.1321178182 35.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1277 1 1 0 54.5315389352 47.8869086913 35.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1278 1 1 0 54.8296291314 48.7059047745 35.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1279 1 1 0 54.9809734905 49.5642212863 35.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1280 1 1 0 54.9809734905 50.4357787137 35.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1281 1 1 0 54.8296291314 51.2940952255 35.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1282 1 1 0 54.5315389352 52.1130913087 35.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1283 1 1 0 54.0957602214 52.8678821818 35.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1284 1 1 0 53.5355339059 53.5355339059 35.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1285 1 1 0 52.8678821818 54.0957602214 35.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1286 1 1 0 52.1130913087 54.5315389352 35.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1287 1 1 0 51.2940952255 54.8296291314 35.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1288 1 1 0 50.4357787137 54.9809734905 35.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1289 1 1 0 49.5642212863 54.9809734905 35.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1290 1 1 0 48.7059047745 54.8296291314 35.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1291 1 1 0 47.8869086913 54.5315389352 35.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1292 1 1 0 47.1321178182 54.0957602214 35.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1293 1 1 0 46.4644660941 53.5355339059 35.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1294 1 1 0 45.9042397786 52.8678821818 35.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1295 1 1 0 45.4684610648 52.1130913087 35.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1296 1 1 0 45.1703708686 51.2940952255 35.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1297 1 1 0 45.0 50.0 36.0 -1.0 2.34291072917e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1298 1 1 0 45.0759612349 49.1317591117 36.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1299 1 1 0 45.3015368961 48.2898992834 36.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1300 1 1 0 45.6698729811 47.5 36.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1301 1 1 0 46.1697777844 46.7860619516 36.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1302 1 1 0 46.7860619516 46.1697777844 36.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1303 1 1 0 47.5 45.6698729811 36.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1304 1 1 0 48.2898992834 45.3015368961 36.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1305 1 1 0 49.1317591117 45.0759612349 36.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1306 1 1 0 50.0 45.0 36.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1307 1 1 0 50.8682408883 45.0759612349 36.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1308 1 1 0 51.7101007166 45.3015368961 36.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1309 1 1 0 52.5 45.6698729811 36.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1310 1 1 0 53.2139380484 46.1697777844 36.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1311 1 1 0 53.8302222156 46.7860619516 36.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1312 1 1 0 54.3301270189 47.5 36.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1313 1 1 0 54.6984631039 48.2898992834 36.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1314 1 1 0 54.9240387651 49.1317591117 36.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1315 1 1 0 55.0 50.0 36.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1316 1 1 0 54.9240387651 50.8682408883 36.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1317 1 1 0 54.6984631039 51.7101007166 36.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1318 1 1 0 54.3301270189 52.5 36.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1319 1 1 0 53.8302222156 53.2139380484 36.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1320 1 1 0 53.2139380484 53.8302222156 36.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1321 1 1 0 52.5 54.3301270189 36.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1322 1 1 0 51.7101007166 54.6984631039 36.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1323 1 1 0 50.8682408883 54.9240387651 36.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1324 1 1 0 50.0 55.0 36.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1325 1 1 0 49.1317591117 54.9240387651 36.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1326 1 1 0 48.2898992834 54.6984631039 36.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1327 1 1 0 47.5 54.3301270189 36.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1328 1 1 0 46.7860619516 53.8302222156 36.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1329 1 1 0 46.1697777844 53.2139380484 36.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1330 1 1 0 45.6698729811 52.5 36.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1331 1 1 0 45.3015368961 51.7101007166 36.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1332 1 1 0 45.0759612349 50.8682408883 36.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1333 1 1 0 45.0190265095 49.5642212863 37.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1334 1 1 0 45.1703708686 48.7059047745 37.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1335 1 1 0 45.4684610648 47.8869086913 37.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1336 1 1 0 45.9042397786 47.1321178182 37.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1337 1 1 0 46.4644660941 46.4644660941 37.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1338 1 1 0 47.1321178182 45.9042397786 37.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1339 1 1 0 47.8869086913 45.4684610648 37.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1340 1 1 0 48.7059047745 45.1703708686 37.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1341 1 1 0 49.5642212863 45.0190265095 37.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1342 1 1 0 50.4357787137 45.0190265095 37.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1343 1 1 0 51.2940952255 45.1703708686 37.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1344 1 1 0 52.1130913087 45.4684610648 37.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1345 1 1 0 52.8678821818 45.9042397786 37.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1346 1 1 0 53.5355339059 46.4644660941 37.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1347 1 1 0 54.0957602214 47.1321178182 37.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1348 1 1 0 54.5315389352 47.8869086913 37.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1349 1 1 0 54.8296291314 48.7059047745 37.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1350 1 1 0 54.9809734905 49.5642212863 37.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1351 1 1 0 54.9809734905 50.4357787137 37.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1352 1 1 0 54.8296291314 51.2940952255 37.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1353 1 1 0 54.5315389352 52.1130913087 37.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1354 1 1 0 54.0957602214 52.8678821818 37.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1355 1 1 0 53.5355339059 53.5355339059 37.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1356 1 1 0 52.8678821818 54.0957602214 37.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1357 1 1 0 52.1130913087 54.5315389352 37.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1358 1 1 0 51.2940952255 54.8296291314 37.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1359 1 1 0 50.4357787137 54.9809734905 37.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1360 1 1 0 49.5642212863 54.9809734905 37.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1361 1 1 0 48.7059047745 54.8296291314 37.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1362 1 1 0 47.8869086913 54.5315389352 37.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1363 1 1 0 47.1321178182 54.0957602214 37.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1364 1 1 0 46.4644660941 53.5355339059 37.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1365 1 1 0 45.9042397786 52.8678821818 37.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1366 1 1 0 45.4684610648 52.1130913087 37.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1367 1 1 0 45.1703708686 51.2940952255 37.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1368 1 1 0 45.0190265095 50.4357787137 37.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1369 1 1 0 45.0759612349 49.1317591117 38.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1370 1 1 0 45.3015368961 48.2898992834 38.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1371 1 1 0 45.6698729811 47.5 38.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1372 1 1 0 46.1697777844 46.7860619516 38.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1373 1 1 0 46.7860619516 46.1697777844 38.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1374 1 1 0 47.5 45.6698729811 38.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1375 1 1 0 48.2898992834 45.3015368961 38.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1376 1 1 0 49.1317591117 45.0759612349 38.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1377 1 1 0 50.0 45.0 38.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1378 1 1 0 50.8682408883 45.0759612349 38.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1379 1 1 0 51.7101007166 45.3015368961 38.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1380 1 1 0 52.5 45.6698729811 38.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1381 1 1 0 53.2139380484 46.1697777844 38.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1382 1 1 0 53.8302222156 46.7860619516 38.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1383 1 1 0 54.3301270189 47.5 38.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1384 1 1 0 54.6984631039 48.2898992834 38.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1385 1 1 0 54.9240387651 49.1317591117 38.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1386 1 1 0 55.0 50.0 38.0 1.0 -2.90946461893e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1387 1 1 0 54.9240387651 50.8682408883 38.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1388 1 1 0 54.6984631039 51.7101007166 38.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1389 1 1 0 54.3301270189 52.5 38.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1390 1 1 0 53.8302222156 53.2139380484 38.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1391 1 1 0 53.2139380484 53.8302222156 38.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1392 1 1 0 52.5 54.3301270189 38.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1393 1 1 0 51.7101007166 54.6984631039 38.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1394 1 1 0 50.8682408883 54.9240387651 38.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1395 1 1 0 50.0 55.0 38.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1396 1 1 0 49.1317591117 54.9240387651 38.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1397 1 1 0 48.2898992834 54.6984631039 38.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1398 1 1 0 47.5 54.3301270189 38.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1399 1 1 0 46.7860619516 53.8302222156 38.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1400 1 1 0 46.1697777844 53.2139380484 38.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1401 1 1 0 45.6698729811 52.5 38.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1402 1 1 0 45.3015368961 51.7101007166 38.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1403 1 1 0 45.0759612349 50.8682408883 38.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1404 1 1 0 45.0 50.0 38.0 -1.0 2.14375087914e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1405 1 1 0 45.1703708686 48.7059047745 39.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1406 1 1 0 45.4684610648 47.8869086913 39.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1407 1 1 0 45.9042397786 47.1321178182 39.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1408 1 1 0 46.4644660941 46.4644660941 39.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1409 1 1 0 47.1321178182 45.9042397786 39.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1410 1 1 0 47.8869086913 45.4684610648 39.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1411 1 1 0 48.7059047745 45.1703708686 39.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1412 1 1 0 49.5642212863 45.0190265095 39.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1413 1 1 0 50.4357787137 45.0190265095 39.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1414 1 1 0 51.2940952255 45.1703708686 39.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1415 1 1 0 52.1130913087 45.4684610648 39.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1416 1 1 0 52.8678821818 45.9042397786 39.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1417 1 1 0 53.5355339059 46.4644660941 39.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1418 1 1 0 54.0957602214 47.1321178182 39.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1419 1 1 0 54.5315389352 47.8869086913 39.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1420 1 1 0 54.8296291314 48.7059047745 39.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1421 1 1 0 54.9809734905 49.5642212863 39.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1422 1 1 0 54.9809734905 50.4357787137 39.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1423 1 1 0 54.8296291314 51.2940952255 39.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1424 1 1 0 54.5315389352 52.1130913087 39.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1425 1 1 0 54.0957602214 52.8678821818 39.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1426 1 1 0 53.5355339059 53.5355339059 39.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1427 1 1 0 52.8678821818 54.0957602214 39.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1428 1 1 0 52.1130913087 54.5315389352 39.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1429 1 1 0 51.2940952255 54.8296291314 39.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1430 1 1 0 50.4357787137 54.9809734905 39.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1431 1 1 0 49.5642212863 54.9809734905 39.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1432 1 1 0 48.7059047745 54.8296291314 39.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1433 1 1 0 47.8869086913 54.5315389352 39.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1434 1 1 0 47.1321178182 54.0957602214 39.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1435 1 1 0 46.4644660941 53.5355339059 39.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1436 1 1 0 45.9042397786 52.8678821818 39.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1437 1 1 0 45.4684610648 52.1130913087 39.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1438 1 1 0 45.1703708686 51.2940952255 39.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1439 1 1 0 45.0190265095 50.4357787137 39.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1440 1 1 0 45.0190265095 49.5642212863 39.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1441 1 1 0 45.3015368961 48.2898992834 40.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1442 1 1 0 45.6698729811 47.5 40.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1443 1 1 0 46.1697777844 46.7860619516 40.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1444 1 1 0 46.7860619516 46.1697777844 40.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1445 1 1 0 47.5 45.6698729811 40.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1446 1 1 0 48.2898992834 45.3015368961 40.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1447 1 1 0 49.1317591117 45.0759612349 40.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1448 1 1 0 50.0 45.0 40.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1449 1 1 0 50.8682408883 45.0759612349 40.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1450 1 1 0 51.7101007166 45.3015368961 40.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1451 1 1 0 52.5 45.6698729811 40.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1452 1 1 0 53.2139380484 46.1697777844 40.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1453 1 1 0 53.8302222156 46.7860619516 40.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1454 1 1 0 54.3301270189 47.5 40.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1455 1 1 0 54.6984631039 48.2898992834 40.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1456 1 1 0 54.9240387651 49.1317591117 40.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1457 1 1 0 55.0 50.0 40.0 1.0 -2.90946461893e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1458 1 1 0 54.9240387651 50.8682408883 40.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1459 1 1 0 54.6984631039 51.7101007166 40.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1460 1 1 0 54.3301270189 52.5 40.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1461 1 1 0 53.8302222156 53.2139380484 40.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1462 1 1 0 53.2139380484 53.8302222156 40.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1463 1 1 0 52.5 54.3301270189 40.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1464 1 1 0 51.7101007166 54.6984631039 40.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1465 1 1 0 50.8682408883 54.9240387651 40.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1466 1 1 0 50.0 55.0 40.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1467 1 1 0 49.1317591117 54.9240387651 40.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1468 1 1 0 48.2898992834 54.6984631039 40.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1469 1 1 0 47.5 54.3301270189 40.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1470 1 1 0 46.7860619516 53.8302222156 40.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1471 1 1 0 46.1697777844 53.2139380484 40.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1472 1 1 0 45.6698729811 52.5 40.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1473 1 1 0 45.3015368961 51.7101007166 40.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1474 1 1 0 45.0759612349 50.8682408883 40.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1475 1 1 0 45.0 50.0 40.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1476 1 1 0 45.0759612349 49.1317591117 40.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1477 1 1 0 45.4684610648 47.8869086913 41.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1478 1 1 0 45.9042397786 47.1321178182 41.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1479 1 1 0 46.4644660941 46.4644660941 41.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1480 1 1 0 47.1321178182 45.9042397786 41.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1481 1 1 0 47.8869086913 45.4684610648 41.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1482 1 1 0 48.7059047745 45.1703708686 41.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1483 1 1 0 49.5642212863 45.0190265095 41.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1484 1 1 0 50.4357787137 45.0190265095 41.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1485 1 1 0 51.2940952255 45.1703708686 41.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1486 1 1 0 52.1130913087 45.4684610648 41.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1487 1 1 0 52.8678821818 45.9042397786 41.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1488 1 1 0 53.5355339059 46.4644660941 41.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1489 1 1 0 54.0957602214 47.1321178182 41.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1490 1 1 0 54.5315389352 47.8869086913 41.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1491 1 1 0 54.8296291314 48.7059047745 41.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1492 1 1 0 54.9809734905 49.5642212863 41.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1493 1 1 0 54.9809734905 50.4357787137 41.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1494 1 1 0 54.8296291314 51.2940952255 41.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1495 1 1 0 54.5315389352 52.1130913087 41.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1496 1 1 0 54.0957602214 52.8678821818 41.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1497 1 1 0 53.5355339059 53.5355339059 41.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1498 1 1 0 52.8678821818 54.0957602214 41.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1499 1 1 0 52.1130913087 54.5315389352 41.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1500 1 1 0 51.2940952255 54.8296291314 41.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1501 1 1 0 50.4357787137 54.9809734905 41.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1502 1 1 0 49.5642212863 54.9809734905 41.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1503 1 1 0 48.7059047745 54.8296291314 41.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1504 1 1 0 47.8869086913 54.5315389352 41.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1505 1 1 0 47.1321178182 54.0957602214 41.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1506 1 1 0 46.4644660941 53.5355339059 41.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1507 1 1 0 45.9042397786 52.8678821818 41.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1508 1 1 0 45.4684610648 52.1130913087 41.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1509 1 1 0 45.1703708686 51.2940952255 41.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1510 1 1 0 45.0190265095 50.4357787137 41.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1511 1 1 0 45.0190265095 49.5642212863 41.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1512 1 1 0 45.1703708686 48.7059047745 41.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1513 1 1 0 45.6698729811 47.5 42.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1514 1 1 0 46.1697777844 46.7860619516 42.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1515 1 1 0 46.7860619516 46.1697777844 42.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1516 1 1 0 47.5 45.6698729811 42.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1517 1 1 0 48.2898992834 45.3015368961 42.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1518 1 1 0 49.1317591117 45.0759612349 42.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1519 1 1 0 50.0 45.0 42.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1520 1 1 0 50.8682408883 45.0759612349 42.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1521 1 1 0 51.7101007166 45.3015368961 42.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1522 1 1 0 52.5 45.6698729811 42.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1523 1 1 0 53.2139380484 46.1697777844 42.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1524 1 1 0 53.8302222156 46.7860619516 42.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1525 1 1 0 54.3301270189 47.5 42.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1526 1 1 0 54.6984631039 48.2898992834 42.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1527 1 1 0 54.9240387651 49.1317591117 42.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1528 1 1 0 55.0 50.0 42.0 1.0 -2.90946461893e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1529 1 1 0 54.9240387651 50.8682408883 42.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1530 1 1 0 54.6984631039 51.7101007166 42.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1531 1 1 0 54.3301270189 52.5 42.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1532 1 1 0 53.8302222156 53.2139380484 42.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1533 1 1 0 53.2139380484 53.8302222156 42.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1534 1 1 0 52.5 54.3301270189 42.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1535 1 1 0 51.7101007166 54.6984631039 42.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1536 1 1 0 50.8682408883 54.9240387651 42.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1537 1 1 0 50.0 55.0 42.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1538 1 1 0 49.1317591117 54.9240387651 42.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1539 1 1 0 48.2898992834 54.6984631039 42.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1540 1 1 0 47.5 54.3301270189 42.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1541 1 1 0 46.7860619516 53.8302222156 42.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1542 1 1 0 46.1697777844 53.2139380484 42.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1543 1 1 0 45.6698729811 52.5 42.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1544 1 1 0 45.3015368961 51.7101007166 42.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1545 1 1 0 45.0759612349 50.8682408883 42.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1546 1 1 0 45.0 50.0 42.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1547 1 1 0 45.0759612349 49.1317591117 42.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1548 1 1 0 45.3015368961 48.2898992834 42.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1549 1 1 0 45.9042397786 47.1321178182 43.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1550 1 1 0 46.4644660941 46.4644660941 43.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1551 1 1 0 47.1321178182 45.9042397786 43.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1552 1 1 0 47.8869086913 45.4684610648 43.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1553 1 1 0 48.7059047745 45.1703708686 43.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1554 1 1 0 49.5642212863 45.0190265095 43.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1555 1 1 0 50.4357787137 45.0190265095 43.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1556 1 1 0 51.2940952255 45.1703708686 43.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1557 1 1 0 52.1130913087 45.4684610648 43.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1558 1 1 0 52.8678821818 45.9042397786 43.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1559 1 1 0 53.5355339059 46.4644660941 43.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1560 1 1 0 54.0957602214 47.1321178182 43.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1561 1 1 0 54.5315389352 47.8869086913 43.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1562 1 1 0 54.8296291314 48.7059047745 43.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1563 1 1 0 54.9809734905 49.5642212863 43.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1564 1 1 0 54.9809734905 50.4357787137 43.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1565 1 1 0 54.8296291314 51.2940952255 43.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1566 1 1 0 54.5315389352 52.1130913087 43.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1567 1 1 0 54.0957602214 52.8678821818 43.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1568 1 1 0 53.5355339059 53.5355339059 43.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1569 1 1 0 52.8678821818 54.0957602214 43.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1570 1 1 0 52.1130913087 54.5315389352 43.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1571 1 1 0 51.2940952255 54.8296291314 43.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1572 1 1 0 50.4357787137 54.9809734905 43.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1573 1 1 0 49.5642212863 54.9809734905 43.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1574 1 1 0 48.7059047745 54.8296291314 43.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1575 1 1 0 47.8869086913 54.5315389352 43.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1576 1 1 0 47.1321178182 54.0957602214 43.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1577 1 1 0 46.4644660941 53.5355339059 43.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1578 1 1 0 45.9042397786 52.8678821818 43.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1579 1 1 0 45.4684610648 52.1130913087 43.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1580 1 1 0 45.1703708686 51.2940952255 43.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1581 1 1 0 45.0190265095 50.4357787137 43.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1582 1 1 0 45.0190265095 49.5642212863 43.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1583 1 1 0 45.1703708686 48.7059047745 43.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1584 1 1 0 45.4684610648 47.8869086913 43.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1585 1 1 0 46.1697777844 46.7860619516 44.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1586 1 1 0 46.7860619516 46.1697777844 44.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1587 1 1 0 47.5 45.6698729811 44.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1588 1 1 0 48.2898992834 45.3015368961 44.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1589 1 1 0 49.1317591117 45.0759612349 44.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1590 1 1 0 50.0 45.0 44.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1591 1 1 0 50.8682408883 45.0759612349 44.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1592 1 1 0 51.7101007166 45.3015368961 44.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1593 1 1 0 52.5 45.6698729811 44.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1594 1 1 0 53.2139380484 46.1697777844 44.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1595 1 1 0 53.8302222156 46.7860619516 44.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1596 1 1 0 54.3301270189 47.5 44.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1597 1 1 0 54.6984631039 48.2898992834 44.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1598 1 1 0 54.9240387651 49.1317591117 44.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1599 1 1 0 55.0 50.0 44.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1600 1 1 0 54.9240387651 50.8682408883 44.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1601 1 1 0 54.6984631039 51.7101007166 44.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1602 1 1 0 54.3301270189 52.5 44.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1603 1 1 0 53.8302222156 53.2139380484 44.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1604 1 1 0 53.2139380484 53.8302222156 44.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1605 1 1 0 52.5 54.3301270189 44.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1606 1 1 0 51.7101007166 54.6984631039 44.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1607 1 1 0 50.8682408883 54.9240387651 44.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1608 1 1 0 50.0 55.0 44.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1609 1 1 0 49.1317591117 54.9240387651 44.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1610 1 1 0 48.2898992834 54.6984631039 44.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1611 1 1 0 47.5 54.3301270189 44.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1612 1 1 0 46.7860619516 53.8302222156 44.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1613 1 1 0 46.1697777844 53.2139380484 44.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1614 1 1 0 45.6698729811 52.5 44.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1615 1 1 0 45.3015368961 51.7101007166 44.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1616 1 1 0 45.0759612349 50.8682408883 44.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1617 1 1 0 45.0 50.0 44.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1618 1 1 0 45.0759612349 49.1317591117 44.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1619 1 1 0 45.3015368961 48.2898992834 44.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1620 1 1 0 45.6698729811 47.5 44.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1621 1 1 0 46.4644660941 46.4644660941 45.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1622 1 1 0 47.1321178182 45.9042397786 45.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1623 1 1 0 47.8869086913 45.4684610648 45.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1624 1 1 0 48.7059047745 45.1703708686 45.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1625 1 1 0 49.5642212863 45.0190265095 45.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1626 1 1 0 50.4357787137 45.0190265095 45.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1627 1 1 0 51.2940952255 45.1703708686 45.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1628 1 1 0 52.1130913087 45.4684610648 45.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1629 1 1 0 52.8678821818 45.9042397786 45.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1630 1 1 0 53.5355339059 46.4644660941 45.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1631 1 1 0 54.0957602214 47.1321178182 45.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1632 1 1 0 54.5315389352 47.8869086913 45.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1633 1 1 0 54.8296291314 48.7059047745 45.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1634 1 1 0 54.9809734905 49.5642212863 45.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1635 1 1 0 54.9809734905 50.4357787137 45.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1636 1 1 0 54.8296291314 51.2940952255 45.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1637 1 1 0 54.5315389352 52.1130913087 45.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1638 1 1 0 54.0957602214 52.8678821818 45.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1639 1 1 0 53.5355339059 53.5355339059 45.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1640 1 1 0 52.8678821818 54.0957602214 45.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1641 1 1 0 52.1130913087 54.5315389352 45.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1642 1 1 0 51.2940952255 54.8296291314 45.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1643 1 1 0 50.4357787137 54.9809734905 45.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1644 1 1 0 49.5642212863 54.9809734905 45.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1645 1 1 0 48.7059047745 54.8296291314 45.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1646 1 1 0 47.8869086913 54.5315389352 45.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1647 1 1 0 47.1321178182 54.0957602214 45.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1648 1 1 0 46.4644660941 53.5355339059 45.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1649 1 1 0 45.9042397786 52.8678821818 45.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1650 1 1 0 45.4684610648 52.1130913087 45.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1651 1 1 0 45.1703708686 51.2940952255 45.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1652 1 1 0 45.0190265095 50.4357787137 45.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1653 1 1 0 45.0190265095 49.5642212863 45.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1654 1 1 0 45.1703708686 48.7059047745 45.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1655 1 1 0 45.4684610648 47.8869086913 45.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1656 1 1 0 45.9042397786 47.1321178182 45.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1657 1 1 0 46.7860619516 46.1697777844 46.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1658 1 1 0 47.5 45.6698729811 46.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1659 1 1 0 48.2898992834 45.3015368961 46.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1660 1 1 0 49.1317591117 45.0759612349 46.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1661 1 1 0 50.0 45.0 46.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1662 1 1 0 50.8682408883 45.0759612349 46.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1663 1 1 0 51.7101007166 45.3015368961 46.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1664 1 1 0 52.5 45.6698729811 46.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1665 1 1 0 53.2139380484 46.1697777844 46.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1666 1 1 0 53.8302222156 46.7860619516 46.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1667 1 1 0 54.3301270189 47.5 46.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1668 1 1 0 54.6984631039 48.2898992834 46.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1669 1 1 0 54.9240387651 49.1317591117 46.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1670 1 1 0 55.0 50.0 46.0 1.0 -2.90946461893e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1671 1 1 0 54.9240387651 50.8682408883 46.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1672 1 1 0 54.6984631039 51.7101007166 46.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1673 1 1 0 54.3301270189 52.5 46.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1674 1 1 0 53.8302222156 53.2139380484 46.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1675 1 1 0 53.2139380484 53.8302222156 46.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1676 1 1 0 52.5 54.3301270189 46.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1677 1 1 0 51.7101007166 54.6984631039 46.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1678 1 1 0 50.8682408883 54.9240387651 46.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1679 1 1 0 50.0 55.0 46.0 2.97069695889e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1680 1 1 0 49.1317591117 54.9240387651 46.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1681 1 1 0 48.2898992834 54.6984631039 46.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1682 1 1 0 47.5 54.3301270189 46.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1683 1 1 0 46.7860619516 53.8302222156 46.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1684 1 1 0 46.1697777844 53.2139380484 46.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1685 1 1 0 45.6698729811 52.5 46.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1686 1 1 0 45.3015368961 51.7101007166 46.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1687 1 1 0 45.0759612349 50.8682408883 46.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1688 1 1 0 45.0 50.0 46.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1689 1 1 0 45.0759612349 49.1317591117 46.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1690 1 1 0 45.3015368961 48.2898992834 46.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1691 1 1 0 45.6698729811 47.5 46.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1692 1 1 0 46.1697777844 46.7860619516 46.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1693 1 1 0 47.1321178182 45.9042397786 47.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1694 1 1 0 47.8869086913 45.4684610648 47.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1695 1 1 0 48.7059047745 45.1703708686 47.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1696 1 1 0 49.5642212863 45.0190265095 47.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1697 1 1 0 50.4357787137 45.0190265095 47.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1698 1 1 0 51.2940952255 45.1703708686 47.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1699 1 1 0 52.1130913087 45.4684610648 47.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1700 1 1 0 52.8678821818 45.9042397786 47.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1701 1 1 0 53.5355339059 46.4644660941 47.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1702 1 1 0 54.0957602214 47.1321178182 47.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1703 1 1 0 54.5315389352 47.8869086913 47.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1704 1 1 0 54.8296291314 48.7059047745 47.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1705 1 1 0 54.9809734905 49.5642212863 47.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1706 1 1 0 54.9809734905 50.4357787137 47.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1707 1 1 0 54.8296291314 51.2940952255 47.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1708 1 1 0 54.5315389352 52.1130913087 47.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1709 1 1 0 54.0957602214 52.8678821818 47.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1710 1 1 0 53.5355339059 53.5355339059 47.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1711 1 1 0 52.8678821818 54.0957602214 47.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1712 1 1 0 52.1130913087 54.5315389352 47.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1713 1 1 0 51.2940952255 54.8296291314 47.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1714 1 1 0 50.4357787137 54.9809734905 47.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1715 1 1 0 49.5642212863 54.9809734905 47.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1716 1 1 0 48.7059047745 54.8296291314 47.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1717 1 1 0 47.8869086913 54.5315389352 47.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1718 1 1 0 47.1321178182 54.0957602214 47.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1719 1 1 0 46.4644660941 53.5355339059 47.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1720 1 1 0 45.9042397786 52.8678821818 47.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1721 1 1 0 45.4684610648 52.1130913087 47.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1722 1 1 0 45.1703708686 51.2940952255 47.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1723 1 1 0 45.0190265095 50.4357787137 47.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1724 1 1 0 45.0190265095 49.5642212863 47.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1725 1 1 0 45.1703708686 48.7059047745 47.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1726 1 1 0 45.4684610648 47.8869086913 47.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1727 1 1 0 45.9042397786 47.1321178182 47.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1728 1 1 0 46.4644660941 46.4644660941 47.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1729 1 1 0 47.5 45.6698729811 48.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1730 1 1 0 48.2898992834 45.3015368961 48.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1731 1 1 0 49.1317591117 45.0759612349 48.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1732 1 1 0 50.0 45.0 48.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1733 1 1 0 50.8682408883 45.0759612349 48.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1734 1 1 0 51.7101007166 45.3015368961 48.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1735 1 1 0 52.5 45.6698729811 48.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1736 1 1 0 53.2139380484 46.1697777844 48.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1737 1 1 0 53.8302222156 46.7860619516 48.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1738 1 1 0 54.3301270189 47.5 48.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1739 1 1 0 54.6984631039 48.2898992834 48.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1740 1 1 0 54.9240387651 49.1317591117 48.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1741 1 1 0 55.0 50.0 48.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1742 1 1 0 54.9240387651 50.8682408883 48.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1743 1 1 0 54.6984631039 51.7101007166 48.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1744 1 1 0 54.3301270189 52.5 48.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1745 1 1 0 53.8302222156 53.2139380484 48.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1746 1 1 0 53.2139380484 53.8302222156 48.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1747 1 1 0 52.5 54.3301270189 48.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1748 1 1 0 51.7101007166 54.6984631039 48.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1749 1 1 0 50.8682408883 54.9240387651 48.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1750 1 1 0 50.0 55.0 48.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1751 1 1 0 49.1317591117 54.9240387651 48.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1752 1 1 0 48.2898992834 54.6984631039 48.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1753 1 1 0 47.5 54.3301270189 48.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1754 1 1 0 46.7860619516 53.8302222156 48.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1755 1 1 0 46.1697777844 53.2139380484 48.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1756 1 1 0 45.6698729811 52.5 48.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1757 1 1 0 45.3015368961 51.7101007166 48.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1758 1 1 0 45.0759612349 50.8682408883 48.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1759 1 1 0 45.0 50.0 48.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1760 1 1 0 45.0759612349 49.1317591117 48.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1761 1 1 0 45.3015368961 48.2898992834 48.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1762 1 1 0 45.6698729811 47.5 48.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1763 1 1 0 46.1697777844 46.7860619516 48.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1764 1 1 0 46.7860619516 46.1697777844 48.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1765 1 1 0 47.8869086913 45.4684610648 49.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1766 1 1 0 48.7059047745 45.1703708686 49.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1767 1 1 0 49.5642212863 45.0190265095 49.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1768 1 1 0 50.4357787137 45.0190265095 49.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1769 1 1 0 51.2940952255 45.1703708686 49.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1770 1 1 0 52.1130913087 45.4684610648 49.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1771 1 1 0 52.8678821818 45.9042397786 49.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1772 1 1 0 53.5355339059 46.4644660941 49.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1773 1 1 0 54.0957602214 47.1321178182 49.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1774 1 1 0 54.5315389352 47.8869086913 49.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1775 1 1 0 54.8296291314 48.7059047745 49.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1776 1 1 0 54.9809734905 49.5642212863 49.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1777 1 1 0 54.9809734905 50.4357787137 49.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1778 1 1 0 54.8296291314 51.2940952255 49.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1779 1 1 0 54.5315389352 52.1130913087 49.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1780 1 1 0 54.0957602214 52.8678821818 49.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1781 1 1 0 53.5355339059 53.5355339059 49.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1782 1 1 0 52.8678821818 54.0957602214 49.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1783 1 1 0 52.1130913087 54.5315389352 49.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1784 1 1 0 51.2940952255 54.8296291314 49.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1785 1 1 0 50.4357787137 54.9809734905 49.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1786 1 1 0 49.5642212863 54.9809734905 49.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1787 1 1 0 48.7059047745 54.8296291314 49.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1788 1 1 0 47.8869086913 54.5315389352 49.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1789 1 1 0 47.1321178182 54.0957602214 49.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1790 1 1 0 46.4644660941 53.5355339059 49.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1791 1 1 0 45.9042397786 52.8678821818 49.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1792 1 1 0 45.4684610648 52.1130913087 49.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1793 1 1 0 45.1703708686 51.2940952255 49.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1794 1 1 0 45.0190265095 50.4357787137 49.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1795 1 1 0 45.0190265095 49.5642212863 49.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1796 1 1 0 45.1703708686 48.7059047745 49.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1797 1 1 0 45.4684610648 47.8869086913 49.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1798 1 1 0 45.9042397786 47.1321178182 49.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1799 1 1 0 46.4644660941 46.4644660941 49.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1800 1 1 0 47.1321178182 45.9042397786 49.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1801 1 1 0 48.2898992834 45.3015368961 50.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1802 1 1 0 49.1317591117 45.0759612349 50.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1803 1 1 0 50.0 45.0 50.0 -3.73641069867e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1804 1 1 0 50.8682408883 45.0759612349 50.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1805 1 1 0 51.7101007166 45.3015368961 50.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1806 1 1 0 52.5 45.6698729811 50.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1807 1 1 0 53.2139380484 46.1697777844 50.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1808 1 1 0 53.8302222156 46.7860619516 50.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1809 1 1 0 54.3301270189 47.5 50.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1810 1 1 0 54.6984631039 48.2898992834 50.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1811 1 1 0 54.9240387651 49.1317591117 50.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1812 1 1 0 55.0 50.0 50.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1813 1 1 0 54.9240387651 50.8682408883 50.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1814 1 1 0 54.6984631039 51.7101007166 50.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1815 1 1 0 54.3301270189 52.5 50.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1816 1 1 0 53.8302222156 53.2139380484 50.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1817 1 1 0 53.2139380484 53.8302222156 50.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1818 1 1 0 52.5 54.3301270189 50.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1819 1 1 0 51.7101007166 54.6984631039 50.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1820 1 1 0 50.8682408883 54.9240387651 50.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1821 1 1 0 50.0 55.0 50.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1822 1 1 0 49.1317591117 54.9240387651 50.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1823 1 1 0 48.2898992834 54.6984631039 50.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1824 1 1 0 47.5 54.3301270189 50.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1825 1 1 0 46.7860619516 53.8302222156 50.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1826 1 1 0 46.1697777844 53.2139380484 50.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1827 1 1 0 45.6698729811 52.5 50.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1828 1 1 0 45.3015368961 51.7101007166 50.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1829 1 1 0 45.0759612349 50.8682408883 50.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1830 1 1 0 45.0 50.0 50.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1831 1 1 0 45.0759612349 49.1317591117 50.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1832 1 1 0 45.3015368961 48.2898992834 50.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1833 1 1 0 45.6698729811 47.5 50.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1834 1 1 0 46.1697777844 46.7860619516 50.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1835 1 1 0 46.7860619516 46.1697777844 50.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1836 1 1 0 47.5 45.6698729811 50.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1837 1 1 0 48.7059047745 45.1703708686 51.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1838 1 1 0 49.5642212863 45.0190265095 51.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1839 1 1 0 50.4357787137 45.0190265095 51.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1840 1 1 0 51.2940952255 45.1703708686 51.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1841 1 1 0 52.1130913087 45.4684610648 51.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1842 1 1 0 52.8678821818 45.9042397786 51.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1843 1 1 0 53.5355339059 46.4644660941 51.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1844 1 1 0 54.0957602214 47.1321178182 51.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1845 1 1 0 54.5315389352 47.8869086913 51.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1846 1 1 0 54.8296291314 48.7059047745 51.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1847 1 1 0 54.9809734905 49.5642212863 51.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1848 1 1 0 54.9809734905 50.4357787137 51.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1849 1 1 0 54.8296291314 51.2940952255 51.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1850 1 1 0 54.5315389352 52.1130913087 51.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1851 1 1 0 54.0957602214 52.8678821818 51.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1852 1 1 0 53.5355339059 53.5355339059 51.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1853 1 1 0 52.8678821818 54.0957602214 51.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1854 1 1 0 52.1130913087 54.5315389352 51.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1855 1 1 0 51.2940952255 54.8296291314 51.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1856 1 1 0 50.4357787137 54.9809734905 51.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1857 1 1 0 49.5642212863 54.9809734905 51.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1858 1 1 0 48.7059047745 54.8296291314 51.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1859 1 1 0 47.8869086913 54.5315389352 51.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1860 1 1 0 47.1321178182 54.0957602214 51.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1861 1 1 0 46.4644660941 53.5355339059 51.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1862 1 1 0 45.9042397786 52.8678821818 51.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1863 1 1 0 45.4684610648 52.1130913087 51.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1864 1 1 0 45.1703708686 51.2940952255 51.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1865 1 1 0 45.0190265095 50.4357787137 51.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1866 1 1 0 45.0190265095 49.5642212863 51.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1867 1 1 0 45.1703708686 48.7059047745 51.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1868 1 1 0 45.4684610648 47.8869086913 51.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1869 1 1 0 45.9042397786 47.1321178182 51.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1870 1 1 0 46.4644660941 46.4644660941 51.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1871 1 1 0 47.1321178182 45.9042397786 51.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1872 1 1 0 47.8869086913 45.4684610648 51.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1873 1 1 0 49.1317591117 45.0759612349 52.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1874 1 1 0 50.0 45.0 52.0 -3.73641069867e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1875 1 1 0 50.8682408883 45.0759612349 52.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1876 1 1 0 51.7101007166 45.3015368961 52.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1877 1 1 0 52.5 45.6698729811 52.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1878 1 1 0 53.2139380484 46.1697777844 52.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1879 1 1 0 53.8302222156 46.7860619516 52.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1880 1 1 0 54.3301270189 47.5 52.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1881 1 1 0 54.6984631039 48.2898992834 52.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1882 1 1 0 54.9240387651 49.1317591117 52.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1883 1 1 0 55.0 50.0 52.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1884 1 1 0 54.9240387651 50.8682408883 52.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1885 1 1 0 54.6984631039 51.7101007166 52.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1886 1 1 0 54.3301270189 52.5 52.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1887 1 1 0 53.8302222156 53.2139380484 52.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1888 1 1 0 53.2139380484 53.8302222156 52.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1889 1 1 0 52.5 54.3301270189 52.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1890 1 1 0 51.7101007166 54.6984631039 52.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1891 1 1 0 50.8682408883 54.9240387651 52.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1892 1 1 0 50.0 55.0 52.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1893 1 1 0 49.1317591117 54.9240387651 52.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1894 1 1 0 48.2898992834 54.6984631039 52.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1895 1 1 0 47.5 54.3301270189 52.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1896 1 1 0 46.7860619516 53.8302222156 52.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1897 1 1 0 46.1697777844 53.2139380484 52.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1898 1 1 0 45.6698729811 52.5 52.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1899 1 1 0 45.3015368961 51.7101007166 52.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1900 1 1 0 45.0759612349 50.8682408883 52.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1901 1 1 0 45.0 50.0 52.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1902 1 1 0 45.0759612349 49.1317591117 52.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1903 1 1 0 45.3015368961 48.2898992834 52.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1904 1 1 0 45.6698729811 47.5 52.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1905 1 1 0 46.1697777844 46.7860619516 52.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1906 1 1 0 46.7860619516 46.1697777844 52.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1907 1 1 0 47.5 45.6698729811 52.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1908 1 1 0 48.2898992834 45.3015368961 52.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1909 1 1 0 49.5642212863 45.0190265095 53.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1910 1 1 0 50.4357787137 45.0190265095 53.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1911 1 1 0 51.2940952255 45.1703708686 53.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1912 1 1 0 52.1130913087 45.4684610648 53.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1913 1 1 0 52.8678821818 45.9042397786 53.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1914 1 1 0 53.5355339059 46.4644660941 53.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1915 1 1 0 54.0957602214 47.1321178182 53.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1916 1 1 0 54.5315389352 47.8869086913 53.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1917 1 1 0 54.8296291314 48.7059047745 53.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1918 1 1 0 54.9809734905 49.5642212863 53.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1919 1 1 0 54.9809734905 50.4357787137 53.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1920 1 1 0 54.8296291314 51.2940952255 53.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1921 1 1 0 54.5315389352 52.1130913087 53.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1922 1 1 0 54.0957602214 52.8678821818 53.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1923 1 1 0 53.5355339059 53.5355339059 53.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1924 1 1 0 52.8678821818 54.0957602214 53.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1925 1 1 0 52.1130913087 54.5315389352 53.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1926 1 1 0 51.2940952255 54.8296291314 53.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1927 1 1 0 50.4357787137 54.9809734905 53.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1928 1 1 0 49.5642212863 54.9809734905 53.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1929 1 1 0 48.7059047745 54.8296291314 53.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1930 1 1 0 47.8869086913 54.5315389352 53.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1931 1 1 0 47.1321178182 54.0957602214 53.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1932 1 1 0 46.4644660941 53.5355339059 53.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1933 1 1 0 45.9042397786 52.8678821818 53.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1934 1 1 0 45.4684610648 52.1130913087 53.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1935 1 1 0 45.1703708686 51.2940952255 53.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1936 1 1 0 45.0190265095 50.4357787137 53.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1937 1 1 0 45.0190265095 49.5642212863 53.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1938 1 1 0 45.1703708686 48.7059047745 53.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1939 1 1 0 45.4684610648 47.8869086913 53.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1940 1 1 0 45.9042397786 47.1321178182 53.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1941 1 1 0 46.4644660941 46.4644660941 53.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1942 1 1 0 47.1321178182 45.9042397786 53.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1943 1 1 0 47.8869086913 45.4684610648 53.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1944 1 1 0 48.7059047745 45.1703708686 53.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1945 1 1 0 50.0 45.0 54.0 -3.73641069867e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1946 1 1 0 50.8682408883 45.0759612349 54.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1947 1 1 0 51.7101007166 45.3015368961 54.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1948 1 1 0 52.5 45.6698729811 54.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1949 1 1 0 53.2139380484 46.1697777844 54.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1950 1 1 0 53.8302222156 46.7860619516 54.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1951 1 1 0 54.3301270189 47.5 54.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1952 1 1 0 54.6984631039 48.2898992834 54.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1953 1 1 0 54.9240387651 49.1317591117 54.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1954 1 1 0 55.0 50.0 54.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1955 1 1 0 54.9240387651 50.8682408883 54.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1956 1 1 0 54.6984631039 51.7101007166 54.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1957 1 1 0 54.3301270189 52.5 54.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1958 1 1 0 53.8302222156 53.2139380484 54.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1959 1 1 0 53.2139380484 53.8302222156 54.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1960 1 1 0 52.5 54.3301270189 54.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1961 1 1 0 51.7101007166 54.6984631039 54.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1962 1 1 0 50.8682408883 54.9240387651 54.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1963 1 1 0 50.0 55.0 54.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +1964 1 1 0 49.1317591117 54.9240387651 54.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1965 1 1 0 48.2898992834 54.6984631039 54.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1966 1 1 0 47.5 54.3301270189 54.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1967 1 1 0 46.7860619516 53.8302222156 54.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1968 1 1 0 46.1697777844 53.2139380484 54.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1969 1 1 0 45.6698729811 52.5 54.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1970 1 1 0 45.3015368961 51.7101007166 54.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1971 1 1 0 45.0759612349 50.8682408883 54.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1972 1 1 0 45.0 50.0 54.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +1973 1 1 0 45.0759612349 49.1317591117 54.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +1974 1 1 0 45.3015368961 48.2898992834 54.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +1975 1 1 0 45.6698729811 47.5 54.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +1976 1 1 0 46.1697777844 46.7860619516 54.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +1977 1 1 0 46.7860619516 46.1697777844 54.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +1978 1 1 0 47.5 45.6698729811 54.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +1979 1 1 0 48.2898992834 45.3015368961 54.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +1980 1 1 0 49.1317591117 45.0759612349 54.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +1981 1 1 0 50.4357787137 45.0190265095 55.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1982 1 1 0 51.2940952255 45.1703708686 55.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1983 1 1 0 52.1130913087 45.4684610648 55.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1984 1 1 0 52.8678821818 45.9042397786 55.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1985 1 1 0 53.5355339059 46.4644660941 55.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1986 1 1 0 54.0957602214 47.1321178182 55.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1987 1 1 0 54.5315389352 47.8869086913 55.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1988 1 1 0 54.8296291314 48.7059047745 55.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1989 1 1 0 54.9809734905 49.5642212863 55.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1990 1 1 0 54.9809734905 50.4357787137 55.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +1991 1 1 0 54.8296291314 51.2940952255 55.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +1992 1 1 0 54.5315389352 52.1130913087 55.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +1993 1 1 0 54.0957602214 52.8678821818 55.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +1994 1 1 0 53.5355339059 53.5355339059 55.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +1995 1 1 0 52.8678821818 54.0957602214 55.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +1996 1 1 0 52.1130913087 54.5315389352 55.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +1997 1 1 0 51.2940952255 54.8296291314 55.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +1998 1 1 0 50.4357787137 54.9809734905 55.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +1999 1 1 0 49.5642212863 54.9809734905 55.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2000 1 1 0 48.7059047745 54.8296291314 55.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2001 1 1 0 47.8869086913 54.5315389352 55.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2002 1 1 0 47.1321178182 54.0957602214 55.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2003 1 1 0 46.4644660941 53.5355339059 55.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2004 1 1 0 45.9042397786 52.8678821818 55.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2005 1 1 0 45.4684610648 52.1130913087 55.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2006 1 1 0 45.1703708686 51.2940952255 55.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2007 1 1 0 45.0190265095 50.4357787137 55.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2008 1 1 0 45.0190265095 49.5642212863 55.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2009 1 1 0 45.1703708686 48.7059047745 55.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2010 1 1 0 45.4684610648 47.8869086913 55.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2011 1 1 0 45.9042397786 47.1321178182 55.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2012 1 1 0 46.4644660941 46.4644660941 55.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2013 1 1 0 47.1321178182 45.9042397786 55.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2014 1 1 0 47.8869086913 45.4684610648 55.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2015 1 1 0 48.7059047745 45.1703708686 55.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2016 1 1 0 49.5642212863 45.0190265095 55.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2017 1 1 0 50.8682408883 45.0759612349 56.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2018 1 1 0 51.7101007166 45.3015368961 56.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2019 1 1 0 52.5 45.6698729811 56.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2020 1 1 0 53.2139380484 46.1697777844 56.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2021 1 1 0 53.8302222156 46.7860619516 56.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2022 1 1 0 54.3301270189 47.5 56.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2023 1 1 0 54.6984631039 48.2898992834 56.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2024 1 1 0 54.9240387651 49.1317591117 56.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2025 1 1 0 55.0 50.0 56.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2026 1 1 0 54.9240387651 50.8682408883 56.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2027 1 1 0 54.6984631039 51.7101007166 56.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2028 1 1 0 54.3301270189 52.5 56.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2029 1 1 0 53.8302222156 53.2139380484 56.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2030 1 1 0 53.2139380484 53.8302222156 56.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2031 1 1 0 52.5 54.3301270189 56.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2032 1 1 0 51.7101007166 54.6984631039 56.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2033 1 1 0 50.8682408883 54.9240387651 56.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2034 1 1 0 50.0 55.0 56.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2035 1 1 0 49.1317591117 54.9240387651 56.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2036 1 1 0 48.2898992834 54.6984631039 56.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2037 1 1 0 47.5 54.3301270189 56.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2038 1 1 0 46.7860619516 53.8302222156 56.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2039 1 1 0 46.1697777844 53.2139380484 56.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2040 1 1 0 45.6698729811 52.5 56.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2041 1 1 0 45.3015368961 51.7101007166 56.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2042 1 1 0 45.0759612349 50.8682408883 56.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2043 1 1 0 45.0 50.0 56.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2044 1 1 0 45.0759612349 49.1317591117 56.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2045 1 1 0 45.3015368961 48.2898992834 56.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2046 1 1 0 45.6698729811 47.5 56.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2047 1 1 0 46.1697777844 46.7860619516 56.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2048 1 1 0 46.7860619516 46.1697777844 56.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2049 1 1 0 47.5 45.6698729811 56.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2050 1 1 0 48.2898992834 45.3015368961 56.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2051 1 1 0 49.1317591117 45.0759612349 56.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2052 1 1 0 50.0 45.0 56.0 -3.9813400585e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2053 1 1 0 51.2940952255 45.1703708686 57.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2054 1 1 0 52.1130913087 45.4684610648 57.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2055 1 1 0 52.8678821818 45.9042397786 57.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2056 1 1 0 53.5355339059 46.4644660941 57.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2057 1 1 0 54.0957602214 47.1321178182 57.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2058 1 1 0 54.5315389352 47.8869086913 57.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2059 1 1 0 54.8296291314 48.7059047745 57.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2060 1 1 0 54.9809734905 49.5642212863 57.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2061 1 1 0 54.9809734905 50.4357787137 57.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2062 1 1 0 54.8296291314 51.2940952255 57.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2063 1 1 0 54.5315389352 52.1130913087 57.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2064 1 1 0 54.0957602214 52.8678821818 57.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2065 1 1 0 53.5355339059 53.5355339059 57.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2066 1 1 0 52.8678821818 54.0957602214 57.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2067 1 1 0 52.1130913087 54.5315389352 57.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2068 1 1 0 51.2940952255 54.8296291314 57.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2069 1 1 0 50.4357787137 54.9809734905 57.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2070 1 1 0 49.5642212863 54.9809734905 57.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2071 1 1 0 48.7059047745 54.8296291314 57.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2072 1 1 0 47.8869086913 54.5315389352 57.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2073 1 1 0 47.1321178182 54.0957602214 57.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2074 1 1 0 46.4644660941 53.5355339059 57.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2075 1 1 0 45.9042397786 52.8678821818 57.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2076 1 1 0 45.4684610648 52.1130913087 57.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2077 1 1 0 45.1703708686 51.2940952255 57.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2078 1 1 0 45.0190265095 50.4357787137 57.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2079 1 1 0 45.0190265095 49.5642212863 57.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2080 1 1 0 45.1703708686 48.7059047745 57.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2081 1 1 0 45.4684610648 47.8869086913 57.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2082 1 1 0 45.9042397786 47.1321178182 57.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2083 1 1 0 46.4644660941 46.4644660941 57.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2084 1 1 0 47.1321178182 45.9042397786 57.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2085 1 1 0 47.8869086913 45.4684610648 57.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2086 1 1 0 48.7059047745 45.1703708686 57.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2087 1 1 0 49.5642212863 45.0190265095 57.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2088 1 1 0 50.4357787137 45.0190265095 57.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2089 1 1 0 51.7101007166 45.3015368961 58.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2090 1 1 0 52.5 45.6698729811 58.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2091 1 1 0 53.2139380484 46.1697777844 58.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2092 1 1 0 53.8302222156 46.7860619516 58.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2093 1 1 0 54.3301270189 47.5 58.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2094 1 1 0 54.6984631039 48.2898992834 58.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2095 1 1 0 54.9240387651 49.1317591117 58.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2096 1 1 0 55.0 50.0 58.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2097 1 1 0 54.9240387651 50.8682408883 58.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2098 1 1 0 54.6984631039 51.7101007166 58.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2099 1 1 0 54.3301270189 52.5 58.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2100 1 1 0 53.8302222156 53.2139380484 58.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2101 1 1 0 53.2139380484 53.8302222156 58.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2102 1 1 0 52.5 54.3301270189 58.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2103 1 1 0 51.7101007166 54.6984631039 58.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2104 1 1 0 50.8682408883 54.9240387651 58.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2105 1 1 0 50.0 55.0 58.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2106 1 1 0 49.1317591117 54.9240387651 58.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2107 1 1 0 48.2898992834 54.6984631039 58.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2108 1 1 0 47.5 54.3301270189 58.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2109 1 1 0 46.7860619516 53.8302222156 58.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2110 1 1 0 46.1697777844 53.2139380484 58.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2111 1 1 0 45.6698729811 52.5 58.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2112 1 1 0 45.3015368961 51.7101007166 58.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2113 1 1 0 45.0759612349 50.8682408883 58.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2114 1 1 0 45.0 50.0 58.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2115 1 1 0 45.0759612349 49.1317591117 58.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2116 1 1 0 45.3015368961 48.2898992834 58.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2117 1 1 0 45.6698729811 47.5 58.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2118 1 1 0 46.1697777844 46.7860619516 58.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2119 1 1 0 46.7860619516 46.1697777844 58.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2120 1 1 0 47.5 45.6698729811 58.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2121 1 1 0 48.2898992834 45.3015368961 58.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2122 1 1 0 49.1317591117 45.0759612349 58.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2123 1 1 0 50.0 45.0 58.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2124 1 1 0 50.8682408883 45.0759612349 58.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2125 1 1 0 52.1130913087 45.4684610648 59.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2126 1 1 0 52.8678821818 45.9042397786 59.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2127 1 1 0 53.5355339059 46.4644660941 59.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2128 1 1 0 54.0957602214 47.1321178182 59.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2129 1 1 0 54.5315389352 47.8869086913 59.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2130 1 1 0 54.8296291314 48.7059047745 59.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2131 1 1 0 54.9809734905 49.5642212863 59.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2132 1 1 0 54.9809734905 50.4357787137 59.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2133 1 1 0 54.8296291314 51.2940952255 59.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2134 1 1 0 54.5315389352 52.1130913087 59.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2135 1 1 0 54.0957602214 52.8678821818 59.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2136 1 1 0 53.5355339059 53.5355339059 59.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2137 1 1 0 52.8678821818 54.0957602214 59.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2138 1 1 0 52.1130913087 54.5315389352 59.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2139 1 1 0 51.2940952255 54.8296291314 59.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2140 1 1 0 50.4357787137 54.9809734905 59.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2141 1 1 0 49.5642212863 54.9809734905 59.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2142 1 1 0 48.7059047745 54.8296291314 59.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2143 1 1 0 47.8869086913 54.5315389352 59.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2144 1 1 0 47.1321178182 54.0957602214 59.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2145 1 1 0 46.4644660941 53.5355339059 59.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2146 1 1 0 45.9042397786 52.8678821818 59.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2147 1 1 0 45.4684610648 52.1130913087 59.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2148 1 1 0 45.1703708686 51.2940952255 59.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2149 1 1 0 45.0190265095 50.4357787137 59.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2150 1 1 0 45.0190265095 49.5642212863 59.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2151 1 1 0 45.1703708686 48.7059047745 59.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2152 1 1 0 45.4684610648 47.8869086913 59.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2153 1 1 0 45.9042397786 47.1321178182 59.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2154 1 1 0 46.4644660941 46.4644660941 59.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2155 1 1 0 47.1321178182 45.9042397786 59.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2156 1 1 0 47.8869086913 45.4684610648 59.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2157 1 1 0 48.7059047745 45.1703708686 59.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2158 1 1 0 49.5642212863 45.0190265095 59.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2159 1 1 0 50.4357787137 45.0190265095 59.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2160 1 1 0 51.2940952255 45.1703708686 59.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2161 1 1 0 52.5 45.6698729811 60.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2162 1 1 0 53.2139380484 46.1697777844 60.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2163 1 1 0 53.8302222156 46.7860619516 60.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2164 1 1 0 54.3301270189 47.5 60.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2165 1 1 0 54.6984631039 48.2898992834 60.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2166 1 1 0 54.9240387651 49.1317591117 60.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2167 1 1 0 55.0 50.0 60.0 1.0 -4.68582145833e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2168 1 1 0 54.9240387651 50.8682408883 60.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2169 1 1 0 54.6984631039 51.7101007166 60.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2170 1 1 0 54.3301270189 52.5 60.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2171 1 1 0 53.8302222156 53.2139380484 60.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2172 1 1 0 53.2139380484 53.8302222156 60.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2173 1 1 0 52.5 54.3301270189 60.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2174 1 1 0 51.7101007166 54.6984631039 60.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2175 1 1 0 50.8682408883 54.9240387651 60.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2176 1 1 0 50.0 55.0 60.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2177 1 1 0 49.1317591117 54.9240387651 60.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2178 1 1 0 48.2898992834 54.6984631039 60.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2179 1 1 0 47.5 54.3301270189 60.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2180 1 1 0 46.7860619516 53.8302222156 60.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2181 1 1 0 46.1697777844 53.2139380484 60.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2182 1 1 0 45.6698729811 52.5 60.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2183 1 1 0 45.3015368961 51.7101007166 60.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2184 1 1 0 45.0759612349 50.8682408883 60.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2185 1 1 0 45.0 50.0 60.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2186 1 1 0 45.0759612349 49.1317591117 60.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2187 1 1 0 45.3015368961 48.2898992834 60.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2188 1 1 0 45.6698729811 47.5 60.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2189 1 1 0 46.1697777844 46.7860619516 60.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2190 1 1 0 46.7860619516 46.1697777844 60.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2191 1 1 0 47.5 45.6698729811 60.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2192 1 1 0 48.2898992834 45.3015368961 60.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2193 1 1 0 49.1317591117 45.0759612349 60.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2194 1 1 0 50.0 45.0 60.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2195 1 1 0 50.8682408883 45.0759612349 60.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2196 1 1 0 51.7101007166 45.3015368961 60.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2197 1 1 0 52.8678821818 45.9042397786 61.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2198 1 1 0 53.5355339059 46.4644660941 61.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2199 1 1 0 54.0957602214 47.1321178182 61.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2200 1 1 0 54.5315389352 47.8869086913 61.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2201 1 1 0 54.8296291314 48.7059047745 61.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2202 1 1 0 54.9809734905 49.5642212863 61.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2203 1 1 0 54.9809734905 50.4357787137 61.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2204 1 1 0 54.8296291314 51.2940952255 61.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2205 1 1 0 54.5315389352 52.1130913087 61.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2206 1 1 0 54.0957602214 52.8678821818 61.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2207 1 1 0 53.5355339059 53.5355339059 61.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2208 1 1 0 52.8678821818 54.0957602214 61.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2209 1 1 0 52.1130913087 54.5315389352 61.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2210 1 1 0 51.2940952255 54.8296291314 61.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2211 1 1 0 50.4357787137 54.9809734905 61.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2212 1 1 0 49.5642212863 54.9809734905 61.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2213 1 1 0 48.7059047745 54.8296291314 61.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2214 1 1 0 47.8869086913 54.5315389352 61.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2215 1 1 0 47.1321178182 54.0957602214 61.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2216 1 1 0 46.4644660941 53.5355339059 61.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2217 1 1 0 45.9042397786 52.8678821818 61.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2218 1 1 0 45.4684610648 52.1130913087 61.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2219 1 1 0 45.1703708686 51.2940952255 61.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2220 1 1 0 45.0190265095 50.4357787137 61.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2221 1 1 0 45.0190265095 49.5642212863 61.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2222 1 1 0 45.1703708686 48.7059047745 61.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2223 1 1 0 45.4684610648 47.8869086913 61.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2224 1 1 0 45.9042397786 47.1321178182 61.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2225 1 1 0 46.4644660941 46.4644660941 61.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2226 1 1 0 47.1321178182 45.9042397786 61.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2227 1 1 0 47.8869086913 45.4684610648 61.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2228 1 1 0 48.7059047745 45.1703708686 61.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2229 1 1 0 49.5642212863 45.0190265095 61.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2230 1 1 0 50.4357787137 45.0190265095 61.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2231 1 1 0 51.2940952255 45.1703708686 61.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2232 1 1 0 52.1130913087 45.4684610648 61.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2233 1 1 0 53.2139380484 46.1697777844 62.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2234 1 1 0 53.8302222156 46.7860619516 62.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2235 1 1 0 54.3301270189 47.5 62.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2236 1 1 0 54.6984631039 48.2898992834 62.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2237 1 1 0 54.9240387651 49.1317591117 62.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2238 1 1 0 55.0 50.0 62.0 1.0 -4.68582145833e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2239 1 1 0 54.9240387651 50.8682408883 62.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2240 1 1 0 54.6984631039 51.7101007166 62.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2241 1 1 0 54.3301270189 52.5 62.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2242 1 1 0 53.8302222156 53.2139380484 62.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2243 1 1 0 53.2139380484 53.8302222156 62.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2244 1 1 0 52.5 54.3301270189 62.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2245 1 1 0 51.7101007166 54.6984631039 62.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2246 1 1 0 50.8682408883 54.9240387651 62.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2247 1 1 0 50.0 55.0 62.0 4.74705379829e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2248 1 1 0 49.1317591117 54.9240387651 62.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2249 1 1 0 48.2898992834 54.6984631039 62.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2250 1 1 0 47.5 54.3301270189 62.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2251 1 1 0 46.7860619516 53.8302222156 62.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2252 1 1 0 46.1697777844 53.2139380484 62.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2253 1 1 0 45.6698729811 52.5 62.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2254 1 1 0 45.3015368961 51.7101007166 62.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2255 1 1 0 45.0759612349 50.8682408883 62.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2256 1 1 0 45.0 50.0 62.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2257 1 1 0 45.0759612349 49.1317591117 62.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2258 1 1 0 45.3015368961 48.2898992834 62.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2259 1 1 0 45.6698729811 47.5 62.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2260 1 1 0 46.1697777844 46.7860619516 62.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2261 1 1 0 46.7860619516 46.1697777844 62.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2262 1 1 0 47.5 45.6698729811 62.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2263 1 1 0 48.2898992834 45.3015368961 62.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2264 1 1 0 49.1317591117 45.0759612349 62.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2265 1 1 0 50.0 45.0 62.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2266 1 1 0 50.8682408883 45.0759612349 62.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2267 1 1 0 51.7101007166 45.3015368961 62.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2268 1 1 0 52.5 45.6698729811 62.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2269 1 1 0 53.5355339059 46.4644660941 63.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2270 1 1 0 54.0957602214 47.1321178182 63.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2271 1 1 0 54.5315389352 47.8869086913 63.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2272 1 1 0 54.8296291314 48.7059047745 63.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2273 1 1 0 54.9809734905 49.5642212863 63.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2274 1 1 0 54.9809734905 50.4357787137 63.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2275 1 1 0 54.8296291314 51.2940952255 63.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2276 1 1 0 54.5315389352 52.1130913087 63.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2277 1 1 0 54.0957602214 52.8678821818 63.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2278 1 1 0 53.5355339059 53.5355339059 63.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2279 1 1 0 52.8678821818 54.0957602214 63.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2280 1 1 0 52.1130913087 54.5315389352 63.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2281 1 1 0 51.2940952255 54.8296291314 63.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2282 1 1 0 50.4357787137 54.9809734905 63.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2283 1 1 0 49.5642212863 54.9809734905 63.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2284 1 1 0 48.7059047745 54.8296291314 63.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2285 1 1 0 47.8869086913 54.5315389352 63.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2286 1 1 0 47.1321178182 54.0957602214 63.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2287 1 1 0 46.4644660941 53.5355339059 63.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2288 1 1 0 45.9042397786 52.8678821818 63.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2289 1 1 0 45.4684610648 52.1130913087 63.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2290 1 1 0 45.1703708686 51.2940952255 63.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2291 1 1 0 45.0190265095 50.4357787137 63.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2292 1 1 0 45.0190265095 49.5642212863 63.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2293 1 1 0 45.1703708686 48.7059047745 63.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2294 1 1 0 45.4684610648 47.8869086913 63.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2295 1 1 0 45.9042397786 47.1321178182 63.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2296 1 1 0 46.4644660941 46.4644660941 63.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2297 1 1 0 47.1321178182 45.9042397786 63.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2298 1 1 0 47.8869086913 45.4684610648 63.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2299 1 1 0 48.7059047745 45.1703708686 63.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2300 1 1 0 49.5642212863 45.0190265095 63.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2301 1 1 0 50.4357787137 45.0190265095 63.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2302 1 1 0 51.2940952255 45.1703708686 63.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2303 1 1 0 52.1130913087 45.4684610648 63.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2304 1 1 0 52.8678821818 45.9042397786 63.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2305 1 1 0 53.8302222156 46.7860619516 64.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2306 1 1 0 54.3301270189 47.5 64.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2307 1 1 0 54.6984631039 48.2898992834 64.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2308 1 1 0 54.9240387651 49.1317591117 64.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2309 1 1 0 55.0 50.0 64.0 1.0 -4.68582145833e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2310 1 1 0 54.9240387651 50.8682408883 64.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2311 1 1 0 54.6984631039 51.7101007166 64.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2312 1 1 0 54.3301270189 52.5 64.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2313 1 1 0 53.8302222156 53.2139380484 64.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2314 1 1 0 53.2139380484 53.8302222156 64.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2315 1 1 0 52.5 54.3301270189 64.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2316 1 1 0 51.7101007166 54.6984631039 64.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2317 1 1 0 50.8682408883 54.9240387651 64.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2318 1 1 0 50.0 55.0 64.0 4.74705379829e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2319 1 1 0 49.1317591117 54.9240387651 64.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2320 1 1 0 48.2898992834 54.6984631039 64.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2321 1 1 0 47.5 54.3301270189 64.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2322 1 1 0 46.7860619516 53.8302222156 64.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2323 1 1 0 46.1697777844 53.2139380484 64.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2324 1 1 0 45.6698729811 52.5 64.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2325 1 1 0 45.3015368961 51.7101007166 64.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2326 1 1 0 45.0759612349 50.8682408883 64.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2327 1 1 0 45.0 50.0 64.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2328 1 1 0 45.0759612349 49.1317591117 64.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2329 1 1 0 45.3015368961 48.2898992834 64.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2330 1 1 0 45.6698729811 47.5 64.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2331 1 1 0 46.1697777844 46.7860619516 64.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2332 1 1 0 46.7860619516 46.1697777844 64.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2333 1 1 0 47.5 45.6698729811 64.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2334 1 1 0 48.2898992834 45.3015368961 64.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2335 1 1 0 49.1317591117 45.0759612349 64.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2336 1 1 0 50.0 45.0 64.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2337 1 1 0 50.8682408883 45.0759612349 64.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2338 1 1 0 51.7101007166 45.3015368961 64.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2339 1 1 0 52.5 45.6698729811 64.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2340 1 1 0 53.2139380484 46.1697777844 64.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2341 1 1 0 54.0957602214 47.1321178182 65.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2342 1 1 0 54.5315389352 47.8869086913 65.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2343 1 1 0 54.8296291314 48.7059047745 65.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2344 1 1 0 54.9809734905 49.5642212863 65.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2345 1 1 0 54.9809734905 50.4357787137 65.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2346 1 1 0 54.8296291314 51.2940952255 65.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2347 1 1 0 54.5315389352 52.1130913087 65.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2348 1 1 0 54.0957602214 52.8678821818 65.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2349 1 1 0 53.5355339059 53.5355339059 65.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2350 1 1 0 52.8678821818 54.0957602214 65.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2351 1 1 0 52.1130913087 54.5315389352 65.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2352 1 1 0 51.2940952255 54.8296291314 65.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2353 1 1 0 50.4357787137 54.9809734905 65.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2354 1 1 0 49.5642212863 54.9809734905 65.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2355 1 1 0 48.7059047745 54.8296291314 65.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2356 1 1 0 47.8869086913 54.5315389352 65.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2357 1 1 0 47.1321178182 54.0957602214 65.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2358 1 1 0 46.4644660941 53.5355339059 65.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2359 1 1 0 45.9042397786 52.8678821818 65.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2360 1 1 0 45.4684610648 52.1130913087 65.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2361 1 1 0 45.1703708686 51.2940952255 65.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2362 1 1 0 45.0190265095 50.4357787137 65.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2363 1 1 0 45.0190265095 49.5642212863 65.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2364 1 1 0 45.1703708686 48.7059047745 65.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2365 1 1 0 45.4684610648 47.8869086913 65.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2366 1 1 0 45.9042397786 47.1321178182 65.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2367 1 1 0 46.4644660941 46.4644660941 65.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2368 1 1 0 47.1321178182 45.9042397786 65.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2369 1 1 0 47.8869086913 45.4684610648 65.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2370 1 1 0 48.7059047745 45.1703708686 65.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2371 1 1 0 49.5642212863 45.0190265095 65.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2372 1 1 0 50.4357787137 45.0190265095 65.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2373 1 1 0 51.2940952255 45.1703708686 65.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2374 1 1 0 52.1130913087 45.4684610648 65.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2375 1 1 0 52.8678821818 45.9042397786 65.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2376 1 1 0 53.5355339059 46.4644660941 65.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2377 1 1 0 54.3301270189 47.5 66.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2378 1 1 0 54.6984631039 48.2898992834 66.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2379 1 1 0 54.9240387651 49.1317591117 66.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2380 1 1 0 55.0 50.0 66.0 1.0 -4.68582145833e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2381 1 1 0 54.9240387651 50.8682408883 66.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2382 1 1 0 54.6984631039 51.7101007166 66.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2383 1 1 0 54.3301270189 52.5 66.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2384 1 1 0 53.8302222156 53.2139380484 66.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2385 1 1 0 53.2139380484 53.8302222156 66.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2386 1 1 0 52.5 54.3301270189 66.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2387 1 1 0 51.7101007166 54.6984631039 66.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2388 1 1 0 50.8682408883 54.9240387651 66.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2389 1 1 0 50.0 55.0 66.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2390 1 1 0 49.1317591117 54.9240387651 66.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2391 1 1 0 48.2898992834 54.6984631039 66.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2392 1 1 0 47.5 54.3301270189 66.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2393 1 1 0 46.7860619516 53.8302222156 66.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2394 1 1 0 46.1697777844 53.2139380484 66.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2395 1 1 0 45.6698729811 52.5 66.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2396 1 1 0 45.3015368961 51.7101007166 66.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2397 1 1 0 45.0759612349 50.8682408883 66.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2398 1 1 0 45.0 50.0 66.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2399 1 1 0 45.0759612349 49.1317591117 66.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2400 1 1 0 45.3015368961 48.2898992834 66.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2401 1 1 0 45.6698729811 47.5 66.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2402 1 1 0 46.1697777844 46.7860619516 66.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2403 1 1 0 46.7860619516 46.1697777844 66.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2404 1 1 0 47.5 45.6698729811 66.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2405 1 1 0 48.2898992834 45.3015368961 66.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2406 1 1 0 49.1317591117 45.0759612349 66.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2407 1 1 0 50.0 45.0 66.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2408 1 1 0 50.8682408883 45.0759612349 66.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2409 1 1 0 51.7101007166 45.3015368961 66.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2410 1 1 0 52.5 45.6698729811 66.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2411 1 1 0 53.2139380484 46.1697777844 66.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2412 1 1 0 53.8302222156 46.7860619516 66.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2413 1 1 0 54.5315389352 47.8869086913 67.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2414 1 1 0 54.8296291314 48.7059047745 67.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2415 1 1 0 54.9809734905 49.5642212863 67.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2416 1 1 0 54.9809734905 50.4357787137 67.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2417 1 1 0 54.8296291314 51.2940952255 67.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2418 1 1 0 54.5315389352 52.1130913087 67.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2419 1 1 0 54.0957602214 52.8678821818 67.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2420 1 1 0 53.5355339059 53.5355339059 67.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2421 1 1 0 52.8678821818 54.0957602214 67.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2422 1 1 0 52.1130913087 54.5315389352 67.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2423 1 1 0 51.2940952255 54.8296291314 67.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2424 1 1 0 50.4357787137 54.9809734905 67.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2425 1 1 0 49.5642212863 54.9809734905 67.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2426 1 1 0 48.7059047745 54.8296291314 67.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2427 1 1 0 47.8869086913 54.5315389352 67.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2428 1 1 0 47.1321178182 54.0957602214 67.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2429 1 1 0 46.4644660941 53.5355339059 67.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2430 1 1 0 45.9042397786 52.8678821818 67.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2431 1 1 0 45.4684610648 52.1130913087 67.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2432 1 1 0 45.1703708686 51.2940952255 67.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2433 1 1 0 45.0190265095 50.4357787137 67.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2434 1 1 0 45.0190265095 49.5642212863 67.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2435 1 1 0 45.1703708686 48.7059047745 67.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2436 1 1 0 45.4684610648 47.8869086913 67.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2437 1 1 0 45.9042397786 47.1321178182 67.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2438 1 1 0 46.4644660941 46.4644660941 67.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2439 1 1 0 47.1321178182 45.9042397786 67.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2440 1 1 0 47.8869086913 45.4684610648 67.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2441 1 1 0 48.7059047745 45.1703708686 67.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2442 1 1 0 49.5642212863 45.0190265095 67.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2443 1 1 0 50.4357787137 45.0190265095 67.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2444 1 1 0 51.2940952255 45.1703708686 67.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2445 1 1 0 52.1130913087 45.4684610648 67.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2446 1 1 0 52.8678821818 45.9042397786 67.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2447 1 1 0 53.5355339059 46.4644660941 67.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2448 1 1 0 54.0957602214 47.1321178182 67.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2449 1 1 0 54.6984631039 48.2898992834 68.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2450 1 1 0 54.9240387651 49.1317591117 68.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2451 1 1 0 55.0 50.0 68.0 1.0 -5.57399987803e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2452 1 1 0 54.9240387651 50.8682408883 68.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2453 1 1 0 54.6984631039 51.7101007166 68.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2454 1 1 0 54.3301270189 52.5 68.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2455 1 1 0 53.8302222156 53.2139380484 68.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2456 1 1 0 53.2139380484 53.8302222156 68.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2457 1 1 0 52.5 54.3301270189 68.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2458 1 1 0 51.7101007166 54.6984631039 68.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2459 1 1 0 50.8682408883 54.9240387651 68.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2460 1 1 0 50.0 55.0 68.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2461 1 1 0 49.1317591117 54.9240387651 68.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2462 1 1 0 48.2898992834 54.6984631039 68.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2463 1 1 0 47.5 54.3301270189 68.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2464 1 1 0 46.7860619516 53.8302222156 68.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2465 1 1 0 46.1697777844 53.2139380484 68.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2466 1 1 0 45.6698729811 52.5 68.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2467 1 1 0 45.3015368961 51.7101007166 68.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2468 1 1 0 45.0759612349 50.8682408883 68.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2469 1 1 0 45.0 50.0 68.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2470 1 1 0 45.0759612349 49.1317591117 68.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2471 1 1 0 45.3015368961 48.2898992834 68.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2472 1 1 0 45.6698729811 47.5 68.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2473 1 1 0 46.1697777844 46.7860619516 68.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2474 1 1 0 46.7860619516 46.1697777844 68.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2475 1 1 0 47.5 45.6698729811 68.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2476 1 1 0 48.2898992834 45.3015368961 68.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2477 1 1 0 49.1317591117 45.0759612349 68.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2478 1 1 0 50.0 45.0 68.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2479 1 1 0 50.8682408883 45.0759612349 68.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2480 1 1 0 51.7101007166 45.3015368961 68.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2481 1 1 0 52.5 45.6698729811 68.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2482 1 1 0 53.2139380484 46.1697777844 68.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2483 1 1 0 53.8302222156 46.7860619516 68.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2484 1 1 0 54.3301270189 47.5 68.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2485 1 1 0 54.8296291314 48.7059047745 69.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2486 1 1 0 54.9809734905 49.5642212863 69.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2487 1 1 0 54.9809734905 50.4357787137 69.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2488 1 1 0 54.8296291314 51.2940952255 69.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2489 1 1 0 54.5315389352 52.1130913087 69.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2490 1 1 0 54.0957602214 52.8678821818 69.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2491 1 1 0 53.5355339059 53.5355339059 69.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2492 1 1 0 52.8678821818 54.0957602214 69.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2493 1 1 0 52.1130913087 54.5315389352 69.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2494 1 1 0 51.2940952255 54.8296291314 69.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2495 1 1 0 50.4357787137 54.9809734905 69.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2496 1 1 0 49.5642212863 54.9809734905 69.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2497 1 1 0 48.7059047745 54.8296291314 69.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2498 1 1 0 47.8869086913 54.5315389352 69.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2499 1 1 0 47.1321178182 54.0957602214 69.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2500 1 1 0 46.4644660941 53.5355339059 69.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2501 1 1 0 45.9042397786 52.8678821818 69.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2502 1 1 0 45.4684610648 52.1130913087 69.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2503 1 1 0 45.1703708686 51.2940952255 69.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2504 1 1 0 45.0190265095 50.4357787137 69.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2505 1 1 0 45.0190265095 49.5642212863 69.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2506 1 1 0 45.1703708686 48.7059047745 69.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2507 1 1 0 45.4684610648 47.8869086913 69.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2508 1 1 0 45.9042397786 47.1321178182 69.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2509 1 1 0 46.4644660941 46.4644660941 69.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2510 1 1 0 47.1321178182 45.9042397786 69.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2511 1 1 0 47.8869086913 45.4684610648 69.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2512 1 1 0 48.7059047745 45.1703708686 69.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2513 1 1 0 49.5642212863 45.0190265095 69.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2514 1 1 0 50.4357787137 45.0190265095 69.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2515 1 1 0 51.2940952255 45.1703708686 69.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2516 1 1 0 52.1130913087 45.4684610648 69.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2517 1 1 0 52.8678821818 45.9042397786 69.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2518 1 1 0 53.5355339059 46.4644660941 69.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2519 1 1 0 54.0957602214 47.1321178182 69.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2520 1 1 0 54.5315389352 47.8869086913 69.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2521 1 1 0 54.9240387651 49.1317591117 70.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2522 1 1 0 55.0 50.0 70.0 1.0 -5.57399987803e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2523 1 1 0 54.9240387651 50.8682408883 70.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2524 1 1 0 54.6984631039 51.7101007166 70.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2525 1 1 0 54.3301270189 52.5 70.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2526 1 1 0 53.8302222156 53.2139380484 70.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2527 1 1 0 53.2139380484 53.8302222156 70.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2528 1 1 0 52.5 54.3301270189 70.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2529 1 1 0 51.7101007166 54.6984631039 70.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2530 1 1 0 50.8682408883 54.9240387651 70.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2531 1 1 0 50.0 55.0 70.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2532 1 1 0 49.1317591117 54.9240387651 70.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2533 1 1 0 48.2898992834 54.6984631039 70.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2534 1 1 0 47.5 54.3301270189 70.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2535 1 1 0 46.7860619516 53.8302222156 70.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2536 1 1 0 46.1697777844 53.2139380484 70.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2537 1 1 0 45.6698729811 52.5 70.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2538 1 1 0 45.3015368961 51.7101007166 70.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2539 1 1 0 45.0759612349 50.8682408883 70.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2540 1 1 0 45.0 50.0 70.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2541 1 1 0 45.0759612349 49.1317591117 70.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2542 1 1 0 45.3015368961 48.2898992834 70.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2543 1 1 0 45.6698729811 47.5 70.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2544 1 1 0 46.1697777844 46.7860619516 70.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2545 1 1 0 46.7860619516 46.1697777844 70.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2546 1 1 0 47.5 45.6698729811 70.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2547 1 1 0 48.2898992834 45.3015368961 70.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2548 1 1 0 49.1317591117 45.0759612349 70.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2549 1 1 0 50.0 45.0 70.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2550 1 1 0 50.8682408883 45.0759612349 70.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2551 1 1 0 51.7101007166 45.3015368961 70.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2552 1 1 0 52.5 45.6698729811 70.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2553 1 1 0 53.2139380484 46.1697777844 70.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2554 1 1 0 53.8302222156 46.7860619516 70.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2555 1 1 0 54.3301270189 47.5 70.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2556 1 1 0 54.6984631039 48.2898992834 70.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2557 1 1 0 54.9809734905 49.5642212863 71.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2558 1 1 0 54.9809734905 50.4357787137 71.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2559 1 1 0 54.8296291314 51.2940952255 71.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2560 1 1 0 54.5315389352 52.1130913087 71.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2561 1 1 0 54.0957602214 52.8678821818 71.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2562 1 1 0 53.5355339059 53.5355339059 71.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2563 1 1 0 52.8678821818 54.0957602214 71.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2564 1 1 0 52.1130913087 54.5315389352 71.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2565 1 1 0 51.2940952255 54.8296291314 71.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2566 1 1 0 50.4357787137 54.9809734905 71.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2567 1 1 0 49.5642212863 54.9809734905 71.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2568 1 1 0 48.7059047745 54.8296291314 71.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2569 1 1 0 47.8869086913 54.5315389352 71.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2570 1 1 0 47.1321178182 54.0957602214 71.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2571 1 1 0 46.4644660941 53.5355339059 71.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2572 1 1 0 45.9042397786 52.8678821818 71.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2573 1 1 0 45.4684610648 52.1130913087 71.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2574 1 1 0 45.1703708686 51.2940952255 71.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2575 1 1 0 45.0190265095 50.4357787137 71.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2576 1 1 0 45.0190265095 49.5642212863 71.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2577 1 1 0 45.1703708686 48.7059047745 71.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2578 1 1 0 45.4684610648 47.8869086913 71.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2579 1 1 0 45.9042397786 47.1321178182 71.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2580 1 1 0 46.4644660941 46.4644660941 71.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2581 1 1 0 47.1321178182 45.9042397786 71.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2582 1 1 0 47.8869086913 45.4684610648 71.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2583 1 1 0 48.7059047745 45.1703708686 71.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2584 1 1 0 49.5642212863 45.0190265095 71.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2585 1 1 0 50.4357787137 45.0190265095 71.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2586 1 1 0 51.2940952255 45.1703708686 71.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2587 1 1 0 52.1130913087 45.4684610648 71.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2588 1 1 0 52.8678821818 45.9042397786 71.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2589 1 1 0 53.5355339059 46.4644660941 71.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2590 1 1 0 54.0957602214 47.1321178182 71.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2591 1 1 0 54.5315389352 47.8869086913 71.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2592 1 1 0 54.8296291314 48.7059047745 71.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2593 1 1 0 55.0 50.0 72.0 1.0 -5.57399987803e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2594 1 1 0 54.9240387651 50.8682408883 72.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2595 1 1 0 54.6984631039 51.7101007166 72.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2596 1 1 0 54.3301270189 52.5 72.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2597 1 1 0 53.8302222156 53.2139380484 72.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2598 1 1 0 53.2139380484 53.8302222156 72.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2599 1 1 0 52.5 54.3301270189 72.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2600 1 1 0 51.7101007166 54.6984631039 72.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2601 1 1 0 50.8682408883 54.9240387651 72.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2602 1 1 0 50.0 55.0 72.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2603 1 1 0 49.1317591117 54.9240387651 72.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2604 1 1 0 48.2898992834 54.6984631039 72.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2605 1 1 0 47.5 54.3301270189 72.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2606 1 1 0 46.7860619516 53.8302222156 72.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2607 1 1 0 46.1697777844 53.2139380484 72.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2608 1 1 0 45.6698729811 52.5 72.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2609 1 1 0 45.3015368961 51.7101007166 72.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2610 1 1 0 45.0759612349 50.8682408883 72.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2611 1 1 0 45.0 50.0 72.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2612 1 1 0 45.0759612349 49.1317591117 72.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2613 1 1 0 45.3015368961 48.2898992834 72.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2614 1 1 0 45.6698729811 47.5 72.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2615 1 1 0 46.1697777844 46.7860619516 72.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2616 1 1 0 46.7860619516 46.1697777844 72.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2617 1 1 0 47.5 45.6698729811 72.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2618 1 1 0 48.2898992834 45.3015368961 72.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2619 1 1 0 49.1317591117 45.0759612349 72.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2620 1 1 0 50.0 45.0 72.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2621 1 1 0 50.8682408883 45.0759612349 72.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2622 1 1 0 51.7101007166 45.3015368961 72.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2623 1 1 0 52.5 45.6698729811 72.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2624 1 1 0 53.2139380484 46.1697777844 72.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2625 1 1 0 53.8302222156 46.7860619516 72.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2626 1 1 0 54.3301270189 47.5 72.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2627 1 1 0 54.6984631039 48.2898992834 72.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2628 1 1 0 54.9240387651 49.1317591117 72.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2629 1 1 0 54.9809734905 50.4357787137 73.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2630 1 1 0 54.8296291314 51.2940952255 73.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2631 1 1 0 54.5315389352 52.1130913087 73.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2632 1 1 0 54.0957602214 52.8678821818 73.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2633 1 1 0 53.5355339059 53.5355339059 73.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2634 1 1 0 52.8678821818 54.0957602214 73.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2635 1 1 0 52.1130913087 54.5315389352 73.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2636 1 1 0 51.2940952255 54.8296291314 73.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2637 1 1 0 50.4357787137 54.9809734905 73.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2638 1 1 0 49.5642212863 54.9809734905 73.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2639 1 1 0 48.7059047745 54.8296291314 73.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2640 1 1 0 47.8869086913 54.5315389352 73.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2641 1 1 0 47.1321178182 54.0957602214 73.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2642 1 1 0 46.4644660941 53.5355339059 73.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2643 1 1 0 45.9042397786 52.8678821818 73.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2644 1 1 0 45.4684610648 52.1130913087 73.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2645 1 1 0 45.1703708686 51.2940952255 73.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2646 1 1 0 45.0190265095 50.4357787137 73.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2647 1 1 0 45.0190265095 49.5642212863 73.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2648 1 1 0 45.1703708686 48.7059047745 73.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2649 1 1 0 45.4684610648 47.8869086913 73.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2650 1 1 0 45.9042397786 47.1321178182 73.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2651 1 1 0 46.4644660941 46.4644660941 73.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2652 1 1 0 47.1321178182 45.9042397786 73.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2653 1 1 0 47.8869086913 45.4684610648 73.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2654 1 1 0 48.7059047745 45.1703708686 73.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2655 1 1 0 49.5642212863 45.0190265095 73.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2656 1 1 0 50.4357787137 45.0190265095 73.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2657 1 1 0 51.2940952255 45.1703708686 73.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2658 1 1 0 52.1130913087 45.4684610648 73.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2659 1 1 0 52.8678821818 45.9042397786 73.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2660 1 1 0 53.5355339059 46.4644660941 73.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2661 1 1 0 54.0957602214 47.1321178182 73.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2662 1 1 0 54.5315389352 47.8869086913 73.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2663 1 1 0 54.8296291314 48.7059047745 73.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2664 1 1 0 54.9809734905 49.5642212863 73.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2665 1 1 0 54.9240387651 50.8682408883 74.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2666 1 1 0 54.6984631039 51.7101007166 74.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2667 1 1 0 54.3301270189 52.5 74.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2668 1 1 0 53.8302222156 53.2139380484 74.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2669 1 1 0 53.2139380484 53.8302222156 74.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2670 1 1 0 52.5 54.3301270189 74.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2671 1 1 0 51.7101007166 54.6984631039 74.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2672 1 1 0 50.8682408883 54.9240387651 74.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2673 1 1 0 50.0 55.0 74.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2674 1 1 0 49.1317591117 54.9240387651 74.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2675 1 1 0 48.2898992834 54.6984631039 74.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2676 1 1 0 47.5 54.3301270189 74.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2677 1 1 0 46.7860619516 53.8302222156 74.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2678 1 1 0 46.1697777844 53.2139380484 74.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2679 1 1 0 45.6698729811 52.5 74.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2680 1 1 0 45.3015368961 51.7101007166 74.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2681 1 1 0 45.0759612349 50.8682408883 74.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2682 1 1 0 45.0 50.0 74.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2683 1 1 0 45.0759612349 49.1317591117 74.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2684 1 1 0 45.3015368961 48.2898992834 74.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2685 1 1 0 45.6698729811 47.5 74.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2686 1 1 0 46.1697777844 46.7860619516 74.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2687 1 1 0 46.7860619516 46.1697777844 74.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2688 1 1 0 47.5 45.6698729811 74.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2689 1 1 0 48.2898992834 45.3015368961 74.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2690 1 1 0 49.1317591117 45.0759612349 74.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2691 1 1 0 50.0 45.0 74.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2692 1 1 0 50.8682408883 45.0759612349 74.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2693 1 1 0 51.7101007166 45.3015368961 74.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2694 1 1 0 52.5 45.6698729811 74.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2695 1 1 0 53.2139380484 46.1697777844 74.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2696 1 1 0 53.8302222156 46.7860619516 74.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2697 1 1 0 54.3301270189 47.5 74.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2698 1 1 0 54.6984631039 48.2898992834 74.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2699 1 1 0 54.9240387651 49.1317591117 74.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2700 1 1 0 55.0 50.0 74.0 1.0 -5.81892923786e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2701 1 1 0 54.8296291314 51.2940952255 75.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2702 1 1 0 54.5315389352 52.1130913087 75.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2703 1 1 0 54.0957602214 52.8678821818 75.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2704 1 1 0 53.5355339059 53.5355339059 75.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2705 1 1 0 52.8678821818 54.0957602214 75.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2706 1 1 0 52.1130913087 54.5315389352 75.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2707 1 1 0 51.2940952255 54.8296291314 75.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2708 1 1 0 50.4357787137 54.9809734905 75.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2709 1 1 0 49.5642212863 54.9809734905 75.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2710 1 1 0 48.7059047745 54.8296291314 75.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2711 1 1 0 47.8869086913 54.5315389352 75.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2712 1 1 0 47.1321178182 54.0957602214 75.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2713 1 1 0 46.4644660941 53.5355339059 75.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2714 1 1 0 45.9042397786 52.8678821818 75.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2715 1 1 0 45.4684610648 52.1130913087 75.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2716 1 1 0 45.1703708686 51.2940952255 75.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2717 1 1 0 45.0190265095 50.4357787137 75.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2718 1 1 0 45.0190265095 49.5642212863 75.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2719 1 1 0 45.1703708686 48.7059047745 75.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2720 1 1 0 45.4684610648 47.8869086913 75.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2721 1 1 0 45.9042397786 47.1321178182 75.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2722 1 1 0 46.4644660941 46.4644660941 75.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2723 1 1 0 47.1321178182 45.9042397786 75.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2724 1 1 0 47.8869086913 45.4684610648 75.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2725 1 1 0 48.7059047745 45.1703708686 75.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2726 1 1 0 49.5642212863 45.0190265095 75.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2727 1 1 0 50.4357787137 45.0190265095 75.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2728 1 1 0 51.2940952255 45.1703708686 75.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2729 1 1 0 52.1130913087 45.4684610648 75.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2730 1 1 0 52.8678821818 45.9042397786 75.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2731 1 1 0 53.5355339059 46.4644660941 75.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2732 1 1 0 54.0957602214 47.1321178182 75.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2733 1 1 0 54.5315389352 47.8869086913 75.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2734 1 1 0 54.8296291314 48.7059047745 75.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2735 1 1 0 54.9809734905 49.5642212863 75.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2736 1 1 0 54.9809734905 50.4357787137 75.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2737 1 1 0 54.6984631039 51.7101007166 76.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2738 1 1 0 54.3301270189 52.5 76.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2739 1 1 0 53.8302222156 53.2139380484 76.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2740 1 1 0 53.2139380484 53.8302222156 76.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2741 1 1 0 52.5 54.3301270189 76.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2742 1 1 0 51.7101007166 54.6984631039 76.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2743 1 1 0 50.8682408883 54.9240387651 76.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2744 1 1 0 50.0 55.0 76.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2745 1 1 0 49.1317591117 54.9240387651 76.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2746 1 1 0 48.2898992834 54.6984631039 76.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2747 1 1 0 47.5 54.3301270189 76.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2748 1 1 0 46.7860619516 53.8302222156 76.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2749 1 1 0 46.1697777844 53.2139380484 76.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2750 1 1 0 45.6698729811 52.5 76.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2751 1 1 0 45.3015368961 51.7101007166 76.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2752 1 1 0 45.0759612349 50.8682408883 76.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2753 1 1 0 45.0 50.0 76.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2754 1 1 0 45.0759612349 49.1317591117 76.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2755 1 1 0 45.3015368961 48.2898992834 76.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2756 1 1 0 45.6698729811 47.5 76.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2757 1 1 0 46.1697777844 46.7860619516 76.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2758 1 1 0 46.7860619516 46.1697777844 76.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2759 1 1 0 47.5 45.6698729811 76.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2760 1 1 0 48.2898992834 45.3015368961 76.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2761 1 1 0 49.1317591117 45.0759612349 76.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2762 1 1 0 50.0 45.0 76.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2763 1 1 0 50.8682408883 45.0759612349 76.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2764 1 1 0 51.7101007166 45.3015368961 76.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2765 1 1 0 52.5 45.6698729811 76.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2766 1 1 0 53.2139380484 46.1697777844 76.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2767 1 1 0 53.8302222156 46.7860619516 76.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2768 1 1 0 54.3301270189 47.5 76.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2769 1 1 0 54.6984631039 48.2898992834 76.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2770 1 1 0 54.9240387651 49.1317591117 76.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2771 1 1 0 55.0 50.0 76.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2772 1 1 0 54.9240387651 50.8682408883 76.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2773 1 1 0 54.5315389352 52.1130913087 77.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2774 1 1 0 54.0957602214 52.8678821818 77.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2775 1 1 0 53.5355339059 53.5355339059 77.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2776 1 1 0 52.8678821818 54.0957602214 77.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2777 1 1 0 52.1130913087 54.5315389352 77.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2778 1 1 0 51.2940952255 54.8296291314 77.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2779 1 1 0 50.4357787137 54.9809734905 77.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2780 1 1 0 49.5642212863 54.9809734905 77.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2781 1 1 0 48.7059047745 54.8296291314 77.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2782 1 1 0 47.8869086913 54.5315389352 77.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2783 1 1 0 47.1321178182 54.0957602214 77.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2784 1 1 0 46.4644660941 53.5355339059 77.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2785 1 1 0 45.9042397786 52.8678821818 77.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2786 1 1 0 45.4684610648 52.1130913087 77.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2787 1 1 0 45.1703708686 51.2940952255 77.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2788 1 1 0 45.0190265095 50.4357787137 77.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2789 1 1 0 45.0190265095 49.5642212863 77.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2790 1 1 0 45.1703708686 48.7059047745 77.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2791 1 1 0 45.4684610648 47.8869086913 77.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2792 1 1 0 45.9042397786 47.1321178182 77.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2793 1 1 0 46.4644660941 46.4644660941 77.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2794 1 1 0 47.1321178182 45.9042397786 77.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2795 1 1 0 47.8869086913 45.4684610648 77.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2796 1 1 0 48.7059047745 45.1703708686 77.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2797 1 1 0 49.5642212863 45.0190265095 77.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2798 1 1 0 50.4357787137 45.0190265095 77.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2799 1 1 0 51.2940952255 45.1703708686 77.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2800 1 1 0 52.1130913087 45.4684610648 77.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2801 1 1 0 52.8678821818 45.9042397786 77.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2802 1 1 0 53.5355339059 46.4644660941 77.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2803 1 1 0 54.0957602214 47.1321178182 77.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2804 1 1 0 54.5315389352 47.8869086913 77.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2805 1 1 0 54.8296291314 48.7059047745 77.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2806 1 1 0 54.9809734905 49.5642212863 77.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2807 1 1 0 54.9809734905 50.4357787137 77.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2808 1 1 0 54.8296291314 51.2940952255 77.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2809 1 1 0 54.3301270189 52.5 78.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2810 1 1 0 53.8302222156 53.2139380484 78.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2811 1 1 0 53.2139380484 53.8302222156 78.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2812 1 1 0 52.5 54.3301270189 78.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2813 1 1 0 51.7101007166 54.6984631039 78.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2814 1 1 0 50.8682408883 54.9240387651 78.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2815 1 1 0 50.0 55.0 78.0 6.52341063769e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2816 1 1 0 49.1317591117 54.9240387651 78.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2817 1 1 0 48.2898992834 54.6984631039 78.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2818 1 1 0 47.5 54.3301270189 78.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2819 1 1 0 46.7860619516 53.8302222156 78.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2820 1 1 0 46.1697777844 53.2139380484 78.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2821 1 1 0 45.6698729811 52.5 78.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2822 1 1 0 45.3015368961 51.7101007166 78.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2823 1 1 0 45.0759612349 50.8682408883 78.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2824 1 1 0 45.0 50.0 78.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2825 1 1 0 45.0759612349 49.1317591117 78.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2826 1 1 0 45.3015368961 48.2898992834 78.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2827 1 1 0 45.6698729811 47.5 78.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2828 1 1 0 46.1697777844 46.7860619516 78.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2829 1 1 0 46.7860619516 46.1697777844 78.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2830 1 1 0 47.5 45.6698729811 78.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2831 1 1 0 48.2898992834 45.3015368961 78.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2832 1 1 0 49.1317591117 45.0759612349 78.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2833 1 1 0 50.0 45.0 78.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2834 1 1 0 50.8682408883 45.0759612349 78.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2835 1 1 0 51.7101007166 45.3015368961 78.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2836 1 1 0 52.5 45.6698729811 78.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2837 1 1 0 53.2139380484 46.1697777844 78.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2838 1 1 0 53.8302222156 46.7860619516 78.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2839 1 1 0 54.3301270189 47.5 78.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2840 1 1 0 54.6984631039 48.2898992834 78.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2841 1 1 0 54.9240387651 49.1317591117 78.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2842 1 1 0 55.0 50.0 78.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2843 1 1 0 54.9240387651 50.8682408883 78.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2844 1 1 0 54.6984631039 51.7101007166 78.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2845 1 1 0 54.0957602214 52.8678821818 79.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2846 1 1 0 53.5355339059 53.5355339059 79.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2847 1 1 0 52.8678821818 54.0957602214 79.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2848 1 1 0 52.1130913087 54.5315389352 79.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2849 1 1 0 51.2940952255 54.8296291314 79.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2850 1 1 0 50.4357787137 54.9809734905 79.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2851 1 1 0 49.5642212863 54.9809734905 79.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2852 1 1 0 48.7059047745 54.8296291314 79.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2853 1 1 0 47.8869086913 54.5315389352 79.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2854 1 1 0 47.1321178182 54.0957602214 79.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2855 1 1 0 46.4644660941 53.5355339059 79.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2856 1 1 0 45.9042397786 52.8678821818 79.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2857 1 1 0 45.4684610648 52.1130913087 79.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2858 1 1 0 45.1703708686 51.2940952255 79.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2859 1 1 0 45.0190265095 50.4357787137 79.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2860 1 1 0 45.0190265095 49.5642212863 79.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2861 1 1 0 45.1703708686 48.7059047745 79.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2862 1 1 0 45.4684610648 47.8869086913 79.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2863 1 1 0 45.9042397786 47.1321178182 79.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2864 1 1 0 46.4644660941 46.4644660941 79.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2865 1 1 0 47.1321178182 45.9042397786 79.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2866 1 1 0 47.8869086913 45.4684610648 79.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2867 1 1 0 48.7059047745 45.1703708686 79.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2868 1 1 0 49.5642212863 45.0190265095 79.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2869 1 1 0 50.4357787137 45.0190265095 79.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2870 1 1 0 51.2940952255 45.1703708686 79.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2871 1 1 0 52.1130913087 45.4684610648 79.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2872 1 1 0 52.8678821818 45.9042397786 79.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2873 1 1 0 53.5355339059 46.4644660941 79.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2874 1 1 0 54.0957602214 47.1321178182 79.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2875 1 1 0 54.5315389352 47.8869086913 79.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2876 1 1 0 54.8296291314 48.7059047745 79.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2877 1 1 0 54.9809734905 49.5642212863 79.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2878 1 1 0 54.9809734905 50.4357787137 79.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2879 1 1 0 54.8296291314 51.2940952255 79.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2880 1 1 0 54.5315389352 52.1130913087 79.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2881 1 1 0 53.8302222156 53.2139380484 80.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2882 1 1 0 53.2139380484 53.8302222156 80.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2883 1 1 0 52.5 54.3301270189 80.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2884 1 1 0 51.7101007166 54.6984631039 80.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2885 1 1 0 50.8682408883 54.9240387651 80.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2886 1 1 0 50.0 55.0 80.0 6.52341063769e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2887 1 1 0 49.1317591117 54.9240387651 80.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2888 1 1 0 48.2898992834 54.6984631039 80.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2889 1 1 0 47.5 54.3301270189 80.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2890 1 1 0 46.7860619516 53.8302222156 80.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2891 1 1 0 46.1697777844 53.2139380484 80.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2892 1 1 0 45.6698729811 52.5 80.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2893 1 1 0 45.3015368961 51.7101007166 80.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2894 1 1 0 45.0759612349 50.8682408883 80.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2895 1 1 0 45.0 50.0 80.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2896 1 1 0 45.0759612349 49.1317591117 80.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2897 1 1 0 45.3015368961 48.2898992834 80.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2898 1 1 0 45.6698729811 47.5 80.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2899 1 1 0 46.1697777844 46.7860619516 80.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2900 1 1 0 46.7860619516 46.1697777844 80.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2901 1 1 0 47.5 45.6698729811 80.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2902 1 1 0 48.2898992834 45.3015368961 80.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2903 1 1 0 49.1317591117 45.0759612349 80.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2904 1 1 0 50.0 45.0 80.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2905 1 1 0 50.8682408883 45.0759612349 80.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2906 1 1 0 51.7101007166 45.3015368961 80.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2907 1 1 0 52.5 45.6698729811 80.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2908 1 1 0 53.2139380484 46.1697777844 80.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2909 1 1 0 53.8302222156 46.7860619516 80.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2910 1 1 0 54.3301270189 47.5 80.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2911 1 1 0 54.6984631039 48.2898992834 80.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2912 1 1 0 54.9240387651 49.1317591117 80.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2913 1 1 0 55.0 50.0 80.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2914 1 1 0 54.9240387651 50.8682408883 80.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2915 1 1 0 54.6984631039 51.7101007166 80.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2916 1 1 0 54.3301270189 52.5 80.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2917 1 1 0 53.5355339059 53.5355339059 81.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2918 1 1 0 52.8678821818 54.0957602214 81.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2919 1 1 0 52.1130913087 54.5315389352 81.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2920 1 1 0 51.2940952255 54.8296291314 81.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2921 1 1 0 50.4357787137 54.9809734905 81.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2922 1 1 0 49.5642212863 54.9809734905 81.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2923 1 1 0 48.7059047745 54.8296291314 81.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2924 1 1 0 47.8869086913 54.5315389352 81.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2925 1 1 0 47.1321178182 54.0957602214 81.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2926 1 1 0 46.4644660941 53.5355339059 81.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2927 1 1 0 45.9042397786 52.8678821818 81.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2928 1 1 0 45.4684610648 52.1130913087 81.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2929 1 1 0 45.1703708686 51.2940952255 81.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2930 1 1 0 45.0190265095 50.4357787137 81.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2931 1 1 0 45.0190265095 49.5642212863 81.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2932 1 1 0 45.1703708686 48.7059047745 81.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2933 1 1 0 45.4684610648 47.8869086913 81.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2934 1 1 0 45.9042397786 47.1321178182 81.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2935 1 1 0 46.4644660941 46.4644660941 81.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2936 1 1 0 47.1321178182 45.9042397786 81.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2937 1 1 0 47.8869086913 45.4684610648 81.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2938 1 1 0 48.7059047745 45.1703708686 81.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2939 1 1 0 49.5642212863 45.0190265095 81.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2940 1 1 0 50.4357787137 45.0190265095 81.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2941 1 1 0 51.2940952255 45.1703708686 81.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2942 1 1 0 52.1130913087 45.4684610648 81.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2943 1 1 0 52.8678821818 45.9042397786 81.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2944 1 1 0 53.5355339059 46.4644660941 81.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2945 1 1 0 54.0957602214 47.1321178182 81.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2946 1 1 0 54.5315389352 47.8869086913 81.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2947 1 1 0 54.8296291314 48.7059047745 81.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2948 1 1 0 54.9809734905 49.5642212863 81.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2949 1 1 0 54.9809734905 50.4357787137 81.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +2950 1 1 0 54.8296291314 51.2940952255 81.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +2951 1 1 0 54.5315389352 52.1130913087 81.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +2952 1 1 0 54.0957602214 52.8678821818 81.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2953 1 1 0 53.2139380484 53.8302222156 82.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2954 1 1 0 52.5 54.3301270189 82.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2955 1 1 0 51.7101007166 54.6984631039 82.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2956 1 1 0 50.8682408883 54.9240387651 82.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2957 1 1 0 50.0 55.0 82.0 6.52341063769e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2958 1 1 0 49.1317591117 54.9240387651 82.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2959 1 1 0 48.2898992834 54.6984631039 82.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2960 1 1 0 47.5 54.3301270189 82.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2961 1 1 0 46.7860619516 53.8302222156 82.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2962 1 1 0 46.1697777844 53.2139380484 82.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2963 1 1 0 45.6698729811 52.5 82.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2964 1 1 0 45.3015368961 51.7101007166 82.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2965 1 1 0 45.0759612349 50.8682408883 82.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2966 1 1 0 45.0 50.0 82.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2967 1 1 0 45.0759612349 49.1317591117 82.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2968 1 1 0 45.3015368961 48.2898992834 82.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2969 1 1 0 45.6698729811 47.5 82.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2970 1 1 0 46.1697777844 46.7860619516 82.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2971 1 1 0 46.7860619516 46.1697777844 82.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2972 1 1 0 47.5 45.6698729811 82.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2973 1 1 0 48.2898992834 45.3015368961 82.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2974 1 1 0 49.1317591117 45.0759612349 82.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2975 1 1 0 50.0 45.0 82.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +2976 1 1 0 50.8682408883 45.0759612349 82.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +2977 1 1 0 51.7101007166 45.3015368961 82.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +2978 1 1 0 52.5 45.6698729811 82.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +2979 1 1 0 53.2139380484 46.1697777844 82.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +2980 1 1 0 53.8302222156 46.7860619516 82.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2981 1 1 0 54.3301270189 47.5 82.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2982 1 1 0 54.6984631039 48.2898992834 82.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2983 1 1 0 54.9240387651 49.1317591117 82.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2984 1 1 0 55.0 50.0 82.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +2985 1 1 0 54.9240387651 50.8682408883 82.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +2986 1 1 0 54.6984631039 51.7101007166 82.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +2987 1 1 0 54.3301270189 52.5 82.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +2988 1 1 0 53.8302222156 53.2139380484 82.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +2989 1 1 0 52.8678821818 54.0957602214 83.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2990 1 1 0 52.1130913087 54.5315389352 83.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2991 1 1 0 51.2940952255 54.8296291314 83.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2992 1 1 0 50.4357787137 54.9809734905 83.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2993 1 1 0 49.5642212863 54.9809734905 83.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +2994 1 1 0 48.7059047745 54.8296291314 83.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +2995 1 1 0 47.8869086913 54.5315389352 83.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +2996 1 1 0 47.1321178182 54.0957602214 83.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +2997 1 1 0 46.4644660941 53.5355339059 83.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +2998 1 1 0 45.9042397786 52.8678821818 83.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +2999 1 1 0 45.4684610648 52.1130913087 83.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3000 1 1 0 45.1703708686 51.2940952255 83.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3001 1 1 0 45.0190265095 50.4357787137 83.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3002 1 1 0 45.0190265095 49.5642212863 83.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3003 1 1 0 45.1703708686 48.7059047745 83.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3004 1 1 0 45.4684610648 47.8869086913 83.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3005 1 1 0 45.9042397786 47.1321178182 83.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3006 1 1 0 46.4644660941 46.4644660941 83.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3007 1 1 0 47.1321178182 45.9042397786 83.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3008 1 1 0 47.8869086913 45.4684610648 83.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3009 1 1 0 48.7059047745 45.1703708686 83.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3010 1 1 0 49.5642212863 45.0190265095 83.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3011 1 1 0 50.4357787137 45.0190265095 83.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3012 1 1 0 51.2940952255 45.1703708686 83.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3013 1 1 0 52.1130913087 45.4684610648 83.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3014 1 1 0 52.8678821818 45.9042397786 83.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3015 1 1 0 53.5355339059 46.4644660941 83.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3016 1 1 0 54.0957602214 47.1321178182 83.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3017 1 1 0 54.5315389352 47.8869086913 83.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3018 1 1 0 54.8296291314 48.7059047745 83.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3019 1 1 0 54.9809734905 49.5642212863 83.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3020 1 1 0 54.9809734905 50.4357787137 83.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3021 1 1 0 54.8296291314 51.2940952255 83.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3022 1 1 0 54.5315389352 52.1130913087 83.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3023 1 1 0 54.0957602214 52.8678821818 83.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3024 1 1 0 53.5355339059 53.5355339059 83.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3025 1 1 0 52.5 54.3301270189 84.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3026 1 1 0 51.7101007166 54.6984631039 84.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3027 1 1 0 50.8682408883 54.9240387651 84.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3028 1 1 0 50.0 55.0 84.0 6.52341063769e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3029 1 1 0 49.1317591117 54.9240387651 84.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3030 1 1 0 48.2898992834 54.6984631039 84.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3031 1 1 0 47.5 54.3301270189 84.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3032 1 1 0 46.7860619516 53.8302222156 84.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3033 1 1 0 46.1697777844 53.2139380484 84.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3034 1 1 0 45.6698729811 52.5 84.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3035 1 1 0 45.3015368961 51.7101007166 84.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3036 1 1 0 45.0759612349 50.8682408883 84.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3037 1 1 0 45.0 50.0 84.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3038 1 1 0 45.0759612349 49.1317591117 84.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3039 1 1 0 45.3015368961 48.2898992834 84.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3040 1 1 0 45.6698729811 47.5 84.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3041 1 1 0 46.1697777844 46.7860619516 84.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3042 1 1 0 46.7860619516 46.1697777844 84.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3043 1 1 0 47.5 45.6698729811 84.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3044 1 1 0 48.2898992834 45.3015368961 84.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3045 1 1 0 49.1317591117 45.0759612349 84.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3046 1 1 0 50.0 45.0 84.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3047 1 1 0 50.8682408883 45.0759612349 84.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3048 1 1 0 51.7101007166 45.3015368961 84.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3049 1 1 0 52.5 45.6698729811 84.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3050 1 1 0 53.2139380484 46.1697777844 84.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3051 1 1 0 53.8302222156 46.7860619516 84.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3052 1 1 0 54.3301270189 47.5 84.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3053 1 1 0 54.6984631039 48.2898992834 84.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3054 1 1 0 54.9240387651 49.1317591117 84.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3055 1 1 0 55.0 50.0 84.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3056 1 1 0 54.9240387651 50.8682408883 84.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3057 1 1 0 54.6984631039 51.7101007166 84.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3058 1 1 0 54.3301270189 52.5 84.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3059 1 1 0 53.8302222156 53.2139380484 84.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3060 1 1 0 53.2139380484 53.8302222156 84.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3061 1 1 0 52.1130913087 54.5315389352 85.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3062 1 1 0 51.2940952255 54.8296291314 85.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3063 1 1 0 50.4357787137 54.9809734905 85.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3064 1 1 0 49.5642212863 54.9809734905 85.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3065 1 1 0 48.7059047745 54.8296291314 85.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3066 1 1 0 47.8869086913 54.5315389352 85.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3067 1 1 0 47.1321178182 54.0957602214 85.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3068 1 1 0 46.4644660941 53.5355339059 85.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3069 1 1 0 45.9042397786 52.8678821818 85.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3070 1 1 0 45.4684610648 52.1130913087 85.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3071 1 1 0 45.1703708686 51.2940952255 85.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3072 1 1 0 45.0190265095 50.4357787137 85.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3073 1 1 0 45.0190265095 49.5642212863 85.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3074 1 1 0 45.1703708686 48.7059047745 85.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3075 1 1 0 45.4684610648 47.8869086913 85.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3076 1 1 0 45.9042397786 47.1321178182 85.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3077 1 1 0 46.4644660941 46.4644660941 85.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3078 1 1 0 47.1321178182 45.9042397786 85.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3079 1 1 0 47.8869086913 45.4684610648 85.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3080 1 1 0 48.7059047745 45.1703708686 85.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3081 1 1 0 49.5642212863 45.0190265095 85.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3082 1 1 0 50.4357787137 45.0190265095 85.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3083 1 1 0 51.2940952255 45.1703708686 85.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3084 1 1 0 52.1130913087 45.4684610648 85.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3085 1 1 0 52.8678821818 45.9042397786 85.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3086 1 1 0 53.5355339059 46.4644660941 85.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3087 1 1 0 54.0957602214 47.1321178182 85.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3088 1 1 0 54.5315389352 47.8869086913 85.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3089 1 1 0 54.8296291314 48.7059047745 85.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3090 1 1 0 54.9809734905 49.5642212863 85.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3091 1 1 0 54.9809734905 50.4357787137 85.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3092 1 1 0 54.8296291314 51.2940952255 85.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3093 1 1 0 54.5315389352 52.1130913087 85.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3094 1 1 0 54.0957602214 52.8678821818 85.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3095 1 1 0 53.5355339059 53.5355339059 85.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3096 1 1 0 52.8678821818 54.0957602214 85.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3097 1 1 0 51.7101007166 54.6984631039 86.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3098 1 1 0 50.8682408883 54.9240387651 86.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3099 1 1 0 50.0 55.0 86.0 7.41158905739e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3100 1 1 0 49.1317591117 54.9240387651 86.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3101 1 1 0 48.2898992834 54.6984631039 86.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3102 1 1 0 47.5 54.3301270189 86.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3103 1 1 0 46.7860619516 53.8302222156 86.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3104 1 1 0 46.1697777844 53.2139380484 86.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3105 1 1 0 45.6698729811 52.5 86.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3106 1 1 0 45.3015368961 51.7101007166 86.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3107 1 1 0 45.0759612349 50.8682408883 86.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3108 1 1 0 45.0 50.0 86.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3109 1 1 0 45.0759612349 49.1317591117 86.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3110 1 1 0 45.3015368961 48.2898992834 86.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3111 1 1 0 45.6698729811 47.5 86.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3112 1 1 0 46.1697777844 46.7860619516 86.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3113 1 1 0 46.7860619516 46.1697777844 86.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3114 1 1 0 47.5 45.6698729811 86.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3115 1 1 0 48.2898992834 45.3015368961 86.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3116 1 1 0 49.1317591117 45.0759612349 86.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3117 1 1 0 50.0 45.0 86.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3118 1 1 0 50.8682408883 45.0759612349 86.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3119 1 1 0 51.7101007166 45.3015368961 86.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3120 1 1 0 52.5 45.6698729811 86.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3121 1 1 0 53.2139380484 46.1697777844 86.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3122 1 1 0 53.8302222156 46.7860619516 86.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3123 1 1 0 54.3301270189 47.5 86.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3124 1 1 0 54.6984631039 48.2898992834 86.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3125 1 1 0 54.9240387651 49.1317591117 86.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3126 1 1 0 55.0 50.0 86.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3127 1 1 0 54.9240387651 50.8682408883 86.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3128 1 1 0 54.6984631039 51.7101007166 86.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3129 1 1 0 54.3301270189 52.5 86.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3130 1 1 0 53.8302222156 53.2139380484 86.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3131 1 1 0 53.2139380484 53.8302222156 86.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3132 1 1 0 52.5 54.3301270189 86.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3133 1 1 0 51.2940952255 54.8296291314 87.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3134 1 1 0 50.4357787137 54.9809734905 87.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3135 1 1 0 49.5642212863 54.9809734905 87.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3136 1 1 0 48.7059047745 54.8296291314 87.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3137 1 1 0 47.8869086913 54.5315389352 87.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3138 1 1 0 47.1321178182 54.0957602214 87.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3139 1 1 0 46.4644660941 53.5355339059 87.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3140 1 1 0 45.9042397786 52.8678821818 87.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3141 1 1 0 45.4684610648 52.1130913087 87.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3142 1 1 0 45.1703708686 51.2940952255 87.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3143 1 1 0 45.0190265095 50.4357787137 87.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3144 1 1 0 45.0190265095 49.5642212863 87.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3145 1 1 0 45.1703708686 48.7059047745 87.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3146 1 1 0 45.4684610648 47.8869086913 87.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3147 1 1 0 45.9042397786 47.1321178182 87.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3148 1 1 0 46.4644660941 46.4644660941 87.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3149 1 1 0 47.1321178182 45.9042397786 87.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3150 1 1 0 47.8869086913 45.4684610648 87.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3151 1 1 0 48.7059047745 45.1703708686 87.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3152 1 1 0 49.5642212863 45.0190265095 87.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3153 1 1 0 50.4357787137 45.0190265095 87.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3154 1 1 0 51.2940952255 45.1703708686 87.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3155 1 1 0 52.1130913087 45.4684610648 87.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3156 1 1 0 52.8678821818 45.9042397786 87.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3157 1 1 0 53.5355339059 46.4644660941 87.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3158 1 1 0 54.0957602214 47.1321178182 87.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3159 1 1 0 54.5315389352 47.8869086913 87.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3160 1 1 0 54.8296291314 48.7059047745 87.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3161 1 1 0 54.9809734905 49.5642212863 87.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3162 1 1 0 54.9809734905 50.4357787137 87.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3163 1 1 0 54.8296291314 51.2940952255 87.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3164 1 1 0 54.5315389352 52.1130913087 87.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3165 1 1 0 54.0957602214 52.8678821818 87.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3166 1 1 0 53.5355339059 53.5355339059 87.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3167 1 1 0 52.8678821818 54.0957602214 87.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3168 1 1 0 52.1130913087 54.5315389352 87.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3169 1 1 0 50.8682408883 54.9240387651 88.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3170 1 1 0 50.0 55.0 88.0 7.41158905739e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3171 1 1 0 49.1317591117 54.9240387651 88.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3172 1 1 0 48.2898992834 54.6984631039 88.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3173 1 1 0 47.5 54.3301270189 88.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3174 1 1 0 46.7860619516 53.8302222156 88.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3175 1 1 0 46.1697777844 53.2139380484 88.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3176 1 1 0 45.6698729811 52.5 88.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3177 1 1 0 45.3015368961 51.7101007166 88.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3178 1 1 0 45.0759612349 50.8682408883 88.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3179 1 1 0 45.0 50.0 88.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3180 1 1 0 45.0759612349 49.1317591117 88.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3181 1 1 0 45.3015368961 48.2898992834 88.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3182 1 1 0 45.6698729811 47.5 88.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3183 1 1 0 46.1697777844 46.7860619516 88.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3184 1 1 0 46.7860619516 46.1697777844 88.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3185 1 1 0 47.5 45.6698729811 88.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3186 1 1 0 48.2898992834 45.3015368961 88.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3187 1 1 0 49.1317591117 45.0759612349 88.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3188 1 1 0 50.0 45.0 88.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3189 1 1 0 50.8682408883 45.0759612349 88.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3190 1 1 0 51.7101007166 45.3015368961 88.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3191 1 1 0 52.5 45.6698729811 88.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3192 1 1 0 53.2139380484 46.1697777844 88.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3193 1 1 0 53.8302222156 46.7860619516 88.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3194 1 1 0 54.3301270189 47.5 88.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3195 1 1 0 54.6984631039 48.2898992834 88.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3196 1 1 0 54.9240387651 49.1317591117 88.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3197 1 1 0 55.0 50.0 88.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3198 1 1 0 54.9240387651 50.8682408883 88.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3199 1 1 0 54.6984631039 51.7101007166 88.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3200 1 1 0 54.3301270189 52.5 88.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3201 1 1 0 53.8302222156 53.2139380484 88.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3202 1 1 0 53.2139380484 53.8302222156 88.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3203 1 1 0 52.5 54.3301270189 88.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3204 1 1 0 51.7101007166 54.6984631039 88.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3205 1 1 0 50.4357787137 54.9809734905 89.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3206 1 1 0 49.5642212863 54.9809734905 89.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3207 1 1 0 48.7059047745 54.8296291314 89.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3208 1 1 0 47.8869086913 54.5315389352 89.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3209 1 1 0 47.1321178182 54.0957602214 89.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3210 1 1 0 46.4644660941 53.5355339059 89.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3211 1 1 0 45.9042397786 52.8678821818 89.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3212 1 1 0 45.4684610648 52.1130913087 89.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3213 1 1 0 45.1703708686 51.2940952255 89.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3214 1 1 0 45.0190265095 50.4357787137 89.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3215 1 1 0 45.0190265095 49.5642212863 89.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3216 1 1 0 45.1703708686 48.7059047745 89.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3217 1 1 0 45.4684610648 47.8869086913 89.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3218 1 1 0 45.9042397786 47.1321178182 89.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3219 1 1 0 46.4644660941 46.4644660941 89.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3220 1 1 0 47.1321178182 45.9042397786 89.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3221 1 1 0 47.8869086913 45.4684610648 89.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3222 1 1 0 48.7059047745 45.1703708686 89.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3223 1 1 0 49.5642212863 45.0190265095 89.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3224 1 1 0 50.4357787137 45.0190265095 89.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3225 1 1 0 51.2940952255 45.1703708686 89.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3226 1 1 0 52.1130913087 45.4684610648 89.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3227 1 1 0 52.8678821818 45.9042397786 89.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3228 1 1 0 53.5355339059 46.4644660941 89.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3229 1 1 0 54.0957602214 47.1321178182 89.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3230 1 1 0 54.5315389352 47.8869086913 89.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3231 1 1 0 54.8296291314 48.7059047745 89.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3232 1 1 0 54.9809734905 49.5642212863 89.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3233 1 1 0 54.9809734905 50.4357787137 89.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3234 1 1 0 54.8296291314 51.2940952255 89.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3235 1 1 0 54.5315389352 52.1130913087 89.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3236 1 1 0 54.0957602214 52.8678821818 89.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3237 1 1 0 53.5355339059 53.5355339059 89.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3238 1 1 0 52.8678821818 54.0957602214 89.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3239 1 1 0 52.1130913087 54.5315389352 89.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3240 1 1 0 51.2940952255 54.8296291314 89.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3241 1 1 0 50.0 55.0 90.0 7.41158905739e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3242 1 1 0 49.1317591117 54.9240387651 90.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3243 1 1 0 48.2898992834 54.6984631039 90.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3244 1 1 0 47.5 54.3301270189 90.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3245 1 1 0 46.7860619516 53.8302222156 90.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3246 1 1 0 46.1697777844 53.2139380484 90.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3247 1 1 0 45.6698729811 52.5 90.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3248 1 1 0 45.3015368961 51.7101007166 90.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3249 1 1 0 45.0759612349 50.8682408883 90.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3250 1 1 0 45.0 50.0 90.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3251 1 1 0 45.0759612349 49.1317591117 90.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3252 1 1 0 45.3015368961 48.2898992834 90.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3253 1 1 0 45.6698729811 47.5 90.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3254 1 1 0 46.1697777844 46.7860619516 90.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3255 1 1 0 46.7860619516 46.1697777844 90.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3256 1 1 0 47.5 45.6698729811 90.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3257 1 1 0 48.2898992834 45.3015368961 90.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3258 1 1 0 49.1317591117 45.0759612349 90.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3259 1 1 0 50.0 45.0 90.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3260 1 1 0 50.8682408883 45.0759612349 90.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3261 1 1 0 51.7101007166 45.3015368961 90.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3262 1 1 0 52.5 45.6698729811 90.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3263 1 1 0 53.2139380484 46.1697777844 90.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3264 1 1 0 53.8302222156 46.7860619516 90.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3265 1 1 0 54.3301270189 47.5 90.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3266 1 1 0 54.6984631039 48.2898992834 90.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3267 1 1 0 54.9240387651 49.1317591117 90.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3268 1 1 0 55.0 50.0 90.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3269 1 1 0 54.9240387651 50.8682408883 90.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3270 1 1 0 54.6984631039 51.7101007166 90.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3271 1 1 0 54.3301270189 52.5 90.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3272 1 1 0 53.8302222156 53.2139380484 90.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3273 1 1 0 53.2139380484 53.8302222156 90.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3274 1 1 0 52.5 54.3301270189 90.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3275 1 1 0 51.7101007166 54.6984631039 90.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3276 1 1 0 50.8682408883 54.9240387651 90.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3277 1 1 0 49.5642212863 54.9809734905 91.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3278 1 1 0 48.7059047745 54.8296291314 91.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3279 1 1 0 47.8869086913 54.5315389352 91.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3280 1 1 0 47.1321178182 54.0957602214 91.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3281 1 1 0 46.4644660941 53.5355339059 91.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3282 1 1 0 45.9042397786 52.8678821818 91.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3283 1 1 0 45.4684610648 52.1130913087 91.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3284 1 1 0 45.1703708686 51.2940952255 91.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3285 1 1 0 45.0190265095 50.4357787137 91.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3286 1 1 0 45.0190265095 49.5642212863 91.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3287 1 1 0 45.1703708686 48.7059047745 91.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3288 1 1 0 45.4684610648 47.8869086913 91.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3289 1 1 0 45.9042397786 47.1321178182 91.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3290 1 1 0 46.4644660941 46.4644660941 91.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3291 1 1 0 47.1321178182 45.9042397786 91.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3292 1 1 0 47.8869086913 45.4684610648 91.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3293 1 1 0 48.7059047745 45.1703708686 91.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3294 1 1 0 49.5642212863 45.0190265095 91.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3295 1 1 0 50.4357787137 45.0190265095 91.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3296 1 1 0 51.2940952255 45.1703708686 91.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3297 1 1 0 52.1130913087 45.4684610648 91.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3298 1 1 0 52.8678821818 45.9042397786 91.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3299 1 1 0 53.5355339059 46.4644660941 91.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3300 1 1 0 54.0957602214 47.1321178182 91.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3301 1 1 0 54.5315389352 47.8869086913 91.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3302 1 1 0 54.8296291314 48.7059047745 91.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3303 1 1 0 54.9809734905 49.5642212863 91.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3304 1 1 0 54.9809734905 50.4357787137 91.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3305 1 1 0 54.8296291314 51.2940952255 91.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3306 1 1 0 54.5315389352 52.1130913087 91.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3307 1 1 0 54.0957602214 52.8678821818 91.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3308 1 1 0 53.5355339059 53.5355339059 91.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3309 1 1 0 52.8678821818 54.0957602214 91.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3310 1 1 0 52.1130913087 54.5315389352 91.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3311 1 1 0 51.2940952255 54.8296291314 91.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3312 1 1 0 50.4357787137 54.9809734905 91.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3313 1 1 0 49.1317591117 54.9240387651 92.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3314 1 1 0 48.2898992834 54.6984631039 92.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3315 1 1 0 47.5 54.3301270189 92.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3316 1 1 0 46.7860619516 53.8302222156 92.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3317 1 1 0 46.1697777844 53.2139380484 92.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3318 1 1 0 45.6698729811 52.5 92.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3319 1 1 0 45.3015368961 51.7101007166 92.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3320 1 1 0 45.0759612349 50.8682408883 92.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3321 1 1 0 45.0 50.0 92.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3322 1 1 0 45.0759612349 49.1317591117 92.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3323 1 1 0 45.3015368961 48.2898992834 92.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3324 1 1 0 45.6698729811 47.5 92.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3325 1 1 0 46.1697777844 46.7860619516 92.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3326 1 1 0 46.7860619516 46.1697777844 92.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3327 1 1 0 47.5 45.6698729811 92.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3328 1 1 0 48.2898992834 45.3015368961 92.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3329 1 1 0 49.1317591117 45.0759612349 92.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3330 1 1 0 50.0 45.0 92.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3331 1 1 0 50.8682408883 45.0759612349 92.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3332 1 1 0 51.7101007166 45.3015368961 92.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3333 1 1 0 52.5 45.6698729811 92.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3334 1 1 0 53.2139380484 46.1697777844 92.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3335 1 1 0 53.8302222156 46.7860619516 92.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3336 1 1 0 54.3301270189 47.5 92.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3337 1 1 0 54.6984631039 48.2898992834 92.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3338 1 1 0 54.9240387651 49.1317591117 92.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3339 1 1 0 55.0 50.0 92.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3340 1 1 0 54.9240387651 50.8682408883 92.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3341 1 1 0 54.6984631039 51.7101007166 92.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3342 1 1 0 54.3301270189 52.5 92.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3343 1 1 0 53.8302222156 53.2139380484 92.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3344 1 1 0 53.2139380484 53.8302222156 92.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3345 1 1 0 52.5 54.3301270189 92.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3346 1 1 0 51.7101007166 54.6984631039 92.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3347 1 1 0 50.8682408883 54.9240387651 92.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3348 1 1 0 50.0 55.0 92.0 7.65651841722e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3349 1 1 0 48.7059047745 54.8296291314 93.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3350 1 1 0 47.8869086913 54.5315389352 93.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3351 1 1 0 47.1321178182 54.0957602214 93.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3352 1 1 0 46.4644660941 53.5355339059 93.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3353 1 1 0 45.9042397786 52.8678821818 93.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3354 1 1 0 45.4684610648 52.1130913087 93.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3355 1 1 0 45.1703708686 51.2940952255 93.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3356 1 1 0 45.0190265095 50.4357787137 93.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3357 1 1 0 45.0190265095 49.5642212863 93.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3358 1 1 0 45.1703708686 48.7059047745 93.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3359 1 1 0 45.4684610648 47.8869086913 93.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3360 1 1 0 45.9042397786 47.1321178182 93.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3361 1 1 0 46.4644660941 46.4644660941 93.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3362 1 1 0 47.1321178182 45.9042397786 93.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3363 1 1 0 47.8869086913 45.4684610648 93.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3364 1 1 0 48.7059047745 45.1703708686 93.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3365 1 1 0 49.5642212863 45.0190265095 93.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3366 1 1 0 50.4357787137 45.0190265095 93.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3367 1 1 0 51.2940952255 45.1703708686 93.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3368 1 1 0 52.1130913087 45.4684610648 93.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3369 1 1 0 52.8678821818 45.9042397786 93.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3370 1 1 0 53.5355339059 46.4644660941 93.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3371 1 1 0 54.0957602214 47.1321178182 93.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3372 1 1 0 54.5315389352 47.8869086913 93.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3373 1 1 0 54.8296291314 48.7059047745 93.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3374 1 1 0 54.9809734905 49.5642212863 93.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3375 1 1 0 54.9809734905 50.4357787137 93.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3376 1 1 0 54.8296291314 51.2940952255 93.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3377 1 1 0 54.5315389352 52.1130913087 93.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3378 1 1 0 54.0957602214 52.8678821818 93.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3379 1 1 0 53.5355339059 53.5355339059 93.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3380 1 1 0 52.8678821818 54.0957602214 93.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3381 1 1 0 52.1130913087 54.5315389352 93.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3382 1 1 0 51.2940952255 54.8296291314 93.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3383 1 1 0 50.4357787137 54.9809734905 93.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3384 1 1 0 49.5642212863 54.9809734905 93.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3385 1 1 0 48.2898992834 54.6984631039 94.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3386 1 1 0 47.5 54.3301270189 94.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3387 1 1 0 46.7860619516 53.8302222156 94.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3388 1 1 0 46.1697777844 53.2139380484 94.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3389 1 1 0 45.6698729811 52.5 94.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3390 1 1 0 45.3015368961 51.7101007166 94.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3391 1 1 0 45.0759612349 50.8682408883 94.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3392 1 1 0 45.0 50.0 94.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3393 1 1 0 45.0759612349 49.1317591117 94.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3394 1 1 0 45.3015368961 48.2898992834 94.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3395 1 1 0 45.6698729811 47.5 94.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3396 1 1 0 46.1697777844 46.7860619516 94.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3397 1 1 0 46.7860619516 46.1697777844 94.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3398 1 1 0 47.5 45.6698729811 94.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3399 1 1 0 48.2898992834 45.3015368961 94.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3400 1 1 0 49.1317591117 45.0759612349 94.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3401 1 1 0 50.0 45.0 94.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3402 1 1 0 50.8682408883 45.0759612349 94.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3403 1 1 0 51.7101007166 45.3015368961 94.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3404 1 1 0 52.5 45.6698729811 94.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3405 1 1 0 53.2139380484 46.1697777844 94.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3406 1 1 0 53.8302222156 46.7860619516 94.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3407 1 1 0 54.3301270189 47.5 94.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3408 1 1 0 54.6984631039 48.2898992834 94.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3409 1 1 0 54.9240387651 49.1317591117 94.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3410 1 1 0 55.0 50.0 94.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3411 1 1 0 54.9240387651 50.8682408883 94.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3412 1 1 0 54.6984631039 51.7101007166 94.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3413 1 1 0 54.3301270189 52.5 94.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3414 1 1 0 53.8302222156 53.2139380484 94.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3415 1 1 0 53.2139380484 53.8302222156 94.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3416 1 1 0 52.5 54.3301270189 94.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3417 1 1 0 51.7101007166 54.6984631039 94.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3418 1 1 0 50.8682408883 54.9240387651 94.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3419 1 1 0 50.0 55.0 94.0 9.43287525662e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3420 1 1 0 49.1317591117 54.9240387651 94.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3421 1 1 0 47.8869086913 54.5315389352 95.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3422 1 1 0 47.1321178182 54.0957602214 95.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3423 1 1 0 46.4644660941 53.5355339059 95.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3424 1 1 0 45.9042397786 52.8678821818 95.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3425 1 1 0 45.4684610648 52.1130913087 95.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3426 1 1 0 45.1703708686 51.2940952255 95.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3427 1 1 0 45.0190265095 50.4357787137 95.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3428 1 1 0 45.0190265095 49.5642212863 95.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3429 1 1 0 45.1703708686 48.7059047745 95.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3430 1 1 0 45.4684610648 47.8869086913 95.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3431 1 1 0 45.9042397786 47.1321178182 95.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3432 1 1 0 46.4644660941 46.4644660941 95.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3433 1 1 0 47.1321178182 45.9042397786 95.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3434 1 1 0 47.8869086913 45.4684610648 95.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3435 1 1 0 48.7059047745 45.1703708686 95.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3436 1 1 0 49.5642212863 45.0190265095 95.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3437 1 1 0 50.4357787137 45.0190265095 95.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3438 1 1 0 51.2940952255 45.1703708686 95.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3439 1 1 0 52.1130913087 45.4684610648 95.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3440 1 1 0 52.8678821818 45.9042397786 95.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3441 1 1 0 53.5355339059 46.4644660941 95.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3442 1 1 0 54.0957602214 47.1321178182 95.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3443 1 1 0 54.5315389352 47.8869086913 95.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3444 1 1 0 54.8296291314 48.7059047745 95.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3445 1 1 0 54.9809734905 49.5642212863 95.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3446 1 1 0 54.9809734905 50.4357787137 95.0 0.996194698092 0.0871557427476 0 0.872664625997 -75 42.5 42.5 0.2 +3447 1 1 0 54.8296291314 51.2940952255 95.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3448 1 1 0 54.5315389352 52.1130913087 95.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3449 1 1 0 54.0957602214 52.8678821818 95.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3450 1 1 0 53.5355339059 53.5355339059 95.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3451 1 1 0 52.8678821818 54.0957602214 95.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3452 1 1 0 52.1130913087 54.5315389352 95.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3453 1 1 0 51.2940952255 54.8296291314 95.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3454 1 1 0 50.4357787137 54.9809734905 95.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3455 1 1 0 49.5642212863 54.9809734905 95.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3456 1 1 0 48.7059047745 54.8296291314 95.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3457 1 1 0 47.5 54.3301270189 96.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3458 1 1 0 46.7860619516 53.8302222156 96.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3459 1 1 0 46.1697777844 53.2139380484 96.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3460 1 1 0 45.6698729811 52.5 96.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3461 1 1 0 45.3015368961 51.7101007166 96.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3462 1 1 0 45.0759612349 50.8682408883 96.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3463 1 1 0 45.0 50.0 96.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3464 1 1 0 45.0759612349 49.1317591117 96.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3465 1 1 0 45.3015368961 48.2898992834 96.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3466 1 1 0 45.6698729811 47.5 96.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3467 1 1 0 46.1697777844 46.7860619516 96.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3468 1 1 0 46.7860619516 46.1697777844 96.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3469 1 1 0 47.5 45.6698729811 96.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3470 1 1 0 48.2898992834 45.3015368961 96.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3471 1 1 0 49.1317591117 45.0759612349 96.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3472 1 1 0 50.0 45.0 96.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3473 1 1 0 50.8682408883 45.0759612349 96.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3474 1 1 0 51.7101007166 45.3015368961 96.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3475 1 1 0 52.5 45.6698729811 96.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3476 1 1 0 53.2139380484 46.1697777844 96.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3477 1 1 0 53.8302222156 46.7860619516 96.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3478 1 1 0 54.3301270189 47.5 96.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3479 1 1 0 54.6984631039 48.2898992834 96.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3480 1 1 0 54.9240387651 49.1317591117 96.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3481 1 1 0 55.0 50.0 96.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3482 1 1 0 54.9240387651 50.8682408883 96.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3483 1 1 0 54.6984631039 51.7101007166 96.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3484 1 1 0 54.3301270189 52.5 96.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3485 1 1 0 53.8302222156 53.2139380484 96.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3486 1 1 0 53.2139380484 53.8302222156 96.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3487 1 1 0 52.5 54.3301270189 96.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3488 1 1 0 51.7101007166 54.6984631039 96.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3489 1 1 0 50.8682408883 54.9240387651 96.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3490 1 1 0 50.0 55.0 96.0 9.43287525662e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3491 1 1 0 49.1317591117 54.9240387651 96.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3492 1 1 0 48.2898992834 54.6984631039 96.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3493 1 1 0 47.1321178182 54.0957602214 97.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3494 1 1 0 46.4644660941 53.5355339059 97.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3495 1 1 0 45.9042397786 52.8678821818 97.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3496 1 1 0 45.4684610648 52.1130913087 97.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3497 1 1 0 45.1703708686 51.2940952255 97.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3498 1 1 0 45.0190265095 50.4357787137 97.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3499 1 1 0 45.0190265095 49.5642212863 97.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3500 1 1 0 45.1703708686 48.7059047745 97.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3501 1 1 0 45.4684610648 47.8869086913 97.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3502 1 1 0 45.9042397786 47.1321178182 97.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3503 1 1 0 46.4644660941 46.4644660941 97.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3504 1 1 0 47.1321178182 45.9042397786 97.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3505 1 1 0 47.8869086913 45.4684610648 97.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3506 1 1 0 48.7059047745 45.1703708686 97.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3507 1 1 0 49.5642212863 45.0190265095 97.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3508 1 1 0 50.4357787137 45.0190265095 97.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3509 1 1 0 51.2940952255 45.1703708686 97.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3510 1 1 0 52.1130913087 45.4684610648 97.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3511 1 1 0 52.8678821818 45.9042397786 97.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3512 1 1 0 53.5355339059 46.4644660941 97.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3513 1 1 0 54.0957602214 47.1321178182 97.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3514 1 1 0 54.5315389352 47.8869086913 97.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3515 1 1 0 54.8296291314 48.7059047745 97.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3516 1 1 0 54.9809734905 49.5642212863 97.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3517 1 1 0 54.9809734905 50.4357787137 97.0 0.996194698092 0.0871557427476 0 0.872664625997 -75 42.5 42.5 0.2 +3518 1 1 0 54.8296291314 51.2940952255 97.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3519 1 1 0 54.5315389352 52.1130913087 97.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3520 1 1 0 54.0957602214 52.8678821818 97.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3521 1 1 0 53.5355339059 53.5355339059 97.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3522 1 1 0 52.8678821818 54.0957602214 97.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3523 1 1 0 52.1130913087 54.5315389352 97.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3524 1 1 0 51.2940952255 54.8296291314 97.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3525 1 1 0 50.4357787137 54.9809734905 97.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3526 1 1 0 49.5642212863 54.9809734905 97.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3527 1 1 0 48.7059047745 54.8296291314 97.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3528 1 1 0 47.8869086913 54.5315389352 97.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3529 1 1 0 46.7860619516 53.8302222156 98.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3530 1 1 0 46.1697777844 53.2139380484 98.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3531 1 1 0 45.6698729811 52.5 98.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3532 1 1 0 45.3015368961 51.7101007166 98.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3533 1 1 0 45.0759612349 50.8682408883 98.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3534 1 1 0 45.0 50.0 98.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3535 1 1 0 45.0759612349 49.1317591117 98.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3536 1 1 0 45.3015368961 48.2898992834 98.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3537 1 1 0 45.6698729811 47.5 98.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3538 1 1 0 46.1697777844 46.7860619516 98.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3539 1 1 0 46.7860619516 46.1697777844 98.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3540 1 1 0 47.5 45.6698729811 98.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3541 1 1 0 48.2898992834 45.3015368961 98.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3542 1 1 0 49.1317591117 45.0759612349 98.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3543 1 1 0 50.0 45.0 98.0 -9.3104105767e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3544 1 1 0 50.8682408883 45.0759612349 98.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3545 1 1 0 51.7101007166 45.3015368961 98.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3546 1 1 0 52.5 45.6698729811 98.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3547 1 1 0 53.2139380484 46.1697777844 98.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3548 1 1 0 53.8302222156 46.7860619516 98.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3549 1 1 0 54.3301270189 47.5 98.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3550 1 1 0 54.6984631039 48.2898992834 98.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3551 1 1 0 54.9240387651 49.1317591117 98.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3552 1 1 0 55.0 50.0 98.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 +3553 1 1 0 54.9240387651 50.8682408883 98.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 +3554 1 1 0 54.6984631039 51.7101007166 98.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 +3555 1 1 0 54.3301270189 52.5 98.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 +3556 1 1 0 53.8302222156 53.2139380484 98.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 +3557 1 1 0 53.2139380484 53.8302222156 98.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 +3558 1 1 0 52.5 54.3301270189 98.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3559 1 1 0 51.7101007166 54.6984631039 98.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3560 1 1 0 50.8682408883 54.9240387651 98.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3561 1 1 0 50.0 55.0 98.0 9.43287525662e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 +3562 1 1 0 49.1317591117 54.9240387651 98.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 +3563 1 1 0 48.2898992834 54.6984631039 98.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 +3564 1 1 0 47.5 54.3301270189 98.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 +3565 1 1 0 46.4644660941 53.5355339059 99.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3566 1 1 0 45.9042397786 52.8678821818 99.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3567 1 1 0 45.4684610648 52.1130913087 99.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3568 1 1 0 45.1703708686 51.2940952255 99.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3569 1 1 0 45.0190265095 50.4357787137 99.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3570 1 1 0 45.0190265095 49.5642212863 99.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3571 1 1 0 45.1703708686 48.7059047745 99.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3572 1 1 0 45.4684610648 47.8869086913 99.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3573 1 1 0 45.9042397786 47.1321178182 99.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3574 1 1 0 46.4644660941 46.4644660941 99.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3575 1 1 0 47.1321178182 45.9042397786 99.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3576 1 1 0 47.8869086913 45.4684610648 99.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3577 1 1 0 48.7059047745 45.1703708686 99.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3578 1 1 0 49.5642212863 45.0190265095 99.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3579 1 1 0 50.4357787137 45.0190265095 99.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3580 1 1 0 51.2940952255 45.1703708686 99.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3581 1 1 0 52.1130913087 45.4684610648 99.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3582 1 1 0 52.8678821818 45.9042397786 99.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3583 1 1 0 53.5355339059 46.4644660941 99.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3584 1 1 0 54.0957602214 47.1321178182 99.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3585 1 1 0 54.5315389352 47.8869086913 99.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3586 1 1 0 54.8296291314 48.7059047745 99.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3587 1 1 0 54.9809734905 49.5642212863 99.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 +3588 1 1 0 54.9809734905 50.4357787137 99.0 0.996194698092 0.0871557427476 0 0.872664625997 -75 42.5 42.5 0.2 +3589 1 1 0 54.8296291314 51.2940952255 99.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 +3590 1 1 0 54.5315389352 52.1130913087 99.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 +3591 1 1 0 54.0957602214 52.8678821818 99.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 +3592 1 1 0 53.5355339059 53.5355339059 99.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 +3593 1 1 0 52.8678821818 54.0957602214 99.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3594 1 1 0 52.1130913087 54.5315389352 99.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3595 1 1 0 51.2940952255 54.8296291314 99.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3596 1 1 0 50.4357787137 54.9809734905 99.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3597 1 1 0 49.5642212863 54.9809734905 99.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 +3598 1 1 0 48.7059047745 54.8296291314 99.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 +3599 1 1 0 47.8869086913 54.5315389352 99.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 +3600 1 1 0 47.1321178182 54.0957602214 99.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 +3601 2 2 1.0 57.0 50.0 50.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 diff --git a/examples/USER/dielectric/data.minimal b/examples/USER/dielectric/data.minimal new file mode 100644 index 0000000000..f87ae8cd70 --- /dev/null +++ b/examples/USER/dielectric/data.minimal @@ -0,0 +1,50 @@ +LAMMPS data file via write_data, version 22 Nov 2016, timestep = 0 + +32 atoms +3 atom types + +0.0000000000000000e+00 5.0000007843669128e+00 xlo xhi +0.0000000000000000e+00 5.1961532151380023e+00 ylo yhi +0.0000000000000000e+00 1.0000000000000000e+01 zlo zhi + +Masses + +1 1 +2 1 +3 1 + +Atoms # dielectric: id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature + +1 1 1 0 0 0 5 0 0 1 1 8 6 1 0 +2 1 1 0 0.5 0.866026 5 0 0 1 1 8 6 1 0 +3 1 1 0 1 0 5 0 0 1 1 8 6 1 0 +4 1 1 0 1.5 0.866026 5 0 0 1 1 8 6 1 0 +5 1 1 0 2 0 5 0 0 1 1 8 6 1 0 +6 1 1 0 2.5 0.866026 5 0 0 1 1 8 6 1 0 +7 1 1 0 3 0 5 0 0 1 1 8 6 1 0 +8 1 1 0 3.5 0.866026 5 0 0 1 1 8 6 1 0 +9 1 1 0 4 0 5 0 0 1 1 8 6 1 0 +10 1 1 0 4.5 0.866026 5 0 0 1 1 8 6 1 0 +11 1 1 0 0 1.73205 5 0 0 1 1 8 6 1 0 +12 1 1 0 0.5 2.59808 5 0 0 1 1 8 6 1 0 +13 1 1 0 1 1.73205 5 0 0 1 1 8 6 1 0 +14 1 1 0 1.5 2.59808 5 0 0 1 1 8 6 1 0 +15 1 1 0 2 1.73205 5 0 0 1 1 8 6 1 0 +16 1 1 0 2.5 2.59808 5 0 0 1 1 8 6 1 0 +17 1 1 0 3 1.73205 5 0 0 1 1 8 6 1 0 +18 1 1 0 3.5 2.59808 5 0 0 1 1 8 6 1 0 +19 1 1 0 4 1.73205 5 0 0 1 1 8 6 1 0 +20 1 1 0 4.5 2.59808 5 0 0 1 1 8 6 1 0 +21 1 1 0 0 3.4641 5 0 0 1 1 8 6 1 0 +22 1 1 0 0.5 4.33013 5 0 0 1 1 8 6 1 0 +23 1 1 0 1 3.4641 5 0 0 1 1 8 6 1 0 +24 1 1 0 1.5 4.33013 5 0 0 1 1 8 6 1 0 +25 1 1 0 2 3.4641 5 0 0 1 1 8 6 1 0 +26 1 1 0 2.5 4.33013 5 0 0 1 1 8 6 1 0 +27 1 1 0 3 3.4641 5 0 0 1 1 8 6 1 0 +28 1 1 0 3.5 4.33013 5 0 0 1 1 8 6 1 0 +29 1 1 0 4 3.4641 5 0 0 1 1 8 6 1 0 +30 1 1 0 4.5 4.33013 5 0 0 1 1 8 6 1 0 +31 2 2 1 1 1 7 0 0 1 1 8 6 10 0 +32 2 3 -1 3 3 7 0 0 1 1 8 6 10 0 + diff --git a/examples/USER/dielectric/data.plane b/examples/USER/dielectric/data.plane new file mode 100644 index 0000000000..e35233b3e6 --- /dev/null +++ b/examples/USER/dielectric/data.plane @@ -0,0 +1,2019 @@ +LAMMPS data file: using 2001 atoms for single point charge (no pbc), or 2002 atoms for two opposite charges (to have charge neutrality for pbc) + +2001 atoms +3 atom types + +0.0000000000000000e+00 4.0000006274935302e+01 xlo xhi +0.0000000000000000e+00 4.3301276792816687e+01 ylo yhi +0.0000000000000000e+00 4.0000000000000000e+01 zlo zhi + +Masses + +1 1 +2 1 +3 1 + +Atoms # dielectric: id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature + +1 0 1 0 0 0 20 0 0 1 0.866 8 6 1 0 +2 0 1 0 0.5 0.866026 20 0 0 1 0.866 8 6 1 0 +3 0 1 0 1 0 20 0 0 1 0.866 8 6 1 0 +4 0 1 0 1.5 0.866026 20 0 0 1 0.866 8 6 1 0 +5 0 1 0 2 0 20 0 0 1 0.866 8 6 1 0 +6 0 1 0 2.5 0.866026 20 0 0 1 0.866 8 6 1 0 +7 0 1 0 3 0 20 0 0 1 0.866 8 6 1 0 +8 0 1 0 3.5 0.866026 20 0 0 1 0.866 8 6 1 0 +9 0 1 0 4 0 20 0 0 1 0.866 8 6 1 0 +10 0 1 0 4.5 0.866026 20 0 0 1 0.866 8 6 1 0 +11 0 1 0 5 0 20 0 0 1 0.866 8 6 1 0 +12 0 1 0 5.5 0.866026 20 0 0 1 0.866 8 6 1 0 +13 0 1 0 6 0 20 0 0 1 0.866 8 6 1 0 +14 0 1 0 6.5 0.866026 20 0 0 1 0.866 8 6 1 0 +15 0 1 0 7 0 20 0 0 1 0.866 8 6 1 0 +16 0 1 0 7.5 0.866026 20 0 0 1 0.866 8 6 1 0 +17 0 1 0 8 0 20 0 0 1 0.866 8 6 1 0 +18 0 1 0 8.5 0.866026 20 0 0 1 0.866 8 6 1 0 +19 0 1 0 9 0 20 0 0 1 0.866 8 6 1 0 +20 0 1 0 9.5 0.866026 20 0 0 1 0.866 8 6 1 0 +21 0 1 0 10 0 20 0 0 1 0.866 8 6 1 0 +22 0 1 0 10.5 0.866026 20 0 0 1 0.866 8 6 1 0 +23 0 1 0 11 0 20 0 0 1 0.866 8 6 1 0 +24 0 1 0 11.5 0.866026 20 0 0 1 0.866 8 6 1 0 +25 0 1 0 12 0 20 0 0 1 0.866 8 6 1 0 +26 0 1 0 12.5 0.866026 20 0 0 1 0.866 8 6 1 0 +27 0 1 0 13 0 20 0 0 1 0.866 8 6 1 0 +28 0 1 0 13.5 0.866026 20 0 0 1 0.866 8 6 1 0 +29 0 1 0 14 0 20 0 0 1 0.866 8 6 1 0 +30 0 1 0 14.5 0.866026 20 0 0 1 0.866 8 6 1 0 +31 0 1 0 15 0 20 0 0 1 0.866 8 6 1 0 +32 0 1 0 15.5 0.866026 20 0 0 1 0.866 8 6 1 0 +33 0 1 0 16 0 20 0 0 1 0.866 8 6 1 0 +34 0 1 0 16.5 0.866026 20 0 0 1 0.866 8 6 1 0 +35 0 1 0 17 0 20 0 0 1 0.866 8 6 1 0 +36 0 1 0 17.5 0.866026 20 0 0 1 0.866 8 6 1 0 +37 0 1 0 18 0 20 0 0 1 0.866 8 6 1 0 +38 0 1 0 18.5 0.866026 20 0 0 1 0.866 8 6 1 0 +39 0 1 0 19 0 20 0 0 1 0.866 8 6 1 0 +40 0 1 0 19.5 0.866026 20 0 0 1 0.866 8 6 1 0 +41 0 1 0 20 0 20 0 0 1 0.866 8 6 1 0 +42 0 1 0 20.5 0.866026 20 0 0 1 0.866 8 6 1 0 +43 0 1 0 21 0 20 0 0 1 0.866 8 6 1 0 +44 0 1 0 21.5 0.866026 20 0 0 1 0.866 8 6 1 0 +45 0 1 0 22 0 20 0 0 1 0.866 8 6 1 0 +46 0 1 0 22.5 0.866026 20 0 0 1 0.866 8 6 1 0 +47 0 1 0 23 0 20 0 0 1 0.866 8 6 1 0 +48 0 1 0 23.5 0.866026 20 0 0 1 0.866 8 6 1 0 +49 0 1 0 24 0 20 0 0 1 0.866 8 6 1 0 +50 0 1 0 24.5 0.866026 20 0 0 1 0.866 8 6 1 0 +51 0 1 0 25 0 20 0 0 1 0.866 8 6 1 0 +52 0 1 0 25.5 0.866026 20 0 0 1 0.866 8 6 1 0 +53 0 1 0 26 0 20 0 0 1 0.866 8 6 1 0 +54 0 1 0 26.5 0.866026 20 0 0 1 0.866 8 6 1 0 +55 0 1 0 27 0 20 0 0 1 0.866 8 6 1 0 +56 0 1 0 27.5 0.866026 20 0 0 1 0.866 8 6 1 0 +57 0 1 0 28 0 20 0 0 1 0.866 8 6 1 0 +58 0 1 0 28.5 0.866026 20 0 0 1 0.866 8 6 1 0 +59 0 1 0 29 0 20 0 0 1 0.866 8 6 1 0 +60 0 1 0 29.5 0.866026 20 0 0 1 0.866 8 6 1 0 +61 0 1 0 30 0 20 0 0 1 0.866 8 6 1 0 +62 0 1 0 30.5 0.866026 20 0 0 1 0.866 8 6 1 0 +63 0 1 0 31 0 20 0 0 1 0.866 8 6 1 0 +64 0 1 0 31.5 0.866026 20 0 0 1 0.866 8 6 1 0 +65 0 1 0 32 0 20 0 0 1 0.866 8 6 1 0 +66 0 1 0 32.5 0.866026 20 0 0 1 0.866 8 6 1 0 +67 0 1 0 33 0 20 0 0 1 0.866 8 6 1 0 +68 0 1 0 33.5 0.866026 20 0 0 1 0.866 8 6 1 0 +69 0 1 0 34 0 20 0 0 1 0.866 8 6 1 0 +70 0 1 0 34.5 0.866026 20 0 0 1 0.866 8 6 1 0 +71 0 1 0 35 0 20 0 0 1 0.866 8 6 1 0 +72 0 1 0 35.5 0.866026 20 0 0 1 0.866 8 6 1 0 +73 0 1 0 36 0 20 0 0 1 0.866 8 6 1 0 +74 0 1 0 36.5 0.866026 20 0 0 1 0.866 8 6 1 0 +75 0 1 0 37 0 20 0 0 1 0.866 8 6 1 0 +76 0 1 0 37.5 0.866026 20 0 0 1 0.866 8 6 1 0 +77 0 1 0 38 0 20 0 0 1 0.866 8 6 1 0 +78 0 1 0 38.5 0.866026 20 0 0 1 0.866 8 6 1 0 +79 0 1 0 39 0 20 0 0 1 0.866 8 6 1 0 +80 0 1 0 39.5 0.866026 20 0 0 1 0.866 8 6 1 0 +81 0 1 0 0 1.73205 20 0 0 1 0.866 8 6 1 0 +82 0 1 0 0.5 2.59808 20 0 0 1 0.866 8 6 1 0 +83 0 1 0 1 1.73205 20 0 0 1 0.866 8 6 1 0 +84 0 1 0 1.5 2.59808 20 0 0 1 0.866 8 6 1 0 +85 0 1 0 2 1.73205 20 0 0 1 0.866 8 6 1 0 +86 0 1 0 2.5 2.59808 20 0 0 1 0.866 8 6 1 0 +87 0 1 0 3 1.73205 20 0 0 1 0.866 8 6 1 0 +88 0 1 0 3.5 2.59808 20 0 0 1 0.866 8 6 1 0 +89 0 1 0 4 1.73205 20 0 0 1 0.866 8 6 1 0 +90 0 1 0 4.5 2.59808 20 0 0 1 0.866 8 6 1 0 +91 0 1 0 5 1.73205 20 0 0 1 0.866 8 6 1 0 +92 0 1 0 5.5 2.59808 20 0 0 1 0.866 8 6 1 0 +93 0 1 0 6 1.73205 20 0 0 1 0.866 8 6 1 0 +94 0 1 0 6.5 2.59808 20 0 0 1 0.866 8 6 1 0 +95 0 1 0 7 1.73205 20 0 0 1 0.866 8 6 1 0 +96 0 1 0 7.5 2.59808 20 0 0 1 0.866 8 6 1 0 +97 0 1 0 8 1.73205 20 0 0 1 0.866 8 6 1 0 +98 0 1 0 8.5 2.59808 20 0 0 1 0.866 8 6 1 0 +99 0 1 0 9 1.73205 20 0 0 1 0.866 8 6 1 0 +100 0 1 0 9.5 2.59808 20 0 0 1 0.866 8 6 1 0 +101 0 1 0 10 1.73205 20 0 0 1 0.866 8 6 1 0 +102 0 1 0 10.5 2.59808 20 0 0 1 0.866 8 6 1 0 +103 0 1 0 11 1.73205 20 0 0 1 0.866 8 6 1 0 +104 0 1 0 11.5 2.59808 20 0 0 1 0.866 8 6 1 0 +105 0 1 0 12 1.73205 20 0 0 1 0.866 8 6 1 0 +106 0 1 0 12.5 2.59808 20 0 0 1 0.866 8 6 1 0 +107 0 1 0 13 1.73205 20 0 0 1 0.866 8 6 1 0 +108 0 1 0 13.5 2.59808 20 0 0 1 0.866 8 6 1 0 +109 0 1 0 14 1.73205 20 0 0 1 0.866 8 6 1 0 +110 0 1 0 14.5 2.59808 20 0 0 1 0.866 8 6 1 0 +111 0 1 0 15 1.73205 20 0 0 1 0.866 8 6 1 0 +112 0 1 0 15.5 2.59808 20 0 0 1 0.866 8 6 1 0 +113 0 1 0 16 1.73205 20 0 0 1 0.866 8 6 1 0 +114 0 1 0 16.5 2.59808 20 0 0 1 0.866 8 6 1 0 +115 0 1 0 17 1.73205 20 0 0 1 0.866 8 6 1 0 +116 0 1 0 17.5 2.59808 20 0 0 1 0.866 8 6 1 0 +117 0 1 0 18 1.73205 20 0 0 1 0.866 8 6 1 0 +118 0 1 0 18.5 2.59808 20 0 0 1 0.866 8 6 1 0 +119 0 1 0 19 1.73205 20 0 0 1 0.866 8 6 1 0 +120 0 1 0 19.5 2.59808 20 0 0 1 0.866 8 6 1 0 +121 0 1 0 20 1.73205 20 0 0 1 0.866 8 6 1 0 +122 0 1 0 20.5 2.59808 20 0 0 1 0.866 8 6 1 0 +123 0 1 0 21 1.73205 20 0 0 1 0.866 8 6 1 0 +124 0 1 0 21.5 2.59808 20 0 0 1 0.866 8 6 1 0 +125 0 1 0 22 1.73205 20 0 0 1 0.866 8 6 1 0 +126 0 1 0 22.5 2.59808 20 0 0 1 0.866 8 6 1 0 +127 0 1 0 23 1.73205 20 0 0 1 0.866 8 6 1 0 +128 0 1 0 23.5 2.59808 20 0 0 1 0.866 8 6 1 0 +129 0 1 0 24 1.73205 20 0 0 1 0.866 8 6 1 0 +130 0 1 0 24.5 2.59808 20 0 0 1 0.866 8 6 1 0 +131 0 1 0 25 1.73205 20 0 0 1 0.866 8 6 1 0 +132 0 1 0 25.5 2.59808 20 0 0 1 0.866 8 6 1 0 +133 0 1 0 26 1.73205 20 0 0 1 0.866 8 6 1 0 +134 0 1 0 26.5 2.59808 20 0 0 1 0.866 8 6 1 0 +135 0 1 0 27 1.73205 20 0 0 1 0.866 8 6 1 0 +136 0 1 0 27.5 2.59808 20 0 0 1 0.866 8 6 1 0 +137 0 1 0 28 1.73205 20 0 0 1 0.866 8 6 1 0 +138 0 1 0 28.5 2.59808 20 0 0 1 0.866 8 6 1 0 +139 0 1 0 29 1.73205 20 0 0 1 0.866 8 6 1 0 +140 0 1 0 29.5 2.59808 20 0 0 1 0.866 8 6 1 0 +141 0 1 0 30 1.73205 20 0 0 1 0.866 8 6 1 0 +142 0 1 0 30.5 2.59808 20 0 0 1 0.866 8 6 1 0 +143 0 1 0 31 1.73205 20 0 0 1 0.866 8 6 1 0 +144 0 1 0 31.5 2.59808 20 0 0 1 0.866 8 6 1 0 +145 0 1 0 32 1.73205 20 0 0 1 0.866 8 6 1 0 +146 0 1 0 32.5 2.59808 20 0 0 1 0.866 8 6 1 0 +147 0 1 0 33 1.73205 20 0 0 1 0.866 8 6 1 0 +148 0 1 0 33.5 2.59808 20 0 0 1 0.866 8 6 1 0 +149 0 1 0 34 1.73205 20 0 0 1 0.866 8 6 1 0 +150 0 1 0 34.5 2.59808 20 0 0 1 0.866 8 6 1 0 +151 0 1 0 35 1.73205 20 0 0 1 0.866 8 6 1 0 +152 0 1 0 35.5 2.59808 20 0 0 1 0.866 8 6 1 0 +153 0 1 0 36 1.73205 20 0 0 1 0.866 8 6 1 0 +154 0 1 0 36.5 2.59808 20 0 0 1 0.866 8 6 1 0 +155 0 1 0 37 1.73205 20 0 0 1 0.866 8 6 1 0 +156 0 1 0 37.5 2.59808 20 0 0 1 0.866 8 6 1 0 +157 0 1 0 38 1.73205 20 0 0 1 0.866 8 6 1 0 +158 0 1 0 38.5 2.59808 20 0 0 1 0.866 8 6 1 0 +159 0 1 0 39 1.73205 20 0 0 1 0.866 8 6 1 0 +160 0 1 0 39.5 2.59808 20 0 0 1 0.866 8 6 1 0 +161 0 1 0 0 3.4641 20 0 0 1 0.866 8 6 1 0 +162 0 1 0 0.5 4.33013 20 0 0 1 0.866 8 6 1 0 +163 0 1 0 1 3.4641 20 0 0 1 0.866 8 6 1 0 +164 0 1 0 1.5 4.33013 20 0 0 1 0.866 8 6 1 0 +165 0 1 0 2 3.4641 20 0 0 1 0.866 8 6 1 0 +166 0 1 0 2.5 4.33013 20 0 0 1 0.866 8 6 1 0 +167 0 1 0 3 3.4641 20 0 0 1 0.866 8 6 1 0 +168 0 1 0 3.5 4.33013 20 0 0 1 0.866 8 6 1 0 +169 0 1 0 4 3.4641 20 0 0 1 0.866 8 6 1 0 +170 0 1 0 4.5 4.33013 20 0 0 1 0.866 8 6 1 0 +171 0 1 0 5 3.4641 20 0 0 1 0.866 8 6 1 0 +172 0 1 0 5.5 4.33013 20 0 0 1 0.866 8 6 1 0 +173 0 1 0 6 3.4641 20 0 0 1 0.866 8 6 1 0 +174 0 1 0 6.5 4.33013 20 0 0 1 0.866 8 6 1 0 +175 0 1 0 7 3.4641 20 0 0 1 0.866 8 6 1 0 +176 0 1 0 7.5 4.33013 20 0 0 1 0.866 8 6 1 0 +177 0 1 0 8 3.4641 20 0 0 1 0.866 8 6 1 0 +178 0 1 0 8.5 4.33013 20 0 0 1 0.866 8 6 1 0 +179 0 1 0 9 3.4641 20 0 0 1 0.866 8 6 1 0 +180 0 1 0 9.5 4.33013 20 0 0 1 0.866 8 6 1 0 +181 0 1 0 10 3.4641 20 0 0 1 0.866 8 6 1 0 +182 0 1 0 10.5 4.33013 20 0 0 1 0.866 8 6 1 0 +183 0 1 0 11 3.4641 20 0 0 1 0.866 8 6 1 0 +184 0 1 0 11.5 4.33013 20 0 0 1 0.866 8 6 1 0 +185 0 1 0 12 3.4641 20 0 0 1 0.866 8 6 1 0 +186 0 1 0 12.5 4.33013 20 0 0 1 0.866 8 6 1 0 +187 0 1 0 13 3.4641 20 0 0 1 0.866 8 6 1 0 +188 0 1 0 13.5 4.33013 20 0 0 1 0.866 8 6 1 0 +189 0 1 0 14 3.4641 20 0 0 1 0.866 8 6 1 0 +190 0 1 0 14.5 4.33013 20 0 0 1 0.866 8 6 1 0 +191 0 1 0 15 3.4641 20 0 0 1 0.866 8 6 1 0 +192 0 1 0 15.5 4.33013 20 0 0 1 0.866 8 6 1 0 +193 0 1 0 16 3.4641 20 0 0 1 0.866 8 6 1 0 +194 0 1 0 16.5 4.33013 20 0 0 1 0.866 8 6 1 0 +195 0 1 0 17 3.4641 20 0 0 1 0.866 8 6 1 0 +196 0 1 0 17.5 4.33013 20 0 0 1 0.866 8 6 1 0 +197 0 1 0 18 3.4641 20 0 0 1 0.866 8 6 1 0 +198 0 1 0 18.5 4.33013 20 0 0 1 0.866 8 6 1 0 +199 0 1 0 19 3.4641 20 0 0 1 0.866 8 6 1 0 +200 0 1 0 19.5 4.33013 20 0 0 1 0.866 8 6 1 0 +201 0 1 0 20 3.4641 20 0 0 1 0.866 8 6 1 0 +202 0 1 0 20.5 4.33013 20 0 0 1 0.866 8 6 1 0 +203 0 1 0 21 3.4641 20 0 0 1 0.866 8 6 1 0 +204 0 1 0 21.5 4.33013 20 0 0 1 0.866 8 6 1 0 +205 0 1 0 22 3.4641 20 0 0 1 0.866 8 6 1 0 +206 0 1 0 22.5 4.33013 20 0 0 1 0.866 8 6 1 0 +207 0 1 0 23 3.4641 20 0 0 1 0.866 8 6 1 0 +208 0 1 0 23.5 4.33013 20 0 0 1 0.866 8 6 1 0 +209 0 1 0 24 3.4641 20 0 0 1 0.866 8 6 1 0 +210 0 1 0 24.5 4.33013 20 0 0 1 0.866 8 6 1 0 +211 0 1 0 25 3.4641 20 0 0 1 0.866 8 6 1 0 +212 0 1 0 25.5 4.33013 20 0 0 1 0.866 8 6 1 0 +213 0 1 0 26 3.4641 20 0 0 1 0.866 8 6 1 0 +214 0 1 0 26.5 4.33013 20 0 0 1 0.866 8 6 1 0 +215 0 1 0 27 3.4641 20 0 0 1 0.866 8 6 1 0 +216 0 1 0 27.5 4.33013 20 0 0 1 0.866 8 6 1 0 +217 0 1 0 28 3.4641 20 0 0 1 0.866 8 6 1 0 +218 0 1 0 28.5 4.33013 20 0 0 1 0.866 8 6 1 0 +219 0 1 0 29 3.4641 20 0 0 1 0.866 8 6 1 0 +220 0 1 0 29.5 4.33013 20 0 0 1 0.866 8 6 1 0 +221 0 1 0 30 3.4641 20 0 0 1 0.866 8 6 1 0 +222 0 1 0 30.5 4.33013 20 0 0 1 0.866 8 6 1 0 +223 0 1 0 31 3.4641 20 0 0 1 0.866 8 6 1 0 +224 0 1 0 31.5 4.33013 20 0 0 1 0.866 8 6 1 0 +225 0 1 0 32 3.4641 20 0 0 1 0.866 8 6 1 0 +226 0 1 0 32.5 4.33013 20 0 0 1 0.866 8 6 1 0 +227 0 1 0 33 3.4641 20 0 0 1 0.866 8 6 1 0 +228 0 1 0 33.5 4.33013 20 0 0 1 0.866 8 6 1 0 +229 0 1 0 34 3.4641 20 0 0 1 0.866 8 6 1 0 +230 0 1 0 34.5 4.33013 20 0 0 1 0.866 8 6 1 0 +231 0 1 0 35 3.4641 20 0 0 1 0.866 8 6 1 0 +232 0 1 0 35.5 4.33013 20 0 0 1 0.866 8 6 1 0 +233 0 1 0 36 3.4641 20 0 0 1 0.866 8 6 1 0 +234 0 1 0 36.5 4.33013 20 0 0 1 0.866 8 6 1 0 +235 0 1 0 37 3.4641 20 0 0 1 0.866 8 6 1 0 +236 0 1 0 37.5 4.33013 20 0 0 1 0.866 8 6 1 0 +237 0 1 0 38 3.4641 20 0 0 1 0.866 8 6 1 0 +238 0 1 0 38.5 4.33013 20 0 0 1 0.866 8 6 1 0 +239 0 1 0 39 3.4641 20 0 0 1 0.866 8 6 1 0 +240 0 1 0 39.5 4.33013 20 0 0 1 0.866 8 6 1 0 +241 0 1 0 0 5.19615 20 0 0 1 0.866 8 6 1 0 +242 0 1 0 0.5 6.06218 20 0 0 1 0.866 8 6 1 0 +243 0 1 0 1 5.19615 20 0 0 1 0.866 8 6 1 0 +244 0 1 0 1.5 6.06218 20 0 0 1 0.866 8 6 1 0 +245 0 1 0 2 5.19615 20 0 0 1 0.866 8 6 1 0 +246 0 1 0 2.5 6.06218 20 0 0 1 0.866 8 6 1 0 +247 0 1 0 3 5.19615 20 0 0 1 0.866 8 6 1 0 +248 0 1 0 3.5 6.06218 20 0 0 1 0.866 8 6 1 0 +249 0 1 0 4 5.19615 20 0 0 1 0.866 8 6 1 0 +250 0 1 0 4.5 6.06218 20 0 0 1 0.866 8 6 1 0 +251 0 1 0 5 5.19615 20 0 0 1 0.866 8 6 1 0 +252 0 1 0 5.5 6.06218 20 0 0 1 0.866 8 6 1 0 +253 0 1 0 6 5.19615 20 0 0 1 0.866 8 6 1 0 +254 0 1 0 6.5 6.06218 20 0 0 1 0.866 8 6 1 0 +255 0 1 0 7 5.19615 20 0 0 1 0.866 8 6 1 0 +256 0 1 0 7.5 6.06218 20 0 0 1 0.866 8 6 1 0 +257 0 1 0 8 5.19615 20 0 0 1 0.866 8 6 1 0 +258 0 1 0 8.5 6.06218 20 0 0 1 0.866 8 6 1 0 +259 0 1 0 9 5.19615 20 0 0 1 0.866 8 6 1 0 +260 0 1 0 9.5 6.06218 20 0 0 1 0.866 8 6 1 0 +261 0 1 0 10 5.19615 20 0 0 1 0.866 8 6 1 0 +262 0 1 0 10.5 6.06218 20 0 0 1 0.866 8 6 1 0 +263 0 1 0 11 5.19615 20 0 0 1 0.866 8 6 1 0 +264 0 1 0 11.5 6.06218 20 0 0 1 0.866 8 6 1 0 +265 0 1 0 12 5.19615 20 0 0 1 0.866 8 6 1 0 +266 0 1 0 12.5 6.06218 20 0 0 1 0.866 8 6 1 0 +267 0 1 0 13 5.19615 20 0 0 1 0.866 8 6 1 0 +268 0 1 0 13.5 6.06218 20 0 0 1 0.866 8 6 1 0 +269 0 1 0 14 5.19615 20 0 0 1 0.866 8 6 1 0 +270 0 1 0 14.5 6.06218 20 0 0 1 0.866 8 6 1 0 +271 0 1 0 15 5.19615 20 0 0 1 0.866 8 6 1 0 +272 0 1 0 15.5 6.06218 20 0 0 1 0.866 8 6 1 0 +273 0 1 0 16 5.19615 20 0 0 1 0.866 8 6 1 0 +274 0 1 0 16.5 6.06218 20 0 0 1 0.866 8 6 1 0 +275 0 1 0 17 5.19615 20 0 0 1 0.866 8 6 1 0 +276 0 1 0 17.5 6.06218 20 0 0 1 0.866 8 6 1 0 +277 0 1 0 18 5.19615 20 0 0 1 0.866 8 6 1 0 +278 0 1 0 18.5 6.06218 20 0 0 1 0.866 8 6 1 0 +279 0 1 0 19 5.19615 20 0 0 1 0.866 8 6 1 0 +280 0 1 0 19.5 6.06218 20 0 0 1 0.866 8 6 1 0 +281 0 1 0 20 5.19615 20 0 0 1 0.866 8 6 1 0 +282 0 1 0 20.5 6.06218 20 0 0 1 0.866 8 6 1 0 +283 0 1 0 21 5.19615 20 0 0 1 0.866 8 6 1 0 +284 0 1 0 21.5 6.06218 20 0 0 1 0.866 8 6 1 0 +285 0 1 0 22 5.19615 20 0 0 1 0.866 8 6 1 0 +286 0 1 0 22.5 6.06218 20 0 0 1 0.866 8 6 1 0 +287 0 1 0 23 5.19615 20 0 0 1 0.866 8 6 1 0 +288 0 1 0 23.5 6.06218 20 0 0 1 0.866 8 6 1 0 +289 0 1 0 24 5.19615 20 0 0 1 0.866 8 6 1 0 +290 0 1 0 24.5 6.06218 20 0 0 1 0.866 8 6 1 0 +291 0 1 0 25 5.19615 20 0 0 1 0.866 8 6 1 0 +292 0 1 0 25.5 6.06218 20 0 0 1 0.866 8 6 1 0 +293 0 1 0 26 5.19615 20 0 0 1 0.866 8 6 1 0 +294 0 1 0 26.5 6.06218 20 0 0 1 0.866 8 6 1 0 +295 0 1 0 27 5.19615 20 0 0 1 0.866 8 6 1 0 +296 0 1 0 27.5 6.06218 20 0 0 1 0.866 8 6 1 0 +297 0 1 0 28 5.19615 20 0 0 1 0.866 8 6 1 0 +298 0 1 0 28.5 6.06218 20 0 0 1 0.866 8 6 1 0 +299 0 1 0 29 5.19615 20 0 0 1 0.866 8 6 1 0 +300 0 1 0 29.5 6.06218 20 0 0 1 0.866 8 6 1 0 +301 0 1 0 30 5.19615 20 0 0 1 0.866 8 6 1 0 +302 0 1 0 30.5 6.06218 20 0 0 1 0.866 8 6 1 0 +303 0 1 0 31 5.19615 20 0 0 1 0.866 8 6 1 0 +304 0 1 0 31.5 6.06218 20 0 0 1 0.866 8 6 1 0 +305 0 1 0 32 5.19615 20 0 0 1 0.866 8 6 1 0 +306 0 1 0 32.5 6.06218 20 0 0 1 0.866 8 6 1 0 +307 0 1 0 33 5.19615 20 0 0 1 0.866 8 6 1 0 +308 0 1 0 33.5 6.06218 20 0 0 1 0.866 8 6 1 0 +309 0 1 0 34 5.19615 20 0 0 1 0.866 8 6 1 0 +310 0 1 0 34.5 6.06218 20 0 0 1 0.866 8 6 1 0 +311 0 1 0 35 5.19615 20 0 0 1 0.866 8 6 1 0 +312 0 1 0 35.5 6.06218 20 0 0 1 0.866 8 6 1 0 +313 0 1 0 36 5.19615 20 0 0 1 0.866 8 6 1 0 +314 0 1 0 36.5 6.06218 20 0 0 1 0.866 8 6 1 0 +315 0 1 0 37 5.19615 20 0 0 1 0.866 8 6 1 0 +316 0 1 0 37.5 6.06218 20 0 0 1 0.866 8 6 1 0 +317 0 1 0 38 5.19615 20 0 0 1 0.866 8 6 1 0 +318 0 1 0 38.5 6.06218 20 0 0 1 0.866 8 6 1 0 +319 0 1 0 39 5.19615 20 0 0 1 0.866 8 6 1 0 +320 0 1 0 39.5 6.06218 20 0 0 1 0.866 8 6 1 0 +321 0 1 0 0 6.9282 20 0 0 1 0.866 8 6 1 0 +322 0 1 0 0.5 7.79423 20 0 0 1 0.866 8 6 1 0 +323 0 1 0 1 6.9282 20 0 0 1 0.866 8 6 1 0 +324 0 1 0 1.5 7.79423 20 0 0 1 0.866 8 6 1 0 +325 0 1 0 2 6.9282 20 0 0 1 0.866 8 6 1 0 +326 0 1 0 2.5 7.79423 20 0 0 1 0.866 8 6 1 0 +327 0 1 0 3 6.9282 20 0 0 1 0.866 8 6 1 0 +328 0 1 0 3.5 7.79423 20 0 0 1 0.866 8 6 1 0 +329 0 1 0 4 6.9282 20 0 0 1 0.866 8 6 1 0 +330 0 1 0 4.5 7.79423 20 0 0 1 0.866 8 6 1 0 +331 0 1 0 5 6.9282 20 0 0 1 0.866 8 6 1 0 +332 0 1 0 5.5 7.79423 20 0 0 1 0.866 8 6 1 0 +333 0 1 0 6 6.9282 20 0 0 1 0.866 8 6 1 0 +334 0 1 0 6.5 7.79423 20 0 0 1 0.866 8 6 1 0 +335 0 1 0 7 6.9282 20 0 0 1 0.866 8 6 1 0 +336 0 1 0 7.5 7.79423 20 0 0 1 0.866 8 6 1 0 +337 0 1 0 8 6.9282 20 0 0 1 0.866 8 6 1 0 +338 0 1 0 8.5 7.79423 20 0 0 1 0.866 8 6 1 0 +339 0 1 0 9 6.9282 20 0 0 1 0.866 8 6 1 0 +340 0 1 0 9.5 7.79423 20 0 0 1 0.866 8 6 1 0 +341 0 1 0 10 6.9282 20 0 0 1 0.866 8 6 1 0 +342 0 1 0 10.5 7.79423 20 0 0 1 0.866 8 6 1 0 +343 0 1 0 11 6.9282 20 0 0 1 0.866 8 6 1 0 +344 0 1 0 11.5 7.79423 20 0 0 1 0.866 8 6 1 0 +345 0 1 0 12 6.9282 20 0 0 1 0.866 8 6 1 0 +346 0 1 0 12.5 7.79423 20 0 0 1 0.866 8 6 1 0 +347 0 1 0 13 6.9282 20 0 0 1 0.866 8 6 1 0 +348 0 1 0 13.5 7.79423 20 0 0 1 0.866 8 6 1 0 +349 0 1 0 14 6.9282 20 0 0 1 0.866 8 6 1 0 +350 0 1 0 14.5 7.79423 20 0 0 1 0.866 8 6 1 0 +351 0 1 0 15 6.9282 20 0 0 1 0.866 8 6 1 0 +352 0 1 0 15.5 7.79423 20 0 0 1 0.866 8 6 1 0 +353 0 1 0 16 6.9282 20 0 0 1 0.866 8 6 1 0 +354 0 1 0 16.5 7.79423 20 0 0 1 0.866 8 6 1 0 +355 0 1 0 17 6.9282 20 0 0 1 0.866 8 6 1 0 +356 0 1 0 17.5 7.79423 20 0 0 1 0.866 8 6 1 0 +357 0 1 0 18 6.9282 20 0 0 1 0.866 8 6 1 0 +358 0 1 0 18.5 7.79423 20 0 0 1 0.866 8 6 1 0 +359 0 1 0 19 6.9282 20 0 0 1 0.866 8 6 1 0 +360 0 1 0 19.5 7.79423 20 0 0 1 0.866 8 6 1 0 +361 0 1 0 20 6.9282 20 0 0 1 0.866 8 6 1 0 +362 0 1 0 20.5 7.79423 20 0 0 1 0.866 8 6 1 0 +363 0 1 0 21 6.9282 20 0 0 1 0.866 8 6 1 0 +364 0 1 0 21.5 7.79423 20 0 0 1 0.866 8 6 1 0 +365 0 1 0 22 6.9282 20 0 0 1 0.866 8 6 1 0 +366 0 1 0 22.5 7.79423 20 0 0 1 0.866 8 6 1 0 +367 0 1 0 23 6.9282 20 0 0 1 0.866 8 6 1 0 +368 0 1 0 23.5 7.79423 20 0 0 1 0.866 8 6 1 0 +369 0 1 0 24 6.9282 20 0 0 1 0.866 8 6 1 0 +370 0 1 0 24.5 7.79423 20 0 0 1 0.866 8 6 1 0 +371 0 1 0 25 6.9282 20 0 0 1 0.866 8 6 1 0 +372 0 1 0 25.5 7.79423 20 0 0 1 0.866 8 6 1 0 +373 0 1 0 26 6.9282 20 0 0 1 0.866 8 6 1 0 +374 0 1 0 26.5 7.79423 20 0 0 1 0.866 8 6 1 0 +375 0 1 0 27 6.9282 20 0 0 1 0.866 8 6 1 0 +376 0 1 0 27.5 7.79423 20 0 0 1 0.866 8 6 1 0 +377 0 1 0 28 6.9282 20 0 0 1 0.866 8 6 1 0 +378 0 1 0 28.5 7.79423 20 0 0 1 0.866 8 6 1 0 +379 0 1 0 29 6.9282 20 0 0 1 0.866 8 6 1 0 +380 0 1 0 29.5 7.79423 20 0 0 1 0.866 8 6 1 0 +381 0 1 0 30 6.9282 20 0 0 1 0.866 8 6 1 0 +382 0 1 0 30.5 7.79423 20 0 0 1 0.866 8 6 1 0 +383 0 1 0 31 6.9282 20 0 0 1 0.866 8 6 1 0 +384 0 1 0 31.5 7.79423 20 0 0 1 0.866 8 6 1 0 +385 0 1 0 32 6.9282 20 0 0 1 0.866 8 6 1 0 +386 0 1 0 32.5 7.79423 20 0 0 1 0.866 8 6 1 0 +387 0 1 0 33 6.9282 20 0 0 1 0.866 8 6 1 0 +388 0 1 0 33.5 7.79423 20 0 0 1 0.866 8 6 1 0 +389 0 1 0 34 6.9282 20 0 0 1 0.866 8 6 1 0 +390 0 1 0 34.5 7.79423 20 0 0 1 0.866 8 6 1 0 +391 0 1 0 35 6.9282 20 0 0 1 0.866 8 6 1 0 +392 0 1 0 35.5 7.79423 20 0 0 1 0.866 8 6 1 0 +393 0 1 0 36 6.9282 20 0 0 1 0.866 8 6 1 0 +394 0 1 0 36.5 7.79423 20 0 0 1 0.866 8 6 1 0 +395 0 1 0 37 6.9282 20 0 0 1 0.866 8 6 1 0 +396 0 1 0 37.5 7.79423 20 0 0 1 0.866 8 6 1 0 +397 0 1 0 38 6.9282 20 0 0 1 0.866 8 6 1 0 +398 0 1 0 38.5 7.79423 20 0 0 1 0.866 8 6 1 0 +399 0 1 0 39 6.9282 20 0 0 1 0.866 8 6 1 0 +400 0 1 0 39.5 7.79423 20 0 0 1 0.866 8 6 1 0 +401 0 1 0 0 8.66026 20 0 0 1 0.866 8 6 1 0 +402 0 1 0 0.5 9.52628 20 0 0 1 0.866 8 6 1 0 +403 0 1 0 1 8.66026 20 0 0 1 0.866 8 6 1 0 +404 0 1 0 1.5 9.52628 20 0 0 1 0.866 8 6 1 0 +405 0 1 0 2 8.66026 20 0 0 1 0.866 8 6 1 0 +406 0 1 0 2.5 9.52628 20 0 0 1 0.866 8 6 1 0 +407 0 1 0 3 8.66026 20 0 0 1 0.866 8 6 1 0 +408 0 1 0 3.5 9.52628 20 0 0 1 0.866 8 6 1 0 +409 0 1 0 4 8.66026 20 0 0 1 0.866 8 6 1 0 +410 0 1 0 4.5 9.52628 20 0 0 1 0.866 8 6 1 0 +411 0 1 0 5 8.66026 20 0 0 1 0.866 8 6 1 0 +412 0 1 0 5.5 9.52628 20 0 0 1 0.866 8 6 1 0 +413 0 1 0 6 8.66026 20 0 0 1 0.866 8 6 1 0 +414 0 1 0 6.5 9.52628 20 0 0 1 0.866 8 6 1 0 +415 0 1 0 7 8.66026 20 0 0 1 0.866 8 6 1 0 +416 0 1 0 7.5 9.52628 20 0 0 1 0.866 8 6 1 0 +417 0 1 0 8 8.66026 20 0 0 1 0.866 8 6 1 0 +418 0 1 0 8.5 9.52628 20 0 0 1 0.866 8 6 1 0 +419 0 1 0 9 8.66026 20 0 0 1 0.866 8 6 1 0 +420 0 1 0 9.5 9.52628 20 0 0 1 0.866 8 6 1 0 +421 0 1 0 10 8.66026 20 0 0 1 0.866 8 6 1 0 +422 0 1 0 10.5 9.52628 20 0 0 1 0.866 8 6 1 0 +423 0 1 0 11 8.66026 20 0 0 1 0.866 8 6 1 0 +424 0 1 0 11.5 9.52628 20 0 0 1 0.866 8 6 1 0 +425 0 1 0 12 8.66026 20 0 0 1 0.866 8 6 1 0 +426 0 1 0 12.5 9.52628 20 0 0 1 0.866 8 6 1 0 +427 0 1 0 13 8.66026 20 0 0 1 0.866 8 6 1 0 +428 0 1 0 13.5 9.52628 20 0 0 1 0.866 8 6 1 0 +429 0 1 0 14 8.66026 20 0 0 1 0.866 8 6 1 0 +430 0 1 0 14.5 9.52628 20 0 0 1 0.866 8 6 1 0 +431 0 1 0 15 8.66026 20 0 0 1 0.866 8 6 1 0 +432 0 1 0 15.5 9.52628 20 0 0 1 0.866 8 6 1 0 +433 0 1 0 16 8.66026 20 0 0 1 0.866 8 6 1 0 +434 0 1 0 16.5 9.52628 20 0 0 1 0.866 8 6 1 0 +435 0 1 0 17 8.66026 20 0 0 1 0.866 8 6 1 0 +436 0 1 0 17.5 9.52628 20 0 0 1 0.866 8 6 1 0 +437 0 1 0 18 8.66026 20 0 0 1 0.866 8 6 1 0 +438 0 1 0 18.5 9.52628 20 0 0 1 0.866 8 6 1 0 +439 0 1 0 19 8.66026 20 0 0 1 0.866 8 6 1 0 +440 0 1 0 19.5 9.52628 20 0 0 1 0.866 8 6 1 0 +441 0 1 0 20 8.66026 20 0 0 1 0.866 8 6 1 0 +442 0 1 0 20.5 9.52628 20 0 0 1 0.866 8 6 1 0 +443 0 1 0 21 8.66026 20 0 0 1 0.866 8 6 1 0 +444 0 1 0 21.5 9.52628 20 0 0 1 0.866 8 6 1 0 +445 0 1 0 22 8.66026 20 0 0 1 0.866 8 6 1 0 +446 0 1 0 22.5 9.52628 20 0 0 1 0.866 8 6 1 0 +447 0 1 0 23 8.66026 20 0 0 1 0.866 8 6 1 0 +448 0 1 0 23.5 9.52628 20 0 0 1 0.866 8 6 1 0 +449 0 1 0 24 8.66026 20 0 0 1 0.866 8 6 1 0 +450 0 1 0 24.5 9.52628 20 0 0 1 0.866 8 6 1 0 +451 0 1 0 25 8.66026 20 0 0 1 0.866 8 6 1 0 +452 0 1 0 25.5 9.52628 20 0 0 1 0.866 8 6 1 0 +453 0 1 0 26 8.66026 20 0 0 1 0.866 8 6 1 0 +454 0 1 0 26.5 9.52628 20 0 0 1 0.866 8 6 1 0 +455 0 1 0 27 8.66026 20 0 0 1 0.866 8 6 1 0 +456 0 1 0 27.5 9.52628 20 0 0 1 0.866 8 6 1 0 +457 0 1 0 28 8.66026 20 0 0 1 0.866 8 6 1 0 +458 0 1 0 28.5 9.52628 20 0 0 1 0.866 8 6 1 0 +459 0 1 0 29 8.66026 20 0 0 1 0.866 8 6 1 0 +460 0 1 0 29.5 9.52628 20 0 0 1 0.866 8 6 1 0 +461 0 1 0 30 8.66026 20 0 0 1 0.866 8 6 1 0 +462 0 1 0 30.5 9.52628 20 0 0 1 0.866 8 6 1 0 +463 0 1 0 31 8.66026 20 0 0 1 0.866 8 6 1 0 +464 0 1 0 31.5 9.52628 20 0 0 1 0.866 8 6 1 0 +465 0 1 0 32 8.66026 20 0 0 1 0.866 8 6 1 0 +466 0 1 0 32.5 9.52628 20 0 0 1 0.866 8 6 1 0 +467 0 1 0 33 8.66026 20 0 0 1 0.866 8 6 1 0 +468 0 1 0 33.5 9.52628 20 0 0 1 0.866 8 6 1 0 +469 0 1 0 34 8.66026 20 0 0 1 0.866 8 6 1 0 +470 0 1 0 34.5 9.52628 20 0 0 1 0.866 8 6 1 0 +471 0 1 0 35 8.66026 20 0 0 1 0.866 8 6 1 0 +472 0 1 0 35.5 9.52628 20 0 0 1 0.866 8 6 1 0 +473 0 1 0 36 8.66026 20 0 0 1 0.866 8 6 1 0 +474 0 1 0 36.5 9.52628 20 0 0 1 0.866 8 6 1 0 +475 0 1 0 37 8.66026 20 0 0 1 0.866 8 6 1 0 +476 0 1 0 37.5 9.52628 20 0 0 1 0.866 8 6 1 0 +477 0 1 0 38 8.66026 20 0 0 1 0.866 8 6 1 0 +478 0 1 0 38.5 9.52628 20 0 0 1 0.866 8 6 1 0 +479 0 1 0 39 8.66026 20 0 0 1 0.866 8 6 1 0 +480 0 1 0 39.5 9.52628 20 0 0 1 0.866 8 6 1 0 +481 0 1 0 0 10.3923 20 0 0 1 0.866 8 6 1 0 +482 0 1 0 0.5 11.2583 20 0 0 1 0.866 8 6 1 0 +483 0 1 0 1 10.3923 20 0 0 1 0.866 8 6 1 0 +484 0 1 0 1.5 11.2583 20 0 0 1 0.866 8 6 1 0 +485 0 1 0 2 10.3923 20 0 0 1 0.866 8 6 1 0 +486 0 1 0 2.5 11.2583 20 0 0 1 0.866 8 6 1 0 +487 0 1 0 3 10.3923 20 0 0 1 0.866 8 6 1 0 +488 0 1 0 3.5 11.2583 20 0 0 1 0.866 8 6 1 0 +489 0 1 0 4 10.3923 20 0 0 1 0.866 8 6 1 0 +490 0 1 0 4.5 11.2583 20 0 0 1 0.866 8 6 1 0 +491 0 1 0 5 10.3923 20 0 0 1 0.866 8 6 1 0 +492 0 1 0 5.5 11.2583 20 0 0 1 0.866 8 6 1 0 +493 0 1 0 6 10.3923 20 0 0 1 0.866 8 6 1 0 +494 0 1 0 6.5 11.2583 20 0 0 1 0.866 8 6 1 0 +495 0 1 0 7 10.3923 20 0 0 1 0.866 8 6 1 0 +496 0 1 0 7.5 11.2583 20 0 0 1 0.866 8 6 1 0 +497 0 1 0 8 10.3923 20 0 0 1 0.866 8 6 1 0 +498 0 1 0 8.5 11.2583 20 0 0 1 0.866 8 6 1 0 +499 0 1 0 9 10.3923 20 0 0 1 0.866 8 6 1 0 +500 0 1 0 9.5 11.2583 20 0 0 1 0.866 8 6 1 0 +501 0 1 0 10 10.3923 20 0 0 1 0.866 8 6 1 0 +502 0 1 0 10.5 11.2583 20 0 0 1 0.866 8 6 1 0 +503 0 1 0 11 10.3923 20 0 0 1 0.866 8 6 1 0 +504 0 1 0 11.5 11.2583 20 0 0 1 0.866 8 6 1 0 +505 0 1 0 12 10.3923 20 0 0 1 0.866 8 6 1 0 +506 0 1 0 12.5 11.2583 20 0 0 1 0.866 8 6 1 0 +507 0 1 0 13 10.3923 20 0 0 1 0.866 8 6 1 0 +508 0 1 0 13.5 11.2583 20 0 0 1 0.866 8 6 1 0 +509 0 1 0 14 10.3923 20 0 0 1 0.866 8 6 1 0 +510 0 1 0 14.5 11.2583 20 0 0 1 0.866 8 6 1 0 +511 0 1 0 15 10.3923 20 0 0 1 0.866 8 6 1 0 +512 0 1 0 15.5 11.2583 20 0 0 1 0.866 8 6 1 0 +513 0 1 0 16 10.3923 20 0 0 1 0.866 8 6 1 0 +514 0 1 0 16.5 11.2583 20 0 0 1 0.866 8 6 1 0 +515 0 1 0 17 10.3923 20 0 0 1 0.866 8 6 1 0 +516 0 1 0 17.5 11.2583 20 0 0 1 0.866 8 6 1 0 +517 0 1 0 18 10.3923 20 0 0 1 0.866 8 6 1 0 +518 0 1 0 18.5 11.2583 20 0 0 1 0.866 8 6 1 0 +519 0 1 0 19 10.3923 20 0 0 1 0.866 8 6 1 0 +520 0 1 0 19.5 11.2583 20 0 0 1 0.866 8 6 1 0 +521 0 1 0 20 10.3923 20 0 0 1 0.866 8 6 1 0 +522 0 1 0 20.5 11.2583 20 0 0 1 0.866 8 6 1 0 +523 0 1 0 21 10.3923 20 0 0 1 0.866 8 6 1 0 +524 0 1 0 21.5 11.2583 20 0 0 1 0.866 8 6 1 0 +525 0 1 0 22 10.3923 20 0 0 1 0.866 8 6 1 0 +526 0 1 0 22.5 11.2583 20 0 0 1 0.866 8 6 1 0 +527 0 1 0 23 10.3923 20 0 0 1 0.866 8 6 1 0 +528 0 1 0 23.5 11.2583 20 0 0 1 0.866 8 6 1 0 +529 0 1 0 24 10.3923 20 0 0 1 0.866 8 6 1 0 +530 0 1 0 24.5 11.2583 20 0 0 1 0.866 8 6 1 0 +531 0 1 0 25 10.3923 20 0 0 1 0.866 8 6 1 0 +532 0 1 0 25.5 11.2583 20 0 0 1 0.866 8 6 1 0 +533 0 1 0 26 10.3923 20 0 0 1 0.866 8 6 1 0 +534 0 1 0 26.5 11.2583 20 0 0 1 0.866 8 6 1 0 +535 0 1 0 27 10.3923 20 0 0 1 0.866 8 6 1 0 +536 0 1 0 27.5 11.2583 20 0 0 1 0.866 8 6 1 0 +537 0 1 0 28 10.3923 20 0 0 1 0.866 8 6 1 0 +538 0 1 0 28.5 11.2583 20 0 0 1 0.866 8 6 1 0 +539 0 1 0 29 10.3923 20 0 0 1 0.866 8 6 1 0 +540 0 1 0 29.5 11.2583 20 0 0 1 0.866 8 6 1 0 +541 0 1 0 30 10.3923 20 0 0 1 0.866 8 6 1 0 +542 0 1 0 30.5 11.2583 20 0 0 1 0.866 8 6 1 0 +543 0 1 0 31 10.3923 20 0 0 1 0.866 8 6 1 0 +544 0 1 0 31.5 11.2583 20 0 0 1 0.866 8 6 1 0 +545 0 1 0 32 10.3923 20 0 0 1 0.866 8 6 1 0 +546 0 1 0 32.5 11.2583 20 0 0 1 0.866 8 6 1 0 +547 0 1 0 33 10.3923 20 0 0 1 0.866 8 6 1 0 +548 0 1 0 33.5 11.2583 20 0 0 1 0.866 8 6 1 0 +549 0 1 0 34 10.3923 20 0 0 1 0.866 8 6 1 0 +550 0 1 0 34.5 11.2583 20 0 0 1 0.866 8 6 1 0 +551 0 1 0 35 10.3923 20 0 0 1 0.866 8 6 1 0 +552 0 1 0 35.5 11.2583 20 0 0 1 0.866 8 6 1 0 +553 0 1 0 36 10.3923 20 0 0 1 0.866 8 6 1 0 +554 0 1 0 36.5 11.2583 20 0 0 1 0.866 8 6 1 0 +555 0 1 0 37 10.3923 20 0 0 1 0.866 8 6 1 0 +556 0 1 0 37.5 11.2583 20 0 0 1 0.866 8 6 1 0 +557 0 1 0 38 10.3923 20 0 0 1 0.866 8 6 1 0 +558 0 1 0 38.5 11.2583 20 0 0 1 0.866 8 6 1 0 +559 0 1 0 39 10.3923 20 0 0 1 0.866 8 6 1 0 +560 0 1 0 39.5 11.2583 20 0 0 1 0.866 8 6 1 0 +561 0 1 0 0 12.1244 20 0 0 1 0.866 8 6 1 0 +562 0 1 0 0.5 12.9904 20 0 0 1 0.866 8 6 1 0 +563 0 1 0 1 12.1244 20 0 0 1 0.866 8 6 1 0 +564 0 1 0 1.5 12.9904 20 0 0 1 0.866 8 6 1 0 +565 0 1 0 2 12.1244 20 0 0 1 0.866 8 6 1 0 +566 0 1 0 2.5 12.9904 20 0 0 1 0.866 8 6 1 0 +567 0 1 0 3 12.1244 20 0 0 1 0.866 8 6 1 0 +568 0 1 0 3.5 12.9904 20 0 0 1 0.866 8 6 1 0 +569 0 1 0 4 12.1244 20 0 0 1 0.866 8 6 1 0 +570 0 1 0 4.5 12.9904 20 0 0 1 0.866 8 6 1 0 +571 0 1 0 5 12.1244 20 0 0 1 0.866 8 6 1 0 +572 0 1 0 5.5 12.9904 20 0 0 1 0.866 8 6 1 0 +573 0 1 0 6 12.1244 20 0 0 1 0.866 8 6 1 0 +574 0 1 0 6.5 12.9904 20 0 0 1 0.866 8 6 1 0 +575 0 1 0 7 12.1244 20 0 0 1 0.866 8 6 1 0 +576 0 1 0 7.5 12.9904 20 0 0 1 0.866 8 6 1 0 +577 0 1 0 8 12.1244 20 0 0 1 0.866 8 6 1 0 +578 0 1 0 8.5 12.9904 20 0 0 1 0.866 8 6 1 0 +579 0 1 0 9 12.1244 20 0 0 1 0.866 8 6 1 0 +580 0 1 0 9.5 12.9904 20 0 0 1 0.866 8 6 1 0 +581 0 1 0 10 12.1244 20 0 0 1 0.866 8 6 1 0 +582 0 1 0 10.5 12.9904 20 0 0 1 0.866 8 6 1 0 +583 0 1 0 11 12.1244 20 0 0 1 0.866 8 6 1 0 +584 0 1 0 11.5 12.9904 20 0 0 1 0.866 8 6 1 0 +585 0 1 0 12 12.1244 20 0 0 1 0.866 8 6 1 0 +586 0 1 0 12.5 12.9904 20 0 0 1 0.866 8 6 1 0 +587 0 1 0 13 12.1244 20 0 0 1 0.866 8 6 1 0 +588 0 1 0 13.5 12.9904 20 0 0 1 0.866 8 6 1 0 +589 0 1 0 14 12.1244 20 0 0 1 0.866 8 6 1 0 +590 0 1 0 14.5 12.9904 20 0 0 1 0.866 8 6 1 0 +591 0 1 0 15 12.1244 20 0 0 1 0.866 8 6 1 0 +592 0 1 0 15.5 12.9904 20 0 0 1 0.866 8 6 1 0 +593 0 1 0 16 12.1244 20 0 0 1 0.866 8 6 1 0 +594 0 1 0 16.5 12.9904 20 0 0 1 0.866 8 6 1 0 +595 0 1 0 17 12.1244 20 0 0 1 0.866 8 6 1 0 +596 0 1 0 17.5 12.9904 20 0 0 1 0.866 8 6 1 0 +597 0 1 0 18 12.1244 20 0 0 1 0.866 8 6 1 0 +598 0 1 0 18.5 12.9904 20 0 0 1 0.866 8 6 1 0 +599 0 1 0 19 12.1244 20 0 0 1 0.866 8 6 1 0 +600 0 1 0 19.5 12.9904 20 0 0 1 0.866 8 6 1 0 +601 0 1 0 20 12.1244 20 0 0 1 0.866 8 6 1 0 +602 0 1 0 20.5 12.9904 20 0 0 1 0.866 8 6 1 0 +603 0 1 0 21 12.1244 20 0 0 1 0.866 8 6 1 0 +604 0 1 0 21.5 12.9904 20 0 0 1 0.866 8 6 1 0 +605 0 1 0 22 12.1244 20 0 0 1 0.866 8 6 1 0 +606 0 1 0 22.5 12.9904 20 0 0 1 0.866 8 6 1 0 +607 0 1 0 23 12.1244 20 0 0 1 0.866 8 6 1 0 +608 0 1 0 23.5 12.9904 20 0 0 1 0.866 8 6 1 0 +609 0 1 0 24 12.1244 20 0 0 1 0.866 8 6 1 0 +610 0 1 0 24.5 12.9904 20 0 0 1 0.866 8 6 1 0 +611 0 1 0 25 12.1244 20 0 0 1 0.866 8 6 1 0 +612 0 1 0 25.5 12.9904 20 0 0 1 0.866 8 6 1 0 +613 0 1 0 26 12.1244 20 0 0 1 0.866 8 6 1 0 +614 0 1 0 26.5 12.9904 20 0 0 1 0.866 8 6 1 0 +615 0 1 0 27 12.1244 20 0 0 1 0.866 8 6 1 0 +616 0 1 0 27.5 12.9904 20 0 0 1 0.866 8 6 1 0 +617 0 1 0 28 12.1244 20 0 0 1 0.866 8 6 1 0 +618 0 1 0 28.5 12.9904 20 0 0 1 0.866 8 6 1 0 +619 0 1 0 29 12.1244 20 0 0 1 0.866 8 6 1 0 +620 0 1 0 29.5 12.9904 20 0 0 1 0.866 8 6 1 0 +621 0 1 0 30 12.1244 20 0 0 1 0.866 8 6 1 0 +622 0 1 0 30.5 12.9904 20 0 0 1 0.866 8 6 1 0 +623 0 1 0 31 12.1244 20 0 0 1 0.866 8 6 1 0 +624 0 1 0 31.5 12.9904 20 0 0 1 0.866 8 6 1 0 +625 0 1 0 32 12.1244 20 0 0 1 0.866 8 6 1 0 +626 0 1 0 32.5 12.9904 20 0 0 1 0.866 8 6 1 0 +627 0 1 0 33 12.1244 20 0 0 1 0.866 8 6 1 0 +628 0 1 0 33.5 12.9904 20 0 0 1 0.866 8 6 1 0 +629 0 1 0 34 12.1244 20 0 0 1 0.866 8 6 1 0 +630 0 1 0 34.5 12.9904 20 0 0 1 0.866 8 6 1 0 +631 0 1 0 35 12.1244 20 0 0 1 0.866 8 6 1 0 +632 0 1 0 35.5 12.9904 20 0 0 1 0.866 8 6 1 0 +633 0 1 0 36 12.1244 20 0 0 1 0.866 8 6 1 0 +634 0 1 0 36.5 12.9904 20 0 0 1 0.866 8 6 1 0 +635 0 1 0 37 12.1244 20 0 0 1 0.866 8 6 1 0 +636 0 1 0 37.5 12.9904 20 0 0 1 0.866 8 6 1 0 +637 0 1 0 38 12.1244 20 0 0 1 0.866 8 6 1 0 +638 0 1 0 38.5 12.9904 20 0 0 1 0.866 8 6 1 0 +639 0 1 0 39 12.1244 20 0 0 1 0.866 8 6 1 0 +640 0 1 0 39.5 12.9904 20 0 0 1 0.866 8 6 1 0 +641 0 1 0 0 13.8564 20 0 0 1 0.866 8 6 1 0 +642 0 1 0 0.5 14.7224 20 0 0 1 0.866 8 6 1 0 +643 0 1 0 1 13.8564 20 0 0 1 0.866 8 6 1 0 +644 0 1 0 1.5 14.7224 20 0 0 1 0.866 8 6 1 0 +645 0 1 0 2 13.8564 20 0 0 1 0.866 8 6 1 0 +646 0 1 0 2.5 14.7224 20 0 0 1 0.866 8 6 1 0 +647 0 1 0 3 13.8564 20 0 0 1 0.866 8 6 1 0 +648 0 1 0 3.5 14.7224 20 0 0 1 0.866 8 6 1 0 +649 0 1 0 4 13.8564 20 0 0 1 0.866 8 6 1 0 +650 0 1 0 4.5 14.7224 20 0 0 1 0.866 8 6 1 0 +651 0 1 0 5 13.8564 20 0 0 1 0.866 8 6 1 0 +652 0 1 0 5.5 14.7224 20 0 0 1 0.866 8 6 1 0 +653 0 1 0 6 13.8564 20 0 0 1 0.866 8 6 1 0 +654 0 1 0 6.5 14.7224 20 0 0 1 0.866 8 6 1 0 +655 0 1 0 7 13.8564 20 0 0 1 0.866 8 6 1 0 +656 0 1 0 7.5 14.7224 20 0 0 1 0.866 8 6 1 0 +657 0 1 0 8 13.8564 20 0 0 1 0.866 8 6 1 0 +658 0 1 0 8.5 14.7224 20 0 0 1 0.866 8 6 1 0 +659 0 1 0 9 13.8564 20 0 0 1 0.866 8 6 1 0 +660 0 1 0 9.5 14.7224 20 0 0 1 0.866 8 6 1 0 +661 0 1 0 10 13.8564 20 0 0 1 0.866 8 6 1 0 +662 0 1 0 10.5 14.7224 20 0 0 1 0.866 8 6 1 0 +663 0 1 0 11 13.8564 20 0 0 1 0.866 8 6 1 0 +664 0 1 0 11.5 14.7224 20 0 0 1 0.866 8 6 1 0 +665 0 1 0 12 13.8564 20 0 0 1 0.866 8 6 1 0 +666 0 1 0 12.5 14.7224 20 0 0 1 0.866 8 6 1 0 +667 0 1 0 13 13.8564 20 0 0 1 0.866 8 6 1 0 +668 0 1 0 13.5 14.7224 20 0 0 1 0.866 8 6 1 0 +669 0 1 0 14 13.8564 20 0 0 1 0.866 8 6 1 0 +670 0 1 0 14.5 14.7224 20 0 0 1 0.866 8 6 1 0 +671 0 1 0 15 13.8564 20 0 0 1 0.866 8 6 1 0 +672 0 1 0 15.5 14.7224 20 0 0 1 0.866 8 6 1 0 +673 0 1 0 16 13.8564 20 0 0 1 0.866 8 6 1 0 +674 0 1 0 16.5 14.7224 20 0 0 1 0.866 8 6 1 0 +675 0 1 0 17 13.8564 20 0 0 1 0.866 8 6 1 0 +676 0 1 0 17.5 14.7224 20 0 0 1 0.866 8 6 1 0 +677 0 1 0 18 13.8564 20 0 0 1 0.866 8 6 1 0 +678 0 1 0 18.5 14.7224 20 0 0 1 0.866 8 6 1 0 +679 0 1 0 19 13.8564 20 0 0 1 0.866 8 6 1 0 +680 0 1 0 19.5 14.7224 20 0 0 1 0.866 8 6 1 0 +681 0 1 0 20 13.8564 20 0 0 1 0.866 8 6 1 0 +682 0 1 0 20.5 14.7224 20 0 0 1 0.866 8 6 1 0 +683 0 1 0 21 13.8564 20 0 0 1 0.866 8 6 1 0 +684 0 1 0 21.5 14.7224 20 0 0 1 0.866 8 6 1 0 +685 0 1 0 22 13.8564 20 0 0 1 0.866 8 6 1 0 +686 0 1 0 22.5 14.7224 20 0 0 1 0.866 8 6 1 0 +687 0 1 0 23 13.8564 20 0 0 1 0.866 8 6 1 0 +688 0 1 0 23.5 14.7224 20 0 0 1 0.866 8 6 1 0 +689 0 1 0 24 13.8564 20 0 0 1 0.866 8 6 1 0 +690 0 1 0 24.5 14.7224 20 0 0 1 0.866 8 6 1 0 +691 0 1 0 25 13.8564 20 0 0 1 0.866 8 6 1 0 +692 0 1 0 25.5 14.7224 20 0 0 1 0.866 8 6 1 0 +693 0 1 0 26 13.8564 20 0 0 1 0.866 8 6 1 0 +694 0 1 0 26.5 14.7224 20 0 0 1 0.866 8 6 1 0 +695 0 1 0 27 13.8564 20 0 0 1 0.866 8 6 1 0 +696 0 1 0 27.5 14.7224 20 0 0 1 0.866 8 6 1 0 +697 0 1 0 28 13.8564 20 0 0 1 0.866 8 6 1 0 +698 0 1 0 28.5 14.7224 20 0 0 1 0.866 8 6 1 0 +699 0 1 0 29 13.8564 20 0 0 1 0.866 8 6 1 0 +700 0 1 0 29.5 14.7224 20 0 0 1 0.866 8 6 1 0 +701 0 1 0 30 13.8564 20 0 0 1 0.866 8 6 1 0 +702 0 1 0 30.5 14.7224 20 0 0 1 0.866 8 6 1 0 +703 0 1 0 31 13.8564 20 0 0 1 0.866 8 6 1 0 +704 0 1 0 31.5 14.7224 20 0 0 1 0.866 8 6 1 0 +705 0 1 0 32 13.8564 20 0 0 1 0.866 8 6 1 0 +706 0 1 0 32.5 14.7224 20 0 0 1 0.866 8 6 1 0 +707 0 1 0 33 13.8564 20 0 0 1 0.866 8 6 1 0 +708 0 1 0 33.5 14.7224 20 0 0 1 0.866 8 6 1 0 +709 0 1 0 34 13.8564 20 0 0 1 0.866 8 6 1 0 +710 0 1 0 34.5 14.7224 20 0 0 1 0.866 8 6 1 0 +711 0 1 0 35 13.8564 20 0 0 1 0.866 8 6 1 0 +712 0 1 0 35.5 14.7224 20 0 0 1 0.866 8 6 1 0 +713 0 1 0 36 13.8564 20 0 0 1 0.866 8 6 1 0 +714 0 1 0 36.5 14.7224 20 0 0 1 0.866 8 6 1 0 +715 0 1 0 37 13.8564 20 0 0 1 0.866 8 6 1 0 +716 0 1 0 37.5 14.7224 20 0 0 1 0.866 8 6 1 0 +717 0 1 0 38 13.8564 20 0 0 1 0.866 8 6 1 0 +718 0 1 0 38.5 14.7224 20 0 0 1 0.866 8 6 1 0 +719 0 1 0 39 13.8564 20 0 0 1 0.866 8 6 1 0 +720 0 1 0 39.5 14.7224 20 0 0 1 0.866 8 6 1 0 +721 0 1 0 0 15.5885 20 0 0 1 0.866 8 6 1 0 +722 0 1 0 0.5 16.4545 20 0 0 1 0.866 8 6 1 0 +723 0 1 0 1 15.5885 20 0 0 1 0.866 8 6 1 0 +724 0 1 0 1.5 16.4545 20 0 0 1 0.866 8 6 1 0 +725 0 1 0 2 15.5885 20 0 0 1 0.866 8 6 1 0 +726 0 1 0 2.5 16.4545 20 0 0 1 0.866 8 6 1 0 +727 0 1 0 3 15.5885 20 0 0 1 0.866 8 6 1 0 +728 0 1 0 3.5 16.4545 20 0 0 1 0.866 8 6 1 0 +729 0 1 0 4 15.5885 20 0 0 1 0.866 8 6 1 0 +730 0 1 0 4.5 16.4545 20 0 0 1 0.866 8 6 1 0 +731 0 1 0 5 15.5885 20 0 0 1 0.866 8 6 1 0 +732 0 1 0 5.5 16.4545 20 0 0 1 0.866 8 6 1 0 +733 0 1 0 6 15.5885 20 0 0 1 0.866 8 6 1 0 +734 0 1 0 6.5 16.4545 20 0 0 1 0.866 8 6 1 0 +735 0 1 0 7 15.5885 20 0 0 1 0.866 8 6 1 0 +736 0 1 0 7.5 16.4545 20 0 0 1 0.866 8 6 1 0 +737 0 1 0 8 15.5885 20 0 0 1 0.866 8 6 1 0 +738 0 1 0 8.5 16.4545 20 0 0 1 0.866 8 6 1 0 +739 0 1 0 9 15.5885 20 0 0 1 0.866 8 6 1 0 +740 0 1 0 9.5 16.4545 20 0 0 1 0.866 8 6 1 0 +741 0 1 0 10 15.5885 20 0 0 1 0.866 8 6 1 0 +742 0 1 0 10.5 16.4545 20 0 0 1 0.866 8 6 1 0 +743 0 1 0 11 15.5885 20 0 0 1 0.866 8 6 1 0 +744 0 1 0 11.5 16.4545 20 0 0 1 0.866 8 6 1 0 +745 0 1 0 12 15.5885 20 0 0 1 0.866 8 6 1 0 +746 0 1 0 12.5 16.4545 20 0 0 1 0.866 8 6 1 0 +747 0 1 0 13 15.5885 20 0 0 1 0.866 8 6 1 0 +748 0 1 0 13.5 16.4545 20 0 0 1 0.866 8 6 1 0 +749 0 1 0 14 15.5885 20 0 0 1 0.866 8 6 1 0 +750 0 1 0 14.5 16.4545 20 0 0 1 0.866 8 6 1 0 +751 0 1 0 15 15.5885 20 0 0 1 0.866 8 6 1 0 +752 0 1 0 15.5 16.4545 20 0 0 1 0.866 8 6 1 0 +753 0 1 0 16 15.5885 20 0 0 1 0.866 8 6 1 0 +754 0 1 0 16.5 16.4545 20 0 0 1 0.866 8 6 1 0 +755 0 1 0 17 15.5885 20 0 0 1 0.866 8 6 1 0 +756 0 1 0 17.5 16.4545 20 0 0 1 0.866 8 6 1 0 +757 0 1 0 18 15.5885 20 0 0 1 0.866 8 6 1 0 +758 0 1 0 18.5 16.4545 20 0 0 1 0.866 8 6 1 0 +759 0 1 0 19 15.5885 20 0 0 1 0.866 8 6 1 0 +760 0 1 0 19.5 16.4545 20 0 0 1 0.866 8 6 1 0 +761 0 1 0 20 15.5885 20 0 0 1 0.866 8 6 1 0 +762 0 1 0 20.5 16.4545 20 0 0 1 0.866 8 6 1 0 +763 0 1 0 21 15.5885 20 0 0 1 0.866 8 6 1 0 +764 0 1 0 21.5 16.4545 20 0 0 1 0.866 8 6 1 0 +765 0 1 0 22 15.5885 20 0 0 1 0.866 8 6 1 0 +766 0 1 0 22.5 16.4545 20 0 0 1 0.866 8 6 1 0 +767 0 1 0 23 15.5885 20 0 0 1 0.866 8 6 1 0 +768 0 1 0 23.5 16.4545 20 0 0 1 0.866 8 6 1 0 +769 0 1 0 24 15.5885 20 0 0 1 0.866 8 6 1 0 +770 0 1 0 24.5 16.4545 20 0 0 1 0.866 8 6 1 0 +771 0 1 0 25 15.5885 20 0 0 1 0.866 8 6 1 0 +772 0 1 0 25.5 16.4545 20 0 0 1 0.866 8 6 1 0 +773 0 1 0 26 15.5885 20 0 0 1 0.866 8 6 1 0 +774 0 1 0 26.5 16.4545 20 0 0 1 0.866 8 6 1 0 +775 0 1 0 27 15.5885 20 0 0 1 0.866 8 6 1 0 +776 0 1 0 27.5 16.4545 20 0 0 1 0.866 8 6 1 0 +777 0 1 0 28 15.5885 20 0 0 1 0.866 8 6 1 0 +778 0 1 0 28.5 16.4545 20 0 0 1 0.866 8 6 1 0 +779 0 1 0 29 15.5885 20 0 0 1 0.866 8 6 1 0 +780 0 1 0 29.5 16.4545 20 0 0 1 0.866 8 6 1 0 +781 0 1 0 30 15.5885 20 0 0 1 0.866 8 6 1 0 +782 0 1 0 30.5 16.4545 20 0 0 1 0.866 8 6 1 0 +783 0 1 0 31 15.5885 20 0 0 1 0.866 8 6 1 0 +784 0 1 0 31.5 16.4545 20 0 0 1 0.866 8 6 1 0 +785 0 1 0 32 15.5885 20 0 0 1 0.866 8 6 1 0 +786 0 1 0 32.5 16.4545 20 0 0 1 0.866 8 6 1 0 +787 0 1 0 33 15.5885 20 0 0 1 0.866 8 6 1 0 +788 0 1 0 33.5 16.4545 20 0 0 1 0.866 8 6 1 0 +789 0 1 0 34 15.5885 20 0 0 1 0.866 8 6 1 0 +790 0 1 0 34.5 16.4545 20 0 0 1 0.866 8 6 1 0 +791 0 1 0 35 15.5885 20 0 0 1 0.866 8 6 1 0 +792 0 1 0 35.5 16.4545 20 0 0 1 0.866 8 6 1 0 +793 0 1 0 36 15.5885 20 0 0 1 0.866 8 6 1 0 +794 0 1 0 36.5 16.4545 20 0 0 1 0.866 8 6 1 0 +795 0 1 0 37 15.5885 20 0 0 1 0.866 8 6 1 0 +796 0 1 0 37.5 16.4545 20 0 0 1 0.866 8 6 1 0 +797 0 1 0 38 15.5885 20 0 0 1 0.866 8 6 1 0 +798 0 1 0 38.5 16.4545 20 0 0 1 0.866 8 6 1 0 +799 0 1 0 39 15.5885 20 0 0 1 0.866 8 6 1 0 +800 0 1 0 39.5 16.4545 20 0 0 1 0.866 8 6 1 0 +801 0 1 0 0 17.3205 20 0 0 1 0.866 8 6 1 0 +802 0 1 0 0.5 18.1865 20 0 0 1 0.866 8 6 1 0 +803 0 1 0 1 17.3205 20 0 0 1 0.866 8 6 1 0 +804 0 1 0 1.5 18.1865 20 0 0 1 0.866 8 6 1 0 +805 0 1 0 2 17.3205 20 0 0 1 0.866 8 6 1 0 +806 0 1 0 2.5 18.1865 20 0 0 1 0.866 8 6 1 0 +807 0 1 0 3 17.3205 20 0 0 1 0.866 8 6 1 0 +808 0 1 0 3.5 18.1865 20 0 0 1 0.866 8 6 1 0 +809 0 1 0 4 17.3205 20 0 0 1 0.866 8 6 1 0 +810 0 1 0 4.5 18.1865 20 0 0 1 0.866 8 6 1 0 +811 0 1 0 5 17.3205 20 0 0 1 0.866 8 6 1 0 +812 0 1 0 5.5 18.1865 20 0 0 1 0.866 8 6 1 0 +813 0 1 0 6 17.3205 20 0 0 1 0.866 8 6 1 0 +814 0 1 0 6.5 18.1865 20 0 0 1 0.866 8 6 1 0 +815 0 1 0 7 17.3205 20 0 0 1 0.866 8 6 1 0 +816 0 1 0 7.5 18.1865 20 0 0 1 0.866 8 6 1 0 +817 0 1 0 8 17.3205 20 0 0 1 0.866 8 6 1 0 +818 0 1 0 8.5 18.1865 20 0 0 1 0.866 8 6 1 0 +819 0 1 0 9 17.3205 20 0 0 1 0.866 8 6 1 0 +820 0 1 0 9.5 18.1865 20 0 0 1 0.866 8 6 1 0 +821 0 1 0 10 17.3205 20 0 0 1 0.866 8 6 1 0 +822 0 1 0 10.5 18.1865 20 0 0 1 0.866 8 6 1 0 +823 0 1 0 11 17.3205 20 0 0 1 0.866 8 6 1 0 +824 0 1 0 11.5 18.1865 20 0 0 1 0.866 8 6 1 0 +825 0 1 0 12 17.3205 20 0 0 1 0.866 8 6 1 0 +826 0 1 0 12.5 18.1865 20 0 0 1 0.866 8 6 1 0 +827 0 1 0 13 17.3205 20 0 0 1 0.866 8 6 1 0 +828 0 1 0 13.5 18.1865 20 0 0 1 0.866 8 6 1 0 +829 0 1 0 14 17.3205 20 0 0 1 0.866 8 6 1 0 +830 0 1 0 14.5 18.1865 20 0 0 1 0.866 8 6 1 0 +831 0 1 0 15 17.3205 20 0 0 1 0.866 8 6 1 0 +832 0 1 0 15.5 18.1865 20 0 0 1 0.866 8 6 1 0 +833 0 1 0 16 17.3205 20 0 0 1 0.866 8 6 1 0 +834 0 1 0 16.5 18.1865 20 0 0 1 0.866 8 6 1 0 +835 0 1 0 17 17.3205 20 0 0 1 0.866 8 6 1 0 +836 0 1 0 17.5 18.1865 20 0 0 1 0.866 8 6 1 0 +837 0 1 0 18 17.3205 20 0 0 1 0.866 8 6 1 0 +838 0 1 0 18.5 18.1865 20 0 0 1 0.866 8 6 1 0 +839 0 1 0 19 17.3205 20 0 0 1 0.866 8 6 1 0 +840 0 1 0 19.5 18.1865 20 0 0 1 0.866 8 6 1 0 +841 0 1 0 20 17.3205 20 0 0 1 0.866 8 6 1 0 +842 0 1 0 20.5 18.1865 20 0 0 1 0.866 8 6 1 0 +843 0 1 0 21 17.3205 20 0 0 1 0.866 8 6 1 0 +844 0 1 0 21.5 18.1865 20 0 0 1 0.866 8 6 1 0 +845 0 1 0 22 17.3205 20 0 0 1 0.866 8 6 1 0 +846 0 1 0 22.5 18.1865 20 0 0 1 0.866 8 6 1 0 +847 0 1 0 23 17.3205 20 0 0 1 0.866 8 6 1 0 +848 0 1 0 23.5 18.1865 20 0 0 1 0.866 8 6 1 0 +849 0 1 0 24 17.3205 20 0 0 1 0.866 8 6 1 0 +850 0 1 0 24.5 18.1865 20 0 0 1 0.866 8 6 1 0 +851 0 1 0 25 17.3205 20 0 0 1 0.866 8 6 1 0 +852 0 1 0 25.5 18.1865 20 0 0 1 0.866 8 6 1 0 +853 0 1 0 26 17.3205 20 0 0 1 0.866 8 6 1 0 +854 0 1 0 26.5 18.1865 20 0 0 1 0.866 8 6 1 0 +855 0 1 0 27 17.3205 20 0 0 1 0.866 8 6 1 0 +856 0 1 0 27.5 18.1865 20 0 0 1 0.866 8 6 1 0 +857 0 1 0 28 17.3205 20 0 0 1 0.866 8 6 1 0 +858 0 1 0 28.5 18.1865 20 0 0 1 0.866 8 6 1 0 +859 0 1 0 29 17.3205 20 0 0 1 0.866 8 6 1 0 +860 0 1 0 29.5 18.1865 20 0 0 1 0.866 8 6 1 0 +861 0 1 0 30 17.3205 20 0 0 1 0.866 8 6 1 0 +862 0 1 0 30.5 18.1865 20 0 0 1 0.866 8 6 1 0 +863 0 1 0 31 17.3205 20 0 0 1 0.866 8 6 1 0 +864 0 1 0 31.5 18.1865 20 0 0 1 0.866 8 6 1 0 +865 0 1 0 32 17.3205 20 0 0 1 0.866 8 6 1 0 +866 0 1 0 32.5 18.1865 20 0 0 1 0.866 8 6 1 0 +867 0 1 0 33 17.3205 20 0 0 1 0.866 8 6 1 0 +868 0 1 0 33.5 18.1865 20 0 0 1 0.866 8 6 1 0 +869 0 1 0 34 17.3205 20 0 0 1 0.866 8 6 1 0 +870 0 1 0 34.5 18.1865 20 0 0 1 0.866 8 6 1 0 +871 0 1 0 35 17.3205 20 0 0 1 0.866 8 6 1 0 +872 0 1 0 35.5 18.1865 20 0 0 1 0.866 8 6 1 0 +873 0 1 0 36 17.3205 20 0 0 1 0.866 8 6 1 0 +874 0 1 0 36.5 18.1865 20 0 0 1 0.866 8 6 1 0 +875 0 1 0 37 17.3205 20 0 0 1 0.866 8 6 1 0 +876 0 1 0 37.5 18.1865 20 0 0 1 0.866 8 6 1 0 +877 0 1 0 38 17.3205 20 0 0 1 0.866 8 6 1 0 +878 0 1 0 38.5 18.1865 20 0 0 1 0.866 8 6 1 0 +879 0 1 0 39 17.3205 20 0 0 1 0.866 8 6 1 0 +880 0 1 0 39.5 18.1865 20 0 0 1 0.866 8 6 1 0 +881 0 1 0 0 19.0526 20 0 0 1 0.866 8 6 1 0 +882 0 1 0 0.5 19.9186 20 0 0 1 0.866 8 6 1 0 +883 0 1 0 1 19.0526 20 0 0 1 0.866 8 6 1 0 +884 0 1 0 1.5 19.9186 20 0 0 1 0.866 8 6 1 0 +885 0 1 0 2 19.0526 20 0 0 1 0.866 8 6 1 0 +886 0 1 0 2.5 19.9186 20 0 0 1 0.866 8 6 1 0 +887 0 1 0 3 19.0526 20 0 0 1 0.866 8 6 1 0 +888 0 1 0 3.5 19.9186 20 0 0 1 0.866 8 6 1 0 +889 0 1 0 4 19.0526 20 0 0 1 0.866 8 6 1 0 +890 0 1 0 4.5 19.9186 20 0 0 1 0.866 8 6 1 0 +891 0 1 0 5 19.0526 20 0 0 1 0.866 8 6 1 0 +892 0 1 0 5.5 19.9186 20 0 0 1 0.866 8 6 1 0 +893 0 1 0 6 19.0526 20 0 0 1 0.866 8 6 1 0 +894 0 1 0 6.5 19.9186 20 0 0 1 0.866 8 6 1 0 +895 0 1 0 7 19.0526 20 0 0 1 0.866 8 6 1 0 +896 0 1 0 7.5 19.9186 20 0 0 1 0.866 8 6 1 0 +897 0 1 0 8 19.0526 20 0 0 1 0.866 8 6 1 0 +898 0 1 0 8.5 19.9186 20 0 0 1 0.866 8 6 1 0 +899 0 1 0 9 19.0526 20 0 0 1 0.866 8 6 1 0 +900 0 1 0 9.5 19.9186 20 0 0 1 0.866 8 6 1 0 +901 0 1 0 10 19.0526 20 0 0 1 0.866 8 6 1 0 +902 0 1 0 10.5 19.9186 20 0 0 1 0.866 8 6 1 0 +903 0 1 0 11 19.0526 20 0 0 1 0.866 8 6 1 0 +904 0 1 0 11.5 19.9186 20 0 0 1 0.866 8 6 1 0 +905 0 1 0 12 19.0526 20 0 0 1 0.866 8 6 1 0 +906 0 1 0 12.5 19.9186 20 0 0 1 0.866 8 6 1 0 +907 0 1 0 13 19.0526 20 0 0 1 0.866 8 6 1 0 +908 0 1 0 13.5 19.9186 20 0 0 1 0.866 8 6 1 0 +909 0 1 0 14 19.0526 20 0 0 1 0.866 8 6 1 0 +910 0 1 0 14.5 19.9186 20 0 0 1 0.866 8 6 1 0 +911 0 1 0 15 19.0526 20 0 0 1 0.866 8 6 1 0 +912 0 1 0 15.5 19.9186 20 0 0 1 0.866 8 6 1 0 +913 0 1 0 16 19.0526 20 0 0 1 0.866 8 6 1 0 +914 0 1 0 16.5 19.9186 20 0 0 1 0.866 8 6 1 0 +915 0 1 0 17 19.0526 20 0 0 1 0.866 8 6 1 0 +916 0 1 0 17.5 19.9186 20 0 0 1 0.866 8 6 1 0 +917 0 1 0 18 19.0526 20 0 0 1 0.866 8 6 1 0 +918 0 1 0 18.5 19.9186 20 0 0 1 0.866 8 6 1 0 +919 0 1 0 19 19.0526 20 0 0 1 0.866 8 6 1 0 +920 0 1 0 19.5 19.9186 20 0 0 1 0.866 8 6 1 0 +921 0 1 0 20 19.0526 20 0 0 1 0.866 8 6 1 0 +922 0 1 0 20.5 19.9186 20 0 0 1 0.866 8 6 1 0 +923 0 1 0 21 19.0526 20 0 0 1 0.866 8 6 1 0 +924 0 1 0 21.5 19.9186 20 0 0 1 0.866 8 6 1 0 +925 0 1 0 22 19.0526 20 0 0 1 0.866 8 6 1 0 +926 0 1 0 22.5 19.9186 20 0 0 1 0.866 8 6 1 0 +927 0 1 0 23 19.0526 20 0 0 1 0.866 8 6 1 0 +928 0 1 0 23.5 19.9186 20 0 0 1 0.866 8 6 1 0 +929 0 1 0 24 19.0526 20 0 0 1 0.866 8 6 1 0 +930 0 1 0 24.5 19.9186 20 0 0 1 0.866 8 6 1 0 +931 0 1 0 25 19.0526 20 0 0 1 0.866 8 6 1 0 +932 0 1 0 25.5 19.9186 20 0 0 1 0.866 8 6 1 0 +933 0 1 0 26 19.0526 20 0 0 1 0.866 8 6 1 0 +934 0 1 0 26.5 19.9186 20 0 0 1 0.866 8 6 1 0 +935 0 1 0 27 19.0526 20 0 0 1 0.866 8 6 1 0 +936 0 1 0 27.5 19.9186 20 0 0 1 0.866 8 6 1 0 +937 0 1 0 28 19.0526 20 0 0 1 0.866 8 6 1 0 +938 0 1 0 28.5 19.9186 20 0 0 1 0.866 8 6 1 0 +939 0 1 0 29 19.0526 20 0 0 1 0.866 8 6 1 0 +940 0 1 0 29.5 19.9186 20 0 0 1 0.866 8 6 1 0 +941 0 1 0 30 19.0526 20 0 0 1 0.866 8 6 1 0 +942 0 1 0 30.5 19.9186 20 0 0 1 0.866 8 6 1 0 +943 0 1 0 31 19.0526 20 0 0 1 0.866 8 6 1 0 +944 0 1 0 31.5 19.9186 20 0 0 1 0.866 8 6 1 0 +945 0 1 0 32 19.0526 20 0 0 1 0.866 8 6 1 0 +946 0 1 0 32.5 19.9186 20 0 0 1 0.866 8 6 1 0 +947 0 1 0 33 19.0526 20 0 0 1 0.866 8 6 1 0 +948 0 1 0 33.5 19.9186 20 0 0 1 0.866 8 6 1 0 +949 0 1 0 34 19.0526 20 0 0 1 0.866 8 6 1 0 +950 0 1 0 34.5 19.9186 20 0 0 1 0.866 8 6 1 0 +951 0 1 0 35 19.0526 20 0 0 1 0.866 8 6 1 0 +952 0 1 0 35.5 19.9186 20 0 0 1 0.866 8 6 1 0 +953 0 1 0 36 19.0526 20 0 0 1 0.866 8 6 1 0 +954 0 1 0 36.5 19.9186 20 0 0 1 0.866 8 6 1 0 +955 0 1 0 37 19.0526 20 0 0 1 0.866 8 6 1 0 +956 0 1 0 37.5 19.9186 20 0 0 1 0.866 8 6 1 0 +957 0 1 0 38 19.0526 20 0 0 1 0.866 8 6 1 0 +958 0 1 0 38.5 19.9186 20 0 0 1 0.866 8 6 1 0 +959 0 1 0 39 19.0526 20 0 0 1 0.866 8 6 1 0 +960 0 1 0 39.5 19.9186 20 0 0 1 0.866 8 6 1 0 +961 0 1 0 0 20.7846 20 0 0 1 0.866 8 6 1 0 +962 0 1 0 0.5 21.6506 20 0 0 1 0.866 8 6 1 0 +963 0 1 0 1 20.7846 20 0 0 1 0.866 8 6 1 0 +964 0 1 0 1.5 21.6506 20 0 0 1 0.866 8 6 1 0 +965 0 1 0 2 20.7846 20 0 0 1 0.866 8 6 1 0 +966 0 1 0 2.5 21.6506 20 0 0 1 0.866 8 6 1 0 +967 0 1 0 3 20.7846 20 0 0 1 0.866 8 6 1 0 +968 0 1 0 3.5 21.6506 20 0 0 1 0.866 8 6 1 0 +969 0 1 0 4 20.7846 20 0 0 1 0.866 8 6 1 0 +970 0 1 0 4.5 21.6506 20 0 0 1 0.866 8 6 1 0 +971 0 1 0 5 20.7846 20 0 0 1 0.866 8 6 1 0 +972 0 1 0 5.5 21.6506 20 0 0 1 0.866 8 6 1 0 +973 0 1 0 6 20.7846 20 0 0 1 0.866 8 6 1 0 +974 0 1 0 6.5 21.6506 20 0 0 1 0.866 8 6 1 0 +975 0 1 0 7 20.7846 20 0 0 1 0.866 8 6 1 0 +976 0 1 0 7.5 21.6506 20 0 0 1 0.866 8 6 1 0 +977 0 1 0 8 20.7846 20 0 0 1 0.866 8 6 1 0 +978 0 1 0 8.5 21.6506 20 0 0 1 0.866 8 6 1 0 +979 0 1 0 9 20.7846 20 0 0 1 0.866 8 6 1 0 +980 0 1 0 9.5 21.6506 20 0 0 1 0.866 8 6 1 0 +981 0 1 0 10 20.7846 20 0 0 1 0.866 8 6 1 0 +982 0 1 0 10.5 21.6506 20 0 0 1 0.866 8 6 1 0 +983 0 1 0 11 20.7846 20 0 0 1 0.866 8 6 1 0 +984 0 1 0 11.5 21.6506 20 0 0 1 0.866 8 6 1 0 +985 0 1 0 12 20.7846 20 0 0 1 0.866 8 6 1 0 +986 0 1 0 12.5 21.6506 20 0 0 1 0.866 8 6 1 0 +987 0 1 0 13 20.7846 20 0 0 1 0.866 8 6 1 0 +988 0 1 0 13.5 21.6506 20 0 0 1 0.866 8 6 1 0 +989 0 1 0 14 20.7846 20 0 0 1 0.866 8 6 1 0 +990 0 1 0 14.5 21.6506 20 0 0 1 0.866 8 6 1 0 +991 0 1 0 15 20.7846 20 0 0 1 0.866 8 6 1 0 +992 0 1 0 15.5 21.6506 20 0 0 1 0.866 8 6 1 0 +993 0 1 0 16 20.7846 20 0 0 1 0.866 8 6 1 0 +994 0 1 0 16.5 21.6506 20 0 0 1 0.866 8 6 1 0 +995 0 1 0 17 20.7846 20 0 0 1 0.866 8 6 1 0 +996 0 1 0 17.5 21.6506 20 0 0 1 0.866 8 6 1 0 +997 0 1 0 18 20.7846 20 0 0 1 0.866 8 6 1 0 +998 0 1 0 18.5 21.6506 20 0 0 1 0.866 8 6 1 0 +999 0 1 0 19 20.7846 20 0 0 1 0.866 8 6 1 0 +1000 0 1 0 19.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1001 0 1 0 20 20.7846 20 0 0 1 0.866 8 6 1 0 +1002 0 1 0 20.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1003 0 1 0 21 20.7846 20 0 0 1 0.866 8 6 1 0 +1004 0 1 0 21.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1005 0 1 0 22 20.7846 20 0 0 1 0.866 8 6 1 0 +1006 0 1 0 22.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1007 0 1 0 23 20.7846 20 0 0 1 0.866 8 6 1 0 +1008 0 1 0 23.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1009 0 1 0 24 20.7846 20 0 0 1 0.866 8 6 1 0 +1010 0 1 0 24.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1011 0 1 0 25 20.7846 20 0 0 1 0.866 8 6 1 0 +1012 0 1 0 25.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1013 0 1 0 26 20.7846 20 0 0 1 0.866 8 6 1 0 +1014 0 1 0 26.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1015 0 1 0 27 20.7846 20 0 0 1 0.866 8 6 1 0 +1016 0 1 0 27.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1017 0 1 0 28 20.7846 20 0 0 1 0.866 8 6 1 0 +1018 0 1 0 28.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1019 0 1 0 29 20.7846 20 0 0 1 0.866 8 6 1 0 +1020 0 1 0 29.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1021 0 1 0 30 20.7846 20 0 0 1 0.866 8 6 1 0 +1022 0 1 0 30.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1023 0 1 0 31 20.7846 20 0 0 1 0.866 8 6 1 0 +1024 0 1 0 31.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1025 0 1 0 32 20.7846 20 0 0 1 0.866 8 6 1 0 +1026 0 1 0 32.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1027 0 1 0 33 20.7846 20 0 0 1 0.866 8 6 1 0 +1028 0 1 0 33.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1029 0 1 0 34 20.7846 20 0 0 1 0.866 8 6 1 0 +1030 0 1 0 34.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1031 0 1 0 35 20.7846 20 0 0 1 0.866 8 6 1 0 +1032 0 1 0 35.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1033 0 1 0 36 20.7846 20 0 0 1 0.866 8 6 1 0 +1034 0 1 0 36.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1035 0 1 0 37 20.7846 20 0 0 1 0.866 8 6 1 0 +1036 0 1 0 37.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1037 0 1 0 38 20.7846 20 0 0 1 0.866 8 6 1 0 +1038 0 1 0 38.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1039 0 1 0 39 20.7846 20 0 0 1 0.866 8 6 1 0 +1040 0 1 0 39.5 21.6506 20 0 0 1 0.866 8 6 1 0 +1041 0 1 0 0 22.5167 20 0 0 1 0.866 8 6 1 0 +1042 0 1 0 0.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1043 0 1 0 1 22.5167 20 0 0 1 0.866 8 6 1 0 +1044 0 1 0 1.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1045 0 1 0 2 22.5167 20 0 0 1 0.866 8 6 1 0 +1046 0 1 0 2.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1047 0 1 0 3 22.5167 20 0 0 1 0.866 8 6 1 0 +1048 0 1 0 3.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1049 0 1 0 4 22.5167 20 0 0 1 0.866 8 6 1 0 +1050 0 1 0 4.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1051 0 1 0 5 22.5167 20 0 0 1 0.866 8 6 1 0 +1052 0 1 0 5.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1053 0 1 0 6 22.5167 20 0 0 1 0.866 8 6 1 0 +1054 0 1 0 6.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1055 0 1 0 7 22.5167 20 0 0 1 0.866 8 6 1 0 +1056 0 1 0 7.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1057 0 1 0 8 22.5167 20 0 0 1 0.866 8 6 1 0 +1058 0 1 0 8.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1059 0 1 0 9 22.5167 20 0 0 1 0.866 8 6 1 0 +1060 0 1 0 9.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1061 0 1 0 10 22.5167 20 0 0 1 0.866 8 6 1 0 +1062 0 1 0 10.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1063 0 1 0 11 22.5167 20 0 0 1 0.866 8 6 1 0 +1064 0 1 0 11.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1065 0 1 0 12 22.5167 20 0 0 1 0.866 8 6 1 0 +1066 0 1 0 12.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1067 0 1 0 13 22.5167 20 0 0 1 0.866 8 6 1 0 +1068 0 1 0 13.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1069 0 1 0 14 22.5167 20 0 0 1 0.866 8 6 1 0 +1070 0 1 0 14.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1071 0 1 0 15 22.5167 20 0 0 1 0.866 8 6 1 0 +1072 0 1 0 15.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1073 0 1 0 16 22.5167 20 0 0 1 0.866 8 6 1 0 +1074 0 1 0 16.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1075 0 1 0 17 22.5167 20 0 0 1 0.866 8 6 1 0 +1076 0 1 0 17.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1077 0 1 0 18 22.5167 20 0 0 1 0.866 8 6 1 0 +1078 0 1 0 18.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1079 0 1 0 19 22.5167 20 0 0 1 0.866 8 6 1 0 +1080 0 1 0 19.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1081 0 1 0 20 22.5167 20 0 0 1 0.866 8 6 1 0 +1082 0 1 0 20.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1083 0 1 0 21 22.5167 20 0 0 1 0.866 8 6 1 0 +1084 0 1 0 21.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1085 0 1 0 22 22.5167 20 0 0 1 0.866 8 6 1 0 +1086 0 1 0 22.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1087 0 1 0 23 22.5167 20 0 0 1 0.866 8 6 1 0 +1088 0 1 0 23.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1089 0 1 0 24 22.5167 20 0 0 1 0.866 8 6 1 0 +1090 0 1 0 24.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1091 0 1 0 25 22.5167 20 0 0 1 0.866 8 6 1 0 +1092 0 1 0 25.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1093 0 1 0 26 22.5167 20 0 0 1 0.866 8 6 1 0 +1094 0 1 0 26.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1095 0 1 0 27 22.5167 20 0 0 1 0.866 8 6 1 0 +1096 0 1 0 27.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1097 0 1 0 28 22.5167 20 0 0 1 0.866 8 6 1 0 +1098 0 1 0 28.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1099 0 1 0 29 22.5167 20 0 0 1 0.866 8 6 1 0 +1100 0 1 0 29.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1101 0 1 0 30 22.5167 20 0 0 1 0.866 8 6 1 0 +1102 0 1 0 30.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1103 0 1 0 31 22.5167 20 0 0 1 0.866 8 6 1 0 +1104 0 1 0 31.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1105 0 1 0 32 22.5167 20 0 0 1 0.866 8 6 1 0 +1106 0 1 0 32.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1107 0 1 0 33 22.5167 20 0 0 1 0.866 8 6 1 0 +1108 0 1 0 33.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1109 0 1 0 34 22.5167 20 0 0 1 0.866 8 6 1 0 +1110 0 1 0 34.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1111 0 1 0 35 22.5167 20 0 0 1 0.866 8 6 1 0 +1112 0 1 0 35.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1113 0 1 0 36 22.5167 20 0 0 1 0.866 8 6 1 0 +1114 0 1 0 36.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1115 0 1 0 37 22.5167 20 0 0 1 0.866 8 6 1 0 +1116 0 1 0 37.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1117 0 1 0 38 22.5167 20 0 0 1 0.866 8 6 1 0 +1118 0 1 0 38.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1119 0 1 0 39 22.5167 20 0 0 1 0.866 8 6 1 0 +1120 0 1 0 39.5 23.3827 20 0 0 1 0.866 8 6 1 0 +1121 0 1 0 0 24.2487 20 0 0 1 0.866 8 6 1 0 +1122 0 1 0 0.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1123 0 1 0 1 24.2487 20 0 0 1 0.866 8 6 1 0 +1124 0 1 0 1.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1125 0 1 0 2 24.2487 20 0 0 1 0.866 8 6 1 0 +1126 0 1 0 2.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1127 0 1 0 3 24.2487 20 0 0 1 0.866 8 6 1 0 +1128 0 1 0 3.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1129 0 1 0 4 24.2487 20 0 0 1 0.866 8 6 1 0 +1130 0 1 0 4.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1131 0 1 0 5 24.2487 20 0 0 1 0.866 8 6 1 0 +1132 0 1 0 5.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1133 0 1 0 6 24.2487 20 0 0 1 0.866 8 6 1 0 +1134 0 1 0 6.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1135 0 1 0 7 24.2487 20 0 0 1 0.866 8 6 1 0 +1136 0 1 0 7.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1137 0 1 0 8 24.2487 20 0 0 1 0.866 8 6 1 0 +1138 0 1 0 8.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1139 0 1 0 9 24.2487 20 0 0 1 0.866 8 6 1 0 +1140 0 1 0 9.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1141 0 1 0 10 24.2487 20 0 0 1 0.866 8 6 1 0 +1142 0 1 0 10.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1143 0 1 0 11 24.2487 20 0 0 1 0.866 8 6 1 0 +1144 0 1 0 11.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1145 0 1 0 12 24.2487 20 0 0 1 0.866 8 6 1 0 +1146 0 1 0 12.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1147 0 1 0 13 24.2487 20 0 0 1 0.866 8 6 1 0 +1148 0 1 0 13.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1149 0 1 0 14 24.2487 20 0 0 1 0.866 8 6 1 0 +1150 0 1 0 14.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1151 0 1 0 15 24.2487 20 0 0 1 0.866 8 6 1 0 +1152 0 1 0 15.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1153 0 1 0 16 24.2487 20 0 0 1 0.866 8 6 1 0 +1154 0 1 0 16.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1155 0 1 0 17 24.2487 20 0 0 1 0.866 8 6 1 0 +1156 0 1 0 17.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1157 0 1 0 18 24.2487 20 0 0 1 0.866 8 6 1 0 +1158 0 1 0 18.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1159 0 1 0 19 24.2487 20 0 0 1 0.866 8 6 1 0 +1160 0 1 0 19.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1161 0 1 0 20 24.2487 20 0 0 1 0.866 8 6 1 0 +1162 0 1 0 20.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1163 0 1 0 21 24.2487 20 0 0 1 0.866 8 6 1 0 +1164 0 1 0 21.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1165 0 1 0 22 24.2487 20 0 0 1 0.866 8 6 1 0 +1166 0 1 0 22.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1167 0 1 0 23 24.2487 20 0 0 1 0.866 8 6 1 0 +1168 0 1 0 23.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1169 0 1 0 24 24.2487 20 0 0 1 0.866 8 6 1 0 +1170 0 1 0 24.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1171 0 1 0 25 24.2487 20 0 0 1 0.866 8 6 1 0 +1172 0 1 0 25.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1173 0 1 0 26 24.2487 20 0 0 1 0.866 8 6 1 0 +1174 0 1 0 26.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1175 0 1 0 27 24.2487 20 0 0 1 0.866 8 6 1 0 +1176 0 1 0 27.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1177 0 1 0 28 24.2487 20 0 0 1 0.866 8 6 1 0 +1178 0 1 0 28.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1179 0 1 0 29 24.2487 20 0 0 1 0.866 8 6 1 0 +1180 0 1 0 29.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1181 0 1 0 30 24.2487 20 0 0 1 0.866 8 6 1 0 +1182 0 1 0 30.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1183 0 1 0 31 24.2487 20 0 0 1 0.866 8 6 1 0 +1184 0 1 0 31.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1185 0 1 0 32 24.2487 20 0 0 1 0.866 8 6 1 0 +1186 0 1 0 32.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1187 0 1 0 33 24.2487 20 0 0 1 0.866 8 6 1 0 +1188 0 1 0 33.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1189 0 1 0 34 24.2487 20 0 0 1 0.866 8 6 1 0 +1190 0 1 0 34.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1191 0 1 0 35 24.2487 20 0 0 1 0.866 8 6 1 0 +1192 0 1 0 35.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1193 0 1 0 36 24.2487 20 0 0 1 0.866 8 6 1 0 +1194 0 1 0 36.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1195 0 1 0 37 24.2487 20 0 0 1 0.866 8 6 1 0 +1196 0 1 0 37.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1197 0 1 0 38 24.2487 20 0 0 1 0.866 8 6 1 0 +1198 0 1 0 38.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1199 0 1 0 39 24.2487 20 0 0 1 0.866 8 6 1 0 +1200 0 1 0 39.5 25.1147 20 0 0 1 0.866 8 6 1 0 +1201 0 1 0 0 25.9808 20 0 0 1 0.866 8 6 1 0 +1202 0 1 0 0.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1203 0 1 0 1 25.9808 20 0 0 1 0.866 8 6 1 0 +1204 0 1 0 1.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1205 0 1 0 2 25.9808 20 0 0 1 0.866 8 6 1 0 +1206 0 1 0 2.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1207 0 1 0 3 25.9808 20 0 0 1 0.866 8 6 1 0 +1208 0 1 0 3.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1209 0 1 0 4 25.9808 20 0 0 1 0.866 8 6 1 0 +1210 0 1 0 4.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1211 0 1 0 5 25.9808 20 0 0 1 0.866 8 6 1 0 +1212 0 1 0 5.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1213 0 1 0 6 25.9808 20 0 0 1 0.866 8 6 1 0 +1214 0 1 0 6.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1215 0 1 0 7 25.9808 20 0 0 1 0.866 8 6 1 0 +1216 0 1 0 7.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1217 0 1 0 8 25.9808 20 0 0 1 0.866 8 6 1 0 +1218 0 1 0 8.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1219 0 1 0 9 25.9808 20 0 0 1 0.866 8 6 1 0 +1220 0 1 0 9.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1221 0 1 0 10 25.9808 20 0 0 1 0.866 8 6 1 0 +1222 0 1 0 10.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1223 0 1 0 11 25.9808 20 0 0 1 0.866 8 6 1 0 +1224 0 1 0 11.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1225 0 1 0 12 25.9808 20 0 0 1 0.866 8 6 1 0 +1226 0 1 0 12.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1227 0 1 0 13 25.9808 20 0 0 1 0.866 8 6 1 0 +1228 0 1 0 13.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1229 0 1 0 14 25.9808 20 0 0 1 0.866 8 6 1 0 +1230 0 1 0 14.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1231 0 1 0 15 25.9808 20 0 0 1 0.866 8 6 1 0 +1232 0 1 0 15.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1233 0 1 0 16 25.9808 20 0 0 1 0.866 8 6 1 0 +1234 0 1 0 16.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1235 0 1 0 17 25.9808 20 0 0 1 0.866 8 6 1 0 +1236 0 1 0 17.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1237 0 1 0 18 25.9808 20 0 0 1 0.866 8 6 1 0 +1238 0 1 0 18.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1239 0 1 0 19 25.9808 20 0 0 1 0.866 8 6 1 0 +1240 0 1 0 19.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1241 0 1 0 20 25.9808 20 0 0 1 0.866 8 6 1 0 +1242 0 1 0 20.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1243 0 1 0 21 25.9808 20 0 0 1 0.866 8 6 1 0 +1244 0 1 0 21.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1245 0 1 0 22 25.9808 20 0 0 1 0.866 8 6 1 0 +1246 0 1 0 22.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1247 0 1 0 23 25.9808 20 0 0 1 0.866 8 6 1 0 +1248 0 1 0 23.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1249 0 1 0 24 25.9808 20 0 0 1 0.866 8 6 1 0 +1250 0 1 0 24.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1251 0 1 0 25 25.9808 20 0 0 1 0.866 8 6 1 0 +1252 0 1 0 25.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1253 0 1 0 26 25.9808 20 0 0 1 0.866 8 6 1 0 +1254 0 1 0 26.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1255 0 1 0 27 25.9808 20 0 0 1 0.866 8 6 1 0 +1256 0 1 0 27.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1257 0 1 0 28 25.9808 20 0 0 1 0.866 8 6 1 0 +1258 0 1 0 28.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1259 0 1 0 29 25.9808 20 0 0 1 0.866 8 6 1 0 +1260 0 1 0 29.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1261 0 1 0 30 25.9808 20 0 0 1 0.866 8 6 1 0 +1262 0 1 0 30.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1263 0 1 0 31 25.9808 20 0 0 1 0.866 8 6 1 0 +1264 0 1 0 31.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1265 0 1 0 32 25.9808 20 0 0 1 0.866 8 6 1 0 +1266 0 1 0 32.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1267 0 1 0 33 25.9808 20 0 0 1 0.866 8 6 1 0 +1268 0 1 0 33.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1269 0 1 0 34 25.9808 20 0 0 1 0.866 8 6 1 0 +1270 0 1 0 34.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1271 0 1 0 35 25.9808 20 0 0 1 0.866 8 6 1 0 +1272 0 1 0 35.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1273 0 1 0 36 25.9808 20 0 0 1 0.866 8 6 1 0 +1274 0 1 0 36.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1275 0 1 0 37 25.9808 20 0 0 1 0.866 8 6 1 0 +1276 0 1 0 37.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1277 0 1 0 38 25.9808 20 0 0 1 0.866 8 6 1 0 +1278 0 1 0 38.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1279 0 1 0 39 25.9808 20 0 0 1 0.866 8 6 1 0 +1280 0 1 0 39.5 26.8468 20 0 0 1 0.866 8 6 1 0 +1281 0 1 0 0 27.7128 20 0 0 1 0.866 8 6 1 0 +1282 0 1 0 0.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1283 0 1 0 1 27.7128 20 0 0 1 0.866 8 6 1 0 +1284 0 1 0 1.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1285 0 1 0 2 27.7128 20 0 0 1 0.866 8 6 1 0 +1286 0 1 0 2.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1287 0 1 0 3 27.7128 20 0 0 1 0.866 8 6 1 0 +1288 0 1 0 3.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1289 0 1 0 4 27.7128 20 0 0 1 0.866 8 6 1 0 +1290 0 1 0 4.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1291 0 1 0 5 27.7128 20 0 0 1 0.866 8 6 1 0 +1292 0 1 0 5.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1293 0 1 0 6 27.7128 20 0 0 1 0.866 8 6 1 0 +1294 0 1 0 6.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1295 0 1 0 7 27.7128 20 0 0 1 0.866 8 6 1 0 +1296 0 1 0 7.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1297 0 1 0 8 27.7128 20 0 0 1 0.866 8 6 1 0 +1298 0 1 0 8.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1299 0 1 0 9 27.7128 20 0 0 1 0.866 8 6 1 0 +1300 0 1 0 9.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1301 0 1 0 10 27.7128 20 0 0 1 0.866 8 6 1 0 +1302 0 1 0 10.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1303 0 1 0 11 27.7128 20 0 0 1 0.866 8 6 1 0 +1304 0 1 0 11.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1305 0 1 0 12 27.7128 20 0 0 1 0.866 8 6 1 0 +1306 0 1 0 12.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1307 0 1 0 13 27.7128 20 0 0 1 0.866 8 6 1 0 +1308 0 1 0 13.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1309 0 1 0 14 27.7128 20 0 0 1 0.866 8 6 1 0 +1310 0 1 0 14.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1311 0 1 0 15 27.7128 20 0 0 1 0.866 8 6 1 0 +1312 0 1 0 15.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1313 0 1 0 16 27.7128 20 0 0 1 0.866 8 6 1 0 +1314 0 1 0 16.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1315 0 1 0 17 27.7128 20 0 0 1 0.866 8 6 1 0 +1316 0 1 0 17.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1317 0 1 0 18 27.7128 20 0 0 1 0.866 8 6 1 0 +1318 0 1 0 18.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1319 0 1 0 19 27.7128 20 0 0 1 0.866 8 6 1 0 +1320 0 1 0 19.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1321 0 1 0 20 27.7128 20 0 0 1 0.866 8 6 1 0 +1322 0 1 0 20.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1323 0 1 0 21 27.7128 20 0 0 1 0.866 8 6 1 0 +1324 0 1 0 21.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1325 0 1 0 22 27.7128 20 0 0 1 0.866 8 6 1 0 +1326 0 1 0 22.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1327 0 1 0 23 27.7128 20 0 0 1 0.866 8 6 1 0 +1328 0 1 0 23.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1329 0 1 0 24 27.7128 20 0 0 1 0.866 8 6 1 0 +1330 0 1 0 24.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1331 0 1 0 25 27.7128 20 0 0 1 0.866 8 6 1 0 +1332 0 1 0 25.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1333 0 1 0 26 27.7128 20 0 0 1 0.866 8 6 1 0 +1334 0 1 0 26.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1335 0 1 0 27 27.7128 20 0 0 1 0.866 8 6 1 0 +1336 0 1 0 27.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1337 0 1 0 28 27.7128 20 0 0 1 0.866 8 6 1 0 +1338 0 1 0 28.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1339 0 1 0 29 27.7128 20 0 0 1 0.866 8 6 1 0 +1340 0 1 0 29.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1341 0 1 0 30 27.7128 20 0 0 1 0.866 8 6 1 0 +1342 0 1 0 30.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1343 0 1 0 31 27.7128 20 0 0 1 0.866 8 6 1 0 +1344 0 1 0 31.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1345 0 1 0 32 27.7128 20 0 0 1 0.866 8 6 1 0 +1346 0 1 0 32.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1347 0 1 0 33 27.7128 20 0 0 1 0.866 8 6 1 0 +1348 0 1 0 33.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1349 0 1 0 34 27.7128 20 0 0 1 0.866 8 6 1 0 +1350 0 1 0 34.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1351 0 1 0 35 27.7128 20 0 0 1 0.866 8 6 1 0 +1352 0 1 0 35.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1353 0 1 0 36 27.7128 20 0 0 1 0.866 8 6 1 0 +1354 0 1 0 36.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1355 0 1 0 37 27.7128 20 0 0 1 0.866 8 6 1 0 +1356 0 1 0 37.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1357 0 1 0 38 27.7128 20 0 0 1 0.866 8 6 1 0 +1358 0 1 0 38.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1359 0 1 0 39 27.7128 20 0 0 1 0.866 8 6 1 0 +1360 0 1 0 39.5 28.5788 20 0 0 1 0.866 8 6 1 0 +1361 0 1 0 0 29.4449 20 0 0 1 0.866 8 6 1 0 +1362 0 1 0 0.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1363 0 1 0 1 29.4449 20 0 0 1 0.866 8 6 1 0 +1364 0 1 0 1.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1365 0 1 0 2 29.4449 20 0 0 1 0.866 8 6 1 0 +1366 0 1 0 2.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1367 0 1 0 3 29.4449 20 0 0 1 0.866 8 6 1 0 +1368 0 1 0 3.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1369 0 1 0 4 29.4449 20 0 0 1 0.866 8 6 1 0 +1370 0 1 0 4.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1371 0 1 0 5 29.4449 20 0 0 1 0.866 8 6 1 0 +1372 0 1 0 5.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1373 0 1 0 6 29.4449 20 0 0 1 0.866 8 6 1 0 +1374 0 1 0 6.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1375 0 1 0 7 29.4449 20 0 0 1 0.866 8 6 1 0 +1376 0 1 0 7.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1377 0 1 0 8 29.4449 20 0 0 1 0.866 8 6 1 0 +1378 0 1 0 8.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1379 0 1 0 9 29.4449 20 0 0 1 0.866 8 6 1 0 +1380 0 1 0 9.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1381 0 1 0 10 29.4449 20 0 0 1 0.866 8 6 1 0 +1382 0 1 0 10.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1383 0 1 0 11 29.4449 20 0 0 1 0.866 8 6 1 0 +1384 0 1 0 11.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1385 0 1 0 12 29.4449 20 0 0 1 0.866 8 6 1 0 +1386 0 1 0 12.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1387 0 1 0 13 29.4449 20 0 0 1 0.866 8 6 1 0 +1388 0 1 0 13.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1389 0 1 0 14 29.4449 20 0 0 1 0.866 8 6 1 0 +1390 0 1 0 14.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1391 0 1 0 15 29.4449 20 0 0 1 0.866 8 6 1 0 +1392 0 1 0 15.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1393 0 1 0 16 29.4449 20 0 0 1 0.866 8 6 1 0 +1394 0 1 0 16.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1395 0 1 0 17 29.4449 20 0 0 1 0.866 8 6 1 0 +1396 0 1 0 17.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1397 0 1 0 18 29.4449 20 0 0 1 0.866 8 6 1 0 +1398 0 1 0 18.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1399 0 1 0 19 29.4449 20 0 0 1 0.866 8 6 1 0 +1400 0 1 0 19.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1401 0 1 0 20 29.4449 20 0 0 1 0.866 8 6 1 0 +1402 0 1 0 20.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1403 0 1 0 21 29.4449 20 0 0 1 0.866 8 6 1 0 +1404 0 1 0 21.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1405 0 1 0 22 29.4449 20 0 0 1 0.866 8 6 1 0 +1406 0 1 0 22.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1407 0 1 0 23 29.4449 20 0 0 1 0.866 8 6 1 0 +1408 0 1 0 23.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1409 0 1 0 24 29.4449 20 0 0 1 0.866 8 6 1 0 +1410 0 1 0 24.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1411 0 1 0 25 29.4449 20 0 0 1 0.866 8 6 1 0 +1412 0 1 0 25.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1413 0 1 0 26 29.4449 20 0 0 1 0.866 8 6 1 0 +1414 0 1 0 26.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1415 0 1 0 27 29.4449 20 0 0 1 0.866 8 6 1 0 +1416 0 1 0 27.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1417 0 1 0 28 29.4449 20 0 0 1 0.866 8 6 1 0 +1418 0 1 0 28.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1419 0 1 0 29 29.4449 20 0 0 1 0.866 8 6 1 0 +1420 0 1 0 29.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1421 0 1 0 30 29.4449 20 0 0 1 0.866 8 6 1 0 +1422 0 1 0 30.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1423 0 1 0 31 29.4449 20 0 0 1 0.866 8 6 1 0 +1424 0 1 0 31.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1425 0 1 0 32 29.4449 20 0 0 1 0.866 8 6 1 0 +1426 0 1 0 32.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1427 0 1 0 33 29.4449 20 0 0 1 0.866 8 6 1 0 +1428 0 1 0 33.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1429 0 1 0 34 29.4449 20 0 0 1 0.866 8 6 1 0 +1430 0 1 0 34.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1431 0 1 0 35 29.4449 20 0 0 1 0.866 8 6 1 0 +1432 0 1 0 35.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1433 0 1 0 36 29.4449 20 0 0 1 0.866 8 6 1 0 +1434 0 1 0 36.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1435 0 1 0 37 29.4449 20 0 0 1 0.866 8 6 1 0 +1436 0 1 0 37.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1437 0 1 0 38 29.4449 20 0 0 1 0.866 8 6 1 0 +1438 0 1 0 38.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1439 0 1 0 39 29.4449 20 0 0 1 0.866 8 6 1 0 +1440 0 1 0 39.5 30.3109 20 0 0 1 0.866 8 6 1 0 +1441 0 1 0 0 31.1769 20 0 0 1 0.866 8 6 1 0 +1442 0 1 0 0.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1443 0 1 0 1 31.1769 20 0 0 1 0.866 8 6 1 0 +1444 0 1 0 1.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1445 0 1 0 2 31.1769 20 0 0 1 0.866 8 6 1 0 +1446 0 1 0 2.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1447 0 1 0 3 31.1769 20 0 0 1 0.866 8 6 1 0 +1448 0 1 0 3.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1449 0 1 0 4 31.1769 20 0 0 1 0.866 8 6 1 0 +1450 0 1 0 4.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1451 0 1 0 5 31.1769 20 0 0 1 0.866 8 6 1 0 +1452 0 1 0 5.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1453 0 1 0 6 31.1769 20 0 0 1 0.866 8 6 1 0 +1454 0 1 0 6.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1455 0 1 0 7 31.1769 20 0 0 1 0.866 8 6 1 0 +1456 0 1 0 7.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1457 0 1 0 8 31.1769 20 0 0 1 0.866 8 6 1 0 +1458 0 1 0 8.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1459 0 1 0 9 31.1769 20 0 0 1 0.866 8 6 1 0 +1460 0 1 0 9.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1461 0 1 0 10 31.1769 20 0 0 1 0.866 8 6 1 0 +1462 0 1 0 10.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1463 0 1 0 11 31.1769 20 0 0 1 0.866 8 6 1 0 +1464 0 1 0 11.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1465 0 1 0 12 31.1769 20 0 0 1 0.866 8 6 1 0 +1466 0 1 0 12.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1467 0 1 0 13 31.1769 20 0 0 1 0.866 8 6 1 0 +1468 0 1 0 13.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1469 0 1 0 14 31.1769 20 0 0 1 0.866 8 6 1 0 +1470 0 1 0 14.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1471 0 1 0 15 31.1769 20 0 0 1 0.866 8 6 1 0 +1472 0 1 0 15.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1473 0 1 0 16 31.1769 20 0 0 1 0.866 8 6 1 0 +1474 0 1 0 16.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1475 0 1 0 17 31.1769 20 0 0 1 0.866 8 6 1 0 +1476 0 1 0 17.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1477 0 1 0 18 31.1769 20 0 0 1 0.866 8 6 1 0 +1478 0 1 0 18.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1479 0 1 0 19 31.1769 20 0 0 1 0.866 8 6 1 0 +1480 0 1 0 19.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1481 0 1 0 20 31.1769 20 0 0 1 0.866 8 6 1 0 +1482 0 1 0 20.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1483 0 1 0 21 31.1769 20 0 0 1 0.866 8 6 1 0 +1484 0 1 0 21.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1485 0 1 0 22 31.1769 20 0 0 1 0.866 8 6 1 0 +1486 0 1 0 22.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1487 0 1 0 23 31.1769 20 0 0 1 0.866 8 6 1 0 +1488 0 1 0 23.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1489 0 1 0 24 31.1769 20 0 0 1 0.866 8 6 1 0 +1490 0 1 0 24.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1491 0 1 0 25 31.1769 20 0 0 1 0.866 8 6 1 0 +1492 0 1 0 25.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1493 0 1 0 26 31.1769 20 0 0 1 0.866 8 6 1 0 +1494 0 1 0 26.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1495 0 1 0 27 31.1769 20 0 0 1 0.866 8 6 1 0 +1496 0 1 0 27.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1497 0 1 0 28 31.1769 20 0 0 1 0.866 8 6 1 0 +1498 0 1 0 28.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1499 0 1 0 29 31.1769 20 0 0 1 0.866 8 6 1 0 +1500 0 1 0 29.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1501 0 1 0 30 31.1769 20 0 0 1 0.866 8 6 1 0 +1502 0 1 0 30.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1503 0 1 0 31 31.1769 20 0 0 1 0.866 8 6 1 0 +1504 0 1 0 31.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1505 0 1 0 32 31.1769 20 0 0 1 0.866 8 6 1 0 +1506 0 1 0 32.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1507 0 1 0 33 31.1769 20 0 0 1 0.866 8 6 1 0 +1508 0 1 0 33.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1509 0 1 0 34 31.1769 20 0 0 1 0.866 8 6 1 0 +1510 0 1 0 34.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1511 0 1 0 35 31.1769 20 0 0 1 0.866 8 6 1 0 +1512 0 1 0 35.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1513 0 1 0 36 31.1769 20 0 0 1 0.866 8 6 1 0 +1514 0 1 0 36.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1515 0 1 0 37 31.1769 20 0 0 1 0.866 8 6 1 0 +1516 0 1 0 37.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1517 0 1 0 38 31.1769 20 0 0 1 0.866 8 6 1 0 +1518 0 1 0 38.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1519 0 1 0 39 31.1769 20 0 0 1 0.866 8 6 1 0 +1520 0 1 0 39.5 32.0429 20 0 0 1 0.866 8 6 1 0 +1521 0 1 0 0 32.909 20 0 0 1 0.866 8 6 1 0 +1522 0 1 0 0.5 33.775 20 0 0 1 0.866 8 6 1 0 +1523 0 1 0 1 32.909 20 0 0 1 0.866 8 6 1 0 +1524 0 1 0 1.5 33.775 20 0 0 1 0.866 8 6 1 0 +1525 0 1 0 2 32.909 20 0 0 1 0.866 8 6 1 0 +1526 0 1 0 2.5 33.775 20 0 0 1 0.866 8 6 1 0 +1527 0 1 0 3 32.909 20 0 0 1 0.866 8 6 1 0 +1528 0 1 0 3.5 33.775 20 0 0 1 0.866 8 6 1 0 +1529 0 1 0 4 32.909 20 0 0 1 0.866 8 6 1 0 +1530 0 1 0 4.5 33.775 20 0 0 1 0.866 8 6 1 0 +1531 0 1 0 5 32.909 20 0 0 1 0.866 8 6 1 0 +1532 0 1 0 5.5 33.775 20 0 0 1 0.866 8 6 1 0 +1533 0 1 0 6 32.909 20 0 0 1 0.866 8 6 1 0 +1534 0 1 0 6.5 33.775 20 0 0 1 0.866 8 6 1 0 +1535 0 1 0 7 32.909 20 0 0 1 0.866 8 6 1 0 +1536 0 1 0 7.5 33.775 20 0 0 1 0.866 8 6 1 0 +1537 0 1 0 8 32.909 20 0 0 1 0.866 8 6 1 0 +1538 0 1 0 8.5 33.775 20 0 0 1 0.866 8 6 1 0 +1539 0 1 0 9 32.909 20 0 0 1 0.866 8 6 1 0 +1540 0 1 0 9.5 33.775 20 0 0 1 0.866 8 6 1 0 +1541 0 1 0 10 32.909 20 0 0 1 0.866 8 6 1 0 +1542 0 1 0 10.5 33.775 20 0 0 1 0.866 8 6 1 0 +1543 0 1 0 11 32.909 20 0 0 1 0.866 8 6 1 0 +1544 0 1 0 11.5 33.775 20 0 0 1 0.866 8 6 1 0 +1545 0 1 0 12 32.909 20 0 0 1 0.866 8 6 1 0 +1546 0 1 0 12.5 33.775 20 0 0 1 0.866 8 6 1 0 +1547 0 1 0 13 32.909 20 0 0 1 0.866 8 6 1 0 +1548 0 1 0 13.5 33.775 20 0 0 1 0.866 8 6 1 0 +1549 0 1 0 14 32.909 20 0 0 1 0.866 8 6 1 0 +1550 0 1 0 14.5 33.775 20 0 0 1 0.866 8 6 1 0 +1551 0 1 0 15 32.909 20 0 0 1 0.866 8 6 1 0 +1552 0 1 0 15.5 33.775 20 0 0 1 0.866 8 6 1 0 +1553 0 1 0 16 32.909 20 0 0 1 0.866 8 6 1 0 +1554 0 1 0 16.5 33.775 20 0 0 1 0.866 8 6 1 0 +1555 0 1 0 17 32.909 20 0 0 1 0.866 8 6 1 0 +1556 0 1 0 17.5 33.775 20 0 0 1 0.866 8 6 1 0 +1557 0 1 0 18 32.909 20 0 0 1 0.866 8 6 1 0 +1558 0 1 0 18.5 33.775 20 0 0 1 0.866 8 6 1 0 +1559 0 1 0 19 32.909 20 0 0 1 0.866 8 6 1 0 +1560 0 1 0 19.5 33.775 20 0 0 1 0.866 8 6 1 0 +1561 0 1 0 20 32.909 20 0 0 1 0.866 8 6 1 0 +1562 0 1 0 20.5 33.775 20 0 0 1 0.866 8 6 1 0 +1563 0 1 0 21 32.909 20 0 0 1 0.866 8 6 1 0 +1564 0 1 0 21.5 33.775 20 0 0 1 0.866 8 6 1 0 +1565 0 1 0 22 32.909 20 0 0 1 0.866 8 6 1 0 +1566 0 1 0 22.5 33.775 20 0 0 1 0.866 8 6 1 0 +1567 0 1 0 23 32.909 20 0 0 1 0.866 8 6 1 0 +1568 0 1 0 23.5 33.775 20 0 0 1 0.866 8 6 1 0 +1569 0 1 0 24 32.909 20 0 0 1 0.866 8 6 1 0 +1570 0 1 0 24.5 33.775 20 0 0 1 0.866 8 6 1 0 +1571 0 1 0 25 32.909 20 0 0 1 0.866 8 6 1 0 +1572 0 1 0 25.5 33.775 20 0 0 1 0.866 8 6 1 0 +1573 0 1 0 26 32.909 20 0 0 1 0.866 8 6 1 0 +1574 0 1 0 26.5 33.775 20 0 0 1 0.866 8 6 1 0 +1575 0 1 0 27 32.909 20 0 0 1 0.866 8 6 1 0 +1576 0 1 0 27.5 33.775 20 0 0 1 0.866 8 6 1 0 +1577 0 1 0 28 32.909 20 0 0 1 0.866 8 6 1 0 +1578 0 1 0 28.5 33.775 20 0 0 1 0.866 8 6 1 0 +1579 0 1 0 29 32.909 20 0 0 1 0.866 8 6 1 0 +1580 0 1 0 29.5 33.775 20 0 0 1 0.866 8 6 1 0 +1581 0 1 0 30 32.909 20 0 0 1 0.866 8 6 1 0 +1582 0 1 0 30.5 33.775 20 0 0 1 0.866 8 6 1 0 +1583 0 1 0 31 32.909 20 0 0 1 0.866 8 6 1 0 +1584 0 1 0 31.5 33.775 20 0 0 1 0.866 8 6 1 0 +1585 0 1 0 32 32.909 20 0 0 1 0.866 8 6 1 0 +1586 0 1 0 32.5 33.775 20 0 0 1 0.866 8 6 1 0 +1587 0 1 0 33 32.909 20 0 0 1 0.866 8 6 1 0 +1588 0 1 0 33.5 33.775 20 0 0 1 0.866 8 6 1 0 +1589 0 1 0 34 32.909 20 0 0 1 0.866 8 6 1 0 +1590 0 1 0 34.5 33.775 20 0 0 1 0.866 8 6 1 0 +1591 0 1 0 35 32.909 20 0 0 1 0.866 8 6 1 0 +1592 0 1 0 35.5 33.775 20 0 0 1 0.866 8 6 1 0 +1593 0 1 0 36 32.909 20 0 0 1 0.866 8 6 1 0 +1594 0 1 0 36.5 33.775 20 0 0 1 0.866 8 6 1 0 +1595 0 1 0 37 32.909 20 0 0 1 0.866 8 6 1 0 +1596 0 1 0 37.5 33.775 20 0 0 1 0.866 8 6 1 0 +1597 0 1 0 38 32.909 20 0 0 1 0.866 8 6 1 0 +1598 0 1 0 38.5 33.775 20 0 0 1 0.866 8 6 1 0 +1599 0 1 0 39 32.909 20 0 0 1 0.866 8 6 1 0 +1600 0 1 0 39.5 33.775 20 0 0 1 0.866 8 6 1 0 +1601 0 1 0 0 34.641 20 0 0 1 0.866 8 6 1 0 +1602 0 1 0 0.5 35.507 20 0 0 1 0.866 8 6 1 0 +1603 0 1 0 1 34.641 20 0 0 1 0.866 8 6 1 0 +1604 0 1 0 1.5 35.507 20 0 0 1 0.866 8 6 1 0 +1605 0 1 0 2 34.641 20 0 0 1 0.866 8 6 1 0 +1606 0 1 0 2.5 35.507 20 0 0 1 0.866 8 6 1 0 +1607 0 1 0 3 34.641 20 0 0 1 0.866 8 6 1 0 +1608 0 1 0 3.5 35.507 20 0 0 1 0.866 8 6 1 0 +1609 0 1 0 4 34.641 20 0 0 1 0.866 8 6 1 0 +1610 0 1 0 4.5 35.507 20 0 0 1 0.866 8 6 1 0 +1611 0 1 0 5 34.641 20 0 0 1 0.866 8 6 1 0 +1612 0 1 0 5.5 35.507 20 0 0 1 0.866 8 6 1 0 +1613 0 1 0 6 34.641 20 0 0 1 0.866 8 6 1 0 +1614 0 1 0 6.5 35.507 20 0 0 1 0.866 8 6 1 0 +1615 0 1 0 7 34.641 20 0 0 1 0.866 8 6 1 0 +1616 0 1 0 7.5 35.507 20 0 0 1 0.866 8 6 1 0 +1617 0 1 0 8 34.641 20 0 0 1 0.866 8 6 1 0 +1618 0 1 0 8.5 35.507 20 0 0 1 0.866 8 6 1 0 +1619 0 1 0 9 34.641 20 0 0 1 0.866 8 6 1 0 +1620 0 1 0 9.5 35.507 20 0 0 1 0.866 8 6 1 0 +1621 0 1 0 10 34.641 20 0 0 1 0.866 8 6 1 0 +1622 0 1 0 10.5 35.507 20 0 0 1 0.866 8 6 1 0 +1623 0 1 0 11 34.641 20 0 0 1 0.866 8 6 1 0 +1624 0 1 0 11.5 35.507 20 0 0 1 0.866 8 6 1 0 +1625 0 1 0 12 34.641 20 0 0 1 0.866 8 6 1 0 +1626 0 1 0 12.5 35.507 20 0 0 1 0.866 8 6 1 0 +1627 0 1 0 13 34.641 20 0 0 1 0.866 8 6 1 0 +1628 0 1 0 13.5 35.507 20 0 0 1 0.866 8 6 1 0 +1629 0 1 0 14 34.641 20 0 0 1 0.866 8 6 1 0 +1630 0 1 0 14.5 35.507 20 0 0 1 0.866 8 6 1 0 +1631 0 1 0 15 34.641 20 0 0 1 0.866 8 6 1 0 +1632 0 1 0 15.5 35.507 20 0 0 1 0.866 8 6 1 0 +1633 0 1 0 16 34.641 20 0 0 1 0.866 8 6 1 0 +1634 0 1 0 16.5 35.507 20 0 0 1 0.866 8 6 1 0 +1635 0 1 0 17 34.641 20 0 0 1 0.866 8 6 1 0 +1636 0 1 0 17.5 35.507 20 0 0 1 0.866 8 6 1 0 +1637 0 1 0 18 34.641 20 0 0 1 0.866 8 6 1 0 +1638 0 1 0 18.5 35.507 20 0 0 1 0.866 8 6 1 0 +1639 0 1 0 19 34.641 20 0 0 1 0.866 8 6 1 0 +1640 0 1 0 19.5 35.507 20 0 0 1 0.866 8 6 1 0 +1641 0 1 0 20 34.641 20 0 0 1 0.866 8 6 1 0 +1642 0 1 0 20.5 35.507 20 0 0 1 0.866 8 6 1 0 +1643 0 1 0 21 34.641 20 0 0 1 0.866 8 6 1 0 +1644 0 1 0 21.5 35.507 20 0 0 1 0.866 8 6 1 0 +1645 0 1 0 22 34.641 20 0 0 1 0.866 8 6 1 0 +1646 0 1 0 22.5 35.507 20 0 0 1 0.866 8 6 1 0 +1647 0 1 0 23 34.641 20 0 0 1 0.866 8 6 1 0 +1648 0 1 0 23.5 35.507 20 0 0 1 0.866 8 6 1 0 +1649 0 1 0 24 34.641 20 0 0 1 0.866 8 6 1 0 +1650 0 1 0 24.5 35.507 20 0 0 1 0.866 8 6 1 0 +1651 0 1 0 25 34.641 20 0 0 1 0.866 8 6 1 0 +1652 0 1 0 25.5 35.507 20 0 0 1 0.866 8 6 1 0 +1653 0 1 0 26 34.641 20 0 0 1 0.866 8 6 1 0 +1654 0 1 0 26.5 35.507 20 0 0 1 0.866 8 6 1 0 +1655 0 1 0 27 34.641 20 0 0 1 0.866 8 6 1 0 +1656 0 1 0 27.5 35.507 20 0 0 1 0.866 8 6 1 0 +1657 0 1 0 28 34.641 20 0 0 1 0.866 8 6 1 0 +1658 0 1 0 28.5 35.507 20 0 0 1 0.866 8 6 1 0 +1659 0 1 0 29 34.641 20 0 0 1 0.866 8 6 1 0 +1660 0 1 0 29.5 35.507 20 0 0 1 0.866 8 6 1 0 +1661 0 1 0 30 34.641 20 0 0 1 0.866 8 6 1 0 +1662 0 1 0 30.5 35.507 20 0 0 1 0.866 8 6 1 0 +1663 0 1 0 31 34.641 20 0 0 1 0.866 8 6 1 0 +1664 0 1 0 31.5 35.507 20 0 0 1 0.866 8 6 1 0 +1665 0 1 0 32 34.641 20 0 0 1 0.866 8 6 1 0 +1666 0 1 0 32.5 35.507 20 0 0 1 0.866 8 6 1 0 +1667 0 1 0 33 34.641 20 0 0 1 0.866 8 6 1 0 +1668 0 1 0 33.5 35.507 20 0 0 1 0.866 8 6 1 0 +1669 0 1 0 34 34.641 20 0 0 1 0.866 8 6 1 0 +1670 0 1 0 34.5 35.507 20 0 0 1 0.866 8 6 1 0 +1671 0 1 0 35 34.641 20 0 0 1 0.866 8 6 1 0 +1672 0 1 0 35.5 35.507 20 0 0 1 0.866 8 6 1 0 +1673 0 1 0 36 34.641 20 0 0 1 0.866 8 6 1 0 +1674 0 1 0 36.5 35.507 20 0 0 1 0.866 8 6 1 0 +1675 0 1 0 37 34.641 20 0 0 1 0.866 8 6 1 0 +1676 0 1 0 37.5 35.507 20 0 0 1 0.866 8 6 1 0 +1677 0 1 0 38 34.641 20 0 0 1 0.866 8 6 1 0 +1678 0 1 0 38.5 35.507 20 0 0 1 0.866 8 6 1 0 +1679 0 1 0 39 34.641 20 0 0 1 0.866 8 6 1 0 +1680 0 1 0 39.5 35.507 20 0 0 1 0.866 8 6 1 0 +1681 0 1 0 0 36.3731 20 0 0 1 0.866 8 6 1 0 +1682 0 1 0 0.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1683 0 1 0 1 36.3731 20 0 0 1 0.866 8 6 1 0 +1684 0 1 0 1.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1685 0 1 0 2 36.3731 20 0 0 1 0.866 8 6 1 0 +1686 0 1 0 2.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1687 0 1 0 3 36.3731 20 0 0 1 0.866 8 6 1 0 +1688 0 1 0 3.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1689 0 1 0 4 36.3731 20 0 0 1 0.866 8 6 1 0 +1690 0 1 0 4.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1691 0 1 0 5 36.3731 20 0 0 1 0.866 8 6 1 0 +1692 0 1 0 5.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1693 0 1 0 6 36.3731 20 0 0 1 0.866 8 6 1 0 +1694 0 1 0 6.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1695 0 1 0 7 36.3731 20 0 0 1 0.866 8 6 1 0 +1696 0 1 0 7.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1697 0 1 0 8 36.3731 20 0 0 1 0.866 8 6 1 0 +1698 0 1 0 8.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1699 0 1 0 9 36.3731 20 0 0 1 0.866 8 6 1 0 +1700 0 1 0 9.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1701 0 1 0 10 36.3731 20 0 0 1 0.866 8 6 1 0 +1702 0 1 0 10.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1703 0 1 0 11 36.3731 20 0 0 1 0.866 8 6 1 0 +1704 0 1 0 11.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1705 0 1 0 12 36.3731 20 0 0 1 0.866 8 6 1 0 +1706 0 1 0 12.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1707 0 1 0 13 36.3731 20 0 0 1 0.866 8 6 1 0 +1708 0 1 0 13.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1709 0 1 0 14 36.3731 20 0 0 1 0.866 8 6 1 0 +1710 0 1 0 14.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1711 0 1 0 15 36.3731 20 0 0 1 0.866 8 6 1 0 +1712 0 1 0 15.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1713 0 1 0 16 36.3731 20 0 0 1 0.866 8 6 1 0 +1714 0 1 0 16.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1715 0 1 0 17 36.3731 20 0 0 1 0.866 8 6 1 0 +1716 0 1 0 17.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1717 0 1 0 18 36.3731 20 0 0 1 0.866 8 6 1 0 +1718 0 1 0 18.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1719 0 1 0 19 36.3731 20 0 0 1 0.866 8 6 1 0 +1720 0 1 0 19.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1721 0 1 0 20 36.3731 20 0 0 1 0.866 8 6 1 0 +1722 0 1 0 20.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1723 0 1 0 21 36.3731 20 0 0 1 0.866 8 6 1 0 +1724 0 1 0 21.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1725 0 1 0 22 36.3731 20 0 0 1 0.866 8 6 1 0 +1726 0 1 0 22.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1727 0 1 0 23 36.3731 20 0 0 1 0.866 8 6 1 0 +1728 0 1 0 23.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1729 0 1 0 24 36.3731 20 0 0 1 0.866 8 6 1 0 +1730 0 1 0 24.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1731 0 1 0 25 36.3731 20 0 0 1 0.866 8 6 1 0 +1732 0 1 0 25.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1733 0 1 0 26 36.3731 20 0 0 1 0.866 8 6 1 0 +1734 0 1 0 26.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1735 0 1 0 27 36.3731 20 0 0 1 0.866 8 6 1 0 +1736 0 1 0 27.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1737 0 1 0 28 36.3731 20 0 0 1 0.866 8 6 1 0 +1738 0 1 0 28.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1739 0 1 0 29 36.3731 20 0 0 1 0.866 8 6 1 0 +1740 0 1 0 29.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1741 0 1 0 30 36.3731 20 0 0 1 0.866 8 6 1 0 +1742 0 1 0 30.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1743 0 1 0 31 36.3731 20 0 0 1 0.866 8 6 1 0 +1744 0 1 0 31.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1745 0 1 0 32 36.3731 20 0 0 1 0.866 8 6 1 0 +1746 0 1 0 32.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1747 0 1 0 33 36.3731 20 0 0 1 0.866 8 6 1 0 +1748 0 1 0 33.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1749 0 1 0 34 36.3731 20 0 0 1 0.866 8 6 1 0 +1750 0 1 0 34.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1751 0 1 0 35 36.3731 20 0 0 1 0.866 8 6 1 0 +1752 0 1 0 35.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1753 0 1 0 36 36.3731 20 0 0 1 0.866 8 6 1 0 +1754 0 1 0 36.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1755 0 1 0 37 36.3731 20 0 0 1 0.866 8 6 1 0 +1756 0 1 0 37.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1757 0 1 0 38 36.3731 20 0 0 1 0.866 8 6 1 0 +1758 0 1 0 38.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1759 0 1 0 39 36.3731 20 0 0 1 0.866 8 6 1 0 +1760 0 1 0 39.5 37.2391 20 0 0 1 0.866 8 6 1 0 +1761 0 1 0 0 38.1051 20 0 0 1 0.866 8 6 1 0 +1762 0 1 0 0.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1763 0 1 0 1 38.1051 20 0 0 1 0.866 8 6 1 0 +1764 0 1 0 1.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1765 0 1 0 2 38.1051 20 0 0 1 0.866 8 6 1 0 +1766 0 1 0 2.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1767 0 1 0 3 38.1051 20 0 0 1 0.866 8 6 1 0 +1768 0 1 0 3.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1769 0 1 0 4 38.1051 20 0 0 1 0.866 8 6 1 0 +1770 0 1 0 4.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1771 0 1 0 5 38.1051 20 0 0 1 0.866 8 6 1 0 +1772 0 1 0 5.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1773 0 1 0 6 38.1051 20 0 0 1 0.866 8 6 1 0 +1774 0 1 0 6.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1775 0 1 0 7 38.1051 20 0 0 1 0.866 8 6 1 0 +1776 0 1 0 7.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1777 0 1 0 8 38.1051 20 0 0 1 0.866 8 6 1 0 +1778 0 1 0 8.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1779 0 1 0 9 38.1051 20 0 0 1 0.866 8 6 1 0 +1780 0 1 0 9.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1781 0 1 0 10 38.1051 20 0 0 1 0.866 8 6 1 0 +1782 0 1 0 10.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1783 0 1 0 11 38.1051 20 0 0 1 0.866 8 6 1 0 +1784 0 1 0 11.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1785 0 1 0 12 38.1051 20 0 0 1 0.866 8 6 1 0 +1786 0 1 0 12.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1787 0 1 0 13 38.1051 20 0 0 1 0.866 8 6 1 0 +1788 0 1 0 13.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1789 0 1 0 14 38.1051 20 0 0 1 0.866 8 6 1 0 +1790 0 1 0 14.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1791 0 1 0 15 38.1051 20 0 0 1 0.866 8 6 1 0 +1792 0 1 0 15.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1793 0 1 0 16 38.1051 20 0 0 1 0.866 8 6 1 0 +1794 0 1 0 16.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1795 0 1 0 17 38.1051 20 0 0 1 0.866 8 6 1 0 +1796 0 1 0 17.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1797 0 1 0 18 38.1051 20 0 0 1 0.866 8 6 1 0 +1798 0 1 0 18.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1799 0 1 0 19 38.1051 20 0 0 1 0.866 8 6 1 0 +1800 0 1 0 19.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1801 0 1 0 20 38.1051 20 0 0 1 0.866 8 6 1 0 +1802 0 1 0 20.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1803 0 1 0 21 38.1051 20 0 0 1 0.866 8 6 1 0 +1804 0 1 0 21.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1805 0 1 0 22 38.1051 20 0 0 1 0.866 8 6 1 0 +1806 0 1 0 22.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1807 0 1 0 23 38.1051 20 0 0 1 0.866 8 6 1 0 +1808 0 1 0 23.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1809 0 1 0 24 38.1051 20 0 0 1 0.866 8 6 1 0 +1810 0 1 0 24.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1811 0 1 0 25 38.1051 20 0 0 1 0.866 8 6 1 0 +1812 0 1 0 25.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1813 0 1 0 26 38.1051 20 0 0 1 0.866 8 6 1 0 +1814 0 1 0 26.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1815 0 1 0 27 38.1051 20 0 0 1 0.866 8 6 1 0 +1816 0 1 0 27.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1817 0 1 0 28 38.1051 20 0 0 1 0.866 8 6 1 0 +1818 0 1 0 28.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1819 0 1 0 29 38.1051 20 0 0 1 0.866 8 6 1 0 +1820 0 1 0 29.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1821 0 1 0 30 38.1051 20 0 0 1 0.866 8 6 1 0 +1822 0 1 0 30.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1823 0 1 0 31 38.1051 20 0 0 1 0.866 8 6 1 0 +1824 0 1 0 31.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1825 0 1 0 32 38.1051 20 0 0 1 0.866 8 6 1 0 +1826 0 1 0 32.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1827 0 1 0 33 38.1051 20 0 0 1 0.866 8 6 1 0 +1828 0 1 0 33.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1829 0 1 0 34 38.1051 20 0 0 1 0.866 8 6 1 0 +1830 0 1 0 34.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1831 0 1 0 35 38.1051 20 0 0 1 0.866 8 6 1 0 +1832 0 1 0 35.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1833 0 1 0 36 38.1051 20 0 0 1 0.866 8 6 1 0 +1834 0 1 0 36.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1835 0 1 0 37 38.1051 20 0 0 1 0.866 8 6 1 0 +1836 0 1 0 37.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1837 0 1 0 38 38.1051 20 0 0 1 0.866 8 6 1 0 +1838 0 1 0 38.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1839 0 1 0 39 38.1051 20 0 0 1 0.866 8 6 1 0 +1840 0 1 0 39.5 38.9711 20 0 0 1 0.866 8 6 1 0 +1841 0 1 0 0 39.8372 20 0 0 1 0.866 8 6 1 0 +1842 0 1 0 0.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1843 0 1 0 1 39.8372 20 0 0 1 0.866 8 6 1 0 +1844 0 1 0 1.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1845 0 1 0 2 39.8372 20 0 0 1 0.866 8 6 1 0 +1846 0 1 0 2.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1847 0 1 0 3 39.8372 20 0 0 1 0.866 8 6 1 0 +1848 0 1 0 3.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1849 0 1 0 4 39.8372 20 0 0 1 0.866 8 6 1 0 +1850 0 1 0 4.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1851 0 1 0 5 39.8372 20 0 0 1 0.866 8 6 1 0 +1852 0 1 0 5.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1853 0 1 0 6 39.8372 20 0 0 1 0.866 8 6 1 0 +1854 0 1 0 6.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1855 0 1 0 7 39.8372 20 0 0 1 0.866 8 6 1 0 +1856 0 1 0 7.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1857 0 1 0 8 39.8372 20 0 0 1 0.866 8 6 1 0 +1858 0 1 0 8.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1859 0 1 0 9 39.8372 20 0 0 1 0.866 8 6 1 0 +1860 0 1 0 9.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1861 0 1 0 10 39.8372 20 0 0 1 0.866 8 6 1 0 +1862 0 1 0 10.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1863 0 1 0 11 39.8372 20 0 0 1 0.866 8 6 1 0 +1864 0 1 0 11.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1865 0 1 0 12 39.8372 20 0 0 1 0.866 8 6 1 0 +1866 0 1 0 12.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1867 0 1 0 13 39.8372 20 0 0 1 0.866 8 6 1 0 +1868 0 1 0 13.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1869 0 1 0 14 39.8372 20 0 0 1 0.866 8 6 1 0 +1870 0 1 0 14.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1871 0 1 0 15 39.8372 20 0 0 1 0.866 8 6 1 0 +1872 0 1 0 15.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1873 0 1 0 16 39.8372 20 0 0 1 0.866 8 6 1 0 +1874 0 1 0 16.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1875 0 1 0 17 39.8372 20 0 0 1 0.866 8 6 1 0 +1876 0 1 0 17.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1877 0 1 0 18 39.8372 20 0 0 1 0.866 8 6 1 0 +1878 0 1 0 18.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1879 0 1 0 19 39.8372 20 0 0 1 0.866 8 6 1 0 +1880 0 1 0 19.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1881 0 1 0 20 39.8372 20 0 0 1 0.866 8 6 1 0 +1882 0 1 0 20.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1883 0 1 0 21 39.8372 20 0 0 1 0.866 8 6 1 0 +1884 0 1 0 21.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1885 0 1 0 22 39.8372 20 0 0 1 0.866 8 6 1 0 +1886 0 1 0 22.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1887 0 1 0 23 39.8372 20 0 0 1 0.866 8 6 1 0 +1888 0 1 0 23.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1889 0 1 0 24 39.8372 20 0 0 1 0.866 8 6 1 0 +1890 0 1 0 24.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1891 0 1 0 25 39.8372 20 0 0 1 0.866 8 6 1 0 +1892 0 1 0 25.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1893 0 1 0 26 39.8372 20 0 0 1 0.866 8 6 1 0 +1894 0 1 0 26.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1895 0 1 0 27 39.8372 20 0 0 1 0.866 8 6 1 0 +1896 0 1 0 27.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1897 0 1 0 28 39.8372 20 0 0 1 0.866 8 6 1 0 +1898 0 1 0 28.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1899 0 1 0 29 39.8372 20 0 0 1 0.866 8 6 1 0 +1900 0 1 0 29.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1901 0 1 0 30 39.8372 20 0 0 1 0.866 8 6 1 0 +1902 0 1 0 30.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1903 0 1 0 31 39.8372 20 0 0 1 0.866 8 6 1 0 +1904 0 1 0 31.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1905 0 1 0 32 39.8372 20 0 0 1 0.866 8 6 1 0 +1906 0 1 0 32.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1907 0 1 0 33 39.8372 20 0 0 1 0.866 8 6 1 0 +1908 0 1 0 33.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1909 0 1 0 34 39.8372 20 0 0 1 0.866 8 6 1 0 +1910 0 1 0 34.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1911 0 1 0 35 39.8372 20 0 0 1 0.866 8 6 1 0 +1912 0 1 0 35.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1913 0 1 0 36 39.8372 20 0 0 1 0.866 8 6 1 0 +1914 0 1 0 36.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1915 0 1 0 37 39.8372 20 0 0 1 0.866 8 6 1 0 +1916 0 1 0 37.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1917 0 1 0 38 39.8372 20 0 0 1 0.866 8 6 1 0 +1918 0 1 0 38.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1919 0 1 0 39 39.8372 20 0 0 1 0.866 8 6 1 0 +1920 0 1 0 39.5 40.7032 20 0 0 1 0.866 8 6 1 0 +1921 0 1 0 0 41.5692 20 0 0 1 0.866 8 6 1 0 +1922 0 1 0 0.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1923 0 1 0 1 41.5692 20 0 0 1 0.866 8 6 1 0 +1924 0 1 0 1.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1925 0 1 0 2 41.5692 20 0 0 1 0.866 8 6 1 0 +1926 0 1 0 2.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1927 0 1 0 3 41.5692 20 0 0 1 0.866 8 6 1 0 +1928 0 1 0 3.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1929 0 1 0 4 41.5692 20 0 0 1 0.866 8 6 1 0 +1930 0 1 0 4.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1931 0 1 0 5 41.5692 20 0 0 1 0.866 8 6 1 0 +1932 0 1 0 5.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1933 0 1 0 6 41.5692 20 0 0 1 0.866 8 6 1 0 +1934 0 1 0 6.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1935 0 1 0 7 41.5692 20 0 0 1 0.866 8 6 1 0 +1936 0 1 0 7.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1937 0 1 0 8 41.5692 20 0 0 1 0.866 8 6 1 0 +1938 0 1 0 8.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1939 0 1 0 9 41.5692 20 0 0 1 0.866 8 6 1 0 +1940 0 1 0 9.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1941 0 1 0 10 41.5692 20 0 0 1 0.866 8 6 1 0 +1942 0 1 0 10.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1943 0 1 0 11 41.5692 20 0 0 1 0.866 8 6 1 0 +1944 0 1 0 11.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1945 0 1 0 12 41.5692 20 0 0 1 0.866 8 6 1 0 +1946 0 1 0 12.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1947 0 1 0 13 41.5692 20 0 0 1 0.866 8 6 1 0 +1948 0 1 0 13.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1949 0 1 0 14 41.5692 20 0 0 1 0.866 8 6 1 0 +1950 0 1 0 14.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1951 0 1 0 15 41.5692 20 0 0 1 0.866 8 6 1 0 +1952 0 1 0 15.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1953 0 1 0 16 41.5692 20 0 0 1 0.866 8 6 1 0 +1954 0 1 0 16.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1955 0 1 0 17 41.5692 20 0 0 1 0.866 8 6 1 0 +1956 0 1 0 17.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1957 0 1 0 18 41.5692 20 0 0 1 0.866 8 6 1 0 +1958 0 1 0 18.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1959 0 1 0 19 41.5692 20 0 0 1 0.866 8 6 1 0 +1960 0 1 0 19.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1961 0 1 0 20 41.5692 20 0 0 1 0.866 8 6 1 0 +1962 0 1 0 20.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1963 0 1 0 21 41.5692 20 0 0 1 0.866 8 6 1 0 +1964 0 1 0 21.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1965 0 1 0 22 41.5692 20 0 0 1 0.866 8 6 1 0 +1966 0 1 0 22.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1967 0 1 0 23 41.5692 20 0 0 1 0.866 8 6 1 0 +1968 0 1 0 23.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1969 0 1 0 24 41.5692 20 0 0 1 0.866 8 6 1 0 +1970 0 1 0 24.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1971 0 1 0 25 41.5692 20 0 0 1 0.866 8 6 1 0 +1972 0 1 0 25.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1973 0 1 0 26 41.5692 20 0 0 1 0.866 8 6 1 0 +1974 0 1 0 26.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1975 0 1 0 27 41.5692 20 0 0 1 0.866 8 6 1 0 +1976 0 1 0 27.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1977 0 1 0 28 41.5692 20 0 0 1 0.866 8 6 1 0 +1978 0 1 0 28.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1979 0 1 0 29 41.5692 20 0 0 1 0.866 8 6 1 0 +1980 0 1 0 29.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1981 0 1 0 30 41.5692 20 0 0 1 0.866 8 6 1 0 +1982 0 1 0 30.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1983 0 1 0 31 41.5692 20 0 0 1 0.866 8 6 1 0 +1984 0 1 0 31.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1985 0 1 0 32 41.5692 20 0 0 1 0.866 8 6 1 0 +1986 0 1 0 32.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1987 0 1 0 33 41.5692 20 0 0 1 0.866 8 6 1 0 +1988 0 1 0 33.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1989 0 1 0 34 41.5692 20 0 0 1 0.866 8 6 1 0 +1990 0 1 0 34.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1991 0 1 0 35 41.5692 20 0 0 1 0.866 8 6 1 0 +1992 0 1 0 35.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1993 0 1 0 36 41.5692 20 0 0 1 0.866 8 6 1 0 +1994 0 1 0 36.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1995 0 1 0 37 41.5692 20 0 0 1 0.866 8 6 1 0 +1996 0 1 0 37.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1997 0 1 0 38 41.5692 20 0 0 1 0.866 8 6 1 0 +1998 0 1 0 38.5 42.4353 20 0 0 1 0.866 8 6 1 0 +1999 0 1 0 39 41.5692 20 0 0 1 0.866 8 6 1 0 +2000 0 1 0 39.5 42.4353 20 0 0 1 0.866 8 6 1 0 +2001 0 2 1 20 20 22 0 0 1 0.866 8 6 10 0 +2002 0 3 -1 25 20 22 0 0 1 0.866 8 6 10 0 diff --git a/examples/USER/dielectric/data.sphere b/examples/USER/dielectric/data.sphere new file mode 100644 index 0000000000..152d5ff41a --- /dev/null +++ b/examples/USER/dielectric/data.sphere @@ -0,0 +1,2582 @@ +LAMMPS data file: 2563 atoms for a single point charge near a dielectric sphere, 2564 for two opposite charges + +2563 atoms +3 atom types + +0.000000 100.000000 xlo xhi +0.000000 100.000000 ylo yhi +0.000000 100.000000 zlo zhi + + +Masses + +1 1 +2 1 +3 1 + +Atoms # dielectric: id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature + +1 1 1 0 50 55.2573 41.4935 0 0.525731 -0.850651 0.490491 45 57.5 1 0 +2 1 1 0 50.4064 55.7206 41.8079 0.0406403 0.572055 -0.819208 0.490491 45 57.5 1 0 +3 1 1 0 49.5936 55.7206 41.8079 -0.0406403 0.572055 -0.819208 0.490491 45 57.5 1 0 +4 1 1 0 50.8109 56.1564 42.1616 0.081086 0.615642 -0.783843 0.490491 45 57.5 1 0 +5 1 1 0 50 56.1768 42.1357 0 0.617676 -0.786433 0.490491 45 57.5 1 0 +6 1 1 0 49.1891 56.1564 42.1616 -0.081086 0.615642 -0.783843 0.490491 45 57.5 1 0 +7 1 1 0 51.2114 56.5628 42.5527 0.121144 0.656282 -0.744727 0.490491 45 57.5 1 0 +8 1 1 0 50.4064 56.6088 42.5061 0.0406418 0.660883 -0.749387 0.490491 45 57.5 1 0 +9 1 1 0 51.6062 56.9378 42.9795 0.160622 0.69378 -0.702047 0.490491 45 57.5 1 0 +10 1 1 0 50.8057 57.0062 42.9103 0.0805729 0.700622 -0.708969 0.490491 45 57.5 1 0 +11 1 1 0 50 57.0291 42.8872 0 0.702907 -0.711282 0.490491 45 57.5 1 0 +12 1 1 0 49.5936 56.6088 42.5061 -0.0406418 0.660883 -0.749387 0.490491 45 57.5 1 0 +13 1 1 0 48.7886 56.5628 42.5527 -0.121144 0.656282 -0.744727 0.490491 45 57.5 1 0 +14 1 1 0 49.1943 57.0062 42.9103 -0.0805729 0.700622 -0.708969 0.490491 45 57.5 1 0 +15 1 1 0 48.3938 56.9378 42.9795 -0.160622 0.69378 -0.702047 0.490491 45 57.5 1 0 +16 1 1 0 51.9933 57.2796 43.4399 0.199331 0.727959 -0.656006 0.490491 45 57.5 1 0 +17 1 1 0 51.2119 57.3889 43.3716 0.121192 0.738887 -0.662842 0.490491 45 57.5 1 0 +18 1 1 0 52.3709 57.5865 43.9317 0.237086 0.758652 -0.606825 0.490491 45 57.5 1 0 +19 1 1 0 51.5961 57.7184 43.8454 0.159613 0.771841 -0.615456 0.490491 45 57.5 1 0 +20 1 1 0 50.8114 57.802 43.7976 0.0811417 0.780205 -0.620239 0.490491 45 57.5 1 0 +21 1 1 0 52.7371 57.8572 44.4526 0.273706 0.785715 -0.55474 0.490491 45 57.5 1 0 +22 1 1 0 51.9727 58.015 44.3549 0.197274 0.801504 -0.564513 0.490491 45 57.5 1 0 +23 1 1 0 53.0902 58.0902 45 0.309017 0.809017 -0.5 0.490491 45 57.5 1 0 +24 1 1 0 52.3345 58.2715 44.888 0.233445 0.827147 -0.511205 0.490491 45 57.5 1 0 +25 1 1 0 51.5643 58.4018 44.8074 0.156434 0.840178 -0.519259 0.490491 45 57.5 1 0 +26 1 1 0 51.1908 58.1217 44.2886 0.119078 0.81217 -0.57114 0.490491 45 57.5 1 0 +27 1 1 0 50.4067 58.1752 44.2554 0.040675 0.817523 -0.574458 0.490491 45 57.5 1 0 +28 1 1 0 50.7846 58.4803 44.7589 0.0784592 0.848029 -0.52411 0.490491 45 57.5 1 0 +29 1 1 0 50 58.5065 44.7427 0 0.850651 -0.525731 0.490491 45 57.5 1 0 +30 1 1 0 48.7881 57.3889 43.3716 -0.121192 0.738887 -0.662842 0.490491 45 57.5 1 0 +31 1 1 0 48.0067 57.2796 43.4399 -0.199331 0.727959 -0.656006 0.490491 45 57.5 1 0 +32 1 1 0 49.1886 57.802 43.7976 -0.0811417 0.780205 -0.620239 0.490491 45 57.5 1 0 +33 1 1 0 48.4039 57.7184 43.8454 -0.159613 0.771841 -0.615456 0.490491 45 57.5 1 0 +34 1 1 0 47.6291 57.5865 43.9317 -0.237086 0.758652 -0.606825 0.490491 45 57.5 1 0 +35 1 1 0 49.5933 58.1752 44.2554 -0.040675 0.817523 -0.574458 0.490491 45 57.5 1 0 +36 1 1 0 48.8092 58.1217 44.2886 -0.119078 0.81217 -0.57114 0.490491 45 57.5 1 0 +37 1 1 0 49.2154 58.4803 44.7589 -0.0784592 0.848029 -0.52411 0.490491 45 57.5 1 0 +38 1 1 0 48.4357 58.4018 44.8074 -0.156434 0.840178 -0.519259 0.490491 45 57.5 1 0 +39 1 1 0 48.0273 58.015 44.3549 -0.197274 0.801504 -0.564513 0.490491 45 57.5 1 0 +40 1 1 0 47.2629 57.8572 44.4526 -0.273706 0.785715 -0.55474 0.490491 45 57.5 1 0 +41 1 1 0 47.6655 58.2715 44.888 -0.233445 0.827147 -0.511205 0.490491 45 57.5 1 0 +42 1 1 0 46.9098 58.0902 45 -0.309017 0.809017 -0.5 0.490491 45 57.5 1 0 +43 1 1 0 50.4068 57.435 43.325 0.0406769 0.743496 -0.667502 0.490491 45 57.5 1 0 +44 1 1 0 50 57.8279 43.7771 0 0.782786 -0.622291 0.490491 45 57.5 1 0 +45 1 1 0 49.5932 57.435 43.325 -0.0406769 0.743496 -0.667502 0.490491 45 57.5 1 0 +46 1 1 0 53.4285 58.2845 45.5713 0.342848 0.828447 -0.442867 0.490491 45 57.5 1 0 +47 1 1 0 52.7469 58.5264 45.5554 0.274694 0.85264 -0.444464 0.490491 45 57.5 1 0 +48 1 1 0 53.7504 58.4391 46.1639 0.375038 0.843912 -0.383614 0.490491 45 57.5 1 0 +49 1 1 0 53.0766 58.6973 46.1409 0.307659 0.869725 -0.385906 0.490491 45 57.5 1 0 +50 1 1 0 52.3868 58.9101 46.1381 0.238677 0.891007 -0.386187 0.490491 45 57.5 1 0 +51 1 1 0 54.0543 58.5534 46.7748 0.405434 0.855337 -0.322525 0.490491 45 57.5 1 0 +52 1 1 0 53.3921 58.8284 46.7514 0.339209 0.882837 -0.324863 0.490491 45 57.5 1 0 +53 1 1 0 54.3389 58.6267 47.4011 0.433888 0.862669 -0.259892 0.490491 45 57.5 1 0 +54 1 1 0 53.6852 58.9174 47.3734 0.368518 0.891742 -0.262661 0.490491 45 57.5 1 0 +55 1 1 0 53.0126 59.1624 47.3592 0.301258 0.916244 -0.264082 0.490491 45 57.5 1 0 +56 1 1 0 52.7063 59.0583 46.7407 0.270627 0.905832 -0.325929 0.490491 45 57.5 1 0 +57 1 1 0 52.0119 59.2388 46.7447 0.201189 0.92388 -0.32553 0.490491 45 57.5 1 0 +58 1 1 0 52.3245 59.3605 47.3585 0.232455 0.93605 -0.264151 0.490491 45 57.5 1 0 +59 1 1 0 51.6246 59.5106 47.3713 0.16246 0.951057 -0.262865 0.490491 45 57.5 1 0 +60 1 1 0 54.6027 58.6587 48.0398 0.460266 0.865871 -0.196015 0.490491 45 57.5 1 0 +61 1 1 0 53.9735 58.964 48.0359 0.39735 0.896401 -0.196412 0.490491 45 57.5 1 0 +62 1 1 0 54.8444 58.6493 48.688 0.484441 0.864929 -0.1312 0.490491 45 57.5 1 0 +63 1 1 0 54.2236 58.968 48.6825 0.422363 0.896801 -0.131749 0.490491 45 57.5 1 0 +64 1 1 0 53.5823 59.243 48.6834 0.358229 0.924305 -0.131656 0.490491 45 57.5 1 0 +65 1 1 0 55.063 58.5985 49.3424 0.506298 0.859848 -0.0657577 0.490491 45 57.5 1 0 +66 1 1 0 54.4537 58.9293 49.3418 0.445365 0.892927 -0.0658169 0.490491 45 57.5 1 0 +67 1 1 0 55.2573 58.5065 50 0.525731 0.850651 0 0.490491 45 57.5 1 0 +68 1 1 0 54.6566 58.8497 50 0.465657 0.884965 0 0.490491 45 57.5 1 0 +69 1 1 0 54.0336 59.1504 50 0.403355 0.915043 0 0.490491 45 57.5 1 0 +70 1 1 0 53.8172 59.2192 49.3401 0.381722 0.921919 -0.0659886 0.490491 45 57.5 1 0 +71 1 1 0 53.1678 59.462 49.3396 0.316778 0.946198 -0.0660427 0.490491 45 57.5 1 0 +72 1 1 0 53.3912 59.4074 50 0.339122 0.940742 0 0.490491 45 57.5 1 0 +73 1 1 0 52.7327 59.6194 50 0.273267 0.961938 0 0.490491 45 57.5 1 0 +74 1 1 0 51.9178 59.6119 48.0166 0.19178 0.961188 -0.198337 0.490491 45 57.5 1 0 +75 1 1 0 51.2273 59.7237 48.0142 0.122729 0.97237 -0.198581 0.490491 45 57.5 1 0 +76 1 1 0 52.2012 59.6639 48.6721 0.220117 0.966393 -0.132792 0.490491 45 57.5 1 0 +77 1 1 0 51.5155 59.7943 48.6674 0.151549 0.979426 -0.133256 0.490491 45 57.5 1 0 +78 1 1 0 50.8224 59.8769 48.6693 0.0822422 0.987688 -0.133071 0.490491 45 57.5 1 0 +79 1 1 0 52.4733 59.6664 49.3343 0.247326 0.966643 -0.0665668 0.490491 45 57.5 1 0 +80 1 1 0 51.796 59.8148 49.334 0.179596 0.981483 -0.0666046 0.490491 45 57.5 1 0 +81 1 1 0 52.061 59.7853 50 0.206103 0.97853 0 0.490491 45 57.5 1 0 +82 1 1 0 51.3795 59.9044 50 0.137952 0.990439 0 0.490491 45 57.5 1 0 +83 1 1 0 51.1039 59.9165 49.3329 0.110385 0.991648 -0.0667095 0.490491 45 57.5 1 0 +84 1 1 0 50.4125 59.9692 49.3326 0.0412479 0.996917 -0.0667412 0.490491 45 57.5 1 0 +85 1 1 0 50.6914 59.9761 50 0.0691418 0.997607 0 0.490491 45 57.5 1 0 +86 1 1 0 50 60 50 0 1 0 0.490491 45 57.5 1 0 +87 1 1 0 53.3061 59.2268 48.0161 0.330606 0.922682 -0.198387 0.490491 45 57.5 1 0 +88 1 1 0 52.8993 59.4782 48.6743 0.289929 0.947822 -0.13257 0.490491 45 57.5 1 0 +89 1 1 0 52.6155 59.4443 48.0091 0.26155 0.944433 -0.199094 0.490491 45 57.5 1 0 +90 1 1 0 47.2531 58.5264 45.5554 -0.274694 0.85264 -0.444464 0.490491 45 57.5 1 0 +91 1 1 0 46.5715 58.2845 45.5713 -0.342848 0.828447 -0.442867 0.490491 45 57.5 1 0 +92 1 1 0 47.6132 58.9101 46.1381 -0.238677 0.891007 -0.386187 0.490491 45 57.5 1 0 +93 1 1 0 46.9234 58.6973 46.1409 -0.307659 0.869725 -0.385906 0.490491 45 57.5 1 0 +94 1 1 0 46.2496 58.4391 46.1639 -0.375038 0.843912 -0.383614 0.490491 45 57.5 1 0 +95 1 1 0 47.9881 59.2388 46.7447 -0.201189 0.92388 -0.32553 0.490491 45 57.5 1 0 +96 1 1 0 47.2937 59.0583 46.7407 -0.270627 0.905832 -0.325929 0.490491 45 57.5 1 0 +97 1 1 0 48.3754 59.5106 47.3713 -0.16246 0.951057 -0.262865 0.490491 45 57.5 1 0 +98 1 1 0 47.6755 59.3605 47.3585 -0.232455 0.93605 -0.264151 0.490491 45 57.5 1 0 +99 1 1 0 46.9874 59.1624 47.3592 -0.301258 0.916244 -0.264082 0.490491 45 57.5 1 0 +100 1 1 0 46.6079 58.8284 46.7514 -0.339209 0.882837 -0.324863 0.490491 45 57.5 1 0 +101 1 1 0 45.9457 58.5534 46.7748 -0.405434 0.855337 -0.322525 0.490491 45 57.5 1 0 +102 1 1 0 46.3148 58.9174 47.3734 -0.368518 0.891742 -0.262661 0.490491 45 57.5 1 0 +103 1 1 0 45.6611 58.6267 47.4011 -0.433888 0.862669 -0.259892 0.490491 45 57.5 1 0 +104 1 1 0 48.7727 59.7237 48.0142 -0.122729 0.97237 -0.198581 0.490491 45 57.5 1 0 +105 1 1 0 48.0822 59.6119 48.0166 -0.19178 0.961188 -0.198337 0.490491 45 57.5 1 0 +106 1 1 0 49.1776 59.8769 48.6693 -0.0822422 0.987688 -0.133071 0.490491 45 57.5 1 0 +107 1 1 0 48.4845 59.7943 48.6674 -0.151549 0.979426 -0.133256 0.490491 45 57.5 1 0 +108 1 1 0 47.7988 59.6639 48.6721 -0.220117 0.966393 -0.132792 0.490491 45 57.5 1 0 +109 1 1 0 49.5875 59.9692 49.3326 -0.0412479 0.996917 -0.0667412 0.490491 45 57.5 1 0 +110 1 1 0 48.8961 59.9165 49.3329 -0.110385 0.991648 -0.0667095 0.490491 45 57.5 1 0 +111 1 1 0 49.3086 59.9761 50 -0.0691418 0.997607 0 0.490491 45 57.5 1 0 +112 1 1 0 48.6205 59.9044 50 -0.137952 0.990439 0 0.490491 45 57.5 1 0 +113 1 1 0 48.204 59.8148 49.334 -0.179596 0.981483 -0.0666046 0.490491 45 57.5 1 0 +114 1 1 0 47.5267 59.6664 49.3343 -0.247326 0.966643 -0.0665668 0.490491 45 57.5 1 0 +115 1 1 0 47.939 59.7853 50 -0.206103 0.97853 0 0.490491 45 57.5 1 0 +116 1 1 0 47.2673 59.6194 50 -0.273267 0.961938 0 0.490491 45 57.5 1 0 +117 1 1 0 46.0265 58.964 48.0359 -0.39735 0.896401 -0.196412 0.490491 45 57.5 1 0 +118 1 1 0 45.3973 58.6587 48.0398 -0.460266 0.865871 -0.196015 0.490491 45 57.5 1 0 +119 1 1 0 46.4177 59.243 48.6834 -0.358229 0.924305 -0.131656 0.490491 45 57.5 1 0 +120 1 1 0 45.7764 58.968 48.6825 -0.422363 0.896801 -0.131749 0.490491 45 57.5 1 0 +121 1 1 0 45.1556 58.6493 48.688 -0.484441 0.864929 -0.1312 0.490491 45 57.5 1 0 +122 1 1 0 46.8322 59.462 49.3396 -0.316778 0.946198 -0.0660427 0.490491 45 57.5 1 0 +123 1 1 0 46.1828 59.2192 49.3401 -0.381722 0.921919 -0.0659886 0.490491 45 57.5 1 0 +124 1 1 0 46.6088 59.4074 50 -0.339122 0.940742 0 0.490491 45 57.5 1 0 +125 1 1 0 45.9664 59.1504 50 -0.403355 0.915043 0 0.490491 45 57.5 1 0 +126 1 1 0 45.5463 58.9293 49.3418 -0.445365 0.892927 -0.0658169 0.490491 45 57.5 1 0 +127 1 1 0 44.937 58.5985 49.3424 -0.506298 0.859848 -0.0657577 0.490491 45 57.5 1 0 +128 1 1 0 45.3434 58.8497 50 -0.465657 0.884965 0 0.490491 45 57.5 1 0 +129 1 1 0 44.7427 58.5065 50 -0.525731 0.850651 0 0.490491 45 57.5 1 0 +130 1 1 0 47.3845 59.4443 48.0091 -0.26155 0.944433 -0.199094 0.490491 45 57.5 1 0 +131 1 1 0 47.1007 59.4782 48.6743 -0.289929 0.947822 -0.13257 0.490491 45 57.5 1 0 +132 1 1 0 46.6939 59.2268 48.0161 -0.330606 0.922682 -0.198387 0.490491 45 57.5 1 0 +133 1 1 0 51.9823 58.6853 45.4574 0.198227 0.868535 -0.454262 0.490491 45 57.5 1 0 +134 1 1 0 51.6101 59.0484 46.0586 0.161007 0.904839 -0.394136 0.490491 45 57.5 1 0 +135 1 1 0 51.228 59.3513 46.6766 0.1228 0.93513 -0.332342 0.490491 45 57.5 1 0 +136 1 1 0 50.8232 59.1298 46.0039 0.0823235 0.912983 -0.399607 0.490491 45 57.5 1 0 +137 1 1 0 51.1976 58.7934 45.3912 0.119755 0.879344 -0.460882 0.490491 45 57.5 1 0 +138 1 1 0 50.413 58.8476 45.3579 0.0412991 0.88476 -0.464213 0.490491 45 57.5 1 0 +139 1 1 0 50.815 59.6065 47.3448 0.081501 0.960655 -0.265519 0.490491 45 57.5 1 0 +140 1 1 0 50.4125 59.7885 47.9963 0.0412506 0.978852 -0.200368 0.490491 45 57.5 1 0 +141 1 1 0 50 59.6386 47.336 0 0.963861 -0.266405 0.490491 45 57.5 1 0 +142 1 1 0 50 59.9105 48.6648 0 0.991046 -0.133524 0.490491 45 57.5 1 0 +143 1 1 0 49.5875 59.7885 47.9963 -0.0412506 0.978852 -0.200368 0.490491 45 57.5 1 0 +144 1 1 0 49.185 59.6065 47.3448 -0.081501 0.960655 -0.265519 0.490491 45 57.5 1 0 +145 1 1 0 49.587 58.8476 45.3579 -0.0412991 0.88476 -0.464213 0.490491 45 57.5 1 0 +146 1 1 0 49.1768 59.1298 46.0039 -0.0823235 0.912983 -0.399607 0.490491 45 57.5 1 0 +147 1 1 0 48.8024 58.7934 45.3912 -0.119755 0.879344 -0.460882 0.490491 45 57.5 1 0 +148 1 1 0 48.772 59.3513 46.6766 -0.1228 0.93513 -0.332342 0.490491 45 57.5 1 0 +149 1 1 0 48.3899 59.0484 46.0586 -0.161007 0.904839 -0.394136 0.490491 45 57.5 1 0 +150 1 1 0 48.0177 58.6853 45.4574 -0.198227 0.868535 -0.454262 0.490491 45 57.5 1 0 +151 1 1 0 50.413 59.4162 46.6586 0.0413021 0.941618 -0.33414 0.490491 45 57.5 1 0 +152 1 1 0 49.587 59.4162 46.6586 -0.0413021 0.941618 -0.33414 0.490491 45 57.5 1 0 +153 1 1 0 50 59.1609 45.9903 0 0.916092 -0.400968 0.490491 45 57.5 1 0 +154 1 1 0 50 55.2573 58.5065 0 0.525731 0.850651 0.490491 45 57.5 1 0 +155 1 1 0 49.5936 55.7206 58.1921 -0.0406403 0.572055 0.819208 0.490491 45 57.5 1 0 +156 1 1 0 50.4064 55.7206 58.1921 0.0406403 0.572055 0.819208 0.490491 45 57.5 1 0 +157 1 1 0 49.1891 56.1564 57.8384 -0.081086 0.615642 0.783843 0.490491 45 57.5 1 0 +158 1 1 0 50 56.1768 57.8643 0 0.617676 0.786433 0.490491 45 57.5 1 0 +159 1 1 0 50.8109 56.1564 57.8384 0.081086 0.615642 0.783843 0.490491 45 57.5 1 0 +160 1 1 0 48.7886 56.5628 57.4473 -0.121144 0.656282 0.744727 0.490491 45 57.5 1 0 +161 1 1 0 49.5936 56.6088 57.4939 -0.0406418 0.660883 0.749387 0.490491 45 57.5 1 0 +162 1 1 0 48.3938 56.9378 57.0205 -0.160622 0.69378 0.702047 0.490491 45 57.5 1 0 +163 1 1 0 49.1943 57.0062 57.0897 -0.0805729 0.700622 0.708969 0.490491 45 57.5 1 0 +164 1 1 0 50 57.0291 57.1128 0 0.702907 0.711282 0.490491 45 57.5 1 0 +165 1 1 0 50.4064 56.6088 57.4939 0.0406418 0.660883 0.749387 0.490491 45 57.5 1 0 +166 1 1 0 51.2114 56.5628 57.4473 0.121144 0.656282 0.744727 0.490491 45 57.5 1 0 +167 1 1 0 50.8057 57.0062 57.0897 0.0805729 0.700622 0.708969 0.490491 45 57.5 1 0 +168 1 1 0 51.6062 56.9378 57.0205 0.160622 0.69378 0.702047 0.490491 45 57.5 1 0 +169 1 1 0 48.0067 57.2796 56.5601 -0.199331 0.727959 0.656006 0.490491 45 57.5 1 0 +170 1 1 0 48.7881 57.3889 56.6284 -0.121192 0.738887 0.662842 0.490491 45 57.5 1 0 +171 1 1 0 47.6291 57.5865 56.0683 -0.237086 0.758652 0.606825 0.490491 45 57.5 1 0 +172 1 1 0 48.4039 57.7184 56.1546 -0.159613 0.771841 0.615456 0.490491 45 57.5 1 0 +173 1 1 0 49.1886 57.802 56.2024 -0.0811417 0.780205 0.620239 0.490491 45 57.5 1 0 +174 1 1 0 47.2629 57.8572 55.5474 -0.273706 0.785715 0.55474 0.490491 45 57.5 1 0 +175 1 1 0 48.0273 58.015 55.6451 -0.197274 0.801504 0.564513 0.490491 45 57.5 1 0 +176 1 1 0 46.9098 58.0902 55 -0.309017 0.809017 0.5 0.490491 45 57.5 1 0 +177 1 1 0 47.6655 58.2715 55.112 -0.233445 0.827147 0.511205 0.490491 45 57.5 1 0 +178 1 1 0 48.4357 58.4018 55.1926 -0.156434 0.840178 0.519259 0.490491 45 57.5 1 0 +179 1 1 0 48.8092 58.1217 55.7114 -0.119078 0.81217 0.57114 0.490491 45 57.5 1 0 +180 1 1 0 49.5933 58.1752 55.7446 -0.040675 0.817523 0.574458 0.490491 45 57.5 1 0 +181 1 1 0 49.2154 58.4803 55.2411 -0.0784592 0.848029 0.52411 0.490491 45 57.5 1 0 +182 1 1 0 50 58.5065 55.2573 0 0.850651 0.525731 0.490491 45 57.5 1 0 +183 1 1 0 51.2119 57.3889 56.6284 0.121192 0.738887 0.662842 0.490491 45 57.5 1 0 +184 1 1 0 51.9933 57.2796 56.5601 0.199331 0.727959 0.656006 0.490491 45 57.5 1 0 +185 1 1 0 50.8114 57.802 56.2024 0.0811417 0.780205 0.620239 0.490491 45 57.5 1 0 +186 1 1 0 51.5961 57.7184 56.1546 0.159613 0.771841 0.615456 0.490491 45 57.5 1 0 +187 1 1 0 52.3709 57.5865 56.0683 0.237086 0.758652 0.606825 0.490491 45 57.5 1 0 +188 1 1 0 50.4067 58.1752 55.7446 0.040675 0.817523 0.574458 0.490491 45 57.5 1 0 +189 1 1 0 51.1908 58.1217 55.7114 0.119078 0.81217 0.57114 0.490491 45 57.5 1 0 +190 1 1 0 50.7846 58.4803 55.2411 0.0784592 0.848029 0.52411 0.490491 45 57.5 1 0 +191 1 1 0 51.5643 58.4018 55.1926 0.156434 0.840178 0.519259 0.490491 45 57.5 1 0 +192 1 1 0 51.9727 58.015 55.6451 0.197274 0.801504 0.564513 0.490491 45 57.5 1 0 +193 1 1 0 52.7371 57.8572 55.5474 0.273706 0.785715 0.55474 0.490491 45 57.5 1 0 +194 1 1 0 52.3345 58.2715 55.112 0.233445 0.827147 0.511205 0.490491 45 57.5 1 0 +195 1 1 0 53.0902 58.0902 55 0.309017 0.809017 0.5 0.490491 45 57.5 1 0 +196 1 1 0 49.5932 57.435 56.675 -0.0406769 0.743496 0.667502 0.490491 45 57.5 1 0 +197 1 1 0 50 57.8279 56.2229 0 0.782786 0.622291 0.490491 45 57.5 1 0 +198 1 1 0 50.4068 57.435 56.675 0.0406769 0.743496 0.667502 0.490491 45 57.5 1 0 +199 1 1 0 46.5715 58.2845 54.4287 -0.342848 0.828447 0.442867 0.490491 45 57.5 1 0 +200 1 1 0 47.2531 58.5264 54.4446 -0.274694 0.85264 0.444464 0.490491 45 57.5 1 0 +201 1 1 0 46.2496 58.4391 53.8361 -0.375038 0.843912 0.383614 0.490491 45 57.5 1 0 +202 1 1 0 46.9234 58.6973 53.8591 -0.307659 0.869725 0.385906 0.490491 45 57.5 1 0 +203 1 1 0 47.6132 58.9101 53.8619 -0.238677 0.891007 0.386187 0.490491 45 57.5 1 0 +204 1 1 0 45.9457 58.5534 53.2252 -0.405434 0.855337 0.322525 0.490491 45 57.5 1 0 +205 1 1 0 46.6079 58.8284 53.2486 -0.339209 0.882837 0.324863 0.490491 45 57.5 1 0 +206 1 1 0 45.6611 58.6267 52.5989 -0.433888 0.862669 0.259892 0.490491 45 57.5 1 0 +207 1 1 0 46.3148 58.9174 52.6266 -0.368518 0.891742 0.262661 0.490491 45 57.5 1 0 +208 1 1 0 46.9874 59.1624 52.6408 -0.301258 0.916244 0.264082 0.490491 45 57.5 1 0 +209 1 1 0 47.2937 59.0583 53.2593 -0.270627 0.905832 0.325929 0.490491 45 57.5 1 0 +210 1 1 0 47.9881 59.2388 53.2553 -0.201189 0.92388 0.32553 0.490491 45 57.5 1 0 +211 1 1 0 47.6755 59.3605 52.6415 -0.232455 0.93605 0.264151 0.490491 45 57.5 1 0 +212 1 1 0 48.3754 59.5106 52.6287 -0.16246 0.951057 0.262865 0.490491 45 57.5 1 0 +213 1 1 0 45.3973 58.6587 51.9602 -0.460266 0.865871 0.196015 0.490491 45 57.5 1 0 +214 1 1 0 46.0265 58.964 51.9641 -0.39735 0.896401 0.196412 0.490491 45 57.5 1 0 +215 1 1 0 45.1556 58.6493 51.312 -0.484441 0.864929 0.1312 0.490491 45 57.5 1 0 +216 1 1 0 45.7764 58.968 51.3175 -0.422363 0.896801 0.131749 0.490491 45 57.5 1 0 +217 1 1 0 46.4177 59.243 51.3166 -0.358229 0.924305 0.131656 0.490491 45 57.5 1 0 +218 1 1 0 44.937 58.5985 50.6576 -0.506298 0.859848 0.0657577 0.490491 45 57.5 1 0 +219 1 1 0 45.5463 58.9293 50.6582 -0.445365 0.892927 0.0658169 0.490491 45 57.5 1 0 +220 1 1 0 46.1828 59.2192 50.6599 -0.381722 0.921919 0.0659886 0.490491 45 57.5 1 0 +221 1 1 0 46.8322 59.462 50.6604 -0.316778 0.946198 0.0660427 0.490491 45 57.5 1 0 +222 1 1 0 48.0822 59.6119 51.9834 -0.19178 0.961188 0.198337 0.490491 45 57.5 1 0 +223 1 1 0 48.7727 59.7237 51.9858 -0.122729 0.97237 0.198581 0.490491 45 57.5 1 0 +224 1 1 0 47.7988 59.6639 51.3279 -0.220117 0.966393 0.132792 0.490491 45 57.5 1 0 +225 1 1 0 48.4845 59.7943 51.3326 -0.151549 0.979426 0.133256 0.490491 45 57.5 1 0 +226 1 1 0 49.1776 59.8769 51.3307 -0.0822422 0.987688 0.133071 0.490491 45 57.5 1 0 +227 1 1 0 47.5267 59.6664 50.6657 -0.247326 0.966643 0.0665668 0.490491 45 57.5 1 0 +228 1 1 0 48.204 59.8148 50.666 -0.179596 0.981483 0.0666046 0.490491 45 57.5 1 0 +229 1 1 0 48.8961 59.9165 50.6671 -0.110385 0.991648 0.0667095 0.490491 45 57.5 1 0 +230 1 1 0 49.5875 59.9692 50.6674 -0.0412479 0.996917 0.0667412 0.490491 45 57.5 1 0 +231 1 1 0 46.6939 59.2268 51.9839 -0.330606 0.922682 0.198387 0.490491 45 57.5 1 0 +232 1 1 0 47.1007 59.4782 51.3257 -0.289929 0.947822 0.13257 0.490491 45 57.5 1 0 +233 1 1 0 47.3845 59.4443 51.9909 -0.26155 0.944433 0.199094 0.490491 45 57.5 1 0 +234 1 1 0 52.7469 58.5264 54.4446 0.274694 0.85264 0.444464 0.490491 45 57.5 1 0 +235 1 1 0 53.4285 58.2845 54.4287 0.342848 0.828447 0.442867 0.490491 45 57.5 1 0 +236 1 1 0 52.3868 58.9101 53.8619 0.238677 0.891007 0.386187 0.490491 45 57.5 1 0 +237 1 1 0 53.0766 58.6973 53.8591 0.307659 0.869725 0.385906 0.490491 45 57.5 1 0 +238 1 1 0 53.7504 58.4391 53.8361 0.375038 0.843912 0.383614 0.490491 45 57.5 1 0 +239 1 1 0 52.0119 59.2388 53.2553 0.201189 0.92388 0.32553 0.490491 45 57.5 1 0 +240 1 1 0 52.7063 59.0583 53.2593 0.270627 0.905832 0.325929 0.490491 45 57.5 1 0 +241 1 1 0 51.6246 59.5106 52.6287 0.16246 0.951057 0.262865 0.490491 45 57.5 1 0 +242 1 1 0 52.3245 59.3605 52.6415 0.232455 0.93605 0.264151 0.490491 45 57.5 1 0 +243 1 1 0 53.0126 59.1624 52.6408 0.301258 0.916244 0.264082 0.490491 45 57.5 1 0 +244 1 1 0 53.3921 58.8284 53.2486 0.339209 0.882837 0.324863 0.490491 45 57.5 1 0 +245 1 1 0 54.0543 58.5534 53.2252 0.405434 0.855337 0.322525 0.490491 45 57.5 1 0 +246 1 1 0 53.6852 58.9174 52.6266 0.368518 0.891742 0.262661 0.490491 45 57.5 1 0 +247 1 1 0 54.3389 58.6267 52.5989 0.433888 0.862669 0.259892 0.490491 45 57.5 1 0 +248 1 1 0 51.2273 59.7237 51.9858 0.122729 0.97237 0.198581 0.490491 45 57.5 1 0 +249 1 1 0 51.9178 59.6119 51.9834 0.19178 0.961188 0.198337 0.490491 45 57.5 1 0 +250 1 1 0 50.8224 59.8769 51.3307 0.0822422 0.987688 0.133071 0.490491 45 57.5 1 0 +251 1 1 0 51.5155 59.7943 51.3326 0.151549 0.979426 0.133256 0.490491 45 57.5 1 0 +252 1 1 0 52.2012 59.6639 51.3279 0.220117 0.966393 0.132792 0.490491 45 57.5 1 0 +253 1 1 0 50.4125 59.9692 50.6674 0.0412479 0.996917 0.0667412 0.490491 45 57.5 1 0 +254 1 1 0 51.1039 59.9165 50.6671 0.110385 0.991648 0.0667095 0.490491 45 57.5 1 0 +255 1 1 0 51.796 59.8148 50.666 0.179596 0.981483 0.0666046 0.490491 45 57.5 1 0 +256 1 1 0 52.4733 59.6664 50.6657 0.247326 0.966643 0.0665668 0.490491 45 57.5 1 0 +257 1 1 0 53.9735 58.964 51.9641 0.39735 0.896401 0.196412 0.490491 45 57.5 1 0 +258 1 1 0 54.6027 58.6587 51.9602 0.460266 0.865871 0.196015 0.490491 45 57.5 1 0 +259 1 1 0 53.5823 59.243 51.3166 0.358229 0.924305 0.131656 0.490491 45 57.5 1 0 +260 1 1 0 54.2236 58.968 51.3175 0.422363 0.896801 0.131749 0.490491 45 57.5 1 0 +261 1 1 0 54.8444 58.6493 51.312 0.484441 0.864929 0.1312 0.490491 45 57.5 1 0 +262 1 1 0 53.1678 59.462 50.6604 0.316778 0.946198 0.0660427 0.490491 45 57.5 1 0 +263 1 1 0 53.8172 59.2192 50.6599 0.381722 0.921919 0.0659886 0.490491 45 57.5 1 0 +264 1 1 0 54.4537 58.9293 50.6582 0.445365 0.892927 0.0658169 0.490491 45 57.5 1 0 +265 1 1 0 55.063 58.5985 50.6576 0.506298 0.859848 0.0657577 0.490491 45 57.5 1 0 +266 1 1 0 52.6155 59.4443 51.9909 0.26155 0.944433 0.199094 0.490491 45 57.5 1 0 +267 1 1 0 52.8993 59.4782 51.3257 0.289929 0.947822 0.13257 0.490491 45 57.5 1 0 +268 1 1 0 53.3061 59.2268 51.9839 0.330606 0.922682 0.198387 0.490491 45 57.5 1 0 +269 1 1 0 48.0177 58.6853 54.5426 -0.198227 0.868535 0.454262 0.490491 45 57.5 1 0 +270 1 1 0 48.3899 59.0484 53.9414 -0.161007 0.904839 0.394136 0.490491 45 57.5 1 0 +271 1 1 0 48.772 59.3513 53.3234 -0.1228 0.93513 0.332342 0.490491 45 57.5 1 0 +272 1 1 0 49.1768 59.1298 53.9961 -0.0823235 0.912983 0.399607 0.490491 45 57.5 1 0 +273 1 1 0 48.8024 58.7934 54.6088 -0.119755 0.879344 0.460882 0.490491 45 57.5 1 0 +274 1 1 0 49.587 58.8476 54.6421 -0.0412991 0.88476 0.464213 0.490491 45 57.5 1 0 +275 1 1 0 49.185 59.6065 52.6552 -0.081501 0.960655 0.265519 0.490491 45 57.5 1 0 +276 1 1 0 49.5875 59.7885 52.0037 -0.0412506 0.978852 0.200368 0.490491 45 57.5 1 0 +277 1 1 0 50 59.6386 52.664 0 0.963861 0.266405 0.490491 45 57.5 1 0 +278 1 1 0 50 59.9105 51.3352 0 0.991046 0.133524 0.490491 45 57.5 1 0 +279 1 1 0 50.4125 59.7885 52.0037 0.0412506 0.978852 0.200368 0.490491 45 57.5 1 0 +280 1 1 0 50.815 59.6065 52.6552 0.081501 0.960655 0.265519 0.490491 45 57.5 1 0 +281 1 1 0 50.413 58.8476 54.6421 0.0412991 0.88476 0.464213 0.490491 45 57.5 1 0 +282 1 1 0 50.8232 59.1298 53.9961 0.0823235 0.912983 0.399607 0.490491 45 57.5 1 0 +283 1 1 0 51.1976 58.7934 54.6088 0.119755 0.879344 0.460882 0.490491 45 57.5 1 0 +284 1 1 0 51.228 59.3513 53.3234 0.1228 0.93513 0.332342 0.490491 45 57.5 1 0 +285 1 1 0 51.6101 59.0484 53.9414 0.161007 0.904839 0.394136 0.490491 45 57.5 1 0 +286 1 1 0 51.9823 58.6853 54.5426 0.198227 0.868535 0.454262 0.490491 45 57.5 1 0 +287 1 1 0 49.587 59.4162 53.3414 -0.0413021 0.941618 0.33414 0.490491 45 57.5 1 0 +288 1 1 0 50.413 59.4162 53.3414 0.0413021 0.941618 0.33414 0.490491 45 57.5 1 0 +289 1 1 0 50 59.1609 54.0097 0 0.916092 0.400968 0.490491 45 57.5 1 0 +290 1 1 0 50 54.6566 58.8497 0 0.465657 0.884965 0.490491 45 57.5 1 0 +291 1 1 0 49.3424 55.063 58.5985 -0.0657577 0.506298 0.859848 0.490491 45 57.5 1 0 +292 1 1 0 50 54.0336 59.1504 0 0.403355 0.915043 0.490491 45 57.5 1 0 +293 1 1 0 49.3418 54.4537 58.9293 -0.0658169 0.445365 0.892927 0.490491 45 57.5 1 0 +294 1 1 0 48.688 54.8444 58.6493 -0.1312 0.484441 0.864929 0.490491 45 57.5 1 0 +295 1 1 0 50 53.3912 59.4074 0 0.339122 0.940742 0.490491 45 57.5 1 0 +296 1 1 0 49.3401 53.8172 59.2192 -0.0659885 0.381722 0.921919 0.490491 45 57.5 1 0 +297 1 1 0 50 52.7327 59.6194 0 0.273267 0.961938 0.490491 45 57.5 1 0 +298 1 1 0 49.3396 53.1678 59.462 -0.0660427 0.316778 0.946198 0.490491 45 57.5 1 0 +299 1 1 0 48.6834 53.5823 59.243 -0.131656 0.358229 0.924305 0.490491 45 57.5 1 0 +300 1 1 0 48.6825 54.2236 58.968 -0.131749 0.422363 0.896801 0.490491 45 57.5 1 0 +301 1 1 0 48.0398 54.6027 58.6587 -0.196015 0.460266 0.865871 0.490491 45 57.5 1 0 +302 1 1 0 48.0359 53.9735 58.964 -0.196412 0.39735 0.896401 0.490491 45 57.5 1 0 +303 1 1 0 47.4011 54.3389 58.6267 -0.259892 0.433888 0.862669 0.490491 45 57.5 1 0 +304 1 1 0 50 52.061 59.7853 0 0.206103 0.97853 0.490491 45 57.5 1 0 +305 1 1 0 49.3343 52.4733 59.6664 -0.0665668 0.247326 0.966643 0.490491 45 57.5 1 0 +306 1 1 0 50 51.3795 59.9044 0 0.137952 0.990439 0.490491 45 57.5 1 0 +307 1 1 0 49.334 51.796 59.8148 -0.0666046 0.179596 0.981483 0.490491 45 57.5 1 0 +308 1 1 0 48.6721 52.2012 59.6639 -0.132792 0.220117 0.966393 0.490491 45 57.5 1 0 +309 1 1 0 50 50.6914 59.9761 0 0.0691418 0.997607 0.490491 45 57.5 1 0 +310 1 1 0 49.3329 51.1039 59.9165 -0.0667095 0.110385 0.991648 0.490491 45 57.5 1 0 +311 1 1 0 50 50 60 0 0 1 0.490491 45 57.5 1 0 +312 1 1 0 49.3326 50.4125 59.9692 -0.0667412 0.0412479 0.996917 0.490491 45 57.5 1 0 +313 1 1 0 48.6693 50.8224 59.8769 -0.133071 0.0822422 0.987688 0.490491 45 57.5 1 0 +314 1 1 0 48.6674 51.5155 59.7943 -0.133256 0.151549 0.979426 0.490491 45 57.5 1 0 +315 1 1 0 48.0166 51.9178 59.6119 -0.198337 0.19178 0.961188 0.490491 45 57.5 1 0 +316 1 1 0 48.0142 51.2273 59.7237 -0.198581 0.122729 0.97237 0.490491 45 57.5 1 0 +317 1 1 0 47.3713 51.6246 59.5106 -0.262865 0.16246 0.951057 0.490491 45 57.5 1 0 +318 1 1 0 47.3734 53.6852 58.9174 -0.262661 0.368518 0.891742 0.490491 45 57.5 1 0 +319 1 1 0 46.7748 54.0543 58.5534 -0.322525 0.405434 0.855337 0.490491 45 57.5 1 0 +320 1 1 0 47.3592 53.0126 59.1624 -0.264082 0.301258 0.916244 0.490491 45 57.5 1 0 +321 1 1 0 46.7514 53.3921 58.8284 -0.324863 0.339209 0.882837 0.490491 45 57.5 1 0 +322 1 1 0 46.1639 53.7504 58.4391 -0.383614 0.375038 0.843912 0.490491 45 57.5 1 0 +323 1 1 0 47.3585 52.3245 59.3605 -0.264151 0.232455 0.93605 0.490491 45 57.5 1 0 +324 1 1 0 46.7407 52.7063 59.0583 -0.325929 0.270627 0.905832 0.490491 45 57.5 1 0 +325 1 1 0 46.7447 52.0119 59.2388 -0.32553 0.201189 0.92388 0.490491 45 57.5 1 0 +326 1 1 0 46.1381 52.3868 58.9101 -0.386187 0.238677 0.891007 0.490491 45 57.5 1 0 +327 1 1 0 46.1409 53.0766 58.6973 -0.385906 0.307659 0.869725 0.490491 45 57.5 1 0 +328 1 1 0 45.5713 53.4285 58.2845 -0.442867 0.342848 0.828447 0.490491 45 57.5 1 0 +329 1 1 0 45.5554 52.7469 58.5264 -0.444464 0.274694 0.85264 0.490491 45 57.5 1 0 +330 1 1 0 45 53.0902 58.0902 -0.5 0.309017 0.809017 0.490491 45 57.5 1 0 +331 1 1 0 48.6743 52.8993 59.4782 -0.13257 0.289929 0.947822 0.490491 45 57.5 1 0 +332 1 1 0 48.0091 52.6155 59.4443 -0.199094 0.26155 0.944433 0.490491 45 57.5 1 0 +333 1 1 0 48.0161 53.3061 59.2268 -0.198387 0.330606 0.922682 0.490491 45 57.5 1 0 +334 1 1 0 50 49.3086 59.9761 0 -0.0691418 0.997607 0.490491 45 57.5 1 0 +335 1 1 0 49.3326 49.5875 59.9692 -0.0667412 -0.0412479 0.996917 0.490491 45 57.5 1 0 +336 1 1 0 50 48.6205 59.9044 0 -0.137952 0.990439 0.490491 45 57.5 1 0 +337 1 1 0 49.3329 48.8961 59.9165 -0.0667095 -0.110385 0.991648 0.490491 45 57.5 1 0 +338 1 1 0 48.6693 49.1776 59.8769 -0.133071 -0.0822422 0.987688 0.490491 45 57.5 1 0 +339 1 1 0 50 47.939 59.7853 0 -0.206103 0.97853 0.490491 45 57.5 1 0 +340 1 1 0 49.334 48.204 59.8148 -0.0666046 -0.179596 0.981483 0.490491 45 57.5 1 0 +341 1 1 0 50 47.2673 59.6194 0 -0.273267 0.961938 0.490491 45 57.5 1 0 +342 1 1 0 49.3343 47.5267 59.6664 -0.0665668 -0.247326 0.966643 0.490491 45 57.5 1 0 +343 1 1 0 48.6721 47.7988 59.6639 -0.132792 -0.220117 0.966393 0.490491 45 57.5 1 0 +344 1 1 0 48.6674 48.4845 59.7943 -0.133256 -0.151549 0.979426 0.490491 45 57.5 1 0 +345 1 1 0 48.0142 48.7727 59.7237 -0.198581 -0.122729 0.97237 0.490491 45 57.5 1 0 +346 1 1 0 48.0166 48.0822 59.6119 -0.198337 -0.19178 0.961188 0.490491 45 57.5 1 0 +347 1 1 0 47.3713 48.3754 59.5106 -0.262865 -0.16246 0.951057 0.490491 45 57.5 1 0 +348 1 1 0 50 46.6088 59.4074 0 -0.339122 0.940742 0.490491 45 57.5 1 0 +349 1 1 0 49.3396 46.8322 59.462 -0.0660427 -0.316778 0.946198 0.490491 45 57.5 1 0 +350 1 1 0 50 45.9664 59.1504 0 -0.403355 0.915043 0.490491 45 57.5 1 0 +351 1 1 0 49.3401 46.1828 59.2192 -0.0659885 -0.381722 0.921919 0.490491 45 57.5 1 0 +352 1 1 0 48.6834 46.4177 59.243 -0.131656 -0.358229 0.924305 0.490491 45 57.5 1 0 +353 1 1 0 50 45.3434 58.8497 0 -0.465657 0.884965 0.490491 45 57.5 1 0 +354 1 1 0 49.3418 45.5463 58.9293 -0.0658169 -0.445365 0.892927 0.490491 45 57.5 1 0 +355 1 1 0 50 44.7427 58.5065 0 -0.525731 0.850651 0.490491 45 57.5 1 0 +356 1 1 0 49.3424 44.937 58.5985 -0.0657577 -0.506298 0.859848 0.490491 45 57.5 1 0 +357 1 1 0 48.688 45.1556 58.6493 -0.1312 -0.484441 0.864929 0.490491 45 57.5 1 0 +358 1 1 0 48.6825 45.7764 58.968 -0.131749 -0.422363 0.896801 0.490491 45 57.5 1 0 +359 1 1 0 48.0359 46.0265 58.964 -0.196412 -0.39735 0.896401 0.490491 45 57.5 1 0 +360 1 1 0 48.0398 45.3973 58.6587 -0.196015 -0.460266 0.865871 0.490491 45 57.5 1 0 +361 1 1 0 47.4011 45.6611 58.6267 -0.259892 -0.433888 0.862669 0.490491 45 57.5 1 0 +362 1 1 0 47.3585 47.6755 59.3605 -0.264151 -0.232455 0.93605 0.490491 45 57.5 1 0 +363 1 1 0 46.7447 47.9881 59.2388 -0.32553 -0.201189 0.92388 0.490491 45 57.5 1 0 +364 1 1 0 47.3592 46.9874 59.1624 -0.264082 -0.301258 0.916244 0.490491 45 57.5 1 0 +365 1 1 0 46.7407 47.2937 59.0583 -0.325929 -0.270627 0.905832 0.490491 45 57.5 1 0 +366 1 1 0 46.1381 47.6132 58.9101 -0.386187 -0.238677 0.891007 0.490491 45 57.5 1 0 +367 1 1 0 47.3734 46.3148 58.9174 -0.262661 -0.368518 0.891742 0.490491 45 57.5 1 0 +368 1 1 0 46.7514 46.6079 58.8284 -0.324863 -0.339209 0.882837 0.490491 45 57.5 1 0 +369 1 1 0 46.7748 45.9457 58.5534 -0.322525 -0.405434 0.855337 0.490491 45 57.5 1 0 +370 1 1 0 46.1639 46.2496 58.4391 -0.383614 -0.375038 0.843912 0.490491 45 57.5 1 0 +371 1 1 0 46.1409 46.9234 58.6973 -0.385906 -0.307659 0.869725 0.490491 45 57.5 1 0 +372 1 1 0 45.5554 47.2531 58.5264 -0.444464 -0.274694 0.85264 0.490491 45 57.5 1 0 +373 1 1 0 45.5713 46.5715 58.2845 -0.442867 -0.342848 0.828447 0.490491 45 57.5 1 0 +374 1 1 0 45 46.9098 58.0902 -0.5 -0.309017 0.809017 0.490491 45 57.5 1 0 +375 1 1 0 48.6743 47.1007 59.4782 -0.13257 -0.289929 0.947822 0.490491 45 57.5 1 0 +376 1 1 0 48.0161 46.6939 59.2268 -0.198387 -0.330606 0.922682 0.490491 45 57.5 1 0 +377 1 1 0 48.0091 47.3845 59.4443 -0.199094 -0.26155 0.944433 0.490491 45 57.5 1 0 +378 1 1 0 44.888 52.3345 58.2715 -0.511205 0.233445 0.827147 0.490491 45 57.5 1 0 +379 1 1 0 44.4526 52.7371 57.8572 -0.55474 0.273706 0.785715 0.490491 45 57.5 1 0 +380 1 1 0 44.8074 51.5643 58.4018 -0.519259 0.156434 0.840178 0.490491 45 57.5 1 0 +381 1 1 0 44.3549 51.9727 58.015 -0.564513 0.197274 0.801504 0.490491 45 57.5 1 0 +382 1 1 0 43.9317 52.3709 57.5865 -0.606825 0.237086 0.758652 0.490491 45 57.5 1 0 +383 1 1 0 44.7589 50.7846 58.4803 -0.52411 0.0784592 0.848029 0.490491 45 57.5 1 0 +384 1 1 0 44.2886 51.1908 58.1217 -0.57114 0.119078 0.81217 0.490491 45 57.5 1 0 +385 1 1 0 44.7427 50 58.5065 -0.525731 0 0.850651 0.490491 45 57.5 1 0 +386 1 1 0 44.2554 50.4067 58.1752 -0.574458 0.040675 0.817523 0.490491 45 57.5 1 0 +387 1 1 0 43.7976 50.8114 57.802 -0.620239 0.0811417 0.780205 0.490491 45 57.5 1 0 +388 1 1 0 43.8454 51.5961 57.7184 -0.615456 0.159613 0.771841 0.490491 45 57.5 1 0 +389 1 1 0 43.4399 51.9933 57.2796 -0.656006 0.199331 0.727959 0.490491 45 57.5 1 0 +390 1 1 0 43.3716 51.2119 57.3889 -0.662842 0.121192 0.738887 0.490491 45 57.5 1 0 +391 1 1 0 42.9795 51.6062 56.9378 -0.702047 0.160622 0.69378 0.490491 45 57.5 1 0 +392 1 1 0 44.7589 49.2154 58.4803 -0.52411 -0.0784592 0.848029 0.490491 45 57.5 1 0 +393 1 1 0 44.2554 49.5933 58.1752 -0.574458 -0.040675 0.817523 0.490491 45 57.5 1 0 +394 1 1 0 44.8074 48.4357 58.4018 -0.519259 -0.156434 0.840178 0.490491 45 57.5 1 0 +395 1 1 0 44.2886 48.8092 58.1217 -0.57114 -0.119078 0.81217 0.490491 45 57.5 1 0 +396 1 1 0 43.7976 49.1886 57.802 -0.620239 -0.0811417 0.780205 0.490491 45 57.5 1 0 +397 1 1 0 44.888 47.6655 58.2715 -0.511205 -0.233445 0.827147 0.490491 45 57.5 1 0 +398 1 1 0 44.3549 48.0273 58.015 -0.564513 -0.197274 0.801504 0.490491 45 57.5 1 0 +399 1 1 0 44.4526 47.2629 57.8572 -0.55474 -0.273706 0.785715 0.490491 45 57.5 1 0 +400 1 1 0 43.9317 47.6291 57.5865 -0.606825 -0.237086 0.758652 0.490491 45 57.5 1 0 +401 1 1 0 43.8454 48.4039 57.7184 -0.615456 -0.159613 0.771841 0.490491 45 57.5 1 0 +402 1 1 0 43.3716 48.7881 57.3889 -0.662842 -0.121192 0.738887 0.490491 45 57.5 1 0 +403 1 1 0 43.4399 48.0067 57.2796 -0.656006 -0.199331 0.727959 0.490491 45 57.5 1 0 +404 1 1 0 42.9795 48.3938 56.9378 -0.702047 -0.160622 0.69378 0.490491 45 57.5 1 0 +405 1 1 0 42.9103 50.8057 57.0062 -0.708969 0.0805729 0.700622 0.490491 45 57.5 1 0 +406 1 1 0 42.5527 51.2114 56.5628 -0.744727 0.121144 0.656282 0.490491 45 57.5 1 0 +407 1 1 0 42.8872 50 57.0291 -0.711282 0 0.702907 0.490491 45 57.5 1 0 +408 1 1 0 42.5061 50.4064 56.6088 -0.749387 0.0406418 0.660883 0.490491 45 57.5 1 0 +409 1 1 0 42.1616 50.8109 56.1564 -0.783843 0.081086 0.615642 0.490491 45 57.5 1 0 +410 1 1 0 42.9103 49.1943 57.0062 -0.708969 -0.0805729 0.700622 0.490491 45 57.5 1 0 +411 1 1 0 42.5061 49.5936 56.6088 -0.749387 -0.0406418 0.660883 0.490491 45 57.5 1 0 +412 1 1 0 42.5527 48.7886 56.5628 -0.744727 -0.121144 0.656282 0.490491 45 57.5 1 0 +413 1 1 0 42.1616 49.1891 56.1564 -0.783843 -0.081086 0.615642 0.490491 45 57.5 1 0 +414 1 1 0 42.1357 50 56.1768 -0.786433 0 0.617676 0.490491 45 57.5 1 0 +415 1 1 0 41.8079 50.4064 55.7206 -0.819207 0.0406403 0.572055 0.490491 45 57.5 1 0 +416 1 1 0 41.8079 49.5936 55.7206 -0.819207 -0.0406403 0.572055 0.490491 45 57.5 1 0 +417 1 1 0 41.4935 50 55.2573 -0.850651 0 0.525731 0.490491 45 57.5 1 0 +418 1 1 0 43.7771 50 57.8279 -0.622291 0 0.782786 0.490491 45 57.5 1 0 +419 1 1 0 43.325 49.5932 57.435 -0.667502 -0.0406769 0.743496 0.490491 45 57.5 1 0 +420 1 1 0 43.325 50.4068 57.435 -0.667502 0.0406769 0.743496 0.490491 45 57.5 1 0 +421 1 1 0 48.6648 50 59.9105 -0.133524 0 0.991046 0.490491 45 57.5 1 0 +422 1 1 0 47.9963 49.5875 59.7885 -0.200368 -0.0412506 0.978852 0.490491 45 57.5 1 0 +423 1 1 0 47.3448 49.185 59.6065 -0.265519 -0.081501 0.960655 0.490491 45 57.5 1 0 +424 1 1 0 47.336 50 59.6386 -0.266405 0 0.963861 0.490491 45 57.5 1 0 +425 1 1 0 47.9963 50.4125 59.7885 -0.200368 0.0412506 0.978852 0.490491 45 57.5 1 0 +426 1 1 0 47.3448 50.815 59.6065 -0.265519 0.081501 0.960655 0.490491 45 57.5 1 0 +427 1 1 0 46.6766 48.772 59.3513 -0.332342 -0.1228 0.93513 0.490491 45 57.5 1 0 +428 1 1 0 46.0586 48.3899 59.0484 -0.394136 -0.161007 0.904839 0.490491 45 57.5 1 0 +429 1 1 0 46.0039 49.1768 59.1298 -0.399607 -0.0823235 0.912983 0.490491 45 57.5 1 0 +430 1 1 0 45.4574 48.0177 58.6853 -0.454262 -0.198227 0.868535 0.490491 45 57.5 1 0 +431 1 1 0 45.3912 48.8024 58.7934 -0.460882 -0.119755 0.879344 0.490491 45 57.5 1 0 +432 1 1 0 45.3579 49.587 58.8476 -0.464213 -0.0412991 0.88476 0.490491 45 57.5 1 0 +433 1 1 0 46.6766 51.228 59.3513 -0.332342 0.1228 0.93513 0.490491 45 57.5 1 0 +434 1 1 0 46.0039 50.8232 59.1298 -0.399607 0.0823235 0.912983 0.490491 45 57.5 1 0 +435 1 1 0 46.0586 51.6101 59.0484 -0.394136 0.161007 0.904839 0.490491 45 57.5 1 0 +436 1 1 0 45.3579 50.413 58.8476 -0.464213 0.0412991 0.88476 0.490491 45 57.5 1 0 +437 1 1 0 45.3912 51.1976 58.7934 -0.460882 0.119755 0.879344 0.490491 45 57.5 1 0 +438 1 1 0 45.4574 51.9823 58.6853 -0.454262 0.198227 0.868535 0.490491 45 57.5 1 0 +439 1 1 0 46.6586 49.587 59.4162 -0.33414 -0.0413021 0.941618 0.490491 45 57.5 1 0 +440 1 1 0 45.9903 50 59.1609 -0.400968 0 0.916092 0.490491 45 57.5 1 0 +441 1 1 0 46.6586 50.413 59.4162 -0.33414 0.0413021 0.941618 0.490491 45 57.5 1 0 +442 1 1 0 50.6576 55.063 58.5985 0.0657577 0.506298 0.859848 0.490491 45 57.5 1 0 +443 1 1 0 51.312 54.8444 58.6493 0.1312 0.484441 0.864929 0.490491 45 57.5 1 0 +444 1 1 0 50.6582 54.4537 58.9293 0.0658169 0.445365 0.892927 0.490491 45 57.5 1 0 +445 1 1 0 51.9602 54.6027 58.6587 0.196015 0.460266 0.865871 0.490491 45 57.5 1 0 +446 1 1 0 51.3175 54.2236 58.968 0.131749 0.422363 0.896801 0.490491 45 57.5 1 0 +447 1 1 0 52.5989 54.3389 58.6267 0.259892 0.433888 0.862669 0.490491 45 57.5 1 0 +448 1 1 0 51.9641 53.9735 58.964 0.196412 0.39735 0.896401 0.490491 45 57.5 1 0 +449 1 1 0 51.3166 53.5823 59.243 0.131656 0.358229 0.924305 0.490491 45 57.5 1 0 +450 1 1 0 50.6599 53.8172 59.2192 0.0659885 0.381722 0.921919 0.490491 45 57.5 1 0 +451 1 1 0 50.6604 53.1678 59.462 0.0660427 0.316778 0.946198 0.490491 45 57.5 1 0 +452 1 1 0 53.2252 54.0543 58.5534 0.322525 0.405434 0.855337 0.490491 45 57.5 1 0 +453 1 1 0 52.6266 53.6852 58.9174 0.262661 0.368518 0.891742 0.490491 45 57.5 1 0 +454 1 1 0 53.8361 53.7504 58.4391 0.383614 0.375038 0.843912 0.490491 45 57.5 1 0 +455 1 1 0 53.2486 53.3921 58.8284 0.324863 0.339209 0.882837 0.490491 45 57.5 1 0 +456 1 1 0 52.6408 53.0126 59.1624 0.264082 0.301258 0.916244 0.490491 45 57.5 1 0 +457 1 1 0 54.4287 53.4285 58.2845 0.442867 0.342848 0.828447 0.490491 45 57.5 1 0 +458 1 1 0 53.8591 53.0766 58.6973 0.385906 0.307659 0.869725 0.490491 45 57.5 1 0 +459 1 1 0 55 53.0902 58.0902 0.5 0.309017 0.809017 0.490491 45 57.5 1 0 +460 1 1 0 54.4446 52.7469 58.5264 0.444464 0.274694 0.85264 0.490491 45 57.5 1 0 +461 1 1 0 53.8619 52.3868 58.9101 0.386187 0.238677 0.891007 0.490491 45 57.5 1 0 +462 1 1 0 53.2593 52.7063 59.0583 0.325929 0.270627 0.905832 0.490491 45 57.5 1 0 +463 1 1 0 52.6415 52.3245 59.3605 0.264151 0.232455 0.93605 0.490491 45 57.5 1 0 +464 1 1 0 53.2553 52.0119 59.2388 0.32553 0.201189 0.92388 0.490491 45 57.5 1 0 +465 1 1 0 52.6287 51.6246 59.5106 0.262865 0.16246 0.951057 0.490491 45 57.5 1 0 +466 1 1 0 50.6657 52.4733 59.6664 0.0665668 0.247326 0.966643 0.490491 45 57.5 1 0 +467 1 1 0 51.3279 52.2012 59.6639 0.132792 0.220117 0.966393 0.490491 45 57.5 1 0 +468 1 1 0 50.666 51.796 59.8148 0.0666046 0.179596 0.981483 0.490491 45 57.5 1 0 +469 1 1 0 51.9834 51.9178 59.6119 0.198337 0.19178 0.961188 0.490491 45 57.5 1 0 +470 1 1 0 51.3326 51.5155 59.7943 0.133256 0.151549 0.979426 0.490491 45 57.5 1 0 +471 1 1 0 51.9858 51.2273 59.7237 0.198581 0.122729 0.97237 0.490491 45 57.5 1 0 +472 1 1 0 51.3307 50.8224 59.8769 0.133071 0.0822422 0.987688 0.490491 45 57.5 1 0 +473 1 1 0 50.6671 51.1039 59.9165 0.0667095 0.110385 0.991648 0.490491 45 57.5 1 0 +474 1 1 0 50.6674 50.4125 59.9692 0.0667412 0.0412479 0.996917 0.490491 45 57.5 1 0 +475 1 1 0 51.9839 53.3061 59.2268 0.198387 0.330606 0.922682 0.490491 45 57.5 1 0 +476 1 1 0 51.9909 52.6155 59.4443 0.199094 0.26155 0.944433 0.490491 45 57.5 1 0 +477 1 1 0 51.3257 52.8993 59.4782 0.13257 0.289929 0.947822 0.490491 45 57.5 1 0 +478 1 1 0 55.5474 52.7371 57.8572 0.55474 0.273706 0.785715 0.490491 45 57.5 1 0 +479 1 1 0 55.112 52.3345 58.2715 0.511205 0.233445 0.827147 0.490491 45 57.5 1 0 +480 1 1 0 56.0683 52.3709 57.5865 0.606825 0.237086 0.758652 0.490491 45 57.5 1 0 +481 1 1 0 55.6451 51.9727 58.015 0.564513 0.197274 0.801504 0.490491 45 57.5 1 0 +482 1 1 0 55.1926 51.5643 58.4018 0.519259 0.156434 0.840178 0.490491 45 57.5 1 0 +483 1 1 0 56.5601 51.9933 57.2796 0.656006 0.199331 0.727959 0.490491 45 57.5 1 0 +484 1 1 0 56.1546 51.5961 57.7184 0.615456 0.159613 0.771841 0.490491 45 57.5 1 0 +485 1 1 0 57.0205 51.6062 56.9378 0.702047 0.160622 0.69378 0.490491 45 57.5 1 0 +486 1 1 0 56.6284 51.2119 57.3889 0.662842 0.121192 0.738887 0.490491 45 57.5 1 0 +487 1 1 0 56.2024 50.8114 57.802 0.620239 0.0811417 0.780205 0.490491 45 57.5 1 0 +488 1 1 0 55.7114 51.1908 58.1217 0.57114 0.119078 0.81217 0.490491 45 57.5 1 0 +489 1 1 0 55.2411 50.7846 58.4803 0.52411 0.0784592 0.848029 0.490491 45 57.5 1 0 +490 1 1 0 55.7446 50.4067 58.1752 0.574458 0.040675 0.817523 0.490491 45 57.5 1 0 +491 1 1 0 55.2573 50 58.5065 0.525731 0 0.850651 0.490491 45 57.5 1 0 +492 1 1 0 57.4473 51.2114 56.5628 0.744727 0.121144 0.656282 0.490491 45 57.5 1 0 +493 1 1 0 57.0897 50.8057 57.0062 0.708969 0.0805729 0.700622 0.490491 45 57.5 1 0 +494 1 1 0 57.8384 50.8109 56.1564 0.783843 0.081086 0.615642 0.490491 45 57.5 1 0 +495 1 1 0 57.4939 50.4064 56.6088 0.749387 0.0406418 0.660883 0.490491 45 57.5 1 0 +496 1 1 0 57.1128 50 57.0291 0.711282 0 0.702907 0.490491 45 57.5 1 0 +497 1 1 0 58.1921 50.4064 55.7206 0.819207 0.0406403 0.572055 0.490491 45 57.5 1 0 +498 1 1 0 57.8643 50 56.1768 0.786433 0 0.617676 0.490491 45 57.5 1 0 +499 1 1 0 58.5065 50 55.2573 0.850651 0 0.525731 0.490491 45 57.5 1 0 +500 1 1 0 58.1921 49.5936 55.7206 0.819207 -0.0406403 0.572055 0.490491 45 57.5 1 0 +501 1 1 0 57.8384 49.1891 56.1564 0.783843 -0.081086 0.615642 0.490491 45 57.5 1 0 +502 1 1 0 57.4939 49.5936 56.6088 0.749387 -0.0406418 0.660883 0.490491 45 57.5 1 0 +503 1 1 0 57.0897 49.1943 57.0062 0.708969 -0.0805729 0.700622 0.490491 45 57.5 1 0 +504 1 1 0 57.4473 48.7886 56.5628 0.744727 -0.121144 0.656282 0.490491 45 57.5 1 0 +505 1 1 0 57.0205 48.3938 56.9378 0.702047 -0.160622 0.69378 0.490491 45 57.5 1 0 +506 1 1 0 55.7446 49.5933 58.1752 0.574458 -0.040675 0.817523 0.490491 45 57.5 1 0 +507 1 1 0 55.2411 49.2154 58.4803 0.52411 -0.0784592 0.848029 0.490491 45 57.5 1 0 +508 1 1 0 56.2024 49.1886 57.802 0.620239 -0.0811417 0.780205 0.490491 45 57.5 1 0 +509 1 1 0 55.7114 48.8092 58.1217 0.57114 -0.119078 0.81217 0.490491 45 57.5 1 0 +510 1 1 0 55.1926 48.4357 58.4018 0.519259 -0.156434 0.840178 0.490491 45 57.5 1 0 +511 1 1 0 56.6284 48.7881 57.3889 0.662842 -0.121192 0.738887 0.490491 45 57.5 1 0 +512 1 1 0 56.1546 48.4039 57.7184 0.615456 -0.159613 0.771841 0.490491 45 57.5 1 0 +513 1 1 0 56.5601 48.0067 57.2796 0.656006 -0.199331 0.727959 0.490491 45 57.5 1 0 +514 1 1 0 56.0683 47.6291 57.5865 0.606825 -0.237086 0.758652 0.490491 45 57.5 1 0 +515 1 1 0 55.6451 48.0273 58.015 0.564513 -0.197274 0.801504 0.490491 45 57.5 1 0 +516 1 1 0 55.112 47.6655 58.2715 0.511205 -0.233445 0.827147 0.490491 45 57.5 1 0 +517 1 1 0 55.5474 47.2629 57.8572 0.55474 -0.273706 0.785715 0.490491 45 57.5 1 0 +518 1 1 0 55 46.9098 58.0902 0.5 -0.309017 0.809017 0.490491 45 57.5 1 0 +519 1 1 0 56.675 50.4068 57.435 0.667502 0.0406769 0.743496 0.490491 45 57.5 1 0 +520 1 1 0 56.675 49.5932 57.435 0.667502 -0.0406769 0.743496 0.490491 45 57.5 1 0 +521 1 1 0 56.2229 50 57.8279 0.622291 0 0.782786 0.490491 45 57.5 1 0 +522 1 1 0 50.6674 49.5875 59.9692 0.0667412 -0.0412479 0.996917 0.490491 45 57.5 1 0 +523 1 1 0 51.3307 49.1776 59.8769 0.133071 -0.0822422 0.987688 0.490491 45 57.5 1 0 +524 1 1 0 50.6671 48.8961 59.9165 0.0667095 -0.110385 0.991648 0.490491 45 57.5 1 0 +525 1 1 0 51.9858 48.7727 59.7237 0.198581 -0.122729 0.97237 0.490491 45 57.5 1 0 +526 1 1 0 51.3326 48.4845 59.7943 0.133256 -0.151549 0.979426 0.490491 45 57.5 1 0 +527 1 1 0 52.6287 48.3754 59.5106 0.262865 -0.16246 0.951057 0.490491 45 57.5 1 0 +528 1 1 0 51.9834 48.0822 59.6119 0.198337 -0.19178 0.961188 0.490491 45 57.5 1 0 +529 1 1 0 51.3279 47.7988 59.6639 0.132792 -0.220117 0.966393 0.490491 45 57.5 1 0 +530 1 1 0 50.666 48.204 59.8148 0.0666046 -0.179596 0.981483 0.490491 45 57.5 1 0 +531 1 1 0 50.6657 47.5267 59.6664 0.0665668 -0.247326 0.966643 0.490491 45 57.5 1 0 +532 1 1 0 53.2553 47.9881 59.2388 0.32553 -0.201189 0.92388 0.490491 45 57.5 1 0 +533 1 1 0 52.6415 47.6755 59.3605 0.264151 -0.232455 0.93605 0.490491 45 57.5 1 0 +534 1 1 0 53.8619 47.6132 58.9101 0.386187 -0.238677 0.891007 0.490491 45 57.5 1 0 +535 1 1 0 53.2593 47.2937 59.0583 0.325929 -0.270627 0.905832 0.490491 45 57.5 1 0 +536 1 1 0 52.6408 46.9874 59.1624 0.264082 -0.301258 0.916244 0.490491 45 57.5 1 0 +537 1 1 0 54.4446 47.2531 58.5264 0.444464 -0.274694 0.85264 0.490491 45 57.5 1 0 +538 1 1 0 53.8591 46.9234 58.6973 0.385906 -0.307659 0.869725 0.490491 45 57.5 1 0 +539 1 1 0 54.4287 46.5715 58.2845 0.442867 -0.342848 0.828447 0.490491 45 57.5 1 0 +540 1 1 0 53.8361 46.2496 58.4391 0.383614 -0.375038 0.843912 0.490491 45 57.5 1 0 +541 1 1 0 53.2486 46.6079 58.8284 0.324863 -0.339209 0.882837 0.490491 45 57.5 1 0 +542 1 1 0 52.6266 46.3148 58.9174 0.262661 -0.368518 0.891742 0.490491 45 57.5 1 0 +543 1 1 0 53.2252 45.9457 58.5534 0.322525 -0.405434 0.855337 0.490491 45 57.5 1 0 +544 1 1 0 52.5989 45.6611 58.6267 0.259892 -0.433888 0.862669 0.490491 45 57.5 1 0 +545 1 1 0 50.6604 46.8322 59.462 0.0660427 -0.316778 0.946198 0.490491 45 57.5 1 0 +546 1 1 0 51.3166 46.4177 59.243 0.131656 -0.358229 0.924305 0.490491 45 57.5 1 0 +547 1 1 0 50.6599 46.1828 59.2192 0.0659885 -0.381722 0.921919 0.490491 45 57.5 1 0 +548 1 1 0 51.9641 46.0265 58.964 0.196412 -0.39735 0.896401 0.490491 45 57.5 1 0 +549 1 1 0 51.3175 45.7764 58.968 0.131749 -0.422363 0.896801 0.490491 45 57.5 1 0 +550 1 1 0 51.9602 45.3973 58.6587 0.196015 -0.460266 0.865871 0.490491 45 57.5 1 0 +551 1 1 0 51.312 45.1556 58.6493 0.1312 -0.484441 0.864929 0.490491 45 57.5 1 0 +552 1 1 0 50.6582 45.5463 58.9293 0.0658169 -0.445365 0.892927 0.490491 45 57.5 1 0 +553 1 1 0 50.6576 44.937 58.5985 0.0657577 -0.506298 0.859848 0.490491 45 57.5 1 0 +554 1 1 0 51.9909 47.3845 59.4443 0.199094 -0.26155 0.944433 0.490491 45 57.5 1 0 +555 1 1 0 51.9839 46.6939 59.2268 0.198387 -0.330606 0.922682 0.490491 45 57.5 1 0 +556 1 1 0 51.3257 47.1007 59.4782 0.13257 -0.289929 0.947822 0.490491 45 57.5 1 0 +557 1 1 0 54.5426 51.9823 58.6853 0.454262 0.198227 0.868535 0.490491 45 57.5 1 0 +558 1 1 0 54.6088 51.1976 58.7934 0.460882 0.119755 0.879344 0.490491 45 57.5 1 0 +559 1 1 0 54.6421 50.413 58.8476 0.464213 0.0412991 0.88476 0.490491 45 57.5 1 0 +560 1 1 0 53.9961 50.8232 59.1298 0.399607 0.0823235 0.912983 0.490491 45 57.5 1 0 +561 1 1 0 53.9414 51.6101 59.0484 0.394136 0.161007 0.904839 0.490491 45 57.5 1 0 +562 1 1 0 53.3234 51.228 59.3513 0.332342 0.1228 0.93513 0.490491 45 57.5 1 0 +563 1 1 0 54.6421 49.587 58.8476 0.464213 -0.0412991 0.88476 0.490491 45 57.5 1 0 +564 1 1 0 54.6088 48.8024 58.7934 0.460882 -0.119755 0.879344 0.490491 45 57.5 1 0 +565 1 1 0 53.9961 49.1768 59.1298 0.399607 -0.0823235 0.912983 0.490491 45 57.5 1 0 +566 1 1 0 54.5426 48.0177 58.6853 0.454262 -0.198227 0.868535 0.490491 45 57.5 1 0 +567 1 1 0 53.9414 48.3899 59.0484 0.394136 -0.161007 0.904839 0.490491 45 57.5 1 0 +568 1 1 0 53.3234 48.772 59.3513 0.332342 -0.1228 0.93513 0.490491 45 57.5 1 0 +569 1 1 0 52.6552 50.815 59.6065 0.265519 0.081501 0.960655 0.490491 45 57.5 1 0 +570 1 1 0 52.664 50 59.6386 0.266405 0 0.963861 0.490491 45 57.5 1 0 +571 1 1 0 52.0037 50.4125 59.7885 0.200368 0.0412506 0.978852 0.490491 45 57.5 1 0 +572 1 1 0 52.6552 49.185 59.6065 0.265519 -0.081501 0.960655 0.490491 45 57.5 1 0 +573 1 1 0 52.0037 49.5875 59.7885 0.200368 -0.0412506 0.978852 0.490491 45 57.5 1 0 +574 1 1 0 51.3352 50 59.9105 0.133524 0 0.991046 0.490491 45 57.5 1 0 +575 1 1 0 54.0097 50 59.1609 0.400968 0 0.916092 0.490491 45 57.5 1 0 +576 1 1 0 53.3414 49.587 59.4162 0.33414 -0.0413021 0.941618 0.490491 45 57.5 1 0 +577 1 1 0 53.3414 50.413 59.4162 0.33414 0.0413021 0.941618 0.490491 45 57.5 1 0 +578 1 1 0 50 54.6566 41.1503 0 0.465657 -0.884965 0.490491 45 57.5 1 0 +579 1 1 0 50.6576 55.063 41.4015 0.0657577 0.506298 -0.859848 0.490491 45 57.5 1 0 +580 1 1 0 50 54.0336 40.8496 0 0.403355 -0.915043 0.490491 45 57.5 1 0 +581 1 1 0 50.6582 54.4537 41.0707 0.0658169 0.445365 -0.892927 0.490491 45 57.5 1 0 +582 1 1 0 51.312 54.8444 41.3507 0.1312 0.484441 -0.864929 0.490491 45 57.5 1 0 +583 1 1 0 50 53.3912 40.5926 0 0.339122 -0.940742 0.490491 45 57.5 1 0 +584 1 1 0 50.6599 53.8172 40.7808 0.0659885 0.381722 -0.921919 0.490491 45 57.5 1 0 +585 1 1 0 50 52.7327 40.3806 0 0.273267 -0.961938 0.490491 45 57.5 1 0 +586 1 1 0 50.6604 53.1678 40.538 0.0660427 0.316778 -0.946198 0.490491 45 57.5 1 0 +587 1 1 0 51.3166 53.5823 40.757 0.131656 0.358229 -0.924305 0.490491 45 57.5 1 0 +588 1 1 0 51.3175 54.2236 41.032 0.131749 0.422363 -0.896801 0.490491 45 57.5 1 0 +589 1 1 0 51.9602 54.6027 41.3413 0.196015 0.460266 -0.865871 0.490491 45 57.5 1 0 +590 1 1 0 51.9641 53.9735 41.036 0.196412 0.39735 -0.896401 0.490491 45 57.5 1 0 +591 1 1 0 52.5989 54.3389 41.3733 0.259892 0.433888 -0.862669 0.490491 45 57.5 1 0 +592 1 1 0 50 52.061 40.2147 0 0.206103 -0.97853 0.490491 45 57.5 1 0 +593 1 1 0 50.6657 52.4733 40.3336 0.0665668 0.247326 -0.966643 0.490491 45 57.5 1 0 +594 1 1 0 50 51.3795 40.0956 0 0.137952 -0.990439 0.490491 45 57.5 1 0 +595 1 1 0 50.666 51.796 40.1852 0.0666046 0.179596 -0.981483 0.490491 45 57.5 1 0 +596 1 1 0 51.3279 52.2012 40.3361 0.132792 0.220117 -0.966393 0.490491 45 57.5 1 0 +597 1 1 0 50 50.6914 40.0239 0 0.0691418 -0.997607 0.490491 45 57.5 1 0 +598 1 1 0 50.6671 51.1039 40.0835 0.0667095 0.110385 -0.991648 0.490491 45 57.5 1 0 +599 1 1 0 50 50 40 0 0 -1 0.490491 45 57.5 1 0 +600 1 1 0 50.6674 50.4125 40.0308 0.0667412 0.0412479 -0.996917 0.490491 45 57.5 1 0 +601 1 1 0 51.3307 50.8224 40.1231 0.133071 0.0822422 -0.987688 0.490491 45 57.5 1 0 +602 1 1 0 51.3326 51.5155 40.2057 0.133256 0.151549 -0.979426 0.490491 45 57.5 1 0 +603 1 1 0 51.9834 51.9178 40.3881 0.198337 0.19178 -0.961188 0.490491 45 57.5 1 0 +604 1 1 0 51.9858 51.2273 40.2763 0.198581 0.122729 -0.97237 0.490491 45 57.5 1 0 +605 1 1 0 52.6287 51.6246 40.4894 0.262865 0.16246 -0.951057 0.490491 45 57.5 1 0 +606 1 1 0 52.6266 53.6852 41.0826 0.262661 0.368518 -0.891742 0.490491 45 57.5 1 0 +607 1 1 0 53.2252 54.0543 41.4466 0.322525 0.405434 -0.855337 0.490491 45 57.5 1 0 +608 1 1 0 52.6408 53.0126 40.8376 0.264082 0.301258 -0.916244 0.490491 45 57.5 1 0 +609 1 1 0 53.2486 53.3921 41.1716 0.324863 0.339209 -0.882837 0.490491 45 57.5 1 0 +610 1 1 0 53.8361 53.7504 41.5609 0.383614 0.375038 -0.843912 0.490491 45 57.5 1 0 +611 1 1 0 52.6415 52.3245 40.6395 0.264151 0.232455 -0.93605 0.490491 45 57.5 1 0 +612 1 1 0 53.2593 52.7063 40.9417 0.325929 0.270627 -0.905832 0.490491 45 57.5 1 0 +613 1 1 0 53.2553 52.0119 40.7612 0.32553 0.201189 -0.92388 0.490491 45 57.5 1 0 +614 1 1 0 53.8619 52.3868 41.0899 0.386187 0.238677 -0.891007 0.490491 45 57.5 1 0 +615 1 1 0 53.8591 53.0766 41.3027 0.385906 0.307659 -0.869725 0.490491 45 57.5 1 0 +616 1 1 0 54.4287 53.4285 41.7155 0.442867 0.342848 -0.828447 0.490491 45 57.5 1 0 +617 1 1 0 54.4446 52.7469 41.4736 0.444464 0.274694 -0.85264 0.490491 45 57.5 1 0 +618 1 1 0 55 53.0902 41.9098 0.5 0.309017 -0.809017 0.490491 45 57.5 1 0 +619 1 1 0 51.3257 52.8993 40.5218 0.13257 0.289929 -0.947822 0.490491 45 57.5 1 0 +620 1 1 0 51.9909 52.6155 40.5557 0.199094 0.26155 -0.944433 0.490491 45 57.5 1 0 +621 1 1 0 51.9839 53.3061 40.7732 0.198387 0.330606 -0.922682 0.490491 45 57.5 1 0 +622 1 1 0 50 49.3086 40.0239 0 -0.0691418 -0.997607 0.490491 45 57.5 1 0 +623 1 1 0 50.6674 49.5875 40.0308 0.0667412 -0.0412479 -0.996917 0.490491 45 57.5 1 0 +624 1 1 0 50 48.6205 40.0956 0 -0.137952 -0.990439 0.490491 45 57.5 1 0 +625 1 1 0 50.6671 48.8961 40.0835 0.0667095 -0.110385 -0.991648 0.490491 45 57.5 1 0 +626 1 1 0 51.3307 49.1776 40.1231 0.133071 -0.0822422 -0.987688 0.490491 45 57.5 1 0 +627 1 1 0 50 47.939 40.2147 0 -0.206103 -0.97853 0.490491 45 57.5 1 0 +628 1 1 0 50.666 48.204 40.1852 0.0666046 -0.179596 -0.981483 0.490491 45 57.5 1 0 +629 1 1 0 50 47.2673 40.3806 0 -0.273267 -0.961938 0.490491 45 57.5 1 0 +630 1 1 0 50.6657 47.5267 40.3336 0.0665668 -0.247326 -0.966643 0.490491 45 57.5 1 0 +631 1 1 0 51.3279 47.7988 40.3361 0.132792 -0.220117 -0.966393 0.490491 45 57.5 1 0 +632 1 1 0 51.3326 48.4845 40.2057 0.133256 -0.151549 -0.979426 0.490491 45 57.5 1 0 +633 1 1 0 51.9858 48.7727 40.2763 0.198581 -0.122729 -0.97237 0.490491 45 57.5 1 0 +634 1 1 0 51.9834 48.0822 40.3881 0.198337 -0.19178 -0.961188 0.490491 45 57.5 1 0 +635 1 1 0 52.6287 48.3754 40.4894 0.262865 -0.16246 -0.951057 0.490491 45 57.5 1 0 +636 1 1 0 50 46.6088 40.5926 0 -0.339122 -0.940742 0.490491 45 57.5 1 0 +637 1 1 0 50.6604 46.8322 40.538 0.0660427 -0.316778 -0.946198 0.490491 45 57.5 1 0 +638 1 1 0 50 45.9664 40.8496 0 -0.403355 -0.915043 0.490491 45 57.5 1 0 +639 1 1 0 50.6599 46.1828 40.7808 0.0659885 -0.381722 -0.921919 0.490491 45 57.5 1 0 +640 1 1 0 51.3166 46.4177 40.757 0.131656 -0.358229 -0.924305 0.490491 45 57.5 1 0 +641 1 1 0 50 45.3434 41.1503 0 -0.465657 -0.884965 0.490491 45 57.5 1 0 +642 1 1 0 50.6582 45.5463 41.0707 0.0658169 -0.445365 -0.892927 0.490491 45 57.5 1 0 +643 1 1 0 50 44.7427 41.4935 0 -0.525731 -0.850651 0.490491 45 57.5 1 0 +644 1 1 0 50.6576 44.937 41.4015 0.0657577 -0.506298 -0.859848 0.490491 45 57.5 1 0 +645 1 1 0 51.312 45.1556 41.3507 0.1312 -0.484441 -0.864929 0.490491 45 57.5 1 0 +646 1 1 0 51.3175 45.7764 41.032 0.131749 -0.422363 -0.896801 0.490491 45 57.5 1 0 +647 1 1 0 51.9641 46.0265 41.036 0.196412 -0.39735 -0.896401 0.490491 45 57.5 1 0 +648 1 1 0 51.9602 45.3973 41.3413 0.196015 -0.460266 -0.865871 0.490491 45 57.5 1 0 +649 1 1 0 52.5989 45.6611 41.3733 0.259892 -0.433888 -0.862669 0.490491 45 57.5 1 0 +650 1 1 0 52.6415 47.6755 40.6395 0.264151 -0.232455 -0.93605 0.490491 45 57.5 1 0 +651 1 1 0 53.2553 47.9881 40.7612 0.32553 -0.201189 -0.92388 0.490491 45 57.5 1 0 +652 1 1 0 52.6408 46.9874 40.8376 0.264082 -0.301258 -0.916244 0.490491 45 57.5 1 0 +653 1 1 0 53.2593 47.2937 40.9417 0.325929 -0.270627 -0.905832 0.490491 45 57.5 1 0 +654 1 1 0 53.8619 47.6132 41.0899 0.386187 -0.238677 -0.891007 0.490491 45 57.5 1 0 +655 1 1 0 52.6266 46.3148 41.0826 0.262661 -0.368518 -0.891742 0.490491 45 57.5 1 0 +656 1 1 0 53.2486 46.6079 41.1716 0.324863 -0.339209 -0.882837 0.490491 45 57.5 1 0 +657 1 1 0 53.2252 45.9457 41.4466 0.322525 -0.405434 -0.855337 0.490491 45 57.5 1 0 +658 1 1 0 53.8361 46.2496 41.5609 0.383614 -0.375038 -0.843912 0.490491 45 57.5 1 0 +659 1 1 0 53.8591 46.9234 41.3027 0.385906 -0.307659 -0.869725 0.490491 45 57.5 1 0 +660 1 1 0 54.4446 47.2531 41.4736 0.444464 -0.274694 -0.85264 0.490491 45 57.5 1 0 +661 1 1 0 54.4287 46.5715 41.7155 0.442867 -0.342848 -0.828447 0.490491 45 57.5 1 0 +662 1 1 0 55 46.9098 41.9098 0.5 -0.309017 -0.809017 0.490491 45 57.5 1 0 +663 1 1 0 51.3257 47.1007 40.5218 0.13257 -0.289929 -0.947822 0.490491 45 57.5 1 0 +664 1 1 0 51.9839 46.6939 40.7732 0.198387 -0.330606 -0.922682 0.490491 45 57.5 1 0 +665 1 1 0 51.9909 47.3845 40.5557 0.199094 -0.26155 -0.944433 0.490491 45 57.5 1 0 +666 1 1 0 55.112 52.3345 41.7285 0.511205 0.233445 -0.827147 0.490491 45 57.5 1 0 +667 1 1 0 55.5474 52.7371 42.1428 0.55474 0.273706 -0.785715 0.490491 45 57.5 1 0 +668 1 1 0 55.1926 51.5643 41.5982 0.519259 0.156434 -0.840178 0.490491 45 57.5 1 0 +669 1 1 0 55.6451 51.9727 41.985 0.564513 0.197274 -0.801504 0.490491 45 57.5 1 0 +670 1 1 0 56.0683 52.3709 42.4135 0.606825 0.237086 -0.758652 0.490491 45 57.5 1 0 +671 1 1 0 55.2411 50.7846 41.5197 0.52411 0.0784592 -0.848029 0.490491 45 57.5 1 0 +672 1 1 0 55.7114 51.1908 41.8783 0.57114 0.119078 -0.81217 0.490491 45 57.5 1 0 +673 1 1 0 55.2573 50 41.4935 0.525731 0 -0.850651 0.490491 45 57.5 1 0 +674 1 1 0 55.7446 50.4067 41.8248 0.574458 0.040675 -0.817523 0.490491 45 57.5 1 0 +675 1 1 0 56.2024 50.8114 42.198 0.620239 0.0811417 -0.780205 0.490491 45 57.5 1 0 +676 1 1 0 56.1546 51.5961 42.2816 0.615456 0.159613 -0.771841 0.490491 45 57.5 1 0 +677 1 1 0 56.5601 51.9933 42.7204 0.656006 0.199331 -0.727959 0.490491 45 57.5 1 0 +678 1 1 0 56.6284 51.2119 42.6111 0.662842 0.121192 -0.738887 0.490491 45 57.5 1 0 +679 1 1 0 57.0205 51.6062 43.0622 0.702047 0.160622 -0.69378 0.490491 45 57.5 1 0 +680 1 1 0 55.2411 49.2154 41.5197 0.52411 -0.0784592 -0.848029 0.490491 45 57.5 1 0 +681 1 1 0 55.7446 49.5933 41.8248 0.574458 -0.040675 -0.817523 0.490491 45 57.5 1 0 +682 1 1 0 55.1926 48.4357 41.5982 0.519259 -0.156434 -0.840178 0.490491 45 57.5 1 0 +683 1 1 0 55.7114 48.8092 41.8783 0.57114 -0.119078 -0.81217 0.490491 45 57.5 1 0 +684 1 1 0 56.2024 49.1886 42.198 0.620239 -0.0811417 -0.780205 0.490491 45 57.5 1 0 +685 1 1 0 55.112 47.6655 41.7285 0.511205 -0.233445 -0.827147 0.490491 45 57.5 1 0 +686 1 1 0 55.6451 48.0273 41.985 0.564513 -0.197274 -0.801504 0.490491 45 57.5 1 0 +687 1 1 0 55.5474 47.2629 42.1428 0.55474 -0.273706 -0.785715 0.490491 45 57.5 1 0 +688 1 1 0 56.0683 47.6291 42.4135 0.606825 -0.237086 -0.758652 0.490491 45 57.5 1 0 +689 1 1 0 56.1546 48.4039 42.2816 0.615456 -0.159613 -0.771841 0.490491 45 57.5 1 0 +690 1 1 0 56.6284 48.7881 42.6111 0.662842 -0.121192 -0.738887 0.490491 45 57.5 1 0 +691 1 1 0 56.5601 48.0067 42.7204 0.656006 -0.199331 -0.727959 0.490491 45 57.5 1 0 +692 1 1 0 57.0205 48.3938 43.0622 0.702047 -0.160622 -0.69378 0.490491 45 57.5 1 0 +693 1 1 0 57.0897 50.8057 42.9938 0.708969 0.0805729 -0.700622 0.490491 45 57.5 1 0 +694 1 1 0 57.4473 51.2114 43.4372 0.744727 0.121144 -0.656282 0.490491 45 57.5 1 0 +695 1 1 0 57.1128 50 42.9709 0.711282 0 -0.702907 0.490491 45 57.5 1 0 +696 1 1 0 57.4939 50.4064 43.3912 0.749387 0.0406418 -0.660883 0.490491 45 57.5 1 0 +697 1 1 0 57.8384 50.8109 43.8436 0.783843 0.081086 -0.615642 0.490491 45 57.5 1 0 +698 1 1 0 57.0897 49.1943 42.9938 0.708969 -0.0805729 -0.700622 0.490491 45 57.5 1 0 +699 1 1 0 57.4939 49.5936 43.3912 0.749387 -0.0406418 -0.660883 0.490491 45 57.5 1 0 +700 1 1 0 57.4473 48.7886 43.4372 0.744727 -0.121144 -0.656282 0.490491 45 57.5 1 0 +701 1 1 0 57.8384 49.1891 43.8436 0.783843 -0.081086 -0.615642 0.490491 45 57.5 1 0 +702 1 1 0 57.8643 50 43.8232 0.786433 0 -0.617676 0.490491 45 57.5 1 0 +703 1 1 0 58.1921 50.4064 44.2794 0.819207 0.0406403 -0.572055 0.490491 45 57.5 1 0 +704 1 1 0 58.1921 49.5936 44.2794 0.819207 -0.0406403 -0.572055 0.490491 45 57.5 1 0 +705 1 1 0 58.5065 50 44.7427 0.850651 0 -0.525731 0.490491 45 57.5 1 0 +706 1 1 0 56.2229 50 42.1721 0.622291 0 -0.782786 0.490491 45 57.5 1 0 +707 1 1 0 56.675 49.5932 42.565 0.667502 -0.0406769 -0.743496 0.490491 45 57.5 1 0 +708 1 1 0 56.675 50.4068 42.565 0.667502 0.0406769 -0.743496 0.490491 45 57.5 1 0 +709 1 1 0 51.3352 50 40.0895 0.133524 0 -0.991046 0.490491 45 57.5 1 0 +710 1 1 0 52.0037 49.5875 40.2115 0.200368 -0.0412506 -0.978852 0.490491 45 57.5 1 0 +711 1 1 0 52.6552 49.185 40.3935 0.265519 -0.081501 -0.960655 0.490491 45 57.5 1 0 +712 1 1 0 52.664 50 40.3614 0.266405 0 -0.963861 0.490491 45 57.5 1 0 +713 1 1 0 52.0037 50.4125 40.2115 0.200368 0.0412506 -0.978852 0.490491 45 57.5 1 0 +714 1 1 0 52.6552 50.815 40.3935 0.265519 0.081501 -0.960655 0.490491 45 57.5 1 0 +715 1 1 0 53.3234 48.772 40.6487 0.332342 -0.1228 -0.93513 0.490491 45 57.5 1 0 +716 1 1 0 53.9414 48.3899 40.9516 0.394136 -0.161007 -0.904839 0.490491 45 57.5 1 0 +717 1 1 0 53.9961 49.1768 40.8702 0.399607 -0.0823235 -0.912983 0.490491 45 57.5 1 0 +718 1 1 0 54.5426 48.0177 41.3147 0.454262 -0.198227 -0.868535 0.490491 45 57.5 1 0 +719 1 1 0 54.6088 48.8024 41.2066 0.460882 -0.119755 -0.879344 0.490491 45 57.5 1 0 +720 1 1 0 54.6421 49.587 41.1524 0.464213 -0.0412991 -0.88476 0.490491 45 57.5 1 0 +721 1 1 0 53.3234 51.228 40.6487 0.332342 0.1228 -0.93513 0.490491 45 57.5 1 0 +722 1 1 0 53.9961 50.8232 40.8702 0.399607 0.0823235 -0.912983 0.490491 45 57.5 1 0 +723 1 1 0 53.9414 51.6101 40.9516 0.394136 0.161007 -0.904839 0.490491 45 57.5 1 0 +724 1 1 0 54.6421 50.413 41.1524 0.464213 0.0412991 -0.88476 0.490491 45 57.5 1 0 +725 1 1 0 54.6088 51.1976 41.2066 0.460882 0.119755 -0.879344 0.490491 45 57.5 1 0 +726 1 1 0 54.5426 51.9823 41.3147 0.454262 0.198227 -0.868535 0.490491 45 57.5 1 0 +727 1 1 0 53.3414 49.587 40.5838 0.33414 -0.0413021 -0.941618 0.490491 45 57.5 1 0 +728 1 1 0 54.0097 50 40.8391 0.400968 0 -0.916092 0.490491 45 57.5 1 0 +729 1 1 0 53.3414 50.413 40.5838 0.33414 0.0413021 -0.941618 0.490491 45 57.5 1 0 +730 1 1 0 49.3424 55.063 41.4015 -0.0657577 0.506298 -0.859848 0.490491 45 57.5 1 0 +731 1 1 0 48.688 54.8444 41.3507 -0.1312 0.484441 -0.864929 0.490491 45 57.5 1 0 +732 1 1 0 49.3418 54.4537 41.0707 -0.0658169 0.445365 -0.892927 0.490491 45 57.5 1 0 +733 1 1 0 48.0398 54.6027 41.3413 -0.196015 0.460266 -0.865871 0.490491 45 57.5 1 0 +734 1 1 0 48.6825 54.2236 41.032 -0.131749 0.422363 -0.896801 0.490491 45 57.5 1 0 +735 1 1 0 47.4011 54.3389 41.3733 -0.259892 0.433888 -0.862669 0.490491 45 57.5 1 0 +736 1 1 0 48.0359 53.9735 41.036 -0.196412 0.39735 -0.896401 0.490491 45 57.5 1 0 +737 1 1 0 48.6834 53.5823 40.757 -0.131656 0.358229 -0.924305 0.490491 45 57.5 1 0 +738 1 1 0 49.3401 53.8172 40.7808 -0.0659885 0.381722 -0.921919 0.490491 45 57.5 1 0 +739 1 1 0 49.3396 53.1678 40.538 -0.0660427 0.316778 -0.946198 0.490491 45 57.5 1 0 +740 1 1 0 46.7748 54.0543 41.4466 -0.322525 0.405434 -0.855337 0.490491 45 57.5 1 0 +741 1 1 0 47.3734 53.6852 41.0826 -0.262661 0.368518 -0.891742 0.490491 45 57.5 1 0 +742 1 1 0 46.1639 53.7504 41.5609 -0.383614 0.375038 -0.843912 0.490491 45 57.5 1 0 +743 1 1 0 46.7514 53.3921 41.1716 -0.324863 0.339209 -0.882837 0.490491 45 57.5 1 0 +744 1 1 0 47.3592 53.0126 40.8376 -0.264082 0.301258 -0.916244 0.490491 45 57.5 1 0 +745 1 1 0 45.5713 53.4285 41.7155 -0.442867 0.342848 -0.828447 0.490491 45 57.5 1 0 +746 1 1 0 46.1409 53.0766 41.3027 -0.385906 0.307659 -0.869725 0.490491 45 57.5 1 0 +747 1 1 0 45 53.0902 41.9098 -0.5 0.309017 -0.809017 0.490491 45 57.5 1 0 +748 1 1 0 45.5554 52.7469 41.4736 -0.444464 0.274694 -0.85264 0.490491 45 57.5 1 0 +749 1 1 0 46.1381 52.3868 41.0899 -0.386187 0.238677 -0.891007 0.490491 45 57.5 1 0 +750 1 1 0 46.7407 52.7063 40.9417 -0.325929 0.270627 -0.905832 0.490491 45 57.5 1 0 +751 1 1 0 47.3585 52.3245 40.6395 -0.264151 0.232455 -0.93605 0.490491 45 57.5 1 0 +752 1 1 0 46.7447 52.0119 40.7612 -0.32553 0.201189 -0.92388 0.490491 45 57.5 1 0 +753 1 1 0 47.3713 51.6246 40.4894 -0.262865 0.16246 -0.951057 0.490491 45 57.5 1 0 +754 1 1 0 49.3343 52.4733 40.3336 -0.0665668 0.247326 -0.966643 0.490491 45 57.5 1 0 +755 1 1 0 48.6721 52.2012 40.3361 -0.132792 0.220117 -0.966393 0.490491 45 57.5 1 0 +756 1 1 0 49.334 51.796 40.1852 -0.0666046 0.179596 -0.981483 0.490491 45 57.5 1 0 +757 1 1 0 48.0166 51.9178 40.3881 -0.198337 0.19178 -0.961188 0.490491 45 57.5 1 0 +758 1 1 0 48.6674 51.5155 40.2057 -0.133256 0.151549 -0.979426 0.490491 45 57.5 1 0 +759 1 1 0 48.0142 51.2273 40.2763 -0.198581 0.122729 -0.97237 0.490491 45 57.5 1 0 +760 1 1 0 48.6693 50.8224 40.1231 -0.133071 0.0822422 -0.987688 0.490491 45 57.5 1 0 +761 1 1 0 49.3329 51.1039 40.0835 -0.0667095 0.110385 -0.991648 0.490491 45 57.5 1 0 +762 1 1 0 49.3326 50.4125 40.0308 -0.0667412 0.0412479 -0.996917 0.490491 45 57.5 1 0 +763 1 1 0 48.0161 53.3061 40.7732 -0.198387 0.330606 -0.922682 0.490491 45 57.5 1 0 +764 1 1 0 48.0091 52.6155 40.5557 -0.199094 0.26155 -0.944433 0.490491 45 57.5 1 0 +765 1 1 0 48.6743 52.8993 40.5218 -0.13257 0.289929 -0.947822 0.490491 45 57.5 1 0 +766 1 1 0 44.4526 52.7371 42.1428 -0.55474 0.273706 -0.785715 0.490491 45 57.5 1 0 +767 1 1 0 44.888 52.3345 41.7285 -0.511205 0.233445 -0.827147 0.490491 45 57.5 1 0 +768 1 1 0 43.9317 52.3709 42.4135 -0.606825 0.237086 -0.758652 0.490491 45 57.5 1 0 +769 1 1 0 44.3549 51.9727 41.985 -0.564513 0.197274 -0.801504 0.490491 45 57.5 1 0 +770 1 1 0 44.8074 51.5643 41.5982 -0.519259 0.156434 -0.840178 0.490491 45 57.5 1 0 +771 1 1 0 43.4399 51.9933 42.7204 -0.656006 0.199331 -0.727959 0.490491 45 57.5 1 0 +772 1 1 0 43.8454 51.5961 42.2816 -0.615456 0.159613 -0.771841 0.490491 45 57.5 1 0 +773 1 1 0 42.9795 51.6062 43.0622 -0.702047 0.160622 -0.69378 0.490491 45 57.5 1 0 +774 1 1 0 43.3716 51.2119 42.6111 -0.662842 0.121192 -0.738887 0.490491 45 57.5 1 0 +775 1 1 0 43.7976 50.8114 42.198 -0.620239 0.0811417 -0.780205 0.490491 45 57.5 1 0 +776 1 1 0 44.2886 51.1908 41.8783 -0.57114 0.119078 -0.81217 0.490491 45 57.5 1 0 +777 1 1 0 44.7589 50.7846 41.5197 -0.52411 0.0784592 -0.848029 0.490491 45 57.5 1 0 +778 1 1 0 44.2554 50.4067 41.8248 -0.574458 0.040675 -0.817523 0.490491 45 57.5 1 0 +779 1 1 0 44.7427 50 41.4935 -0.525731 0 -0.850651 0.490491 45 57.5 1 0 +780 1 1 0 42.5527 51.2114 43.4372 -0.744727 0.121144 -0.656282 0.490491 45 57.5 1 0 +781 1 1 0 42.9103 50.8057 42.9938 -0.708969 0.0805729 -0.700622 0.490491 45 57.5 1 0 +782 1 1 0 42.1616 50.8109 43.8436 -0.783843 0.081086 -0.615642 0.490491 45 57.5 1 0 +783 1 1 0 42.5061 50.4064 43.3912 -0.749387 0.0406418 -0.660883 0.490491 45 57.5 1 0 +784 1 1 0 42.8872 50 42.9709 -0.711282 0 -0.702907 0.490491 45 57.5 1 0 +785 1 1 0 41.8079 50.4064 44.2794 -0.819207 0.0406403 -0.572055 0.490491 45 57.5 1 0 +786 1 1 0 42.1357 50 43.8232 -0.786433 0 -0.617676 0.490491 45 57.5 1 0 +787 1 1 0 41.4935 50 44.7427 -0.850651 0 -0.525731 0.490491 45 57.5 1 0 +788 1 1 0 41.8079 49.5936 44.2794 -0.819207 -0.0406403 -0.572055 0.490491 45 57.5 1 0 +789 1 1 0 42.1616 49.1891 43.8436 -0.783843 -0.081086 -0.615642 0.490491 45 57.5 1 0 +790 1 1 0 42.5061 49.5936 43.3912 -0.749387 -0.0406418 -0.660883 0.490491 45 57.5 1 0 +791 1 1 0 42.9103 49.1943 42.9938 -0.708969 -0.0805729 -0.700622 0.490491 45 57.5 1 0 +792 1 1 0 42.5527 48.7886 43.4372 -0.744727 -0.121144 -0.656282 0.490491 45 57.5 1 0 +793 1 1 0 42.9795 48.3938 43.0622 -0.702047 -0.160622 -0.69378 0.490491 45 57.5 1 0 +794 1 1 0 44.2554 49.5933 41.8248 -0.574458 -0.040675 -0.817523 0.490491 45 57.5 1 0 +795 1 1 0 44.7589 49.2154 41.5197 -0.52411 -0.0784592 -0.848029 0.490491 45 57.5 1 0 +796 1 1 0 43.7976 49.1886 42.198 -0.620239 -0.0811417 -0.780205 0.490491 45 57.5 1 0 +797 1 1 0 44.2886 48.8092 41.8783 -0.57114 -0.119078 -0.81217 0.490491 45 57.5 1 0 +798 1 1 0 44.8074 48.4357 41.5982 -0.519259 -0.156434 -0.840178 0.490491 45 57.5 1 0 +799 1 1 0 43.3716 48.7881 42.6111 -0.662842 -0.121192 -0.738887 0.490491 45 57.5 1 0 +800 1 1 0 43.8454 48.4039 42.2816 -0.615456 -0.159613 -0.771841 0.490491 45 57.5 1 0 +801 1 1 0 43.4399 48.0067 42.7204 -0.656006 -0.199331 -0.727959 0.490491 45 57.5 1 0 +802 1 1 0 43.9317 47.6291 42.4135 -0.606825 -0.237086 -0.758652 0.490491 45 57.5 1 0 +803 1 1 0 44.3549 48.0273 41.985 -0.564513 -0.197274 -0.801504 0.490491 45 57.5 1 0 +804 1 1 0 44.888 47.6655 41.7285 -0.511205 -0.233445 -0.827147 0.490491 45 57.5 1 0 +805 1 1 0 44.4526 47.2629 42.1428 -0.55474 -0.273706 -0.785715 0.490491 45 57.5 1 0 +806 1 1 0 45 46.9098 41.9098 -0.5 -0.309017 -0.809017 0.490491 45 57.5 1 0 +807 1 1 0 43.325 50.4068 42.565 -0.667502 0.0406769 -0.743496 0.490491 45 57.5 1 0 +808 1 1 0 43.325 49.5932 42.565 -0.667502 -0.0406769 -0.743496 0.490491 45 57.5 1 0 +809 1 1 0 43.7771 50 42.1721 -0.622291 0 -0.782786 0.490491 45 57.5 1 0 +810 1 1 0 49.3326 49.5875 40.0308 -0.0667412 -0.0412479 -0.996917 0.490491 45 57.5 1 0 +811 1 1 0 48.6693 49.1776 40.1231 -0.133071 -0.0822422 -0.987688 0.490491 45 57.5 1 0 +812 1 1 0 49.3329 48.8961 40.0835 -0.0667095 -0.110385 -0.991648 0.490491 45 57.5 1 0 +813 1 1 0 48.0142 48.7727 40.2763 -0.198581 -0.122729 -0.97237 0.490491 45 57.5 1 0 +814 1 1 0 48.6674 48.4845 40.2057 -0.133256 -0.151549 -0.979426 0.490491 45 57.5 1 0 +815 1 1 0 47.3713 48.3754 40.4894 -0.262865 -0.16246 -0.951057 0.490491 45 57.5 1 0 +816 1 1 0 48.0166 48.0822 40.3881 -0.198337 -0.19178 -0.961188 0.490491 45 57.5 1 0 +817 1 1 0 48.6721 47.7988 40.3361 -0.132792 -0.220117 -0.966393 0.490491 45 57.5 1 0 +818 1 1 0 49.334 48.204 40.1852 -0.0666046 -0.179596 -0.981483 0.490491 45 57.5 1 0 +819 1 1 0 49.3343 47.5267 40.3336 -0.0665668 -0.247326 -0.966643 0.490491 45 57.5 1 0 +820 1 1 0 46.7447 47.9881 40.7612 -0.32553 -0.201189 -0.92388 0.490491 45 57.5 1 0 +821 1 1 0 47.3585 47.6755 40.6395 -0.264151 -0.232455 -0.93605 0.490491 45 57.5 1 0 +822 1 1 0 46.1381 47.6132 41.0899 -0.386187 -0.238677 -0.891007 0.490491 45 57.5 1 0 +823 1 1 0 46.7407 47.2937 40.9417 -0.325929 -0.270627 -0.905832 0.490491 45 57.5 1 0 +824 1 1 0 47.3592 46.9874 40.8376 -0.264082 -0.301258 -0.916244 0.490491 45 57.5 1 0 +825 1 1 0 45.5554 47.2531 41.4736 -0.444464 -0.274694 -0.85264 0.490491 45 57.5 1 0 +826 1 1 0 46.1409 46.9234 41.3027 -0.385906 -0.307659 -0.869725 0.490491 45 57.5 1 0 +827 1 1 0 45.5713 46.5715 41.7155 -0.442867 -0.342848 -0.828447 0.490491 45 57.5 1 0 +828 1 1 0 46.1639 46.2496 41.5609 -0.383614 -0.375038 -0.843912 0.490491 45 57.5 1 0 +829 1 1 0 46.7514 46.6079 41.1716 -0.324863 -0.339209 -0.882837 0.490491 45 57.5 1 0 +830 1 1 0 47.3734 46.3148 41.0826 -0.262661 -0.368518 -0.891742 0.490491 45 57.5 1 0 +831 1 1 0 46.7748 45.9457 41.4466 -0.322525 -0.405434 -0.855337 0.490491 45 57.5 1 0 +832 1 1 0 47.4011 45.6611 41.3733 -0.259892 -0.433888 -0.862669 0.490491 45 57.5 1 0 +833 1 1 0 49.3396 46.8322 40.538 -0.0660427 -0.316778 -0.946198 0.490491 45 57.5 1 0 +834 1 1 0 48.6834 46.4177 40.757 -0.131656 -0.358229 -0.924305 0.490491 45 57.5 1 0 +835 1 1 0 49.3401 46.1828 40.7808 -0.0659885 -0.381722 -0.921919 0.490491 45 57.5 1 0 +836 1 1 0 48.0359 46.0265 41.036 -0.196412 -0.39735 -0.896401 0.490491 45 57.5 1 0 +837 1 1 0 48.6825 45.7764 41.032 -0.131749 -0.422363 -0.896801 0.490491 45 57.5 1 0 +838 1 1 0 48.0398 45.3973 41.3413 -0.196015 -0.460266 -0.865871 0.490491 45 57.5 1 0 +839 1 1 0 48.688 45.1556 41.3507 -0.1312 -0.484441 -0.864929 0.490491 45 57.5 1 0 +840 1 1 0 49.3418 45.5463 41.0707 -0.0658169 -0.445365 -0.892927 0.490491 45 57.5 1 0 +841 1 1 0 49.3424 44.937 41.4015 -0.0657577 -0.506298 -0.859848 0.490491 45 57.5 1 0 +842 1 1 0 48.0091 47.3845 40.5557 -0.199094 -0.26155 -0.944433 0.490491 45 57.5 1 0 +843 1 1 0 48.0161 46.6939 40.7732 -0.198387 -0.330606 -0.922682 0.490491 45 57.5 1 0 +844 1 1 0 48.6743 47.1007 40.5218 -0.13257 -0.289929 -0.947822 0.490491 45 57.5 1 0 +845 1 1 0 45.4574 51.9823 41.3147 -0.454262 0.198227 -0.868535 0.490491 45 57.5 1 0 +846 1 1 0 45.3912 51.1976 41.2066 -0.460882 0.119755 -0.879344 0.490491 45 57.5 1 0 +847 1 1 0 45.3579 50.413 41.1524 -0.464213 0.0412991 -0.88476 0.490491 45 57.5 1 0 +848 1 1 0 46.0039 50.8232 40.8702 -0.399607 0.0823235 -0.912983 0.490491 45 57.5 1 0 +849 1 1 0 46.0586 51.6101 40.9516 -0.394136 0.161007 -0.904839 0.490491 45 57.5 1 0 +850 1 1 0 46.6766 51.228 40.6487 -0.332342 0.1228 -0.93513 0.490491 45 57.5 1 0 +851 1 1 0 45.3579 49.587 41.1524 -0.464213 -0.0412991 -0.88476 0.490491 45 57.5 1 0 +852 1 1 0 45.3912 48.8024 41.2066 -0.460882 -0.119755 -0.879344 0.490491 45 57.5 1 0 +853 1 1 0 46.0039 49.1768 40.8702 -0.399607 -0.0823235 -0.912983 0.490491 45 57.5 1 0 +854 1 1 0 45.4574 48.0177 41.3147 -0.454262 -0.198227 -0.868535 0.490491 45 57.5 1 0 +855 1 1 0 46.0586 48.3899 40.9516 -0.394136 -0.161007 -0.904839 0.490491 45 57.5 1 0 +856 1 1 0 46.6766 48.772 40.6487 -0.332342 -0.1228 -0.93513 0.490491 45 57.5 1 0 +857 1 1 0 47.3448 50.815 40.3935 -0.265519 0.081501 -0.960655 0.490491 45 57.5 1 0 +858 1 1 0 47.336 50 40.3614 -0.266405 0 -0.963861 0.490491 45 57.5 1 0 +859 1 1 0 47.9963 50.4125 40.2115 -0.200368 0.0412506 -0.978852 0.490491 45 57.5 1 0 +860 1 1 0 47.3448 49.185 40.3935 -0.265519 -0.081501 -0.960655 0.490491 45 57.5 1 0 +861 1 1 0 47.9963 49.5875 40.2115 -0.200368 -0.0412506 -0.978852 0.490491 45 57.5 1 0 +862 1 1 0 48.6648 50 40.0895 -0.133524 0 -0.991046 0.490491 45 57.5 1 0 +863 1 1 0 45.9903 50 40.8391 -0.400968 0 -0.916092 0.490491 45 57.5 1 0 +864 1 1 0 46.6586 49.587 40.5838 -0.33414 -0.0413021 -0.941618 0.490491 45 57.5 1 0 +865 1 1 0 46.6586 50.413 40.5838 -0.33414 0.0413021 -0.941618 0.490491 45 57.5 1 0 +866 1 1 0 50.4064 44.2794 58.1921 0.0406403 -0.572055 0.819208 0.490491 45 57.5 1 0 +867 1 1 0 49.5936 44.2794 58.1921 -0.0406403 -0.572055 0.819208 0.490491 45 57.5 1 0 +868 1 1 0 50.8109 43.8436 57.8384 0.081086 -0.615642 0.783843 0.490491 45 57.5 1 0 +869 1 1 0 50 43.8232 57.8643 0 -0.617676 0.786433 0.490491 45 57.5 1 0 +870 1 1 0 49.1891 43.8436 57.8384 -0.081086 -0.615642 0.783843 0.490491 45 57.5 1 0 +871 1 1 0 51.2114 43.4372 57.4473 0.121144 -0.656282 0.744727 0.490491 45 57.5 1 0 +872 1 1 0 50.4064 43.3912 57.4939 0.0406418 -0.660883 0.749387 0.490491 45 57.5 1 0 +873 1 1 0 51.6062 43.0622 57.0205 0.160622 -0.69378 0.702047 0.490491 45 57.5 1 0 +874 1 1 0 50.8057 42.9938 57.0897 0.0805729 -0.700622 0.708969 0.490491 45 57.5 1 0 +875 1 1 0 50 42.9709 57.1128 0 -0.702907 0.711282 0.490491 45 57.5 1 0 +876 1 1 0 49.5936 43.3912 57.4939 -0.0406418 -0.660883 0.749387 0.490491 45 57.5 1 0 +877 1 1 0 48.7886 43.4372 57.4473 -0.121144 -0.656282 0.744727 0.490491 45 57.5 1 0 +878 1 1 0 49.1943 42.9938 57.0897 -0.0805729 -0.700622 0.708969 0.490491 45 57.5 1 0 +879 1 1 0 48.3938 43.0622 57.0205 -0.160622 -0.69378 0.702047 0.490491 45 57.5 1 0 +880 1 1 0 51.9933 42.7204 56.5601 0.199331 -0.727959 0.656006 0.490491 45 57.5 1 0 +881 1 1 0 51.2119 42.6111 56.6284 0.121192 -0.738887 0.662842 0.490491 45 57.5 1 0 +882 1 1 0 52.3709 42.4135 56.0683 0.237086 -0.758652 0.606825 0.490491 45 57.5 1 0 +883 1 1 0 51.5961 42.2816 56.1546 0.159613 -0.771841 0.615456 0.490491 45 57.5 1 0 +884 1 1 0 50.8114 42.198 56.2024 0.0811417 -0.780205 0.620239 0.490491 45 57.5 1 0 +885 1 1 0 52.7371 42.1428 55.5474 0.273706 -0.785715 0.55474 0.490491 45 57.5 1 0 +886 1 1 0 51.9727 41.985 55.6451 0.197274 -0.801504 0.564513 0.490491 45 57.5 1 0 +887 1 1 0 53.0902 41.9098 55 0.309017 -0.809017 0.5 0.490491 45 57.5 1 0 +888 1 1 0 52.3345 41.7285 55.112 0.233445 -0.827147 0.511205 0.490491 45 57.5 1 0 +889 1 1 0 51.5643 41.5982 55.1926 0.156434 -0.840178 0.519259 0.490491 45 57.5 1 0 +890 1 1 0 51.1908 41.8783 55.7114 0.119078 -0.81217 0.57114 0.490491 45 57.5 1 0 +891 1 1 0 50.4067 41.8248 55.7446 0.040675 -0.817523 0.574458 0.490491 45 57.5 1 0 +892 1 1 0 50.7846 41.5197 55.2411 0.0784592 -0.848029 0.52411 0.490491 45 57.5 1 0 +893 1 1 0 50 41.4935 55.2573 0 -0.850651 0.525731 0.490491 45 57.5 1 0 +894 1 1 0 48.7881 42.6111 56.6284 -0.121192 -0.738887 0.662842 0.490491 45 57.5 1 0 +895 1 1 0 48.0067 42.7204 56.5601 -0.199331 -0.727959 0.656006 0.490491 45 57.5 1 0 +896 1 1 0 49.1886 42.198 56.2024 -0.0811417 -0.780205 0.620239 0.490491 45 57.5 1 0 +897 1 1 0 48.4039 42.2816 56.1546 -0.159613 -0.771841 0.615456 0.490491 45 57.5 1 0 +898 1 1 0 47.6291 42.4135 56.0683 -0.237086 -0.758652 0.606825 0.490491 45 57.5 1 0 +899 1 1 0 49.5933 41.8248 55.7446 -0.040675 -0.817523 0.574458 0.490491 45 57.5 1 0 +900 1 1 0 48.8092 41.8783 55.7114 -0.119078 -0.81217 0.57114 0.490491 45 57.5 1 0 +901 1 1 0 49.2154 41.5197 55.2411 -0.0784592 -0.848029 0.52411 0.490491 45 57.5 1 0 +902 1 1 0 48.4357 41.5982 55.1926 -0.156434 -0.840178 0.519259 0.490491 45 57.5 1 0 +903 1 1 0 48.0273 41.985 55.6451 -0.197274 -0.801504 0.564513 0.490491 45 57.5 1 0 +904 1 1 0 47.2629 42.1428 55.5474 -0.273706 -0.785715 0.55474 0.490491 45 57.5 1 0 +905 1 1 0 47.6655 41.7285 55.112 -0.233445 -0.827147 0.511205 0.490491 45 57.5 1 0 +906 1 1 0 46.9098 41.9098 55 -0.309017 -0.809017 0.5 0.490491 45 57.5 1 0 +907 1 1 0 50.4068 42.565 56.675 0.0406769 -0.743496 0.667502 0.490491 45 57.5 1 0 +908 1 1 0 50 42.1721 56.2229 0 -0.782786 0.622291 0.490491 45 57.5 1 0 +909 1 1 0 49.5932 42.565 56.675 -0.0406769 -0.743496 0.667502 0.490491 45 57.5 1 0 +910 1 1 0 53.4285 41.7155 54.4287 0.342848 -0.828447 0.442867 0.490491 45 57.5 1 0 +911 1 1 0 52.7469 41.4736 54.4446 0.274694 -0.85264 0.444464 0.490491 45 57.5 1 0 +912 1 1 0 53.7504 41.5609 53.8361 0.375038 -0.843912 0.383614 0.490491 45 57.5 1 0 +913 1 1 0 53.0766 41.3027 53.8591 0.307659 -0.869725 0.385906 0.490491 45 57.5 1 0 +914 1 1 0 52.3868 41.0899 53.8619 0.238677 -0.891007 0.386187 0.490491 45 57.5 1 0 +915 1 1 0 54.0543 41.4466 53.2252 0.405434 -0.855337 0.322525 0.490491 45 57.5 1 0 +916 1 1 0 53.3921 41.1716 53.2486 0.339209 -0.882837 0.324863 0.490491 45 57.5 1 0 +917 1 1 0 54.3389 41.3733 52.5989 0.433888 -0.862669 0.259892 0.490491 45 57.5 1 0 +918 1 1 0 53.6852 41.0826 52.6266 0.368518 -0.891742 0.262661 0.490491 45 57.5 1 0 +919 1 1 0 53.0126 40.8376 52.6408 0.301258 -0.916244 0.264082 0.490491 45 57.5 1 0 +920 1 1 0 52.7063 40.9417 53.2593 0.270627 -0.905832 0.325929 0.490491 45 57.5 1 0 +921 1 1 0 52.0119 40.7612 53.2553 0.201189 -0.92388 0.32553 0.490491 45 57.5 1 0 +922 1 1 0 52.3245 40.6395 52.6415 0.232455 -0.93605 0.264151 0.490491 45 57.5 1 0 +923 1 1 0 51.6246 40.4894 52.6287 0.16246 -0.951057 0.262865 0.490491 45 57.5 1 0 +924 1 1 0 54.6027 41.3413 51.9602 0.460266 -0.865871 0.196015 0.490491 45 57.5 1 0 +925 1 1 0 53.9735 41.036 51.9641 0.39735 -0.896401 0.196412 0.490491 45 57.5 1 0 +926 1 1 0 54.8444 41.3507 51.312 0.484441 -0.864929 0.1312 0.490491 45 57.5 1 0 +927 1 1 0 54.2236 41.032 51.3175 0.422363 -0.896801 0.131749 0.490491 45 57.5 1 0 +928 1 1 0 53.5823 40.757 51.3166 0.358229 -0.924305 0.131656 0.490491 45 57.5 1 0 +929 1 1 0 55.063 41.4015 50.6576 0.506298 -0.859848 0.0657577 0.490491 45 57.5 1 0 +930 1 1 0 54.4537 41.0707 50.6582 0.445365 -0.892927 0.0658169 0.490491 45 57.5 1 0 +931 1 1 0 55.2573 41.4935 50 0.525731 -0.850651 0 0.490491 45 57.5 1 0 +932 1 1 0 54.6566 41.1503 50 0.465657 -0.884965 0 0.490491 45 57.5 1 0 +933 1 1 0 54.0336 40.8496 50 0.403355 -0.915043 0 0.490491 45 57.5 1 0 +934 1 1 0 53.8172 40.7808 50.6599 0.381722 -0.921919 0.0659886 0.490491 45 57.5 1 0 +935 1 1 0 53.1678 40.538 50.6604 0.316778 -0.946198 0.0660427 0.490491 45 57.5 1 0 +936 1 1 0 53.3912 40.5926 50 0.339122 -0.940742 0 0.490491 45 57.5 1 0 +937 1 1 0 52.7327 40.3806 50 0.273267 -0.961938 0 0.490491 45 57.5 1 0 +938 1 1 0 51.9178 40.3881 51.9834 0.19178 -0.961188 0.198337 0.490491 45 57.5 1 0 +939 1 1 0 51.2273 40.2763 51.9858 0.122729 -0.97237 0.198581 0.490491 45 57.5 1 0 +940 1 1 0 52.2012 40.3361 51.3279 0.220117 -0.966393 0.132792 0.490491 45 57.5 1 0 +941 1 1 0 51.5155 40.2057 51.3326 0.151549 -0.979426 0.133256 0.490491 45 57.5 1 0 +942 1 1 0 50.8224 40.1231 51.3307 0.0822422 -0.987688 0.133071 0.490491 45 57.5 1 0 +943 1 1 0 52.4733 40.3336 50.6657 0.247326 -0.966643 0.0665668 0.490491 45 57.5 1 0 +944 1 1 0 51.796 40.1852 50.666 0.179596 -0.981483 0.0666046 0.490491 45 57.5 1 0 +945 1 1 0 52.061 40.2147 50 0.206103 -0.97853 0 0.490491 45 57.5 1 0 +946 1 1 0 51.3795 40.0956 50 0.137952 -0.990439 0 0.490491 45 57.5 1 0 +947 1 1 0 51.1039 40.0835 50.6671 0.110385 -0.991648 0.0667095 0.490491 45 57.5 1 0 +948 1 1 0 50.4125 40.0308 50.6674 0.0412479 -0.996917 0.0667412 0.490491 45 57.5 1 0 +949 1 1 0 50.6914 40.0239 50 0.0691418 -0.997607 0 0.490491 45 57.5 1 0 +950 1 1 0 50 40 50 0 -1 0 0.490491 45 57.5 1 0 +951 1 1 0 53.3061 40.7732 51.9839 0.330606 -0.922682 0.198387 0.490491 45 57.5 1 0 +952 1 1 0 52.8993 40.5218 51.3257 0.289929 -0.947822 0.13257 0.490491 45 57.5 1 0 +953 1 1 0 52.6155 40.5557 51.9909 0.26155 -0.944433 0.199094 0.490491 45 57.5 1 0 +954 1 1 0 47.2531 41.4736 54.4446 -0.274694 -0.85264 0.444464 0.490491 45 57.5 1 0 +955 1 1 0 46.5715 41.7155 54.4287 -0.342848 -0.828447 0.442867 0.490491 45 57.5 1 0 +956 1 1 0 47.6132 41.0899 53.8619 -0.238677 -0.891007 0.386187 0.490491 45 57.5 1 0 +957 1 1 0 46.9234 41.3027 53.8591 -0.307659 -0.869725 0.385906 0.490491 45 57.5 1 0 +958 1 1 0 46.2496 41.5609 53.8361 -0.375038 -0.843912 0.383614 0.490491 45 57.5 1 0 +959 1 1 0 47.9881 40.7612 53.2553 -0.201189 -0.92388 0.32553 0.490491 45 57.5 1 0 +960 1 1 0 47.2937 40.9417 53.2593 -0.270627 -0.905832 0.325929 0.490491 45 57.5 1 0 +961 1 1 0 48.3754 40.4894 52.6287 -0.16246 -0.951057 0.262865 0.490491 45 57.5 1 0 +962 1 1 0 47.6755 40.6395 52.6415 -0.232455 -0.93605 0.264151 0.490491 45 57.5 1 0 +963 1 1 0 46.9874 40.8376 52.6408 -0.301258 -0.916244 0.264082 0.490491 45 57.5 1 0 +964 1 1 0 46.6079 41.1716 53.2486 -0.339209 -0.882837 0.324863 0.490491 45 57.5 1 0 +965 1 1 0 45.9457 41.4466 53.2252 -0.405434 -0.855337 0.322525 0.490491 45 57.5 1 0 +966 1 1 0 46.3148 41.0826 52.6266 -0.368518 -0.891742 0.262661 0.490491 45 57.5 1 0 +967 1 1 0 45.6611 41.3733 52.5989 -0.433888 -0.862669 0.259892 0.490491 45 57.5 1 0 +968 1 1 0 48.7727 40.2763 51.9858 -0.122729 -0.97237 0.198581 0.490491 45 57.5 1 0 +969 1 1 0 48.0822 40.3881 51.9834 -0.19178 -0.961188 0.198337 0.490491 45 57.5 1 0 +970 1 1 0 49.1776 40.1231 51.3307 -0.0822422 -0.987688 0.133071 0.490491 45 57.5 1 0 +971 1 1 0 48.4845 40.2057 51.3326 -0.151549 -0.979426 0.133256 0.490491 45 57.5 1 0 +972 1 1 0 47.7988 40.3361 51.3279 -0.220117 -0.966393 0.132792 0.490491 45 57.5 1 0 +973 1 1 0 49.5875 40.0308 50.6674 -0.0412479 -0.996917 0.0667412 0.490491 45 57.5 1 0 +974 1 1 0 48.8961 40.0835 50.6671 -0.110385 -0.991648 0.0667095 0.490491 45 57.5 1 0 +975 1 1 0 49.3086 40.0239 50 -0.0691418 -0.997607 0 0.490491 45 57.5 1 0 +976 1 1 0 48.6205 40.0956 50 -0.137952 -0.990439 0 0.490491 45 57.5 1 0 +977 1 1 0 48.204 40.1852 50.666 -0.179596 -0.981483 0.0666046 0.490491 45 57.5 1 0 +978 1 1 0 47.5267 40.3336 50.6657 -0.247326 -0.966643 0.0665668 0.490491 45 57.5 1 0 +979 1 1 0 47.939 40.2147 50 -0.206103 -0.97853 0 0.490491 45 57.5 1 0 +980 1 1 0 47.2673 40.3806 50 -0.273267 -0.961938 0 0.490491 45 57.5 1 0 +981 1 1 0 46.0265 41.036 51.9641 -0.39735 -0.896401 0.196412 0.490491 45 57.5 1 0 +982 1 1 0 45.3973 41.3413 51.9602 -0.460266 -0.865871 0.196015 0.490491 45 57.5 1 0 +983 1 1 0 46.4177 40.757 51.3166 -0.358229 -0.924305 0.131656 0.490491 45 57.5 1 0 +984 1 1 0 45.7764 41.032 51.3175 -0.422363 -0.896801 0.131749 0.490491 45 57.5 1 0 +985 1 1 0 45.1556 41.3507 51.312 -0.484441 -0.864929 0.1312 0.490491 45 57.5 1 0 +986 1 1 0 46.8322 40.538 50.6604 -0.316778 -0.946198 0.0660427 0.490491 45 57.5 1 0 +987 1 1 0 46.1828 40.7808 50.6599 -0.381722 -0.921919 0.0659886 0.490491 45 57.5 1 0 +988 1 1 0 46.6088 40.5926 50 -0.339122 -0.940742 0 0.490491 45 57.5 1 0 +989 1 1 0 45.9664 40.8496 50 -0.403355 -0.915043 0 0.490491 45 57.5 1 0 +990 1 1 0 45.5463 41.0707 50.6582 -0.445365 -0.892927 0.0658169 0.490491 45 57.5 1 0 +991 1 1 0 44.937 41.4015 50.6576 -0.506298 -0.859848 0.0657577 0.490491 45 57.5 1 0 +992 1 1 0 45.3434 41.1503 50 -0.465657 -0.884965 0 0.490491 45 57.5 1 0 +993 1 1 0 44.7427 41.4935 50 -0.525731 -0.850651 0 0.490491 45 57.5 1 0 +994 1 1 0 47.3845 40.5557 51.9909 -0.26155 -0.944433 0.199094 0.490491 45 57.5 1 0 +995 1 1 0 47.1007 40.5218 51.3257 -0.289929 -0.947822 0.13257 0.490491 45 57.5 1 0 +996 1 1 0 46.6939 40.7732 51.9839 -0.330606 -0.922682 0.198387 0.490491 45 57.5 1 0 +997 1 1 0 51.9823 41.3147 54.5426 0.198227 -0.868535 0.454262 0.490491 45 57.5 1 0 +998 1 1 0 51.6101 40.9516 53.9414 0.161007 -0.904839 0.394136 0.490491 45 57.5 1 0 +999 1 1 0 51.228 40.6487 53.3234 0.1228 -0.93513 0.332342 0.490491 45 57.5 1 0 +1000 1 1 0 50.8232 40.8702 53.9961 0.0823235 -0.912983 0.399607 0.490491 45 57.5 1 0 +1001 1 1 0 51.1976 41.2066 54.6088 0.119755 -0.879344 0.460882 0.490491 45 57.5 1 0 +1002 1 1 0 50.413 41.1524 54.6421 0.0412991 -0.88476 0.464213 0.490491 45 57.5 1 0 +1003 1 1 0 50.815 40.3935 52.6552 0.081501 -0.960655 0.265519 0.490491 45 57.5 1 0 +1004 1 1 0 50.4125 40.2115 52.0037 0.0412506 -0.978852 0.200368 0.490491 45 57.5 1 0 +1005 1 1 0 50 40.3614 52.664 0 -0.963861 0.266405 0.490491 45 57.5 1 0 +1006 1 1 0 50 40.0895 51.3352 0 -0.991046 0.133524 0.490491 45 57.5 1 0 +1007 1 1 0 49.5875 40.2115 52.0037 -0.0412506 -0.978852 0.200368 0.490491 45 57.5 1 0 +1008 1 1 0 49.185 40.3935 52.6552 -0.081501 -0.960655 0.265519 0.490491 45 57.5 1 0 +1009 1 1 0 49.587 41.1524 54.6421 -0.0412991 -0.88476 0.464213 0.490491 45 57.5 1 0 +1010 1 1 0 49.1768 40.8702 53.9961 -0.0823235 -0.912983 0.399607 0.490491 45 57.5 1 0 +1011 1 1 0 48.8024 41.2066 54.6088 -0.119755 -0.879344 0.460882 0.490491 45 57.5 1 0 +1012 1 1 0 48.772 40.6487 53.3234 -0.1228 -0.93513 0.332342 0.490491 45 57.5 1 0 +1013 1 1 0 48.3899 40.9516 53.9414 -0.161007 -0.904839 0.394136 0.490491 45 57.5 1 0 +1014 1 1 0 48.0177 41.3147 54.5426 -0.198227 -0.868535 0.454262 0.490491 45 57.5 1 0 +1015 1 1 0 50.413 40.5838 53.3414 0.0413021 -0.941618 0.33414 0.490491 45 57.5 1 0 +1016 1 1 0 49.587 40.5838 53.3414 -0.0413021 -0.941618 0.33414 0.490491 45 57.5 1 0 +1017 1 1 0 50 40.8391 54.0097 0 -0.916092 0.400968 0.490491 45 57.5 1 0 +1018 1 1 0 49.5936 44.2794 41.8079 -0.0406403 -0.572055 -0.819208 0.490491 45 57.5 1 0 +1019 1 1 0 50.4064 44.2794 41.8079 0.0406403 -0.572055 -0.819208 0.490491 45 57.5 1 0 +1020 1 1 0 49.1891 43.8436 42.1616 -0.081086 -0.615642 -0.783843 0.490491 45 57.5 1 0 +1021 1 1 0 50 43.8232 42.1357 0 -0.617676 -0.786433 0.490491 45 57.5 1 0 +1022 1 1 0 50.8109 43.8436 42.1616 0.081086 -0.615642 -0.783843 0.490491 45 57.5 1 0 +1023 1 1 0 48.7886 43.4372 42.5527 -0.121144 -0.656282 -0.744727 0.490491 45 57.5 1 0 +1024 1 1 0 49.5936 43.3912 42.5061 -0.0406418 -0.660883 -0.749387 0.490491 45 57.5 1 0 +1025 1 1 0 48.3938 43.0622 42.9795 -0.160622 -0.69378 -0.702047 0.490491 45 57.5 1 0 +1026 1 1 0 49.1943 42.9938 42.9103 -0.0805729 -0.700622 -0.708969 0.490491 45 57.5 1 0 +1027 1 1 0 50 42.9709 42.8872 0 -0.702907 -0.711282 0.490491 45 57.5 1 0 +1028 1 1 0 50.4064 43.3912 42.5061 0.0406418 -0.660883 -0.749387 0.490491 45 57.5 1 0 +1029 1 1 0 51.2114 43.4372 42.5527 0.121144 -0.656282 -0.744727 0.490491 45 57.5 1 0 +1030 1 1 0 50.8057 42.9938 42.9103 0.0805729 -0.700622 -0.708969 0.490491 45 57.5 1 0 +1031 1 1 0 51.6062 43.0622 42.9795 0.160622 -0.69378 -0.702047 0.490491 45 57.5 1 0 +1032 1 1 0 48.0067 42.7204 43.4399 -0.199331 -0.727959 -0.656006 0.490491 45 57.5 1 0 +1033 1 1 0 48.7881 42.6111 43.3716 -0.121192 -0.738887 -0.662842 0.490491 45 57.5 1 0 +1034 1 1 0 47.6291 42.4135 43.9317 -0.237086 -0.758652 -0.606825 0.490491 45 57.5 1 0 +1035 1 1 0 48.4039 42.2816 43.8454 -0.159613 -0.771841 -0.615456 0.490491 45 57.5 1 0 +1036 1 1 0 49.1886 42.198 43.7976 -0.0811417 -0.780205 -0.620239 0.490491 45 57.5 1 0 +1037 1 1 0 47.2629 42.1428 44.4526 -0.273706 -0.785715 -0.55474 0.490491 45 57.5 1 0 +1038 1 1 0 48.0273 41.985 44.3549 -0.197274 -0.801504 -0.564513 0.490491 45 57.5 1 0 +1039 1 1 0 46.9098 41.9098 45 -0.309017 -0.809017 -0.5 0.490491 45 57.5 1 0 +1040 1 1 0 47.6655 41.7285 44.888 -0.233445 -0.827147 -0.511205 0.490491 45 57.5 1 0 +1041 1 1 0 48.4357 41.5982 44.8074 -0.156434 -0.840178 -0.519259 0.490491 45 57.5 1 0 +1042 1 1 0 48.8092 41.8783 44.2886 -0.119078 -0.81217 -0.57114 0.490491 45 57.5 1 0 +1043 1 1 0 49.5933 41.8248 44.2554 -0.040675 -0.817523 -0.574458 0.490491 45 57.5 1 0 +1044 1 1 0 49.2154 41.5197 44.7589 -0.0784592 -0.848029 -0.52411 0.490491 45 57.5 1 0 +1045 1 1 0 50 41.4935 44.7427 0 -0.850651 -0.525731 0.490491 45 57.5 1 0 +1046 1 1 0 51.2119 42.6111 43.3716 0.121192 -0.738887 -0.662842 0.490491 45 57.5 1 0 +1047 1 1 0 51.9933 42.7204 43.4399 0.199331 -0.727959 -0.656006 0.490491 45 57.5 1 0 +1048 1 1 0 50.8114 42.198 43.7976 0.0811417 -0.780205 -0.620239 0.490491 45 57.5 1 0 +1049 1 1 0 51.5961 42.2816 43.8454 0.159613 -0.771841 -0.615456 0.490491 45 57.5 1 0 +1050 1 1 0 52.3709 42.4135 43.9317 0.237086 -0.758652 -0.606825 0.490491 45 57.5 1 0 +1051 1 1 0 50.4067 41.8248 44.2554 0.040675 -0.817523 -0.574458 0.490491 45 57.5 1 0 +1052 1 1 0 51.1908 41.8783 44.2886 0.119078 -0.81217 -0.57114 0.490491 45 57.5 1 0 +1053 1 1 0 50.7846 41.5197 44.7589 0.0784592 -0.848029 -0.52411 0.490491 45 57.5 1 0 +1054 1 1 0 51.5643 41.5982 44.8074 0.156434 -0.840178 -0.519259 0.490491 45 57.5 1 0 +1055 1 1 0 51.9727 41.985 44.3549 0.197274 -0.801504 -0.564513 0.490491 45 57.5 1 0 +1056 1 1 0 52.7371 42.1428 44.4526 0.273706 -0.785715 -0.55474 0.490491 45 57.5 1 0 +1057 1 1 0 52.3345 41.7285 44.888 0.233445 -0.827147 -0.511205 0.490491 45 57.5 1 0 +1058 1 1 0 53.0902 41.9098 45 0.309017 -0.809017 -0.5 0.490491 45 57.5 1 0 +1059 1 1 0 49.5932 42.565 43.325 -0.0406769 -0.743496 -0.667502 0.490491 45 57.5 1 0 +1060 1 1 0 50 42.1721 43.7771 0 -0.782786 -0.622291 0.490491 45 57.5 1 0 +1061 1 1 0 50.4068 42.565 43.325 0.0406769 -0.743496 -0.667502 0.490491 45 57.5 1 0 +1062 1 1 0 46.5715 41.7155 45.5713 -0.342848 -0.828447 -0.442867 0.490491 45 57.5 1 0 +1063 1 1 0 47.2531 41.4736 45.5554 -0.274694 -0.85264 -0.444464 0.490491 45 57.5 1 0 +1064 1 1 0 46.2496 41.5609 46.1639 -0.375038 -0.843912 -0.383614 0.490491 45 57.5 1 0 +1065 1 1 0 46.9234 41.3027 46.1409 -0.307659 -0.869725 -0.385906 0.490491 45 57.5 1 0 +1066 1 1 0 47.6132 41.0899 46.1381 -0.238677 -0.891007 -0.386187 0.490491 45 57.5 1 0 +1067 1 1 0 45.9457 41.4466 46.7748 -0.405434 -0.855337 -0.322525 0.490491 45 57.5 1 0 +1068 1 1 0 46.6079 41.1716 46.7514 -0.339209 -0.882837 -0.324863 0.490491 45 57.5 1 0 +1069 1 1 0 45.6611 41.3733 47.4011 -0.433888 -0.862669 -0.259892 0.490491 45 57.5 1 0 +1070 1 1 0 46.3148 41.0826 47.3734 -0.368518 -0.891742 -0.262661 0.490491 45 57.5 1 0 +1071 1 1 0 46.9874 40.8376 47.3592 -0.301258 -0.916244 -0.264082 0.490491 45 57.5 1 0 +1072 1 1 0 47.2937 40.9417 46.7407 -0.270627 -0.905832 -0.325929 0.490491 45 57.5 1 0 +1073 1 1 0 47.9881 40.7612 46.7447 -0.201189 -0.92388 -0.32553 0.490491 45 57.5 1 0 +1074 1 1 0 47.6755 40.6395 47.3585 -0.232455 -0.93605 -0.264151 0.490491 45 57.5 1 0 +1075 1 1 0 48.3754 40.4894 47.3713 -0.16246 -0.951057 -0.262865 0.490491 45 57.5 1 0 +1076 1 1 0 45.3973 41.3413 48.0398 -0.460266 -0.865871 -0.196015 0.490491 45 57.5 1 0 +1077 1 1 0 46.0265 41.036 48.0359 -0.39735 -0.896401 -0.196412 0.490491 45 57.5 1 0 +1078 1 1 0 45.1556 41.3507 48.688 -0.484441 -0.864929 -0.1312 0.490491 45 57.5 1 0 +1079 1 1 0 45.7764 41.032 48.6825 -0.422363 -0.896801 -0.131749 0.490491 45 57.5 1 0 +1080 1 1 0 46.4177 40.757 48.6834 -0.358229 -0.924305 -0.131656 0.490491 45 57.5 1 0 +1081 1 1 0 44.937 41.4015 49.3424 -0.506298 -0.859848 -0.0657577 0.490491 45 57.5 1 0 +1082 1 1 0 45.5463 41.0707 49.3418 -0.445365 -0.892927 -0.0658169 0.490491 45 57.5 1 0 +1083 1 1 0 46.1828 40.7808 49.3401 -0.381722 -0.921919 -0.0659886 0.490491 45 57.5 1 0 +1084 1 1 0 46.8322 40.538 49.3396 -0.316778 -0.946198 -0.0660427 0.490491 45 57.5 1 0 +1085 1 1 0 48.0822 40.3881 48.0166 -0.19178 -0.961188 -0.198337 0.490491 45 57.5 1 0 +1086 1 1 0 48.7727 40.2763 48.0142 -0.122729 -0.97237 -0.198581 0.490491 45 57.5 1 0 +1087 1 1 0 47.7988 40.3361 48.6721 -0.220117 -0.966393 -0.132792 0.490491 45 57.5 1 0 +1088 1 1 0 48.4845 40.2057 48.6674 -0.151549 -0.979426 -0.133256 0.490491 45 57.5 1 0 +1089 1 1 0 49.1776 40.1231 48.6693 -0.0822422 -0.987688 -0.133071 0.490491 45 57.5 1 0 +1090 1 1 0 47.5267 40.3336 49.3343 -0.247326 -0.966643 -0.0665668 0.490491 45 57.5 1 0 +1091 1 1 0 48.204 40.1852 49.334 -0.179596 -0.981483 -0.0666046 0.490491 45 57.5 1 0 +1092 1 1 0 48.8961 40.0835 49.3329 -0.110385 -0.991648 -0.0667095 0.490491 45 57.5 1 0 +1093 1 1 0 49.5875 40.0308 49.3326 -0.0412479 -0.996917 -0.0667412 0.490491 45 57.5 1 0 +1094 1 1 0 46.6939 40.7732 48.0161 -0.330606 -0.922682 -0.198387 0.490491 45 57.5 1 0 +1095 1 1 0 47.1007 40.5218 48.6743 -0.289929 -0.947822 -0.13257 0.490491 45 57.5 1 0 +1096 1 1 0 47.3845 40.5557 48.0091 -0.26155 -0.944433 -0.199094 0.490491 45 57.5 1 0 +1097 1 1 0 52.7469 41.4736 45.5554 0.274694 -0.85264 -0.444464 0.490491 45 57.5 1 0 +1098 1 1 0 53.4285 41.7155 45.5713 0.342848 -0.828447 -0.442867 0.490491 45 57.5 1 0 +1099 1 1 0 52.3868 41.0899 46.1381 0.238677 -0.891007 -0.386187 0.490491 45 57.5 1 0 +1100 1 1 0 53.0766 41.3027 46.1409 0.307659 -0.869725 -0.385906 0.490491 45 57.5 1 0 +1101 1 1 0 53.7504 41.5609 46.1639 0.375038 -0.843912 -0.383614 0.490491 45 57.5 1 0 +1102 1 1 0 52.0119 40.7612 46.7447 0.201189 -0.92388 -0.32553 0.490491 45 57.5 1 0 +1103 1 1 0 52.7063 40.9417 46.7407 0.270627 -0.905832 -0.325929 0.490491 45 57.5 1 0 +1104 1 1 0 51.6246 40.4894 47.3713 0.16246 -0.951057 -0.262865 0.490491 45 57.5 1 0 +1105 1 1 0 52.3245 40.6395 47.3585 0.232455 -0.93605 -0.264151 0.490491 45 57.5 1 0 +1106 1 1 0 53.0126 40.8376 47.3592 0.301258 -0.916244 -0.264082 0.490491 45 57.5 1 0 +1107 1 1 0 53.3921 41.1716 46.7514 0.339209 -0.882837 -0.324863 0.490491 45 57.5 1 0 +1108 1 1 0 54.0543 41.4466 46.7748 0.405434 -0.855337 -0.322525 0.490491 45 57.5 1 0 +1109 1 1 0 53.6852 41.0826 47.3734 0.368518 -0.891742 -0.262661 0.490491 45 57.5 1 0 +1110 1 1 0 54.3389 41.3733 47.4011 0.433888 -0.862669 -0.259892 0.490491 45 57.5 1 0 +1111 1 1 0 51.2273 40.2763 48.0142 0.122729 -0.97237 -0.198581 0.490491 45 57.5 1 0 +1112 1 1 0 51.9178 40.3881 48.0166 0.19178 -0.961188 -0.198337 0.490491 45 57.5 1 0 +1113 1 1 0 50.8224 40.1231 48.6693 0.0822422 -0.987688 -0.133071 0.490491 45 57.5 1 0 +1114 1 1 0 51.5155 40.2057 48.6674 0.151549 -0.979426 -0.133256 0.490491 45 57.5 1 0 +1115 1 1 0 52.2012 40.3361 48.6721 0.220117 -0.966393 -0.132792 0.490491 45 57.5 1 0 +1116 1 1 0 50.4125 40.0308 49.3326 0.0412479 -0.996917 -0.0667412 0.490491 45 57.5 1 0 +1117 1 1 0 51.1039 40.0835 49.3329 0.110385 -0.991648 -0.0667095 0.490491 45 57.5 1 0 +1118 1 1 0 51.796 40.1852 49.334 0.179596 -0.981483 -0.0666046 0.490491 45 57.5 1 0 +1119 1 1 0 52.4733 40.3336 49.3343 0.247326 -0.966643 -0.0665668 0.490491 45 57.5 1 0 +1120 1 1 0 53.9735 41.036 48.0359 0.39735 -0.896401 -0.196412 0.490491 45 57.5 1 0 +1121 1 1 0 54.6027 41.3413 48.0398 0.460266 -0.865871 -0.196015 0.490491 45 57.5 1 0 +1122 1 1 0 53.5823 40.757 48.6834 0.358229 -0.924305 -0.131656 0.490491 45 57.5 1 0 +1123 1 1 0 54.2236 41.032 48.6825 0.422363 -0.896801 -0.131749 0.490491 45 57.5 1 0 +1124 1 1 0 54.8444 41.3507 48.688 0.484441 -0.864929 -0.1312 0.490491 45 57.5 1 0 +1125 1 1 0 53.1678 40.538 49.3396 0.316778 -0.946198 -0.0660427 0.490491 45 57.5 1 0 +1126 1 1 0 53.8172 40.7808 49.3401 0.381722 -0.921919 -0.0659886 0.490491 45 57.5 1 0 +1127 1 1 0 54.4537 41.0707 49.3418 0.445365 -0.892927 -0.0658169 0.490491 45 57.5 1 0 +1128 1 1 0 55.063 41.4015 49.3424 0.506298 -0.859848 -0.0657577 0.490491 45 57.5 1 0 +1129 1 1 0 52.6155 40.5557 48.0091 0.26155 -0.944433 -0.199094 0.490491 45 57.5 1 0 +1130 1 1 0 52.8993 40.5218 48.6743 0.289929 -0.947822 -0.13257 0.490491 45 57.5 1 0 +1131 1 1 0 53.3061 40.7732 48.0161 0.330606 -0.922682 -0.198387 0.490491 45 57.5 1 0 +1132 1 1 0 48.0177 41.3147 45.4574 -0.198227 -0.868535 -0.454262 0.490491 45 57.5 1 0 +1133 1 1 0 48.3899 40.9516 46.0586 -0.161007 -0.904839 -0.394136 0.490491 45 57.5 1 0 +1134 1 1 0 48.772 40.6487 46.6766 -0.1228 -0.93513 -0.332342 0.490491 45 57.5 1 0 +1135 1 1 0 49.1768 40.8702 46.0039 -0.0823235 -0.912983 -0.399607 0.490491 45 57.5 1 0 +1136 1 1 0 48.8024 41.2066 45.3912 -0.119755 -0.879344 -0.460882 0.490491 45 57.5 1 0 +1137 1 1 0 49.587 41.1524 45.3579 -0.0412991 -0.88476 -0.464213 0.490491 45 57.5 1 0 +1138 1 1 0 49.185 40.3935 47.3448 -0.081501 -0.960655 -0.265519 0.490491 45 57.5 1 0 +1139 1 1 0 49.5875 40.2115 47.9963 -0.0412506 -0.978852 -0.200368 0.490491 45 57.5 1 0 +1140 1 1 0 50 40.3614 47.336 0 -0.963861 -0.266405 0.490491 45 57.5 1 0 +1141 1 1 0 50 40.0895 48.6648 0 -0.991046 -0.133524 0.490491 45 57.5 1 0 +1142 1 1 0 50.4125 40.2115 47.9963 0.0412506 -0.978852 -0.200368 0.490491 45 57.5 1 0 +1143 1 1 0 50.815 40.3935 47.3448 0.081501 -0.960655 -0.265519 0.490491 45 57.5 1 0 +1144 1 1 0 50.413 41.1524 45.3579 0.0412991 -0.88476 -0.464213 0.490491 45 57.5 1 0 +1145 1 1 0 50.8232 40.8702 46.0039 0.0823235 -0.912983 -0.399607 0.490491 45 57.5 1 0 +1146 1 1 0 51.1976 41.2066 45.3912 0.119755 -0.879344 -0.460882 0.490491 45 57.5 1 0 +1147 1 1 0 51.228 40.6487 46.6766 0.1228 -0.93513 -0.332342 0.490491 45 57.5 1 0 +1148 1 1 0 51.6101 40.9516 46.0586 0.161007 -0.904839 -0.394136 0.490491 45 57.5 1 0 +1149 1 1 0 51.9823 41.3147 45.4574 0.198227 -0.868535 -0.454262 0.490491 45 57.5 1 0 +1150 1 1 0 49.587 40.5838 46.6586 -0.0413021 -0.941618 -0.33414 0.490491 45 57.5 1 0 +1151 1 1 0 50.413 40.5838 46.6586 0.0413021 -0.941618 -0.33414 0.490491 45 57.5 1 0 +1152 1 1 0 50 40.8391 45.9903 0 -0.916092 -0.400968 0.490491 45 57.5 1 0 +1153 1 1 0 44.2794 58.1921 50.4064 -0.572055 0.819207 0.0406403 0.490491 45 57.5 1 0 +1154 1 1 0 44.2794 58.1921 49.5936 -0.572055 0.819207 -0.0406403 0.490491 45 57.5 1 0 +1155 1 1 0 43.8436 57.8384 50.8109 -0.615642 0.783843 0.081086 0.490491 45 57.5 1 0 +1156 1 1 0 43.8232 57.8643 50 -0.617676 0.786433 0 0.490491 45 57.5 1 0 +1157 1 1 0 43.8436 57.8384 49.1891 -0.615642 0.783843 -0.081086 0.490491 45 57.5 1 0 +1158 1 1 0 43.4372 57.4473 51.2114 -0.656282 0.744727 0.121144 0.490491 45 57.5 1 0 +1159 1 1 0 43.3912 57.4939 50.4064 -0.660883 0.749387 0.0406418 0.490491 45 57.5 1 0 +1160 1 1 0 43.0622 57.0205 51.6062 -0.69378 0.702047 0.160622 0.490491 45 57.5 1 0 +1161 1 1 0 42.9938 57.0897 50.8057 -0.700622 0.708969 0.0805729 0.490491 45 57.5 1 0 +1162 1 1 0 42.9709 57.1128 50 -0.702907 0.711282 0 0.490491 45 57.5 1 0 +1163 1 1 0 43.3912 57.4939 49.5936 -0.660883 0.749387 -0.0406418 0.490491 45 57.5 1 0 +1164 1 1 0 43.4372 57.4473 48.7886 -0.656282 0.744727 -0.121144 0.490491 45 57.5 1 0 +1165 1 1 0 42.9938 57.0897 49.1943 -0.700622 0.708969 -0.0805729 0.490491 45 57.5 1 0 +1166 1 1 0 43.0622 57.0205 48.3938 -0.69378 0.702047 -0.160622 0.490491 45 57.5 1 0 +1167 1 1 0 42.7204 56.5601 51.9933 -0.727959 0.656006 0.199331 0.490491 45 57.5 1 0 +1168 1 1 0 42.6111 56.6284 51.2119 -0.738887 0.662842 0.121192 0.490491 45 57.5 1 0 +1169 1 1 0 42.4135 56.0683 52.3709 -0.758652 0.606825 0.237086 0.490491 45 57.5 1 0 +1170 1 1 0 42.2816 56.1546 51.5961 -0.771841 0.615456 0.159613 0.490491 45 57.5 1 0 +1171 1 1 0 42.198 56.2024 50.8114 -0.780205 0.620239 0.0811417 0.490491 45 57.5 1 0 +1172 1 1 0 42.1428 55.5474 52.7371 -0.785715 0.55474 0.273706 0.490491 45 57.5 1 0 +1173 1 1 0 41.985 55.6451 51.9727 -0.801504 0.564513 0.197274 0.490491 45 57.5 1 0 +1174 1 1 0 41.9098 55 53.0902 -0.809017 0.5 0.309017 0.490491 45 57.5 1 0 +1175 1 1 0 41.7285 55.112 52.3345 -0.827147 0.511205 0.233445 0.490491 45 57.5 1 0 +1176 1 1 0 41.5982 55.1926 51.5643 -0.840178 0.519259 0.156434 0.490491 45 57.5 1 0 +1177 1 1 0 41.8783 55.7114 51.1908 -0.81217 0.57114 0.119078 0.490491 45 57.5 1 0 +1178 1 1 0 41.8248 55.7446 50.4067 -0.817523 0.574458 0.040675 0.490491 45 57.5 1 0 +1179 1 1 0 41.5197 55.2411 50.7846 -0.848029 0.52411 0.0784592 0.490491 45 57.5 1 0 +1180 1 1 0 41.4935 55.2573 50 -0.850651 0.525731 0 0.490491 45 57.5 1 0 +1181 1 1 0 42.6111 56.6284 48.7881 -0.738887 0.662842 -0.121192 0.490491 45 57.5 1 0 +1182 1 1 0 42.7204 56.5601 48.0067 -0.727959 0.656006 -0.199331 0.490491 45 57.5 1 0 +1183 1 1 0 42.198 56.2024 49.1886 -0.780205 0.620239 -0.0811417 0.490491 45 57.5 1 0 +1184 1 1 0 42.2816 56.1546 48.4039 -0.771841 0.615456 -0.159613 0.490491 45 57.5 1 0 +1185 1 1 0 42.4135 56.0683 47.6291 -0.758652 0.606825 -0.237086 0.490491 45 57.5 1 0 +1186 1 1 0 41.8248 55.7446 49.5933 -0.817523 0.574458 -0.040675 0.490491 45 57.5 1 0 +1187 1 1 0 41.8783 55.7114 48.8092 -0.81217 0.57114 -0.119078 0.490491 45 57.5 1 0 +1188 1 1 0 41.5197 55.2411 49.2154 -0.848029 0.52411 -0.0784592 0.490491 45 57.5 1 0 +1189 1 1 0 41.5982 55.1926 48.4357 -0.840178 0.519259 -0.156434 0.490491 45 57.5 1 0 +1190 1 1 0 41.985 55.6451 48.0273 -0.801504 0.564513 -0.197274 0.490491 45 57.5 1 0 +1191 1 1 0 42.1428 55.5474 47.2629 -0.785715 0.55474 -0.273706 0.490491 45 57.5 1 0 +1192 1 1 0 41.7285 55.112 47.6655 -0.827147 0.511205 -0.233445 0.490491 45 57.5 1 0 +1193 1 1 0 41.9098 55 46.9098 -0.809017 0.5 -0.309017 0.490491 45 57.5 1 0 +1194 1 1 0 42.565 56.675 50.4068 -0.743496 0.667502 0.0406769 0.490491 45 57.5 1 0 +1195 1 1 0 42.1721 56.2229 50 -0.782786 0.622291 0 0.490491 45 57.5 1 0 +1196 1 1 0 42.565 56.675 49.5932 -0.743496 0.667502 -0.0406769 0.490491 45 57.5 1 0 +1197 1 1 0 41.7155 54.4287 53.4285 -0.828447 0.442867 0.342848 0.490491 45 57.5 1 0 +1198 1 1 0 41.4736 54.4446 52.7469 -0.85264 0.444464 0.274694 0.490491 45 57.5 1 0 +1199 1 1 0 41.5609 53.8361 53.7504 -0.843912 0.383614 0.375038 0.490491 45 57.5 1 0 +1200 1 1 0 41.3027 53.8591 53.0766 -0.869725 0.385906 0.307659 0.490491 45 57.5 1 0 +1201 1 1 0 41.0899 53.8619 52.3868 -0.891007 0.386187 0.238677 0.490491 45 57.5 1 0 +1202 1 1 0 41.4466 53.2252 54.0543 -0.855337 0.322525 0.405434 0.490491 45 57.5 1 0 +1203 1 1 0 41.1716 53.2486 53.3921 -0.882837 0.324863 0.339209 0.490491 45 57.5 1 0 +1204 1 1 0 41.3733 52.5989 54.3389 -0.862669 0.259892 0.433888 0.490491 45 57.5 1 0 +1205 1 1 0 41.0826 52.6266 53.6852 -0.891742 0.262661 0.368518 0.490491 45 57.5 1 0 +1206 1 1 0 40.8376 52.6408 53.0126 -0.916244 0.264082 0.301258 0.490491 45 57.5 1 0 +1207 1 1 0 40.9417 53.2593 52.7063 -0.905832 0.325929 0.270627 0.490491 45 57.5 1 0 +1208 1 1 0 40.7612 53.2553 52.0119 -0.92388 0.32553 0.201189 0.490491 45 57.5 1 0 +1209 1 1 0 40.6395 52.6415 52.3245 -0.93605 0.264151 0.232455 0.490491 45 57.5 1 0 +1210 1 1 0 40.4894 52.6287 51.6246 -0.951057 0.262865 0.16246 0.490491 45 57.5 1 0 +1211 1 1 0 41.3413 51.9602 54.6027 -0.865871 0.196015 0.460266 0.490491 45 57.5 1 0 +1212 1 1 0 41.036 51.9641 53.9735 -0.896401 0.196412 0.39735 0.490491 45 57.5 1 0 +1213 1 1 0 41.3507 51.312 54.8444 -0.864929 0.1312 0.484441 0.490491 45 57.5 1 0 +1214 1 1 0 41.032 51.3175 54.2236 -0.896801 0.131749 0.422363 0.490491 45 57.5 1 0 +1215 1 1 0 40.757 51.3166 53.5823 -0.924305 0.131656 0.358229 0.490491 45 57.5 1 0 +1216 1 1 0 41.4015 50.6576 55.063 -0.859848 0.0657577 0.506298 0.490491 45 57.5 1 0 +1217 1 1 0 41.0707 50.6582 54.4537 -0.892927 0.0658169 0.445365 0.490491 45 57.5 1 0 +1218 1 1 0 41.1503 50 54.6566 -0.884965 0 0.465657 0.490491 45 57.5 1 0 +1219 1 1 0 40.8496 50 54.0336 -0.915043 0 0.403355 0.490491 45 57.5 1 0 +1220 1 1 0 40.7808 50.6599 53.8172 -0.921919 0.0659886 0.381722 0.490491 45 57.5 1 0 +1221 1 1 0 40.538 50.6604 53.1678 -0.946198 0.0660427 0.316778 0.490491 45 57.5 1 0 +1222 1 1 0 40.5926 50 53.3912 -0.940742 0 0.339122 0.490491 45 57.5 1 0 +1223 1 1 0 40.3806 50 52.7327 -0.961938 0 0.273267 0.490491 45 57.5 1 0 +1224 1 1 0 40.3881 51.9834 51.9178 -0.961188 0.198337 0.19178 0.490491 45 57.5 1 0 +1225 1 1 0 40.2763 51.9858 51.2273 -0.97237 0.198581 0.122729 0.490491 45 57.5 1 0 +1226 1 1 0 40.3361 51.3279 52.2012 -0.966393 0.132792 0.220117 0.490491 45 57.5 1 0 +1227 1 1 0 40.2057 51.3326 51.5155 -0.979426 0.133256 0.151549 0.490491 45 57.5 1 0 +1228 1 1 0 40.1231 51.3307 50.8224 -0.987688 0.133071 0.0822422 0.490491 45 57.5 1 0 +1229 1 1 0 40.3336 50.6657 52.4733 -0.966643 0.0665668 0.247326 0.490491 45 57.5 1 0 +1230 1 1 0 40.1852 50.666 51.796 -0.981483 0.0666046 0.179596 0.490491 45 57.5 1 0 +1231 1 1 0 40.2147 50 52.061 -0.97853 0 0.206103 0.490491 45 57.5 1 0 +1232 1 1 0 40.0956 50 51.3795 -0.990439 0 0.137952 0.490491 45 57.5 1 0 +1233 1 1 0 40.0835 50.6671 51.1039 -0.991648 0.0667095 0.110385 0.490491 45 57.5 1 0 +1234 1 1 0 40.0308 50.6674 50.4125 -0.996917 0.0667412 0.0412479 0.490491 45 57.5 1 0 +1235 1 1 0 40.0239 50 50.6914 -0.997607 0 0.0691418 0.490491 45 57.5 1 0 +1236 1 1 0 40 50 50 -1 0 0 0.490491 45 57.5 1 0 +1237 1 1 0 40.7732 51.9839 53.3061 -0.922682 0.198387 0.330606 0.490491 45 57.5 1 0 +1238 1 1 0 40.5218 51.3257 52.8993 -0.947822 0.13257 0.289929 0.490491 45 57.5 1 0 +1239 1 1 0 40.5557 51.9909 52.6155 -0.944433 0.199094 0.26155 0.490491 45 57.5 1 0 +1240 1 1 0 41.4736 54.4446 47.2531 -0.85264 0.444464 -0.274694 0.490491 45 57.5 1 0 +1241 1 1 0 41.7155 54.4287 46.5715 -0.828447 0.442867 -0.342848 0.490491 45 57.5 1 0 +1242 1 1 0 41.0899 53.8619 47.6132 -0.891007 0.386187 -0.238677 0.490491 45 57.5 1 0 +1243 1 1 0 41.3027 53.8591 46.9234 -0.869725 0.385906 -0.307659 0.490491 45 57.5 1 0 +1244 1 1 0 41.5609 53.8361 46.2496 -0.843912 0.383614 -0.375038 0.490491 45 57.5 1 0 +1245 1 1 0 40.7612 53.2553 47.9881 -0.92388 0.32553 -0.201189 0.490491 45 57.5 1 0 +1246 1 1 0 40.9417 53.2593 47.2937 -0.905832 0.325929 -0.270627 0.490491 45 57.5 1 0 +1247 1 1 0 40.4894 52.6287 48.3754 -0.951057 0.262865 -0.16246 0.490491 45 57.5 1 0 +1248 1 1 0 40.6395 52.6415 47.6755 -0.93605 0.264151 -0.232455 0.490491 45 57.5 1 0 +1249 1 1 0 40.8376 52.6408 46.9874 -0.916244 0.264082 -0.301258 0.490491 45 57.5 1 0 +1250 1 1 0 41.1716 53.2486 46.6079 -0.882837 0.324863 -0.339209 0.490491 45 57.5 1 0 +1251 1 1 0 41.4466 53.2252 45.9457 -0.855337 0.322525 -0.405434 0.490491 45 57.5 1 0 +1252 1 1 0 41.0826 52.6266 46.3148 -0.891742 0.262661 -0.368518 0.490491 45 57.5 1 0 +1253 1 1 0 41.3733 52.5989 45.6611 -0.862669 0.259892 -0.433888 0.490491 45 57.5 1 0 +1254 1 1 0 40.2763 51.9858 48.7727 -0.97237 0.198581 -0.122729 0.490491 45 57.5 1 0 +1255 1 1 0 40.3881 51.9834 48.0822 -0.961188 0.198337 -0.19178 0.490491 45 57.5 1 0 +1256 1 1 0 40.1231 51.3307 49.1776 -0.987688 0.133071 -0.0822422 0.490491 45 57.5 1 0 +1257 1 1 0 40.2057 51.3326 48.4845 -0.979426 0.133256 -0.151549 0.490491 45 57.5 1 0 +1258 1 1 0 40.3361 51.3279 47.7988 -0.966393 0.132792 -0.220117 0.490491 45 57.5 1 0 +1259 1 1 0 40.0308 50.6674 49.5875 -0.996917 0.0667412 -0.0412479 0.490491 45 57.5 1 0 +1260 1 1 0 40.0835 50.6671 48.8961 -0.991648 0.0667095 -0.110385 0.490491 45 57.5 1 0 +1261 1 1 0 40.0239 50 49.3086 -0.997607 0 -0.0691418 0.490491 45 57.5 1 0 +1262 1 1 0 40.0956 50 48.6205 -0.990439 0 -0.137952 0.490491 45 57.5 1 0 +1263 1 1 0 40.1852 50.666 48.204 -0.981483 0.0666046 -0.179596 0.490491 45 57.5 1 0 +1264 1 1 0 40.3336 50.6657 47.5267 -0.966643 0.0665668 -0.247326 0.490491 45 57.5 1 0 +1265 1 1 0 40.2147 50 47.939 -0.97853 0 -0.206103 0.490491 45 57.5 1 0 +1266 1 1 0 40.3806 50 47.2673 -0.961938 0 -0.273267 0.490491 45 57.5 1 0 +1267 1 1 0 41.036 51.9641 46.0265 -0.896401 0.196412 -0.39735 0.490491 45 57.5 1 0 +1268 1 1 0 41.3413 51.9602 45.3973 -0.865871 0.196015 -0.460266 0.490491 45 57.5 1 0 +1269 1 1 0 40.757 51.3166 46.4177 -0.924305 0.131656 -0.358229 0.490491 45 57.5 1 0 +1270 1 1 0 41.032 51.3175 45.7764 -0.896801 0.131749 -0.422363 0.490491 45 57.5 1 0 +1271 1 1 0 41.3507 51.312 45.1556 -0.864929 0.1312 -0.484441 0.490491 45 57.5 1 0 +1272 1 1 0 40.538 50.6604 46.8322 -0.946198 0.0660427 -0.316778 0.490491 45 57.5 1 0 +1273 1 1 0 40.7808 50.6599 46.1828 -0.921919 0.0659886 -0.381722 0.490491 45 57.5 1 0 +1274 1 1 0 40.5926 50 46.6088 -0.940742 0 -0.339122 0.490491 45 57.5 1 0 +1275 1 1 0 40.8496 50 45.9664 -0.915043 0 -0.403355 0.490491 45 57.5 1 0 +1276 1 1 0 41.0707 50.6582 45.5463 -0.892927 0.0658169 -0.445365 0.490491 45 57.5 1 0 +1277 1 1 0 41.4015 50.6576 44.937 -0.859848 0.0657577 -0.506298 0.490491 45 57.5 1 0 +1278 1 1 0 41.1503 50 45.3434 -0.884965 0 -0.465657 0.490491 45 57.5 1 0 +1279 1 1 0 40.5557 51.9909 47.3845 -0.944433 0.199094 -0.26155 0.490491 45 57.5 1 0 +1280 1 1 0 40.5218 51.3257 47.1007 -0.947822 0.13257 -0.289929 0.490491 45 57.5 1 0 +1281 1 1 0 40.7732 51.9839 46.6939 -0.922682 0.198387 -0.330606 0.490491 45 57.5 1 0 +1282 1 1 0 41.3147 54.5426 51.9823 -0.868535 0.454262 0.198227 0.490491 45 57.5 1 0 +1283 1 1 0 40.9516 53.9414 51.6101 -0.904839 0.394136 0.161007 0.490491 45 57.5 1 0 +1284 1 1 0 40.6487 53.3234 51.228 -0.93513 0.332342 0.1228 0.490491 45 57.5 1 0 +1285 1 1 0 40.8702 53.9961 50.8232 -0.912983 0.399607 0.0823235 0.490491 45 57.5 1 0 +1286 1 1 0 41.2066 54.6088 51.1976 -0.879344 0.460882 0.119755 0.490491 45 57.5 1 0 +1287 1 1 0 41.1524 54.6421 50.413 -0.88476 0.464213 0.0412991 0.490491 45 57.5 1 0 +1288 1 1 0 40.3935 52.6552 50.815 -0.960655 0.265519 0.081501 0.490491 45 57.5 1 0 +1289 1 1 0 40.2115 52.0037 50.4125 -0.978852 0.200368 0.0412506 0.490491 45 57.5 1 0 +1290 1 1 0 40.3614 52.664 50 -0.963861 0.266405 0 0.490491 45 57.5 1 0 +1291 1 1 0 40.0895 51.3352 50 -0.991046 0.133524 0 0.490491 45 57.5 1 0 +1292 1 1 0 40.2115 52.0037 49.5875 -0.978852 0.200368 -0.0412506 0.490491 45 57.5 1 0 +1293 1 1 0 40.3935 52.6552 49.185 -0.960655 0.265519 -0.081501 0.490491 45 57.5 1 0 +1294 1 1 0 41.1524 54.6421 49.587 -0.88476 0.464213 -0.0412991 0.490491 45 57.5 1 0 +1295 1 1 0 40.8702 53.9961 49.1768 -0.912983 0.399607 -0.0823235 0.490491 45 57.5 1 0 +1296 1 1 0 41.2066 54.6088 48.8024 -0.879344 0.460882 -0.119755 0.490491 45 57.5 1 0 +1297 1 1 0 40.6487 53.3234 48.772 -0.93513 0.332342 -0.1228 0.490491 45 57.5 1 0 +1298 1 1 0 40.9516 53.9414 48.3899 -0.904839 0.394136 -0.161007 0.490491 45 57.5 1 0 +1299 1 1 0 41.3147 54.5426 48.0177 -0.868535 0.454262 -0.198227 0.490491 45 57.5 1 0 +1300 1 1 0 40.5838 53.3414 50.413 -0.941618 0.33414 0.0413021 0.490491 45 57.5 1 0 +1301 1 1 0 40.5838 53.3414 49.587 -0.941618 0.33414 -0.0413021 0.490491 45 57.5 1 0 +1302 1 1 0 40.8391 54.0097 50 -0.916092 0.400968 0 0.490491 45 57.5 1 0 +1303 1 1 0 44.2794 41.8079 49.5936 -0.572055 -0.819207 -0.0406403 0.490491 45 57.5 1 0 +1304 1 1 0 44.2794 41.8079 50.4064 -0.572055 -0.819207 0.0406403 0.490491 45 57.5 1 0 +1305 1 1 0 43.8436 42.1616 49.1891 -0.615642 -0.783843 -0.081086 0.490491 45 57.5 1 0 +1306 1 1 0 43.8232 42.1357 50 -0.617676 -0.786433 0 0.490491 45 57.5 1 0 +1307 1 1 0 43.8436 42.1616 50.8109 -0.615642 -0.783843 0.081086 0.490491 45 57.5 1 0 +1308 1 1 0 43.4372 42.5527 48.7886 -0.656282 -0.744727 -0.121144 0.490491 45 57.5 1 0 +1309 1 1 0 43.3912 42.5061 49.5936 -0.660883 -0.749387 -0.0406418 0.490491 45 57.5 1 0 +1310 1 1 0 43.0622 42.9795 48.3938 -0.69378 -0.702047 -0.160622 0.490491 45 57.5 1 0 +1311 1 1 0 42.9938 42.9103 49.1943 -0.700622 -0.708969 -0.0805729 0.490491 45 57.5 1 0 +1312 1 1 0 42.9709 42.8872 50 -0.702907 -0.711282 0 0.490491 45 57.5 1 0 +1313 1 1 0 43.3912 42.5061 50.4064 -0.660883 -0.749387 0.0406418 0.490491 45 57.5 1 0 +1314 1 1 0 43.4372 42.5527 51.2114 -0.656282 -0.744727 0.121144 0.490491 45 57.5 1 0 +1315 1 1 0 42.9938 42.9103 50.8057 -0.700622 -0.708969 0.0805729 0.490491 45 57.5 1 0 +1316 1 1 0 43.0622 42.9795 51.6062 -0.69378 -0.702047 0.160622 0.490491 45 57.5 1 0 +1317 1 1 0 42.7204 43.4399 48.0067 -0.727959 -0.656006 -0.199331 0.490491 45 57.5 1 0 +1318 1 1 0 42.6111 43.3716 48.7881 -0.738887 -0.662842 -0.121192 0.490491 45 57.5 1 0 +1319 1 1 0 42.4135 43.9317 47.6291 -0.758652 -0.606825 -0.237086 0.490491 45 57.5 1 0 +1320 1 1 0 42.2816 43.8454 48.4039 -0.771841 -0.615456 -0.159613 0.490491 45 57.5 1 0 +1321 1 1 0 42.198 43.7976 49.1886 -0.780205 -0.620239 -0.0811417 0.490491 45 57.5 1 0 +1322 1 1 0 42.1428 44.4526 47.2629 -0.785715 -0.55474 -0.273706 0.490491 45 57.5 1 0 +1323 1 1 0 41.985 44.3549 48.0273 -0.801504 -0.564513 -0.197274 0.490491 45 57.5 1 0 +1324 1 1 0 41.9098 45 46.9098 -0.809017 -0.5 -0.309017 0.490491 45 57.5 1 0 +1325 1 1 0 41.7285 44.888 47.6655 -0.827147 -0.511205 -0.233445 0.490491 45 57.5 1 0 +1326 1 1 0 41.5982 44.8074 48.4357 -0.840178 -0.519259 -0.156434 0.490491 45 57.5 1 0 +1327 1 1 0 41.8783 44.2886 48.8092 -0.81217 -0.57114 -0.119078 0.490491 45 57.5 1 0 +1328 1 1 0 41.8248 44.2554 49.5933 -0.817523 -0.574458 -0.040675 0.490491 45 57.5 1 0 +1329 1 1 0 41.5197 44.7589 49.2154 -0.848029 -0.52411 -0.0784592 0.490491 45 57.5 1 0 +1330 1 1 0 41.4935 44.7427 50 -0.850651 -0.525731 0 0.490491 45 57.5 1 0 +1331 1 1 0 42.6111 43.3716 51.2119 -0.738887 -0.662842 0.121192 0.490491 45 57.5 1 0 +1332 1 1 0 42.7204 43.4399 51.9933 -0.727959 -0.656006 0.199331 0.490491 45 57.5 1 0 +1333 1 1 0 42.198 43.7976 50.8114 -0.780205 -0.620239 0.0811417 0.490491 45 57.5 1 0 +1334 1 1 0 42.2816 43.8454 51.5961 -0.771841 -0.615456 0.159613 0.490491 45 57.5 1 0 +1335 1 1 0 42.4135 43.9317 52.3709 -0.758652 -0.606825 0.237086 0.490491 45 57.5 1 0 +1336 1 1 0 41.8248 44.2554 50.4067 -0.817523 -0.574458 0.040675 0.490491 45 57.5 1 0 +1337 1 1 0 41.8783 44.2886 51.1908 -0.81217 -0.57114 0.119078 0.490491 45 57.5 1 0 +1338 1 1 0 41.5197 44.7589 50.7846 -0.848029 -0.52411 0.0784592 0.490491 45 57.5 1 0 +1339 1 1 0 41.5982 44.8074 51.5643 -0.840178 -0.519259 0.156434 0.490491 45 57.5 1 0 +1340 1 1 0 41.985 44.3549 51.9727 -0.801504 -0.564513 0.197274 0.490491 45 57.5 1 0 +1341 1 1 0 42.1428 44.4526 52.7371 -0.785715 -0.55474 0.273706 0.490491 45 57.5 1 0 +1342 1 1 0 41.7285 44.888 52.3345 -0.827147 -0.511205 0.233445 0.490491 45 57.5 1 0 +1343 1 1 0 41.9098 45 53.0902 -0.809017 -0.5 0.309017 0.490491 45 57.5 1 0 +1344 1 1 0 42.565 43.325 49.5932 -0.743496 -0.667502 -0.0406769 0.490491 45 57.5 1 0 +1345 1 1 0 42.1721 43.7771 50 -0.782786 -0.622291 0 0.490491 45 57.5 1 0 +1346 1 1 0 42.565 43.325 50.4068 -0.743496 -0.667502 0.0406769 0.490491 45 57.5 1 0 +1347 1 1 0 41.7155 45.5713 46.5715 -0.828447 -0.442867 -0.342848 0.490491 45 57.5 1 0 +1348 1 1 0 41.4736 45.5554 47.2531 -0.85264 -0.444464 -0.274694 0.490491 45 57.5 1 0 +1349 1 1 0 41.5609 46.1639 46.2496 -0.843912 -0.383614 -0.375038 0.490491 45 57.5 1 0 +1350 1 1 0 41.3027 46.1409 46.9234 -0.869725 -0.385906 -0.307659 0.490491 45 57.5 1 0 +1351 1 1 0 41.0899 46.1381 47.6132 -0.891007 -0.386187 -0.238677 0.490491 45 57.5 1 0 +1352 1 1 0 41.4466 46.7748 45.9457 -0.855337 -0.322525 -0.405434 0.490491 45 57.5 1 0 +1353 1 1 0 41.1716 46.7514 46.6079 -0.882837 -0.324863 -0.339209 0.490491 45 57.5 1 0 +1354 1 1 0 41.3733 47.4011 45.6611 -0.862669 -0.259892 -0.433888 0.490491 45 57.5 1 0 +1355 1 1 0 41.0826 47.3734 46.3148 -0.891742 -0.262661 -0.368518 0.490491 45 57.5 1 0 +1356 1 1 0 40.8376 47.3592 46.9874 -0.916244 -0.264082 -0.301258 0.490491 45 57.5 1 0 +1357 1 1 0 40.9417 46.7407 47.2937 -0.905832 -0.325929 -0.270627 0.490491 45 57.5 1 0 +1358 1 1 0 40.7612 46.7447 47.9881 -0.92388 -0.32553 -0.201189 0.490491 45 57.5 1 0 +1359 1 1 0 40.6395 47.3585 47.6755 -0.93605 -0.264151 -0.232455 0.490491 45 57.5 1 0 +1360 1 1 0 40.4894 47.3713 48.3754 -0.951057 -0.262865 -0.16246 0.490491 45 57.5 1 0 +1361 1 1 0 41.3413 48.0398 45.3973 -0.865871 -0.196015 -0.460266 0.490491 45 57.5 1 0 +1362 1 1 0 41.036 48.0359 46.0265 -0.896401 -0.196412 -0.39735 0.490491 45 57.5 1 0 +1363 1 1 0 41.3507 48.688 45.1556 -0.864929 -0.1312 -0.484441 0.490491 45 57.5 1 0 +1364 1 1 0 41.032 48.6825 45.7764 -0.896801 -0.131749 -0.422363 0.490491 45 57.5 1 0 +1365 1 1 0 40.757 48.6834 46.4177 -0.924305 -0.131656 -0.358229 0.490491 45 57.5 1 0 +1366 1 1 0 41.4015 49.3424 44.937 -0.859848 -0.0657577 -0.506298 0.490491 45 57.5 1 0 +1367 1 1 0 41.0707 49.3418 45.5463 -0.892927 -0.0658169 -0.445365 0.490491 45 57.5 1 0 +1368 1 1 0 40.7808 49.3401 46.1828 -0.921919 -0.0659886 -0.381722 0.490491 45 57.5 1 0 +1369 1 1 0 40.538 49.3396 46.8322 -0.946198 -0.0660427 -0.316778 0.490491 45 57.5 1 0 +1370 1 1 0 40.3881 48.0166 48.0822 -0.961188 -0.198337 -0.19178 0.490491 45 57.5 1 0 +1371 1 1 0 40.2763 48.0142 48.7727 -0.97237 -0.198581 -0.122729 0.490491 45 57.5 1 0 +1372 1 1 0 40.3361 48.6721 47.7988 -0.966393 -0.132792 -0.220117 0.490491 45 57.5 1 0 +1373 1 1 0 40.2057 48.6674 48.4845 -0.979426 -0.133256 -0.151549 0.490491 45 57.5 1 0 +1374 1 1 0 40.1231 48.6693 49.1776 -0.987688 -0.133071 -0.0822422 0.490491 45 57.5 1 0 +1375 1 1 0 40.3336 49.3343 47.5267 -0.966643 -0.0665668 -0.247326 0.490491 45 57.5 1 0 +1376 1 1 0 40.1852 49.334 48.204 -0.981483 -0.0666046 -0.179596 0.490491 45 57.5 1 0 +1377 1 1 0 40.0835 49.3329 48.8961 -0.991648 -0.0667095 -0.110385 0.490491 45 57.5 1 0 +1378 1 1 0 40.0308 49.3326 49.5875 -0.996917 -0.0667412 -0.0412479 0.490491 45 57.5 1 0 +1379 1 1 0 40.7732 48.0161 46.6939 -0.922682 -0.198387 -0.330606 0.490491 45 57.5 1 0 +1380 1 1 0 40.5218 48.6743 47.1007 -0.947822 -0.13257 -0.289929 0.490491 45 57.5 1 0 +1381 1 1 0 40.5557 48.0091 47.3845 -0.944433 -0.199094 -0.26155 0.490491 45 57.5 1 0 +1382 1 1 0 41.4736 45.5554 52.7469 -0.85264 -0.444464 0.274694 0.490491 45 57.5 1 0 +1383 1 1 0 41.7155 45.5713 53.4285 -0.828447 -0.442867 0.342848 0.490491 45 57.5 1 0 +1384 1 1 0 41.0899 46.1381 52.3868 -0.891007 -0.386187 0.238677 0.490491 45 57.5 1 0 +1385 1 1 0 41.3027 46.1409 53.0766 -0.869725 -0.385906 0.307659 0.490491 45 57.5 1 0 +1386 1 1 0 41.5609 46.1639 53.7504 -0.843912 -0.383614 0.375038 0.490491 45 57.5 1 0 +1387 1 1 0 40.7612 46.7447 52.0119 -0.92388 -0.32553 0.201189 0.490491 45 57.5 1 0 +1388 1 1 0 40.9417 46.7407 52.7063 -0.905832 -0.325929 0.270627 0.490491 45 57.5 1 0 +1389 1 1 0 40.4894 47.3713 51.6246 -0.951057 -0.262865 0.16246 0.490491 45 57.5 1 0 +1390 1 1 0 40.6395 47.3585 52.3245 -0.93605 -0.264151 0.232455 0.490491 45 57.5 1 0 +1391 1 1 0 40.8376 47.3592 53.0126 -0.916244 -0.264082 0.301258 0.490491 45 57.5 1 0 +1392 1 1 0 41.1716 46.7514 53.3921 -0.882837 -0.324863 0.339209 0.490491 45 57.5 1 0 +1393 1 1 0 41.4466 46.7748 54.0543 -0.855337 -0.322525 0.405434 0.490491 45 57.5 1 0 +1394 1 1 0 41.0826 47.3734 53.6852 -0.891742 -0.262661 0.368518 0.490491 45 57.5 1 0 +1395 1 1 0 41.3733 47.4011 54.3389 -0.862669 -0.259892 0.433888 0.490491 45 57.5 1 0 +1396 1 1 0 40.2763 48.0142 51.2273 -0.97237 -0.198581 0.122729 0.490491 45 57.5 1 0 +1397 1 1 0 40.3881 48.0166 51.9178 -0.961188 -0.198337 0.19178 0.490491 45 57.5 1 0 +1398 1 1 0 40.1231 48.6693 50.8224 -0.987688 -0.133071 0.0822422 0.490491 45 57.5 1 0 +1399 1 1 0 40.2057 48.6674 51.5155 -0.979426 -0.133256 0.151549 0.490491 45 57.5 1 0 +1400 1 1 0 40.3361 48.6721 52.2012 -0.966393 -0.132792 0.220117 0.490491 45 57.5 1 0 +1401 1 1 0 40.0308 49.3326 50.4125 -0.996917 -0.0667412 0.0412479 0.490491 45 57.5 1 0 +1402 1 1 0 40.0835 49.3329 51.1039 -0.991648 -0.0667095 0.110385 0.490491 45 57.5 1 0 +1403 1 1 0 40.1852 49.334 51.796 -0.981483 -0.0666046 0.179596 0.490491 45 57.5 1 0 +1404 1 1 0 40.3336 49.3343 52.4733 -0.966643 -0.0665668 0.247326 0.490491 45 57.5 1 0 +1405 1 1 0 41.036 48.0359 53.9735 -0.896401 -0.196412 0.39735 0.490491 45 57.5 1 0 +1406 1 1 0 41.3413 48.0398 54.6027 -0.865871 -0.196015 0.460266 0.490491 45 57.5 1 0 +1407 1 1 0 40.757 48.6834 53.5823 -0.924305 -0.131656 0.358229 0.490491 45 57.5 1 0 +1408 1 1 0 41.032 48.6825 54.2236 -0.896801 -0.131749 0.422363 0.490491 45 57.5 1 0 +1409 1 1 0 41.3507 48.688 54.8444 -0.864929 -0.1312 0.484441 0.490491 45 57.5 1 0 +1410 1 1 0 40.538 49.3396 53.1678 -0.946198 -0.0660427 0.316778 0.490491 45 57.5 1 0 +1411 1 1 0 40.7808 49.3401 53.8172 -0.921919 -0.0659886 0.381722 0.490491 45 57.5 1 0 +1412 1 1 0 41.0707 49.3418 54.4537 -0.892927 -0.0658169 0.445365 0.490491 45 57.5 1 0 +1413 1 1 0 41.4015 49.3424 55.063 -0.859848 -0.0657577 0.506298 0.490491 45 57.5 1 0 +1414 1 1 0 40.5557 48.0091 52.6155 -0.944433 -0.199094 0.26155 0.490491 45 57.5 1 0 +1415 1 1 0 40.5218 48.6743 52.8993 -0.947822 -0.13257 0.289929 0.490491 45 57.5 1 0 +1416 1 1 0 40.7732 48.0161 53.3061 -0.922682 -0.198387 0.330606 0.490491 45 57.5 1 0 +1417 1 1 0 41.3147 45.4574 48.0177 -0.868535 -0.454262 -0.198227 0.490491 45 57.5 1 0 +1418 1 1 0 40.9516 46.0586 48.3899 -0.904839 -0.394136 -0.161007 0.490491 45 57.5 1 0 +1419 1 1 0 40.6487 46.6766 48.772 -0.93513 -0.332342 -0.1228 0.490491 45 57.5 1 0 +1420 1 1 0 40.8702 46.0039 49.1768 -0.912983 -0.399607 -0.0823235 0.490491 45 57.5 1 0 +1421 1 1 0 41.2066 45.3912 48.8024 -0.879344 -0.460882 -0.119755 0.490491 45 57.5 1 0 +1422 1 1 0 41.1524 45.3579 49.587 -0.88476 -0.464213 -0.0412991 0.490491 45 57.5 1 0 +1423 1 1 0 40.3935 47.3448 49.185 -0.960655 -0.265519 -0.081501 0.490491 45 57.5 1 0 +1424 1 1 0 40.2115 47.9963 49.5875 -0.978852 -0.200368 -0.0412506 0.490491 45 57.5 1 0 +1425 1 1 0 40.3614 47.336 50 -0.963861 -0.266405 0 0.490491 45 57.5 1 0 +1426 1 1 0 40.0895 48.6648 50 -0.991046 -0.133524 0 0.490491 45 57.5 1 0 +1427 1 1 0 40.2115 47.9963 50.4125 -0.978852 -0.200368 0.0412506 0.490491 45 57.5 1 0 +1428 1 1 0 40.3935 47.3448 50.815 -0.960655 -0.265519 0.081501 0.490491 45 57.5 1 0 +1429 1 1 0 41.1524 45.3579 50.413 -0.88476 -0.464213 0.0412991 0.490491 45 57.5 1 0 +1430 1 1 0 40.8702 46.0039 50.8232 -0.912983 -0.399607 0.0823235 0.490491 45 57.5 1 0 +1431 1 1 0 41.2066 45.3912 51.1976 -0.879344 -0.460882 0.119755 0.490491 45 57.5 1 0 +1432 1 1 0 40.6487 46.6766 51.228 -0.93513 -0.332342 0.1228 0.490491 45 57.5 1 0 +1433 1 1 0 40.9516 46.0586 51.6101 -0.904839 -0.394136 0.161007 0.490491 45 57.5 1 0 +1434 1 1 0 41.3147 45.4574 51.9823 -0.868535 -0.454262 0.198227 0.490491 45 57.5 1 0 +1435 1 1 0 40.5838 46.6586 49.587 -0.941618 -0.33414 -0.0413021 0.490491 45 57.5 1 0 +1436 1 1 0 40.5838 46.6586 50.413 -0.941618 -0.33414 0.0413021 0.490491 45 57.5 1 0 +1437 1 1 0 40.8391 45.9903 50 -0.916092 -0.400968 0 0.490491 45 57.5 1 0 +1438 1 1 0 55.7206 58.1921 49.5936 0.572055 0.819207 -0.0406403 0.490491 45 57.5 1 0 +1439 1 1 0 55.7206 58.1921 50.4064 0.572055 0.819207 0.0406403 0.490491 45 57.5 1 0 +1440 1 1 0 56.1564 57.8384 49.1891 0.615642 0.783843 -0.081086 0.490491 45 57.5 1 0 +1441 1 1 0 56.1768 57.8643 50 0.617676 0.786433 0 0.490491 45 57.5 1 0 +1442 1 1 0 56.1564 57.8384 50.8109 0.615642 0.783843 0.081086 0.490491 45 57.5 1 0 +1443 1 1 0 56.5628 57.4473 48.7886 0.656282 0.744727 -0.121144 0.490491 45 57.5 1 0 +1444 1 1 0 56.6088 57.4939 49.5936 0.660883 0.749387 -0.0406418 0.490491 45 57.5 1 0 +1445 1 1 0 56.9378 57.0205 48.3938 0.69378 0.702047 -0.160622 0.490491 45 57.5 1 0 +1446 1 1 0 57.0062 57.0897 49.1943 0.700622 0.708969 -0.0805729 0.490491 45 57.5 1 0 +1447 1 1 0 57.0291 57.1128 50 0.702907 0.711282 0 0.490491 45 57.5 1 0 +1448 1 1 0 56.6088 57.4939 50.4064 0.660883 0.749387 0.0406418 0.490491 45 57.5 1 0 +1449 1 1 0 56.5628 57.4473 51.2114 0.656282 0.744727 0.121144 0.490491 45 57.5 1 0 +1450 1 1 0 57.0062 57.0897 50.8057 0.700622 0.708969 0.0805729 0.490491 45 57.5 1 0 +1451 1 1 0 56.9378 57.0205 51.6062 0.69378 0.702047 0.160622 0.490491 45 57.5 1 0 +1452 1 1 0 57.2796 56.5601 48.0067 0.727959 0.656006 -0.199331 0.490491 45 57.5 1 0 +1453 1 1 0 57.3889 56.6284 48.7881 0.738887 0.662842 -0.121192 0.490491 45 57.5 1 0 +1454 1 1 0 57.5865 56.0683 47.6291 0.758652 0.606825 -0.237086 0.490491 45 57.5 1 0 +1455 1 1 0 57.7184 56.1546 48.4039 0.771841 0.615456 -0.159613 0.490491 45 57.5 1 0 +1456 1 1 0 57.802 56.2024 49.1886 0.780205 0.620239 -0.0811417 0.490491 45 57.5 1 0 +1457 1 1 0 57.8572 55.5474 47.2629 0.785715 0.55474 -0.273706 0.490491 45 57.5 1 0 +1458 1 1 0 58.015 55.6451 48.0273 0.801504 0.564513 -0.197274 0.490491 45 57.5 1 0 +1459 1 1 0 58.0902 55 46.9098 0.809017 0.5 -0.309017 0.490491 45 57.5 1 0 +1460 1 1 0 58.2715 55.112 47.6655 0.827147 0.511205 -0.233445 0.490491 45 57.5 1 0 +1461 1 1 0 58.4018 55.1926 48.4357 0.840178 0.519259 -0.156434 0.490491 45 57.5 1 0 +1462 1 1 0 58.1217 55.7114 48.8092 0.81217 0.57114 -0.119078 0.490491 45 57.5 1 0 +1463 1 1 0 58.1752 55.7446 49.5933 0.817523 0.574458 -0.040675 0.490491 45 57.5 1 0 +1464 1 1 0 58.4803 55.2411 49.2154 0.848029 0.52411 -0.0784592 0.490491 45 57.5 1 0 +1465 1 1 0 58.5065 55.2573 50 0.850651 0.525731 0 0.490491 45 57.5 1 0 +1466 1 1 0 57.3889 56.6284 51.2119 0.738887 0.662842 0.121192 0.490491 45 57.5 1 0 +1467 1 1 0 57.2796 56.5601 51.9933 0.727959 0.656006 0.199331 0.490491 45 57.5 1 0 +1468 1 1 0 57.802 56.2024 50.8114 0.780205 0.620239 0.0811417 0.490491 45 57.5 1 0 +1469 1 1 0 57.7184 56.1546 51.5961 0.771841 0.615456 0.159613 0.490491 45 57.5 1 0 +1470 1 1 0 57.5865 56.0683 52.3709 0.758652 0.606825 0.237086 0.490491 45 57.5 1 0 +1471 1 1 0 58.1752 55.7446 50.4067 0.817523 0.574458 0.040675 0.490491 45 57.5 1 0 +1472 1 1 0 58.1217 55.7114 51.1908 0.81217 0.57114 0.119078 0.490491 45 57.5 1 0 +1473 1 1 0 58.4803 55.2411 50.7846 0.848029 0.52411 0.0784592 0.490491 45 57.5 1 0 +1474 1 1 0 58.4018 55.1926 51.5643 0.840178 0.519259 0.156434 0.490491 45 57.5 1 0 +1475 1 1 0 58.015 55.6451 51.9727 0.801504 0.564513 0.197274 0.490491 45 57.5 1 0 +1476 1 1 0 57.8572 55.5474 52.7371 0.785715 0.55474 0.273706 0.490491 45 57.5 1 0 +1477 1 1 0 58.2715 55.112 52.3345 0.827147 0.511205 0.233445 0.490491 45 57.5 1 0 +1478 1 1 0 58.0902 55 53.0902 0.809017 0.5 0.309017 0.490491 45 57.5 1 0 +1479 1 1 0 57.435 56.675 49.5932 0.743496 0.667502 -0.0406769 0.490491 45 57.5 1 0 +1480 1 1 0 57.8279 56.2229 50 0.782786 0.622291 0 0.490491 45 57.5 1 0 +1481 1 1 0 57.435 56.675 50.4068 0.743496 0.667502 0.0406769 0.490491 45 57.5 1 0 +1482 1 1 0 58.2845 54.4287 46.5715 0.828447 0.442867 -0.342848 0.490491 45 57.5 1 0 +1483 1 1 0 58.5264 54.4446 47.2531 0.85264 0.444464 -0.274694 0.490491 45 57.5 1 0 +1484 1 1 0 58.4391 53.8361 46.2496 0.843912 0.383614 -0.375038 0.490491 45 57.5 1 0 +1485 1 1 0 58.6973 53.8591 46.9234 0.869725 0.385906 -0.307659 0.490491 45 57.5 1 0 +1486 1 1 0 58.9101 53.8619 47.6132 0.891007 0.386187 -0.238677 0.490491 45 57.5 1 0 +1487 1 1 0 58.5534 53.2252 45.9457 0.855337 0.322525 -0.405434 0.490491 45 57.5 1 0 +1488 1 1 0 58.8284 53.2486 46.6079 0.882837 0.324863 -0.339209 0.490491 45 57.5 1 0 +1489 1 1 0 58.6267 52.5989 45.6611 0.862669 0.259892 -0.433888 0.490491 45 57.5 1 0 +1490 1 1 0 58.9174 52.6266 46.3148 0.891742 0.262661 -0.368518 0.490491 45 57.5 1 0 +1491 1 1 0 59.1624 52.6408 46.9874 0.916244 0.264082 -0.301258 0.490491 45 57.5 1 0 +1492 1 1 0 59.0583 53.2593 47.2937 0.905832 0.325929 -0.270627 0.490491 45 57.5 1 0 +1493 1 1 0 59.2388 53.2553 47.9881 0.92388 0.32553 -0.201189 0.490491 45 57.5 1 0 +1494 1 1 0 59.3605 52.6415 47.6755 0.93605 0.264151 -0.232455 0.490491 45 57.5 1 0 +1495 1 1 0 59.5106 52.6287 48.3754 0.951057 0.262865 -0.16246 0.490491 45 57.5 1 0 +1496 1 1 0 58.6587 51.9602 45.3973 0.865871 0.196015 -0.460266 0.490491 45 57.5 1 0 +1497 1 1 0 58.964 51.9641 46.0265 0.896401 0.196412 -0.39735 0.490491 45 57.5 1 0 +1498 1 1 0 58.6493 51.312 45.1556 0.864929 0.1312 -0.484441 0.490491 45 57.5 1 0 +1499 1 1 0 58.968 51.3175 45.7764 0.896801 0.131749 -0.422363 0.490491 45 57.5 1 0 +1500 1 1 0 59.243 51.3166 46.4177 0.924305 0.131656 -0.358229 0.490491 45 57.5 1 0 +1501 1 1 0 58.5985 50.6576 44.937 0.859848 0.0657577 -0.506298 0.490491 45 57.5 1 0 +1502 1 1 0 58.9293 50.6582 45.5463 0.892927 0.0658169 -0.445365 0.490491 45 57.5 1 0 +1503 1 1 0 58.8497 50 45.3434 0.884965 0 -0.465657 0.490491 45 57.5 1 0 +1504 1 1 0 59.1504 50 45.9664 0.915043 0 -0.403355 0.490491 45 57.5 1 0 +1505 1 1 0 59.2192 50.6599 46.1828 0.921919 0.0659886 -0.381722 0.490491 45 57.5 1 0 +1506 1 1 0 59.462 50.6604 46.8322 0.946198 0.0660427 -0.316778 0.490491 45 57.5 1 0 +1507 1 1 0 59.4074 50 46.6088 0.940742 0 -0.339122 0.490491 45 57.5 1 0 +1508 1 1 0 59.6194 50 47.2673 0.961938 0 -0.273267 0.490491 45 57.5 1 0 +1509 1 1 0 59.6119 51.9834 48.0822 0.961188 0.198337 -0.19178 0.490491 45 57.5 1 0 +1510 1 1 0 59.7237 51.9858 48.7727 0.97237 0.198581 -0.122729 0.490491 45 57.5 1 0 +1511 1 1 0 59.6639 51.3279 47.7988 0.966393 0.132792 -0.220117 0.490491 45 57.5 1 0 +1512 1 1 0 59.7943 51.3326 48.4845 0.979426 0.133256 -0.151549 0.490491 45 57.5 1 0 +1513 1 1 0 59.8769 51.3307 49.1776 0.987688 0.133071 -0.0822422 0.490491 45 57.5 1 0 +1514 1 1 0 59.6664 50.6657 47.5267 0.966643 0.0665668 -0.247326 0.490491 45 57.5 1 0 +1515 1 1 0 59.8148 50.666 48.204 0.981483 0.0666046 -0.179596 0.490491 45 57.5 1 0 +1516 1 1 0 59.7853 50 47.939 0.97853 0 -0.206103 0.490491 45 57.5 1 0 +1517 1 1 0 59.9044 50 48.6205 0.990439 0 -0.137952 0.490491 45 57.5 1 0 +1518 1 1 0 59.9165 50.6671 48.8961 0.991648 0.0667095 -0.110385 0.490491 45 57.5 1 0 +1519 1 1 0 59.9692 50.6674 49.5875 0.996917 0.0667412 -0.0412479 0.490491 45 57.5 1 0 +1520 1 1 0 59.9761 50 49.3086 0.997607 0 -0.0691418 0.490491 45 57.5 1 0 +1521 1 1 0 60 50 50 1 0 0 0.490491 45 57.5 1 0 +1522 1 1 0 59.2268 51.9839 46.6939 0.922682 0.198387 -0.330606 0.490491 45 57.5 1 0 +1523 1 1 0 59.4782 51.3257 47.1007 0.947822 0.13257 -0.289929 0.490491 45 57.5 1 0 +1524 1 1 0 59.4443 51.9909 47.3845 0.944433 0.199094 -0.26155 0.490491 45 57.5 1 0 +1525 1 1 0 58.5264 54.4446 52.7469 0.85264 0.444464 0.274694 0.490491 45 57.5 1 0 +1526 1 1 0 58.2845 54.4287 53.4285 0.828447 0.442867 0.342848 0.490491 45 57.5 1 0 +1527 1 1 0 58.9101 53.8619 52.3868 0.891007 0.386187 0.238677 0.490491 45 57.5 1 0 +1528 1 1 0 58.6973 53.8591 53.0766 0.869725 0.385906 0.307659 0.490491 45 57.5 1 0 +1529 1 1 0 58.4391 53.8361 53.7504 0.843912 0.383614 0.375038 0.490491 45 57.5 1 0 +1530 1 1 0 59.2388 53.2553 52.0119 0.92388 0.32553 0.201189 0.490491 45 57.5 1 0 +1531 1 1 0 59.0583 53.2593 52.7063 0.905832 0.325929 0.270627 0.490491 45 57.5 1 0 +1532 1 1 0 59.5106 52.6287 51.6246 0.951057 0.262865 0.16246 0.490491 45 57.5 1 0 +1533 1 1 0 59.3605 52.6415 52.3245 0.93605 0.264151 0.232455 0.490491 45 57.5 1 0 +1534 1 1 0 59.1624 52.6408 53.0126 0.916244 0.264082 0.301258 0.490491 45 57.5 1 0 +1535 1 1 0 58.8284 53.2486 53.3921 0.882837 0.324863 0.339209 0.490491 45 57.5 1 0 +1536 1 1 0 58.5534 53.2252 54.0543 0.855337 0.322525 0.405434 0.490491 45 57.5 1 0 +1537 1 1 0 58.9174 52.6266 53.6852 0.891742 0.262661 0.368518 0.490491 45 57.5 1 0 +1538 1 1 0 58.6267 52.5989 54.3389 0.862669 0.259892 0.433888 0.490491 45 57.5 1 0 +1539 1 1 0 59.7237 51.9858 51.2273 0.97237 0.198581 0.122729 0.490491 45 57.5 1 0 +1540 1 1 0 59.6119 51.9834 51.9178 0.961188 0.198337 0.19178 0.490491 45 57.5 1 0 +1541 1 1 0 59.8769 51.3307 50.8224 0.987688 0.133071 0.0822422 0.490491 45 57.5 1 0 +1542 1 1 0 59.7943 51.3326 51.5155 0.979426 0.133256 0.151549 0.490491 45 57.5 1 0 +1543 1 1 0 59.6639 51.3279 52.2012 0.966393 0.132792 0.220117 0.490491 45 57.5 1 0 +1544 1 1 0 59.9692 50.6674 50.4125 0.996917 0.0667412 0.0412479 0.490491 45 57.5 1 0 +1545 1 1 0 59.9165 50.6671 51.1039 0.991648 0.0667095 0.110385 0.490491 45 57.5 1 0 +1546 1 1 0 59.9761 50 50.6914 0.997607 0 0.0691418 0.490491 45 57.5 1 0 +1547 1 1 0 59.9044 50 51.3795 0.990439 0 0.137952 0.490491 45 57.5 1 0 +1548 1 1 0 59.8148 50.666 51.796 0.981483 0.0666046 0.179596 0.490491 45 57.5 1 0 +1549 1 1 0 59.6664 50.6657 52.4733 0.966643 0.0665668 0.247326 0.490491 45 57.5 1 0 +1550 1 1 0 59.7853 50 52.061 0.97853 0 0.206103 0.490491 45 57.5 1 0 +1551 1 1 0 59.6194 50 52.7327 0.961938 0 0.273267 0.490491 45 57.5 1 0 +1552 1 1 0 58.964 51.9641 53.9735 0.896401 0.196412 0.39735 0.490491 45 57.5 1 0 +1553 1 1 0 58.6587 51.9602 54.6027 0.865871 0.196015 0.460266 0.490491 45 57.5 1 0 +1554 1 1 0 59.243 51.3166 53.5823 0.924305 0.131656 0.358229 0.490491 45 57.5 1 0 +1555 1 1 0 58.968 51.3175 54.2236 0.896801 0.131749 0.422363 0.490491 45 57.5 1 0 +1556 1 1 0 58.6493 51.312 54.8444 0.864929 0.1312 0.484441 0.490491 45 57.5 1 0 +1557 1 1 0 59.462 50.6604 53.1678 0.946198 0.0660427 0.316778 0.490491 45 57.5 1 0 +1558 1 1 0 59.2192 50.6599 53.8172 0.921919 0.0659886 0.381722 0.490491 45 57.5 1 0 +1559 1 1 0 59.4074 50 53.3912 0.940742 0 0.339122 0.490491 45 57.5 1 0 +1560 1 1 0 59.1504 50 54.0336 0.915043 0 0.403355 0.490491 45 57.5 1 0 +1561 1 1 0 58.9293 50.6582 54.4537 0.892927 0.0658169 0.445365 0.490491 45 57.5 1 0 +1562 1 1 0 58.5985 50.6576 55.063 0.859848 0.0657577 0.506298 0.490491 45 57.5 1 0 +1563 1 1 0 58.8497 50 54.6566 0.884965 0 0.465657 0.490491 45 57.5 1 0 +1564 1 1 0 59.4443 51.9909 52.6155 0.944433 0.199094 0.26155 0.490491 45 57.5 1 0 +1565 1 1 0 59.4782 51.3257 52.8993 0.947822 0.13257 0.289929 0.490491 45 57.5 1 0 +1566 1 1 0 59.2268 51.9839 53.3061 0.922682 0.198387 0.330606 0.490491 45 57.5 1 0 +1567 1 1 0 58.6853 54.5426 48.0177 0.868535 0.454262 -0.198227 0.490491 45 57.5 1 0 +1568 1 1 0 59.0484 53.9414 48.3899 0.904839 0.394136 -0.161007 0.490491 45 57.5 1 0 +1569 1 1 0 59.3513 53.3234 48.772 0.93513 0.332342 -0.1228 0.490491 45 57.5 1 0 +1570 1 1 0 59.1298 53.9961 49.1768 0.912983 0.399607 -0.0823235 0.490491 45 57.5 1 0 +1571 1 1 0 58.7934 54.6088 48.8024 0.879344 0.460882 -0.119755 0.490491 45 57.5 1 0 +1572 1 1 0 58.8476 54.6421 49.587 0.88476 0.464213 -0.0412991 0.490491 45 57.5 1 0 +1573 1 1 0 59.6065 52.6552 49.185 0.960655 0.265519 -0.081501 0.490491 45 57.5 1 0 +1574 1 1 0 59.7885 52.0037 49.5875 0.978852 0.200368 -0.0412506 0.490491 45 57.5 1 0 +1575 1 1 0 59.6386 52.664 50 0.963861 0.266405 0 0.490491 45 57.5 1 0 +1576 1 1 0 59.9105 51.3352 50 0.991046 0.133524 0 0.490491 45 57.5 1 0 +1577 1 1 0 59.7885 52.0037 50.4125 0.978852 0.200368 0.0412506 0.490491 45 57.5 1 0 +1578 1 1 0 59.6065 52.6552 50.815 0.960655 0.265519 0.081501 0.490491 45 57.5 1 0 +1579 1 1 0 58.8476 54.6421 50.413 0.88476 0.464213 0.0412991 0.490491 45 57.5 1 0 +1580 1 1 0 59.1298 53.9961 50.8232 0.912983 0.399607 0.0823235 0.490491 45 57.5 1 0 +1581 1 1 0 58.7934 54.6088 51.1976 0.879344 0.460882 0.119755 0.490491 45 57.5 1 0 +1582 1 1 0 59.3513 53.3234 51.228 0.93513 0.332342 0.1228 0.490491 45 57.5 1 0 +1583 1 1 0 59.0484 53.9414 51.6101 0.904839 0.394136 0.161007 0.490491 45 57.5 1 0 +1584 1 1 0 58.6853 54.5426 51.9823 0.868535 0.454262 0.198227 0.490491 45 57.5 1 0 +1585 1 1 0 59.4162 53.3414 49.587 0.941618 0.33414 -0.0413021 0.490491 45 57.5 1 0 +1586 1 1 0 59.4162 53.3414 50.413 0.941618 0.33414 0.0413021 0.490491 45 57.5 1 0 +1587 1 1 0 59.1609 54.0097 50 0.916092 0.400968 0 0.490491 45 57.5 1 0 +1588 1 1 0 55.7206 41.8079 50.4064 0.572055 -0.819207 0.0406403 0.490491 45 57.5 1 0 +1589 1 1 0 55.7206 41.8079 49.5936 0.572055 -0.819207 -0.0406403 0.490491 45 57.5 1 0 +1590 1 1 0 56.1564 42.1616 50.8109 0.615642 -0.783843 0.081086 0.490491 45 57.5 1 0 +1591 1 1 0 56.1768 42.1357 50 0.617676 -0.786433 0 0.490491 45 57.5 1 0 +1592 1 1 0 56.1564 42.1616 49.1891 0.615642 -0.783843 -0.081086 0.490491 45 57.5 1 0 +1593 1 1 0 56.5628 42.5527 51.2114 0.656282 -0.744727 0.121144 0.490491 45 57.5 1 0 +1594 1 1 0 56.6088 42.5061 50.4064 0.660883 -0.749387 0.0406418 0.490491 45 57.5 1 0 +1595 1 1 0 56.9378 42.9795 51.6062 0.69378 -0.702047 0.160622 0.490491 45 57.5 1 0 +1596 1 1 0 57.0062 42.9103 50.8057 0.700622 -0.708969 0.0805729 0.490491 45 57.5 1 0 +1597 1 1 0 57.0291 42.8872 50 0.702907 -0.711282 0 0.490491 45 57.5 1 0 +1598 1 1 0 56.6088 42.5061 49.5936 0.660883 -0.749387 -0.0406418 0.490491 45 57.5 1 0 +1599 1 1 0 56.5628 42.5527 48.7886 0.656282 -0.744727 -0.121144 0.490491 45 57.5 1 0 +1600 1 1 0 57.0062 42.9103 49.1943 0.700622 -0.708969 -0.0805729 0.490491 45 57.5 1 0 +1601 1 1 0 56.9378 42.9795 48.3938 0.69378 -0.702047 -0.160622 0.490491 45 57.5 1 0 +1602 1 1 0 57.2796 43.4399 51.9933 0.727959 -0.656006 0.199331 0.490491 45 57.5 1 0 +1603 1 1 0 57.3889 43.3716 51.2119 0.738887 -0.662842 0.121192 0.490491 45 57.5 1 0 +1604 1 1 0 57.5865 43.9317 52.3709 0.758652 -0.606825 0.237086 0.490491 45 57.5 1 0 +1605 1 1 0 57.7184 43.8454 51.5961 0.771841 -0.615456 0.159613 0.490491 45 57.5 1 0 +1606 1 1 0 57.802 43.7976 50.8114 0.780205 -0.620239 0.0811417 0.490491 45 57.5 1 0 +1607 1 1 0 57.8572 44.4526 52.7371 0.785715 -0.55474 0.273706 0.490491 45 57.5 1 0 +1608 1 1 0 58.015 44.3549 51.9727 0.801504 -0.564513 0.197274 0.490491 45 57.5 1 0 +1609 1 1 0 58.0902 45 53.0902 0.809017 -0.5 0.309017 0.490491 45 57.5 1 0 +1610 1 1 0 58.2715 44.888 52.3345 0.827147 -0.511205 0.233445 0.490491 45 57.5 1 0 +1611 1 1 0 58.4018 44.8074 51.5643 0.840178 -0.519259 0.156434 0.490491 45 57.5 1 0 +1612 1 1 0 58.1217 44.2886 51.1908 0.81217 -0.57114 0.119078 0.490491 45 57.5 1 0 +1613 1 1 0 58.1752 44.2554 50.4067 0.817523 -0.574458 0.040675 0.490491 45 57.5 1 0 +1614 1 1 0 58.4803 44.7589 50.7846 0.848029 -0.52411 0.0784592 0.490491 45 57.5 1 0 +1615 1 1 0 58.5065 44.7427 50 0.850651 -0.525731 0 0.490491 45 57.5 1 0 +1616 1 1 0 57.3889 43.3716 48.7881 0.738887 -0.662842 -0.121192 0.490491 45 57.5 1 0 +1617 1 1 0 57.2796 43.4399 48.0067 0.727959 -0.656006 -0.199331 0.490491 45 57.5 1 0 +1618 1 1 0 57.802 43.7976 49.1886 0.780205 -0.620239 -0.0811417 0.490491 45 57.5 1 0 +1619 1 1 0 57.7184 43.8454 48.4039 0.771841 -0.615456 -0.159613 0.490491 45 57.5 1 0 +1620 1 1 0 57.5865 43.9317 47.6291 0.758652 -0.606825 -0.237086 0.490491 45 57.5 1 0 +1621 1 1 0 58.1752 44.2554 49.5933 0.817523 -0.574458 -0.040675 0.490491 45 57.5 1 0 +1622 1 1 0 58.1217 44.2886 48.8092 0.81217 -0.57114 -0.119078 0.490491 45 57.5 1 0 +1623 1 1 0 58.4803 44.7589 49.2154 0.848029 -0.52411 -0.0784592 0.490491 45 57.5 1 0 +1624 1 1 0 58.4018 44.8074 48.4357 0.840178 -0.519259 -0.156434 0.490491 45 57.5 1 0 +1625 1 1 0 58.015 44.3549 48.0273 0.801504 -0.564513 -0.197274 0.490491 45 57.5 1 0 +1626 1 1 0 57.8572 44.4526 47.2629 0.785715 -0.55474 -0.273706 0.490491 45 57.5 1 0 +1627 1 1 0 58.2715 44.888 47.6655 0.827147 -0.511205 -0.233445 0.490491 45 57.5 1 0 +1628 1 1 0 58.0902 45 46.9098 0.809017 -0.5 -0.309017 0.490491 45 57.5 1 0 +1629 1 1 0 57.435 43.325 50.4068 0.743496 -0.667502 0.0406769 0.490491 45 57.5 1 0 +1630 1 1 0 57.8279 43.7771 50 0.782786 -0.622291 0 0.490491 45 57.5 1 0 +1631 1 1 0 57.435 43.325 49.5932 0.743496 -0.667502 -0.0406769 0.490491 45 57.5 1 0 +1632 1 1 0 58.2845 45.5713 53.4285 0.828447 -0.442867 0.342848 0.490491 45 57.5 1 0 +1633 1 1 0 58.5264 45.5554 52.7469 0.85264 -0.444464 0.274694 0.490491 45 57.5 1 0 +1634 1 1 0 58.4391 46.1639 53.7504 0.843912 -0.383614 0.375038 0.490491 45 57.5 1 0 +1635 1 1 0 58.6973 46.1409 53.0766 0.869725 -0.385906 0.307659 0.490491 45 57.5 1 0 +1636 1 1 0 58.9101 46.1381 52.3868 0.891007 -0.386187 0.238677 0.490491 45 57.5 1 0 +1637 1 1 0 58.5534 46.7748 54.0543 0.855337 -0.322525 0.405434 0.490491 45 57.5 1 0 +1638 1 1 0 58.8284 46.7514 53.3921 0.882837 -0.324863 0.339209 0.490491 45 57.5 1 0 +1639 1 1 0 58.6267 47.4011 54.3389 0.862669 -0.259892 0.433888 0.490491 45 57.5 1 0 +1640 1 1 0 58.9174 47.3734 53.6852 0.891742 -0.262661 0.368518 0.490491 45 57.5 1 0 +1641 1 1 0 59.1624 47.3592 53.0126 0.916244 -0.264082 0.301258 0.490491 45 57.5 1 0 +1642 1 1 0 59.0583 46.7407 52.7063 0.905832 -0.325929 0.270627 0.490491 45 57.5 1 0 +1643 1 1 0 59.2388 46.7447 52.0119 0.92388 -0.32553 0.201189 0.490491 45 57.5 1 0 +1644 1 1 0 59.3605 47.3585 52.3245 0.93605 -0.264151 0.232455 0.490491 45 57.5 1 0 +1645 1 1 0 59.5106 47.3713 51.6246 0.951057 -0.262865 0.16246 0.490491 45 57.5 1 0 +1646 1 1 0 58.6587 48.0398 54.6027 0.865871 -0.196015 0.460266 0.490491 45 57.5 1 0 +1647 1 1 0 58.964 48.0359 53.9735 0.896401 -0.196412 0.39735 0.490491 45 57.5 1 0 +1648 1 1 0 58.6493 48.688 54.8444 0.864929 -0.1312 0.484441 0.490491 45 57.5 1 0 +1649 1 1 0 58.968 48.6825 54.2236 0.896801 -0.131749 0.422363 0.490491 45 57.5 1 0 +1650 1 1 0 59.243 48.6834 53.5823 0.924305 -0.131656 0.358229 0.490491 45 57.5 1 0 +1651 1 1 0 58.5985 49.3424 55.063 0.859848 -0.0657577 0.506298 0.490491 45 57.5 1 0 +1652 1 1 0 58.9293 49.3418 54.4537 0.892927 -0.0658169 0.445365 0.490491 45 57.5 1 0 +1653 1 1 0 59.2192 49.3401 53.8172 0.921919 -0.0659886 0.381722 0.490491 45 57.5 1 0 +1654 1 1 0 59.462 49.3396 53.1678 0.946198 -0.0660427 0.316778 0.490491 45 57.5 1 0 +1655 1 1 0 59.6119 48.0166 51.9178 0.961188 -0.198337 0.19178 0.490491 45 57.5 1 0 +1656 1 1 0 59.7237 48.0142 51.2273 0.97237 -0.198581 0.122729 0.490491 45 57.5 1 0 +1657 1 1 0 59.6639 48.6721 52.2012 0.966393 -0.132792 0.220117 0.490491 45 57.5 1 0 +1658 1 1 0 59.7943 48.6674 51.5155 0.979426 -0.133256 0.151549 0.490491 45 57.5 1 0 +1659 1 1 0 59.8769 48.6693 50.8224 0.987688 -0.133071 0.0822422 0.490491 45 57.5 1 0 +1660 1 1 0 59.6664 49.3343 52.4733 0.966643 -0.0665668 0.247326 0.490491 45 57.5 1 0 +1661 1 1 0 59.8148 49.334 51.796 0.981483 -0.0666046 0.179596 0.490491 45 57.5 1 0 +1662 1 1 0 59.9165 49.3329 51.1039 0.991648 -0.0667095 0.110385 0.490491 45 57.5 1 0 +1663 1 1 0 59.9692 49.3326 50.4125 0.996917 -0.0667412 0.0412479 0.490491 45 57.5 1 0 +1664 1 1 0 59.2268 48.0161 53.3061 0.922682 -0.198387 0.330606 0.490491 45 57.5 1 0 +1665 1 1 0 59.4782 48.6743 52.8993 0.947822 -0.13257 0.289929 0.490491 45 57.5 1 0 +1666 1 1 0 59.4443 48.0091 52.6155 0.944433 -0.199094 0.26155 0.490491 45 57.5 1 0 +1667 1 1 0 58.5264 45.5554 47.2531 0.85264 -0.444464 -0.274694 0.490491 45 57.5 1 0 +1668 1 1 0 58.2845 45.5713 46.5715 0.828447 -0.442867 -0.342848 0.490491 45 57.5 1 0 +1669 1 1 0 58.9101 46.1381 47.6132 0.891007 -0.386187 -0.238677 0.490491 45 57.5 1 0 +1670 1 1 0 58.6973 46.1409 46.9234 0.869725 -0.385906 -0.307659 0.490491 45 57.5 1 0 +1671 1 1 0 58.4391 46.1639 46.2496 0.843912 -0.383614 -0.375038 0.490491 45 57.5 1 0 +1672 1 1 0 59.2388 46.7447 47.9881 0.92388 -0.32553 -0.201189 0.490491 45 57.5 1 0 +1673 1 1 0 59.0583 46.7407 47.2937 0.905832 -0.325929 -0.270627 0.490491 45 57.5 1 0 +1674 1 1 0 59.5106 47.3713 48.3754 0.951057 -0.262865 -0.16246 0.490491 45 57.5 1 0 +1675 1 1 0 59.3605 47.3585 47.6755 0.93605 -0.264151 -0.232455 0.490491 45 57.5 1 0 +1676 1 1 0 59.1624 47.3592 46.9874 0.916244 -0.264082 -0.301258 0.490491 45 57.5 1 0 +1677 1 1 0 58.8284 46.7514 46.6079 0.882837 -0.324863 -0.339209 0.490491 45 57.5 1 0 +1678 1 1 0 58.5534 46.7748 45.9457 0.855337 -0.322525 -0.405434 0.490491 45 57.5 1 0 +1679 1 1 0 58.9174 47.3734 46.3148 0.891742 -0.262661 -0.368518 0.490491 45 57.5 1 0 +1680 1 1 0 58.6267 47.4011 45.6611 0.862669 -0.259892 -0.433888 0.490491 45 57.5 1 0 +1681 1 1 0 59.7237 48.0142 48.7727 0.97237 -0.198581 -0.122729 0.490491 45 57.5 1 0 +1682 1 1 0 59.6119 48.0166 48.0822 0.961188 -0.198337 -0.19178 0.490491 45 57.5 1 0 +1683 1 1 0 59.8769 48.6693 49.1776 0.987688 -0.133071 -0.0822422 0.490491 45 57.5 1 0 +1684 1 1 0 59.7943 48.6674 48.4845 0.979426 -0.133256 -0.151549 0.490491 45 57.5 1 0 +1685 1 1 0 59.6639 48.6721 47.7988 0.966393 -0.132792 -0.220117 0.490491 45 57.5 1 0 +1686 1 1 0 59.9692 49.3326 49.5875 0.996917 -0.0667412 -0.0412479 0.490491 45 57.5 1 0 +1687 1 1 0 59.9165 49.3329 48.8961 0.991648 -0.0667095 -0.110385 0.490491 45 57.5 1 0 +1688 1 1 0 59.8148 49.334 48.204 0.981483 -0.0666046 -0.179596 0.490491 45 57.5 1 0 +1689 1 1 0 59.6664 49.3343 47.5267 0.966643 -0.0665668 -0.247326 0.490491 45 57.5 1 0 +1690 1 1 0 58.964 48.0359 46.0265 0.896401 -0.196412 -0.39735 0.490491 45 57.5 1 0 +1691 1 1 0 58.6587 48.0398 45.3973 0.865871 -0.196015 -0.460266 0.490491 45 57.5 1 0 +1692 1 1 0 59.243 48.6834 46.4177 0.924305 -0.131656 -0.358229 0.490491 45 57.5 1 0 +1693 1 1 0 58.968 48.6825 45.7764 0.896801 -0.131749 -0.422363 0.490491 45 57.5 1 0 +1694 1 1 0 58.6493 48.688 45.1556 0.864929 -0.1312 -0.484441 0.490491 45 57.5 1 0 +1695 1 1 0 59.462 49.3396 46.8322 0.946198 -0.0660427 -0.316778 0.490491 45 57.5 1 0 +1696 1 1 0 59.2192 49.3401 46.1828 0.921919 -0.0659886 -0.381722 0.490491 45 57.5 1 0 +1697 1 1 0 58.9293 49.3418 45.5463 0.892927 -0.0658169 -0.445365 0.490491 45 57.5 1 0 +1698 1 1 0 58.5985 49.3424 44.937 0.859848 -0.0657577 -0.506298 0.490491 45 57.5 1 0 +1699 1 1 0 59.4443 48.0091 47.3845 0.944433 -0.199094 -0.26155 0.490491 45 57.5 1 0 +1700 1 1 0 59.4782 48.6743 47.1007 0.947822 -0.13257 -0.289929 0.490491 45 57.5 1 0 +1701 1 1 0 59.2268 48.0161 46.6939 0.922682 -0.198387 -0.330606 0.490491 45 57.5 1 0 +1702 1 1 0 58.6853 45.4574 51.9823 0.868535 -0.454262 0.198227 0.490491 45 57.5 1 0 +1703 1 1 0 59.0484 46.0586 51.6101 0.904839 -0.394136 0.161007 0.490491 45 57.5 1 0 +1704 1 1 0 59.3513 46.6766 51.228 0.93513 -0.332342 0.1228 0.490491 45 57.5 1 0 +1705 1 1 0 59.1298 46.0039 50.8232 0.912983 -0.399607 0.0823235 0.490491 45 57.5 1 0 +1706 1 1 0 58.7934 45.3912 51.1976 0.879344 -0.460882 0.119755 0.490491 45 57.5 1 0 +1707 1 1 0 58.8476 45.3579 50.413 0.88476 -0.464213 0.0412991 0.490491 45 57.5 1 0 +1708 1 1 0 59.6065 47.3448 50.815 0.960655 -0.265519 0.081501 0.490491 45 57.5 1 0 +1709 1 1 0 59.7885 47.9963 50.4125 0.978852 -0.200368 0.0412506 0.490491 45 57.5 1 0 +1710 1 1 0 59.6386 47.336 50 0.963861 -0.266405 0 0.490491 45 57.5 1 0 +1711 1 1 0 59.9105 48.6648 50 0.991046 -0.133524 0 0.490491 45 57.5 1 0 +1712 1 1 0 59.7885 47.9963 49.5875 0.978852 -0.200368 -0.0412506 0.490491 45 57.5 1 0 +1713 1 1 0 59.6065 47.3448 49.185 0.960655 -0.265519 -0.081501 0.490491 45 57.5 1 0 +1714 1 1 0 58.8476 45.3579 49.587 0.88476 -0.464213 -0.0412991 0.490491 45 57.5 1 0 +1715 1 1 0 59.1298 46.0039 49.1768 0.912983 -0.399607 -0.0823235 0.490491 45 57.5 1 0 +1716 1 1 0 58.7934 45.3912 48.8024 0.879344 -0.460882 -0.119755 0.490491 45 57.5 1 0 +1717 1 1 0 59.3513 46.6766 48.772 0.93513 -0.332342 -0.1228 0.490491 45 57.5 1 0 +1718 1 1 0 59.0484 46.0586 48.3899 0.904839 -0.394136 -0.161007 0.490491 45 57.5 1 0 +1719 1 1 0 58.6853 45.4574 48.0177 0.868535 -0.454262 -0.198227 0.490491 45 57.5 1 0 +1720 1 1 0 59.4162 46.6586 50.413 0.941618 -0.33414 0.0413021 0.490491 45 57.5 1 0 +1721 1 1 0 59.4162 46.6586 49.587 0.941618 -0.33414 -0.0413021 0.490491 45 57.5 1 0 +1722 1 1 0 59.1609 45.9903 50 0.916092 -0.400968 0 0.490491 45 57.5 1 0 +1723 1 1 0 48.9351 55.5186 58.2711 -0.106494 0.551859 0.82711 0.490491 45 57.5 1 0 +1724 1 1 0 48.2747 55.2913 58.3081 -0.172532 0.529135 0.830812 0.490491 45 57.5 1 0 +1725 1 1 0 47.6277 55.0421 58.3036 -0.237228 0.504209 0.830359 0.490491 45 57.5 1 0 +1726 1 1 0 47.8698 55.7125 57.9265 -0.213023 0.571251 0.79265 0.490491 45 57.5 1 0 +1727 1 1 0 48.5259 55.949 57.9017 -0.147413 0.594895 0.79017 0.490491 45 57.5 1 0 +1728 1 1 0 48.1257 56.3458 57.4979 -0.187432 0.634579 0.749786 0.490491 45 57.5 1 0 +1729 1 1 0 46.962 54.7623 58.2518 -0.303801 0.476225 0.825175 0.490491 45 57.5 1 0 +1730 1 1 0 46.3397 54.4698 58.1623 -0.366027 0.446977 0.816233 0.490491 45 57.5 1 0 +1731 1 1 0 46.5385 55.1612 57.8345 -0.346153 0.516122 0.783452 0.490491 45 57.5 1 0 +1732 1 1 0 45.7287 54.156 58.0302 -0.427135 0.415597 0.803016 0.490491 45 57.5 1 0 +1733 1 1 0 45.1429 53.8268 57.859 -0.485712 0.382683 0.785899 0.490491 45 57.5 1 0 +1734 1 1 0 45.3157 54.5399 57.5794 -0.46843 0.45399 0.757936 0.490491 45 57.5 1 0 +1735 1 1 0 45.9171 54.8624 57.7258 -0.408286 0.48624 0.772575 0.490491 45 57.5 1 0 +1736 1 1 0 46.1327 55.5337 57.3771 -0.38673 0.553372 0.737712 0.490491 45 57.5 1 0 +1737 1 1 0 45.5174 55.225 57.253 -0.448259 0.522499 0.725299 0.490491 45 57.5 1 0 +1738 1 1 0 45.7467 55.8779 56.8819 -0.425325 0.587785 0.688191 0.490491 45 57.5 1 0 +1739 1 1 0 47.711 56.7232 57.0398 -0.228899 0.672319 0.703983 0.490491 45 57.5 1 0 +1740 1 1 0 47.04 56.4741 57.0231 -0.296004 0.647412 0.70231 0.490491 45 57.5 1 0 +1741 1 1 0 47.3262 57.0524 56.5662 -0.267381 0.705236 0.65662 0.490491 45 57.5 1 0 +1742 1 1 0 46.3841 56.1919 56.9704 -0.361591 0.619186 0.697037 0.490491 45 57.5 1 0 +1743 1 1 0 46.6531 56.7891 56.535 -0.334691 0.678913 0.653497 0.490491 45 57.5 1 0 +1744 1 1 0 46.0023 56.4945 56.4684 -0.399769 0.649448 0.64684 0.490491 45 57.5 1 0 +1745 1 1 0 46.2825 57.0711 56.015 -0.371748 0.707107 0.601501 0.490491 45 57.5 1 0 +1746 1 1 0 46.9479 57.3479 56.0574 -0.305212 0.734794 0.605742 0.490491 45 57.5 1 0 +1747 1 1 0 46.5857 57.6041 55.5245 -0.341435 0.760406 0.552454 0.490491 45 57.5 1 0 +1748 1 1 0 47.1968 55.4511 57.9011 -0.280319 0.545109 0.790112 0.490491 45 57.5 1 0 +1749 1 1 0 46.7786 55.8369 57.4534 -0.322141 0.583692 0.745339 0.490491 45 57.5 1 0 +1750 1 1 0 47.4482 56.1093 57.4944 -0.25518 0.610926 0.749435 0.490491 45 57.5 1 0 +1751 1 1 0 44.4755 53.4143 57.6041 -0.552454 0.341435 0.760406 0.490491 45 57.5 1 0 +1752 1 1 0 43.9426 53.0521 57.3479 -0.605742 0.305212 0.734794 0.490491 45 57.5 1 0 +1753 1 1 0 43.985 53.7175 57.0711 -0.601501 0.371748 0.707107 0.490491 45 57.5 1 0 +1754 1 1 0 43.4338 52.6738 57.0524 -0.65662 0.267381 0.705236 0.490491 45 57.5 1 0 +1755 1 1 0 42.9602 52.289 56.7232 -0.703983 0.228899 0.672319 0.490491 45 57.5 1 0 +1756 1 1 0 42.9769 52.96 56.4741 -0.70231 0.296004 0.647412 0.490491 45 57.5 1 0 +1757 1 1 0 43.465 53.3469 56.7891 -0.653497 0.334691 0.678913 0.490491 45 57.5 1 0 +1758 1 1 0 43.5316 53.9977 56.4945 -0.64684 0.399769 0.649448 0.490491 45 57.5 1 0 +1759 1 1 0 43.0296 53.6159 56.1919 -0.697037 0.361591 0.619186 0.490491 45 57.5 1 0 +1760 1 1 0 43.1181 54.2533 55.8779 -0.688191 0.425325 0.587785 0.490491 45 57.5 1 0 +1761 1 1 0 42.5021 51.8743 56.3458 -0.749786 0.187432 0.634579 0.490491 45 57.5 1 0 +1762 1 1 0 42.0983 51.4741 55.949 -0.79017 0.147413 0.594895 0.490491 45 57.5 1 0 +1763 1 1 0 42.0735 52.1302 55.7125 -0.79265 0.213023 0.571251 0.490491 45 57.5 1 0 +1764 1 1 0 41.7289 51.0649 55.5186 -0.82711 0.106494 0.551859 0.490491 45 57.5 1 0 +1765 1 1 0 41.6919 51.7253 55.2913 -0.830812 0.172532 0.529135 0.490491 45 57.5 1 0 +1766 1 1 0 41.6964 52.3723 55.0421 -0.830359 0.237228 0.504209 0.490491 45 57.5 1 0 +1767 1 1 0 42.6229 53.8673 55.5337 -0.737712 0.38673 0.553372 0.490491 45 57.5 1 0 +1768 1 1 0 42.747 54.4826 55.225 -0.725299 0.448259 0.522499 0.490491 45 57.5 1 0 +1769 1 1 0 42.1655 53.4615 55.1612 -0.783452 0.346153 0.516122 0.490491 45 57.5 1 0 +1770 1 1 0 42.2742 54.0829 54.8624 -0.772575 0.408286 0.48624 0.490491 45 57.5 1 0 +1771 1 1 0 42.4206 54.6843 54.5399 -0.757936 0.46843 0.45399 0.490491 45 57.5 1 0 +1772 1 1 0 41.7482 53.038 54.7623 -0.825175 0.303801 0.476225 0.490491 45 57.5 1 0 +1773 1 1 0 41.8377 53.6603 54.4698 -0.816233 0.366027 0.446977 0.490491 45 57.5 1 0 +1774 1 1 0 41.9698 54.2713 54.156 -0.803016 0.427135 0.415597 0.490491 45 57.5 1 0 +1775 1 1 0 42.141 54.8571 53.8268 -0.785899 0.485712 0.382683 0.490491 45 57.5 1 0 +1776 1 1 0 42.5056 52.5518 56.1093 -0.749435 0.25518 0.610926 0.490491 45 57.5 1 0 +1777 1 1 0 42.0989 52.8032 55.4511 -0.790112 0.280319 0.545109 0.490491 45 57.5 1 0 +1778 1 1 0 42.5466 53.2214 55.8369 -0.745339 0.322141 0.583692 0.490491 45 57.5 1 0 +1779 1 1 0 46.1732 57.859 54.8571 -0.382683 0.785899 0.485712 0.490491 45 57.5 1 0 +1780 1 1 0 45.4601 57.5794 54.6843 -0.45399 0.757936 0.46843 0.490491 45 57.5 1 0 +1781 1 1 0 45.844 58.0302 54.2713 -0.415597 0.803016 0.427135 0.490491 45 57.5 1 0 +1782 1 1 0 44.775 57.253 54.4826 -0.522499 0.725299 0.448259 0.490491 45 57.5 1 0 +1783 1 1 0 45.1376 57.7258 54.0829 -0.48624 0.772575 0.408286 0.490491 45 57.5 1 0 +1784 1 1 0 44.1221 56.8819 54.2533 -0.587785 0.688191 0.425325 0.490491 45 57.5 1 0 +1785 1 1 0 44.4663 57.3771 53.8673 -0.553372 0.737712 0.38673 0.490491 45 57.5 1 0 +1786 1 1 0 44.8388 57.8345 53.4615 -0.516122 0.783452 0.346153 0.490491 45 57.5 1 0 +1787 1 1 0 45.5302 58.1623 53.6603 -0.446977 0.816233 0.366027 0.490491 45 57.5 1 0 +1788 1 1 0 45.2377 58.2518 53.038 -0.476225 0.825175 0.303801 0.490491 45 57.5 1 0 +1789 1 1 0 43.5055 56.4684 53.9977 -0.649448 0.64684 0.399769 0.490491 45 57.5 1 0 +1790 1 1 0 43.8081 56.9704 53.6159 -0.619186 0.697037 0.361591 0.490491 45 57.5 1 0 +1791 1 1 0 42.9289 56.015 53.7175 -0.707107 0.601501 0.371748 0.490491 45 57.5 1 0 +1792 1 1 0 43.2109 56.535 53.3469 -0.678913 0.653497 0.334691 0.490491 45 57.5 1 0 +1793 1 1 0 43.5259 57.0231 52.96 -0.647412 0.70231 0.296004 0.490491 45 57.5 1 0 +1794 1 1 0 42.3959 55.5245 53.4143 -0.760406 0.552454 0.341435 0.490491 45 57.5 1 0 +1795 1 1 0 42.6521 56.0574 53.0521 -0.734794 0.605742 0.305212 0.490491 45 57.5 1 0 +1796 1 1 0 42.9476 56.5662 52.6738 -0.705236 0.65662 0.267381 0.490491 45 57.5 1 0 +1797 1 1 0 43.2768 57.0398 52.289 -0.672319 0.703983 0.228899 0.490491 45 57.5 1 0 +1798 1 1 0 44.9579 58.3036 52.3723 -0.504209 0.830359 0.237228 0.490491 45 57.5 1 0 +1799 1 1 0 44.2875 57.9265 52.1302 -0.571251 0.79265 0.213023 0.490491 45 57.5 1 0 +1800 1 1 0 44.7087 58.3081 51.7253 -0.529135 0.830812 0.172532 0.490491 45 57.5 1 0 +1801 1 1 0 43.6542 57.4979 51.8743 -0.634579 0.749786 0.187432 0.490491 45 57.5 1 0 +1802 1 1 0 44.051 57.9017 51.4741 -0.594895 0.79017 0.147413 0.490491 45 57.5 1 0 +1803 1 1 0 44.4814 58.2711 51.0649 -0.551859 0.82711 0.106494 0.490491 45 57.5 1 0 +1804 1 1 0 44.1631 57.4534 53.2214 -0.583692 0.745339 0.322141 0.490491 45 57.5 1 0 +1805 1 1 0 43.8907 57.4944 52.5518 -0.610926 0.749435 0.25518 0.490491 45 57.5 1 0 +1806 1 1 0 44.5489 57.9011 52.8032 -0.545109 0.790112 0.280319 0.490491 45 57.5 1 0 +1807 1 1 0 44.6322 54.1427 57.3501 -0.536784 0.414272 0.735011 0.490491 45 57.5 1 0 +1808 1 1 0 44.1528 54.4396 56.7898 -0.584716 0.443957 0.678977 0.490491 45 57.5 1 0 +1809 1 1 0 43.7169 54.7092 56.1924 -0.628313 0.470917 0.619242 0.490491 45 57.5 1 0 +1810 1 1 0 44.3575 55.1338 56.4658 -0.564254 0.513375 0.646578 0.490491 45 57.5 1 0 +1811 1 1 0 44.8203 54.8521 57.0447 -0.51797 0.485208 0.704471 0.490491 45 57.5 1 0 +1812 1 1 0 45.0356 55.5242 56.6961 -0.496441 0.552418 0.669612 0.490491 45 57.5 1 0 +1813 1 1 0 43.3039 54.9644 55.5242 -0.669612 0.496441 0.552418 0.490491 45 57.5 1 0 +1814 1 1 0 42.9553 55.1797 54.8521 -0.704471 0.51797 0.485208 0.490491 45 57.5 1 0 +1815 1 1 0 43.5342 55.6425 55.1338 -0.646578 0.564254 0.513375 0.490491 45 57.5 1 0 +1816 1 1 0 42.6499 55.3678 54.1427 -0.735011 0.536784 0.414272 0.490491 45 57.5 1 0 +1817 1 1 0 43.2102 55.8472 54.4396 -0.678977 0.584716 0.443957 0.490491 45 57.5 1 0 +1818 1 1 0 43.8076 56.2831 54.7092 -0.619242 0.628313 0.470917 0.490491 45 57.5 1 0 +1819 1 1 0 45.2908 56.1924 56.2831 -0.470917 0.619242 0.628313 0.490491 45 57.5 1 0 +1820 1 1 0 44.8662 56.4658 55.6425 -0.513375 0.646578 0.564254 0.490491 45 57.5 1 0 +1821 1 1 0 45.5604 56.7898 55.8472 -0.443957 0.678977 0.584716 0.490491 45 57.5 1 0 +1822 1 1 0 44.4758 56.6961 54.9644 -0.552418 0.669612 0.496441 0.490491 45 57.5 1 0 +1823 1 1 0 45.1479 57.0447 55.1797 -0.485208 0.704471 0.51797 0.490491 45 57.5 1 0 +1824 1 1 0 45.8573 57.3501 55.3678 -0.414272 0.735011 0.536784 0.490491 45 57.5 1 0 +1825 1 1 0 43.9252 55.4065 55.8195 -0.607478 0.54065 0.581952 0.490491 45 57.5 1 0 +1826 1 1 0 44.1805 56.0748 55.4065 -0.581952 0.607478 0.54065 0.490491 45 57.5 1 0 +1827 1 1 0 44.5935 55.8195 56.0748 -0.54065 0.581952 0.607478 0.490491 45 57.5 1 0 +1828 1 1 0 51.0649 55.5186 58.2711 0.106494 0.551859 0.82711 0.490491 45 57.5 1 0 +1829 1 1 0 51.4741 55.949 57.9017 0.147413 0.594895 0.79017 0.490491 45 57.5 1 0 +1830 1 1 0 51.8743 56.3458 57.4979 0.187432 0.634579 0.749786 0.490491 45 57.5 1 0 +1831 1 1 0 52.1302 55.7125 57.9265 0.213023 0.571251 0.79265 0.490491 45 57.5 1 0 +1832 1 1 0 51.7253 55.2913 58.3081 0.172532 0.529135 0.830812 0.490491 45 57.5 1 0 +1833 1 1 0 52.3723 55.0421 58.3036 0.237228 0.504209 0.830359 0.490491 45 57.5 1 0 +1834 1 1 0 52.289 56.7232 57.0398 0.228899 0.672319 0.703983 0.490491 45 57.5 1 0 +1835 1 1 0 52.6738 57.0524 56.5662 0.267381 0.705236 0.65662 0.490491 45 57.5 1 0 +1836 1 1 0 52.96 56.4741 57.0231 0.296004 0.647412 0.70231 0.490491 45 57.5 1 0 +1837 1 1 0 53.0521 57.3479 56.0574 0.305212 0.734794 0.605742 0.490491 45 57.5 1 0 +1838 1 1 0 53.4143 57.6041 55.5245 0.341435 0.760406 0.552454 0.490491 45 57.5 1 0 +1839 1 1 0 53.7175 57.0711 56.015 0.371748 0.707107 0.601501 0.490491 45 57.5 1 0 +1840 1 1 0 53.3469 56.7891 56.535 0.334691 0.678913 0.653497 0.490491 45 57.5 1 0 +1841 1 1 0 53.6159 56.1919 56.9704 0.361591 0.619186 0.697037 0.490491 45 57.5 1 0 +1842 1 1 0 53.9977 56.4945 56.4684 0.399769 0.649448 0.64684 0.490491 45 57.5 1 0 +1843 1 1 0 54.2533 55.8779 56.8819 0.425325 0.587785 0.688191 0.490491 45 57.5 1 0 +1844 1 1 0 53.038 54.7623 58.2518 0.303801 0.476225 0.825175 0.490491 45 57.5 1 0 +1845 1 1 0 53.4615 55.1612 57.8345 0.346153 0.516122 0.783452 0.490491 45 57.5 1 0 +1846 1 1 0 53.6603 54.4698 58.1623 0.366027 0.446977 0.816233 0.490491 45 57.5 1 0 +1847 1 1 0 53.8673 55.5337 57.3771 0.38673 0.553372 0.737712 0.490491 45 57.5 1 0 +1848 1 1 0 54.0829 54.8624 57.7258 0.408286 0.48624 0.772575 0.490491 45 57.5 1 0 +1849 1 1 0 54.4826 55.225 57.253 0.448259 0.522499 0.725299 0.490491 45 57.5 1 0 +1850 1 1 0 54.6843 54.5399 57.5794 0.46843 0.45399 0.757936 0.490491 45 57.5 1 0 +1851 1 1 0 54.2713 54.156 58.0302 0.427135 0.415597 0.803016 0.490491 45 57.5 1 0 +1852 1 1 0 54.8571 53.8268 57.859 0.485712 0.382683 0.785899 0.490491 45 57.5 1 0 +1853 1 1 0 52.5518 56.1093 57.4944 0.25518 0.610926 0.749435 0.490491 45 57.5 1 0 +1854 1 1 0 53.2214 55.8369 57.4534 0.322141 0.583692 0.745339 0.490491 45 57.5 1 0 +1855 1 1 0 52.8032 55.4511 57.9011 0.280319 0.545109 0.790112 0.490491 45 57.5 1 0 +1856 1 1 0 53.8268 57.859 54.8571 0.382683 0.785899 0.485712 0.490491 45 57.5 1 0 +1857 1 1 0 54.156 58.0302 54.2713 0.415597 0.803016 0.427135 0.490491 45 57.5 1 0 +1858 1 1 0 54.5399 57.5794 54.6843 0.45399 0.757936 0.46843 0.490491 45 57.5 1 0 +1859 1 1 0 54.4698 58.1623 53.6603 0.446977 0.816233 0.366027 0.490491 45 57.5 1 0 +1860 1 1 0 54.7623 58.2518 53.038 0.476225 0.825175 0.303801 0.490491 45 57.5 1 0 +1861 1 1 0 55.1612 57.8345 53.4615 0.516122 0.783452 0.346153 0.490491 45 57.5 1 0 +1862 1 1 0 54.8624 57.7258 54.0829 0.48624 0.772575 0.408286 0.490491 45 57.5 1 0 +1863 1 1 0 55.225 57.253 54.4826 0.522499 0.725299 0.448259 0.490491 45 57.5 1 0 +1864 1 1 0 55.5337 57.3771 53.8673 0.553372 0.737712 0.38673 0.490491 45 57.5 1 0 +1865 1 1 0 55.8779 56.8819 54.2533 0.587785 0.688191 0.425325 0.490491 45 57.5 1 0 +1866 1 1 0 55.0421 58.3036 52.3723 0.504209 0.830359 0.237228 0.490491 45 57.5 1 0 +1867 1 1 0 55.2913 58.3081 51.7253 0.529135 0.830812 0.172532 0.490491 45 57.5 1 0 +1868 1 1 0 55.7125 57.9265 52.1302 0.571251 0.79265 0.213023 0.490491 45 57.5 1 0 +1869 1 1 0 55.5186 58.2711 51.0649 0.551859 0.82711 0.106494 0.490491 45 57.5 1 0 +1870 1 1 0 55.949 57.9017 51.4741 0.594895 0.79017 0.147413 0.490491 45 57.5 1 0 +1871 1 1 0 56.3458 57.4979 51.8743 0.634579 0.749786 0.187432 0.490491 45 57.5 1 0 +1872 1 1 0 56.1919 56.9704 53.6159 0.619186 0.697037 0.361591 0.490491 45 57.5 1 0 +1873 1 1 0 56.4945 56.4684 53.9977 0.649448 0.64684 0.399769 0.490491 45 57.5 1 0 +1874 1 1 0 56.4741 57.0231 52.96 0.647412 0.70231 0.296004 0.490491 45 57.5 1 0 +1875 1 1 0 56.7891 56.535 53.3469 0.678913 0.653497 0.334691 0.490491 45 57.5 1 0 +1876 1 1 0 57.0711 56.015 53.7175 0.707107 0.601501 0.371748 0.490491 45 57.5 1 0 +1877 1 1 0 56.7232 57.0398 52.289 0.672319 0.703983 0.228899 0.490491 45 57.5 1 0 +1878 1 1 0 57.0524 56.5662 52.6738 0.705236 0.65662 0.267381 0.490491 45 57.5 1 0 +1879 1 1 0 57.3479 56.0574 53.0521 0.734794 0.605742 0.305212 0.490491 45 57.5 1 0 +1880 1 1 0 57.6041 55.5245 53.4143 0.760406 0.552454 0.341435 0.490491 45 57.5 1 0 +1881 1 1 0 55.4511 57.9011 52.8032 0.545109 0.790112 0.280319 0.490491 45 57.5 1 0 +1882 1 1 0 56.1093 57.4944 52.5518 0.610926 0.749435 0.25518 0.490491 45 57.5 1 0 +1883 1 1 0 55.8369 57.4534 53.2214 0.583692 0.745339 0.322141 0.490491 45 57.5 1 0 +1884 1 1 0 55.5245 53.4143 57.6041 0.552454 0.341435 0.760406 0.490491 45 57.5 1 0 +1885 1 1 0 56.015 53.7175 57.0711 0.601501 0.371748 0.707107 0.490491 45 57.5 1 0 +1886 1 1 0 56.0574 53.0521 57.3479 0.605742 0.305212 0.734794 0.490491 45 57.5 1 0 +1887 1 1 0 56.4684 53.9977 56.4945 0.64684 0.399769 0.649448 0.490491 45 57.5 1 0 +1888 1 1 0 56.535 53.3469 56.7891 0.653497 0.334691 0.678913 0.490491 45 57.5 1 0 +1889 1 1 0 56.8819 54.2533 55.8779 0.688191 0.425325 0.587785 0.490491 45 57.5 1 0 +1890 1 1 0 56.9704 53.6159 56.1919 0.697037 0.361591 0.619186 0.490491 45 57.5 1 0 +1891 1 1 0 57.0231 52.96 56.4741 0.70231 0.296004 0.647412 0.490491 45 57.5 1 0 +1892 1 1 0 56.5662 52.6738 57.0524 0.65662 0.267381 0.705236 0.490491 45 57.5 1 0 +1893 1 1 0 57.0398 52.289 56.7232 0.703983 0.228899 0.672319 0.490491 45 57.5 1 0 +1894 1 1 0 57.253 54.4826 55.225 0.725299 0.448259 0.522499 0.490491 45 57.5 1 0 +1895 1 1 0 57.3771 53.8673 55.5337 0.737712 0.38673 0.553372 0.490491 45 57.5 1 0 +1896 1 1 0 57.5794 54.6843 54.5399 0.757936 0.46843 0.45399 0.490491 45 57.5 1 0 +1897 1 1 0 57.7258 54.0829 54.8624 0.772575 0.408286 0.48624 0.490491 45 57.5 1 0 +1898 1 1 0 57.8345 53.4615 55.1612 0.783452 0.346153 0.516122 0.490491 45 57.5 1 0 +1899 1 1 0 57.859 54.8571 53.8268 0.785899 0.485712 0.382683 0.490491 45 57.5 1 0 +1900 1 1 0 58.0302 54.2713 54.156 0.803016 0.427135 0.415597 0.490491 45 57.5 1 0 +1901 1 1 0 58.1623 53.6603 54.4698 0.816233 0.366027 0.446977 0.490491 45 57.5 1 0 +1902 1 1 0 58.2518 53.038 54.7623 0.825175 0.303801 0.476225 0.490491 45 57.5 1 0 +1903 1 1 0 57.4979 51.8743 56.3458 0.749786 0.187432 0.634579 0.490491 45 57.5 1 0 +1904 1 1 0 57.9265 52.1302 55.7125 0.79265 0.213023 0.571251 0.490491 45 57.5 1 0 +1905 1 1 0 57.9017 51.4741 55.949 0.79017 0.147413 0.594895 0.490491 45 57.5 1 0 +1906 1 1 0 58.3036 52.3723 55.0421 0.830359 0.237228 0.504209 0.490491 45 57.5 1 0 +1907 1 1 0 58.3081 51.7253 55.2913 0.830812 0.172532 0.529135 0.490491 45 57.5 1 0 +1908 1 1 0 58.2711 51.0649 55.5186 0.82711 0.106494 0.551859 0.490491 45 57.5 1 0 +1909 1 1 0 57.4534 53.2214 55.8369 0.745339 0.322141 0.583692 0.490491 45 57.5 1 0 +1910 1 1 0 57.9011 52.8032 55.4511 0.790112 0.280319 0.545109 0.490491 45 57.5 1 0 +1911 1 1 0 57.4944 52.5518 56.1093 0.749435 0.25518 0.610926 0.490491 45 57.5 1 0 +1912 1 1 0 54.1427 57.3501 55.3678 0.414272 0.735011 0.536784 0.490491 45 57.5 1 0 +1913 1 1 0 54.8521 57.0447 55.1797 0.485208 0.704471 0.51797 0.490491 45 57.5 1 0 +1914 1 1 0 55.5242 56.6961 54.9644 0.552418 0.669612 0.496441 0.490491 45 57.5 1 0 +1915 1 1 0 55.1338 56.4658 55.6425 0.513375 0.646578 0.564254 0.490491 45 57.5 1 0 +1916 1 1 0 54.4396 56.7898 55.8472 0.443957 0.678977 0.584716 0.490491 45 57.5 1 0 +1917 1 1 0 54.7092 56.1924 56.2831 0.470917 0.619242 0.628313 0.490491 45 57.5 1 0 +1918 1 1 0 56.1924 56.2831 54.7092 0.619242 0.628313 0.470917 0.490491 45 57.5 1 0 +1919 1 1 0 56.7898 55.8472 54.4396 0.678977 0.584716 0.443957 0.490491 45 57.5 1 0 +1920 1 1 0 56.4658 55.6425 55.1338 0.646578 0.564254 0.513375 0.490491 45 57.5 1 0 +1921 1 1 0 57.3501 55.3678 54.1427 0.735011 0.536784 0.414272 0.490491 45 57.5 1 0 +1922 1 1 0 57.0447 55.1797 54.8521 0.704471 0.51797 0.485208 0.490491 45 57.5 1 0 +1923 1 1 0 56.6961 54.9644 55.5242 0.669612 0.496441 0.552418 0.490491 45 57.5 1 0 +1924 1 1 0 54.9644 55.5242 56.6961 0.496441 0.552418 0.669612 0.490491 45 57.5 1 0 +1925 1 1 0 55.6425 55.1338 56.4658 0.564254 0.513375 0.646578 0.490491 45 57.5 1 0 +1926 1 1 0 55.1797 54.8521 57.0447 0.51797 0.485208 0.704471 0.490491 45 57.5 1 0 +1927 1 1 0 56.2831 54.7092 56.1924 0.628313 0.470917 0.619242 0.490491 45 57.5 1 0 +1928 1 1 0 55.8472 54.4396 56.7898 0.584716 0.443957 0.678977 0.490491 45 57.5 1 0 +1929 1 1 0 55.3678 54.1427 57.3501 0.536784 0.414272 0.735011 0.490491 45 57.5 1 0 +1930 1 1 0 55.8195 56.0748 55.4065 0.581952 0.607478 0.54065 0.490491 45 57.5 1 0 +1931 1 1 0 56.0748 55.4065 55.8195 0.607478 0.54065 0.581952 0.490491 45 57.5 1 0 +1932 1 1 0 55.4065 55.8195 56.0748 0.54065 0.581952 0.607478 0.490491 45 57.5 1 0 +1933 1 1 0 48.9351 55.5186 41.7289 -0.106494 0.551859 -0.82711 0.490491 45 57.5 1 0 +1934 1 1 0 48.5259 55.949 42.0983 -0.147413 0.594895 -0.79017 0.490491 45 57.5 1 0 +1935 1 1 0 48.1257 56.3458 42.5021 -0.187432 0.634579 -0.749786 0.490491 45 57.5 1 0 +1936 1 1 0 47.8698 55.7125 42.0735 -0.213023 0.571251 -0.79265 0.490491 45 57.5 1 0 +1937 1 1 0 48.2747 55.2913 41.6919 -0.172532 0.529135 -0.830812 0.490491 45 57.5 1 0 +1938 1 1 0 47.6277 55.0421 41.6964 -0.237228 0.504209 -0.830359 0.490491 45 57.5 1 0 +1939 1 1 0 47.711 56.7232 42.9602 -0.228899 0.672319 -0.703983 0.490491 45 57.5 1 0 +1940 1 1 0 47.3262 57.0524 43.4338 -0.267381 0.705236 -0.65662 0.490491 45 57.5 1 0 +1941 1 1 0 47.04 56.4741 42.9769 -0.296004 0.647412 -0.70231 0.490491 45 57.5 1 0 +1942 1 1 0 46.9479 57.3479 43.9426 -0.305212 0.734794 -0.605742 0.490491 45 57.5 1 0 +1943 1 1 0 46.5857 57.6041 44.4755 -0.341435 0.760406 -0.552454 0.490491 45 57.5 1 0 +1944 1 1 0 46.2825 57.0711 43.985 -0.371748 0.707107 -0.601501 0.490491 45 57.5 1 0 +1945 1 1 0 46.6531 56.7891 43.465 -0.334691 0.678913 -0.653497 0.490491 45 57.5 1 0 +1946 1 1 0 46.3841 56.1919 43.0296 -0.361591 0.619186 -0.697037 0.490491 45 57.5 1 0 +1947 1 1 0 46.0023 56.4945 43.5316 -0.399769 0.649448 -0.64684 0.490491 45 57.5 1 0 +1948 1 1 0 45.7467 55.8779 43.1181 -0.425325 0.587785 -0.688191 0.490491 45 57.5 1 0 +1949 1 1 0 46.962 54.7623 41.7482 -0.303801 0.476225 -0.825175 0.490491 45 57.5 1 0 +1950 1 1 0 46.5385 55.1612 42.1655 -0.346153 0.516122 -0.783452 0.490491 45 57.5 1 0 +1951 1 1 0 46.3397 54.4698 41.8377 -0.366027 0.446977 -0.816233 0.490491 45 57.5 1 0 +1952 1 1 0 46.1327 55.5337 42.6229 -0.38673 0.553372 -0.737712 0.490491 45 57.5 1 0 +1953 1 1 0 45.9171 54.8624 42.2742 -0.408286 0.48624 -0.772575 0.490491 45 57.5 1 0 +1954 1 1 0 45.5174 55.225 42.747 -0.448259 0.522499 -0.725299 0.490491 45 57.5 1 0 +1955 1 1 0 45.3157 54.5399 42.4206 -0.46843 0.45399 -0.757936 0.490491 45 57.5 1 0 +1956 1 1 0 45.7287 54.156 41.9698 -0.427135 0.415597 -0.803016 0.490491 45 57.5 1 0 +1957 1 1 0 45.1429 53.8268 42.141 -0.485712 0.382683 -0.785899 0.490491 45 57.5 1 0 +1958 1 1 0 47.4482 56.1093 42.5056 -0.25518 0.610926 -0.749435 0.490491 45 57.5 1 0 +1959 1 1 0 46.7786 55.8369 42.5466 -0.322141 0.583692 -0.745339 0.490491 45 57.5 1 0 +1960 1 1 0 47.1968 55.4511 42.0989 -0.280319 0.545109 -0.790112 0.490491 45 57.5 1 0 +1961 1 1 0 46.1732 57.859 45.1429 -0.382683 0.785899 -0.485712 0.490491 45 57.5 1 0 +1962 1 1 0 45.844 58.0302 45.7287 -0.415597 0.803016 -0.427135 0.490491 45 57.5 1 0 +1963 1 1 0 45.4601 57.5794 45.3157 -0.45399 0.757936 -0.46843 0.490491 45 57.5 1 0 +1964 1 1 0 45.5302 58.1623 46.3397 -0.446977 0.816233 -0.366027 0.490491 45 57.5 1 0 +1965 1 1 0 45.2377 58.2518 46.962 -0.476225 0.825175 -0.303801 0.490491 45 57.5 1 0 +1966 1 1 0 44.8388 57.8345 46.5385 -0.516122 0.783452 -0.346153 0.490491 45 57.5 1 0 +1967 1 1 0 45.1376 57.7258 45.9171 -0.48624 0.772575 -0.408286 0.490491 45 57.5 1 0 +1968 1 1 0 44.775 57.253 45.5174 -0.522499 0.725299 -0.448259 0.490491 45 57.5 1 0 +1969 1 1 0 44.4663 57.3771 46.1327 -0.553372 0.737712 -0.38673 0.490491 45 57.5 1 0 +1970 1 1 0 44.1221 56.8819 45.7467 -0.587785 0.688191 -0.425325 0.490491 45 57.5 1 0 +1971 1 1 0 44.9579 58.3036 47.6277 -0.504209 0.830359 -0.237228 0.490491 45 57.5 1 0 +1972 1 1 0 44.7087 58.3081 48.2747 -0.529135 0.830812 -0.172532 0.490491 45 57.5 1 0 +1973 1 1 0 44.2875 57.9265 47.8698 -0.571251 0.79265 -0.213023 0.490491 45 57.5 1 0 +1974 1 1 0 44.4814 58.2711 48.9351 -0.551859 0.82711 -0.106494 0.490491 45 57.5 1 0 +1975 1 1 0 44.051 57.9017 48.5259 -0.594895 0.79017 -0.147413 0.490491 45 57.5 1 0 +1976 1 1 0 43.6542 57.4979 48.1257 -0.634579 0.749786 -0.187432 0.490491 45 57.5 1 0 +1977 1 1 0 43.8081 56.9704 46.3841 -0.619186 0.697037 -0.361591 0.490491 45 57.5 1 0 +1978 1 1 0 43.5055 56.4684 46.0023 -0.649448 0.64684 -0.399769 0.490491 45 57.5 1 0 +1979 1 1 0 43.5259 57.0231 47.04 -0.647412 0.70231 -0.296004 0.490491 45 57.5 1 0 +1980 1 1 0 43.2109 56.535 46.6531 -0.678913 0.653497 -0.334691 0.490491 45 57.5 1 0 +1981 1 1 0 42.9289 56.015 46.2825 -0.707107 0.601501 -0.371748 0.490491 45 57.5 1 0 +1982 1 1 0 43.2768 57.0398 47.711 -0.672319 0.703983 -0.228899 0.490491 45 57.5 1 0 +1983 1 1 0 42.9476 56.5662 47.3262 -0.705236 0.65662 -0.267381 0.490491 45 57.5 1 0 +1984 1 1 0 42.6521 56.0574 46.9479 -0.734794 0.605742 -0.305212 0.490491 45 57.5 1 0 +1985 1 1 0 42.3959 55.5245 46.5857 -0.760406 0.552454 -0.341435 0.490491 45 57.5 1 0 +1986 1 1 0 44.5489 57.9011 47.1968 -0.545109 0.790112 -0.280319 0.490491 45 57.5 1 0 +1987 1 1 0 43.8907 57.4944 47.4482 -0.610926 0.749435 -0.25518 0.490491 45 57.5 1 0 +1988 1 1 0 44.1631 57.4534 46.7786 -0.583692 0.745339 -0.322141 0.490491 45 57.5 1 0 +1989 1 1 0 44.4755 53.4143 42.3959 -0.552454 0.341435 -0.760406 0.490491 45 57.5 1 0 +1990 1 1 0 43.985 53.7175 42.9289 -0.601501 0.371748 -0.707107 0.490491 45 57.5 1 0 +1991 1 1 0 43.9426 53.0521 42.6521 -0.605742 0.305212 -0.734794 0.490491 45 57.5 1 0 +1992 1 1 0 43.5316 53.9977 43.5055 -0.64684 0.399769 -0.649448 0.490491 45 57.5 1 0 +1993 1 1 0 43.465 53.3469 43.2109 -0.653497 0.334691 -0.678913 0.490491 45 57.5 1 0 +1994 1 1 0 43.1181 54.2533 44.1221 -0.688191 0.425325 -0.587785 0.490491 45 57.5 1 0 +1995 1 1 0 43.0296 53.6159 43.8081 -0.697037 0.361591 -0.619186 0.490491 45 57.5 1 0 +1996 1 1 0 42.9769 52.96 43.5259 -0.70231 0.296004 -0.647412 0.490491 45 57.5 1 0 +1997 1 1 0 43.4338 52.6738 42.9476 -0.65662 0.267381 -0.705236 0.490491 45 57.5 1 0 +1998 1 1 0 42.9602 52.289 43.2768 -0.703983 0.228899 -0.672319 0.490491 45 57.5 1 0 +1999 1 1 0 42.747 54.4826 44.775 -0.725299 0.448259 -0.522499 0.490491 45 57.5 1 0 +2000 1 1 0 42.6229 53.8673 44.4663 -0.737712 0.38673 -0.553372 0.490491 45 57.5 1 0 +2001 1 1 0 42.4206 54.6843 45.4601 -0.757936 0.46843 -0.45399 0.490491 45 57.5 1 0 +2002 1 1 0 42.2742 54.0829 45.1376 -0.772575 0.408286 -0.48624 0.490491 45 57.5 1 0 +2003 1 1 0 42.1655 53.4615 44.8388 -0.783452 0.346153 -0.516122 0.490491 45 57.5 1 0 +2004 1 1 0 42.141 54.8571 46.1732 -0.785899 0.485712 -0.382683 0.490491 45 57.5 1 0 +2005 1 1 0 41.9698 54.2713 45.844 -0.803016 0.427135 -0.415597 0.490491 45 57.5 1 0 +2006 1 1 0 41.8377 53.6603 45.5302 -0.816233 0.366027 -0.446977 0.490491 45 57.5 1 0 +2007 1 1 0 41.7482 53.038 45.2377 -0.825175 0.303801 -0.476225 0.490491 45 57.5 1 0 +2008 1 1 0 42.5021 51.8743 43.6542 -0.749786 0.187432 -0.634579 0.490491 45 57.5 1 0 +2009 1 1 0 42.0735 52.1302 44.2875 -0.79265 0.213023 -0.571251 0.490491 45 57.5 1 0 +2010 1 1 0 42.0983 51.4741 44.051 -0.79017 0.147413 -0.594895 0.490491 45 57.5 1 0 +2011 1 1 0 41.6964 52.3723 44.9579 -0.830359 0.237228 -0.504209 0.490491 45 57.5 1 0 +2012 1 1 0 41.6919 51.7253 44.7087 -0.830812 0.172532 -0.529135 0.490491 45 57.5 1 0 +2013 1 1 0 41.7289 51.0649 44.4814 -0.82711 0.106494 -0.551859 0.490491 45 57.5 1 0 +2014 1 1 0 42.5466 53.2214 44.1631 -0.745339 0.322141 -0.583692 0.490491 45 57.5 1 0 +2015 1 1 0 42.0989 52.8032 44.5489 -0.790112 0.280319 -0.545109 0.490491 45 57.5 1 0 +2016 1 1 0 42.5056 52.5518 43.8907 -0.749435 0.25518 -0.610926 0.490491 45 57.5 1 0 +2017 1 1 0 45.8573 57.3501 44.6322 -0.414272 0.735011 -0.536784 0.490491 45 57.5 1 0 +2018 1 1 0 45.1479 57.0447 44.8203 -0.485208 0.704471 -0.51797 0.490491 45 57.5 1 0 +2019 1 1 0 44.4758 56.6961 45.0356 -0.552418 0.669612 -0.496441 0.490491 45 57.5 1 0 +2020 1 1 0 44.8662 56.4658 44.3575 -0.513375 0.646578 -0.564254 0.490491 45 57.5 1 0 +2021 1 1 0 45.5604 56.7898 44.1528 -0.443957 0.678977 -0.584716 0.490491 45 57.5 1 0 +2022 1 1 0 45.2908 56.1924 43.7169 -0.470917 0.619242 -0.628313 0.490491 45 57.5 1 0 +2023 1 1 0 43.8076 56.2831 45.2908 -0.619242 0.628313 -0.470917 0.490491 45 57.5 1 0 +2024 1 1 0 43.2102 55.8472 45.5604 -0.678977 0.584716 -0.443957 0.490491 45 57.5 1 0 +2025 1 1 0 43.5342 55.6425 44.8662 -0.646578 0.564254 -0.513375 0.490491 45 57.5 1 0 +2026 1 1 0 42.6499 55.3678 45.8573 -0.735011 0.536784 -0.414272 0.490491 45 57.5 1 0 +2027 1 1 0 42.9553 55.1797 45.1479 -0.704471 0.51797 -0.485208 0.490491 45 57.5 1 0 +2028 1 1 0 43.3039 54.9644 44.4758 -0.669612 0.496441 -0.552418 0.490491 45 57.5 1 0 +2029 1 1 0 45.0356 55.5242 43.3039 -0.496441 0.552418 -0.669612 0.490491 45 57.5 1 0 +2030 1 1 0 44.3575 55.1338 43.5342 -0.564254 0.513375 -0.646578 0.490491 45 57.5 1 0 +2031 1 1 0 44.8203 54.8521 42.9553 -0.51797 0.485208 -0.704471 0.490491 45 57.5 1 0 +2032 1 1 0 43.7169 54.7092 43.8076 -0.628313 0.470917 -0.619242 0.490491 45 57.5 1 0 +2033 1 1 0 44.1528 54.4396 43.2102 -0.584716 0.443957 -0.678977 0.490491 45 57.5 1 0 +2034 1 1 0 44.6322 54.1427 42.6499 -0.536784 0.414272 -0.735011 0.490491 45 57.5 1 0 +2035 1 1 0 44.1805 56.0748 44.5935 -0.581952 0.607478 -0.54065 0.490491 45 57.5 1 0 +2036 1 1 0 43.9252 55.4065 44.1805 -0.607478 0.54065 -0.581952 0.490491 45 57.5 1 0 +2037 1 1 0 44.5935 55.8195 43.9252 -0.54065 0.581952 -0.607478 0.490491 45 57.5 1 0 +2038 1 1 0 51.0649 55.5186 41.7289 0.106494 0.551859 -0.82711 0.490491 45 57.5 1 0 +2039 1 1 0 51.7253 55.2913 41.6919 0.172532 0.529135 -0.830812 0.490491 45 57.5 1 0 +2040 1 1 0 52.3723 55.0421 41.6964 0.237228 0.504209 -0.830359 0.490491 45 57.5 1 0 +2041 1 1 0 52.1302 55.7125 42.0735 0.213023 0.571251 -0.79265 0.490491 45 57.5 1 0 +2042 1 1 0 51.4741 55.949 42.0983 0.147413 0.594895 -0.79017 0.490491 45 57.5 1 0 +2043 1 1 0 51.8743 56.3458 42.5021 0.187432 0.634579 -0.749786 0.490491 45 57.5 1 0 +2044 1 1 0 53.038 54.7623 41.7482 0.303801 0.476225 -0.825175 0.490491 45 57.5 1 0 +2045 1 1 0 53.6603 54.4698 41.8377 0.366027 0.446977 -0.816233 0.490491 45 57.5 1 0 +2046 1 1 0 53.4615 55.1612 42.1655 0.346153 0.516122 -0.783452 0.490491 45 57.5 1 0 +2047 1 1 0 54.2713 54.156 41.9698 0.427135 0.415597 -0.803016 0.490491 45 57.5 1 0 +2048 1 1 0 54.8571 53.8268 42.141 0.485712 0.382683 -0.785899 0.490491 45 57.5 1 0 +2049 1 1 0 54.6843 54.5399 42.4206 0.46843 0.45399 -0.757936 0.490491 45 57.5 1 0 +2050 1 1 0 54.0829 54.8624 42.2742 0.408286 0.48624 -0.772575 0.490491 45 57.5 1 0 +2051 1 1 0 53.8673 55.5337 42.6229 0.38673 0.553372 -0.737712 0.490491 45 57.5 1 0 +2052 1 1 0 54.4826 55.225 42.747 0.448259 0.522499 -0.725299 0.490491 45 57.5 1 0 +2053 1 1 0 54.2533 55.8779 43.1181 0.425325 0.587785 -0.688191 0.490491 45 57.5 1 0 +2054 1 1 0 52.289 56.7232 42.9602 0.228899 0.672319 -0.703983 0.490491 45 57.5 1 0 +2055 1 1 0 52.96 56.4741 42.9769 0.296004 0.647412 -0.70231 0.490491 45 57.5 1 0 +2056 1 1 0 52.6738 57.0524 43.4338 0.267381 0.705236 -0.65662 0.490491 45 57.5 1 0 +2057 1 1 0 53.6159 56.1919 43.0296 0.361591 0.619186 -0.697037 0.490491 45 57.5 1 0 +2058 1 1 0 53.3469 56.7891 43.465 0.334691 0.678913 -0.653497 0.490491 45 57.5 1 0 +2059 1 1 0 53.9977 56.4945 43.5316 0.399769 0.649448 -0.64684 0.490491 45 57.5 1 0 +2060 1 1 0 53.7175 57.0711 43.985 0.371748 0.707107 -0.601501 0.490491 45 57.5 1 0 +2061 1 1 0 53.0521 57.3479 43.9426 0.305212 0.734794 -0.605742 0.490491 45 57.5 1 0 +2062 1 1 0 53.4143 57.6041 44.4755 0.341435 0.760406 -0.552454 0.490491 45 57.5 1 0 +2063 1 1 0 52.8032 55.4511 42.0989 0.280319 0.545109 -0.790112 0.490491 45 57.5 1 0 +2064 1 1 0 53.2214 55.8369 42.5466 0.322141 0.583692 -0.745339 0.490491 45 57.5 1 0 +2065 1 1 0 52.5518 56.1093 42.5056 0.25518 0.610926 -0.749435 0.490491 45 57.5 1 0 +2066 1 1 0 55.5245 53.4143 42.3959 0.552454 0.341435 -0.760406 0.490491 45 57.5 1 0 +2067 1 1 0 56.0574 53.0521 42.6521 0.605742 0.305212 -0.734794 0.490491 45 57.5 1 0 +2068 1 1 0 56.015 53.7175 42.9289 0.601501 0.371748 -0.707107 0.490491 45 57.5 1 0 +2069 1 1 0 56.5662 52.6738 42.9476 0.65662 0.267381 -0.705236 0.490491 45 57.5 1 0 +2070 1 1 0 57.0398 52.289 43.2768 0.703983 0.228899 -0.672319 0.490491 45 57.5 1 0 +2071 1 1 0 57.0231 52.96 43.5259 0.70231 0.296004 -0.647412 0.490491 45 57.5 1 0 +2072 1 1 0 56.535 53.3469 43.2109 0.653497 0.334691 -0.678913 0.490491 45 57.5 1 0 +2073 1 1 0 56.4684 53.9977 43.5055 0.64684 0.399769 -0.649448 0.490491 45 57.5 1 0 +2074 1 1 0 56.9704 53.6159 43.8081 0.697037 0.361591 -0.619186 0.490491 45 57.5 1 0 +2075 1 1 0 56.8819 54.2533 44.1221 0.688191 0.425325 -0.587785 0.490491 45 57.5 1 0 +2076 1 1 0 57.4979 51.8743 43.6542 0.749786 0.187432 -0.634579 0.490491 45 57.5 1 0 +2077 1 1 0 57.9017 51.4741 44.051 0.79017 0.147413 -0.594895 0.490491 45 57.5 1 0 +2078 1 1 0 57.9265 52.1302 44.2875 0.79265 0.213023 -0.571251 0.490491 45 57.5 1 0 +2079 1 1 0 58.2711 51.0649 44.4814 0.82711 0.106494 -0.551859 0.490491 45 57.5 1 0 +2080 1 1 0 58.3081 51.7253 44.7087 0.830812 0.172532 -0.529135 0.490491 45 57.5 1 0 +2081 1 1 0 58.3036 52.3723 44.9579 0.830359 0.237228 -0.504209 0.490491 45 57.5 1 0 +2082 1 1 0 57.3771 53.8673 44.4663 0.737712 0.38673 -0.553372 0.490491 45 57.5 1 0 +2083 1 1 0 57.253 54.4826 44.775 0.725299 0.448259 -0.522499 0.490491 45 57.5 1 0 +2084 1 1 0 57.8345 53.4615 44.8388 0.783452 0.346153 -0.516122 0.490491 45 57.5 1 0 +2085 1 1 0 57.7258 54.0829 45.1376 0.772575 0.408286 -0.48624 0.490491 45 57.5 1 0 +2086 1 1 0 57.5794 54.6843 45.4601 0.757936 0.46843 -0.45399 0.490491 45 57.5 1 0 +2087 1 1 0 58.2518 53.038 45.2377 0.825175 0.303801 -0.476225 0.490491 45 57.5 1 0 +2088 1 1 0 58.1623 53.6603 45.5302 0.816233 0.366027 -0.446977 0.490491 45 57.5 1 0 +2089 1 1 0 58.0302 54.2713 45.844 0.803016 0.427135 -0.415597 0.490491 45 57.5 1 0 +2090 1 1 0 57.859 54.8571 46.1732 0.785899 0.485712 -0.382683 0.490491 45 57.5 1 0 +2091 1 1 0 57.4944 52.5518 43.8907 0.749435 0.25518 -0.610926 0.490491 45 57.5 1 0 +2092 1 1 0 57.9011 52.8032 44.5489 0.790112 0.280319 -0.545109 0.490491 45 57.5 1 0 +2093 1 1 0 57.4534 53.2214 44.1631 0.745339 0.322141 -0.583692 0.490491 45 57.5 1 0 +2094 1 1 0 53.8268 57.859 45.1429 0.382683 0.785899 -0.485712 0.490491 45 57.5 1 0 +2095 1 1 0 54.5399 57.5794 45.3157 0.45399 0.757936 -0.46843 0.490491 45 57.5 1 0 +2096 1 1 0 54.156 58.0302 45.7287 0.415597 0.803016 -0.427135 0.490491 45 57.5 1 0 +2097 1 1 0 55.225 57.253 45.5174 0.522499 0.725299 -0.448259 0.490491 45 57.5 1 0 +2098 1 1 0 54.8624 57.7258 45.9171 0.48624 0.772575 -0.408286 0.490491 45 57.5 1 0 +2099 1 1 0 55.8779 56.8819 45.7467 0.587785 0.688191 -0.425325 0.490491 45 57.5 1 0 +2100 1 1 0 55.5337 57.3771 46.1327 0.553372 0.737712 -0.38673 0.490491 45 57.5 1 0 +2101 1 1 0 55.1612 57.8345 46.5385 0.516122 0.783452 -0.346153 0.490491 45 57.5 1 0 +2102 1 1 0 54.4698 58.1623 46.3397 0.446977 0.816233 -0.366027 0.490491 45 57.5 1 0 +2103 1 1 0 54.7623 58.2518 46.962 0.476225 0.825175 -0.303801 0.490491 45 57.5 1 0 +2104 1 1 0 56.4945 56.4684 46.0023 0.649448 0.64684 -0.399769 0.490491 45 57.5 1 0 +2105 1 1 0 56.1919 56.9704 46.3841 0.619186 0.697037 -0.361591 0.490491 45 57.5 1 0 +2106 1 1 0 57.0711 56.015 46.2825 0.707107 0.601501 -0.371748 0.490491 45 57.5 1 0 +2107 1 1 0 56.7891 56.535 46.6531 0.678913 0.653497 -0.334691 0.490491 45 57.5 1 0 +2108 1 1 0 56.4741 57.0231 47.04 0.647412 0.70231 -0.296004 0.490491 45 57.5 1 0 +2109 1 1 0 57.6041 55.5245 46.5857 0.760406 0.552454 -0.341435 0.490491 45 57.5 1 0 +2110 1 1 0 57.3479 56.0574 46.9479 0.734794 0.605742 -0.305212 0.490491 45 57.5 1 0 +2111 1 1 0 57.0524 56.5662 47.3262 0.705236 0.65662 -0.267381 0.490491 45 57.5 1 0 +2112 1 1 0 56.7232 57.0398 47.711 0.672319 0.703983 -0.228899 0.490491 45 57.5 1 0 +2113 1 1 0 55.0421 58.3036 47.6277 0.504209 0.830359 -0.237228 0.490491 45 57.5 1 0 +2114 1 1 0 55.7125 57.9265 47.8698 0.571251 0.79265 -0.213023 0.490491 45 57.5 1 0 +2115 1 1 0 55.2913 58.3081 48.2747 0.529135 0.830812 -0.172532 0.490491 45 57.5 1 0 +2116 1 1 0 56.3458 57.4979 48.1257 0.634579 0.749786 -0.187432 0.490491 45 57.5 1 0 +2117 1 1 0 55.949 57.9017 48.5259 0.594895 0.79017 -0.147413 0.490491 45 57.5 1 0 +2118 1 1 0 55.5186 58.2711 48.9351 0.551859 0.82711 -0.106494 0.490491 45 57.5 1 0 +2119 1 1 0 55.8369 57.4534 46.7786 0.583692 0.745339 -0.322141 0.490491 45 57.5 1 0 +2120 1 1 0 56.1093 57.4944 47.4482 0.610926 0.749435 -0.25518 0.490491 45 57.5 1 0 +2121 1 1 0 55.4511 57.9011 47.1968 0.545109 0.790112 -0.280319 0.490491 45 57.5 1 0 +2122 1 1 0 55.3678 54.1427 42.6499 0.536784 0.414272 -0.735011 0.490491 45 57.5 1 0 +2123 1 1 0 55.8472 54.4396 43.2102 0.584716 0.443957 -0.678977 0.490491 45 57.5 1 0 +2124 1 1 0 56.2831 54.7092 43.8076 0.628313 0.470917 -0.619242 0.490491 45 57.5 1 0 +2125 1 1 0 55.6425 55.1338 43.5342 0.564254 0.513375 -0.646578 0.490491 45 57.5 1 0 +2126 1 1 0 55.1797 54.8521 42.9553 0.51797 0.485208 -0.704471 0.490491 45 57.5 1 0 +2127 1 1 0 54.9644 55.5242 43.3039 0.496441 0.552418 -0.669612 0.490491 45 57.5 1 0 +2128 1 1 0 56.6961 54.9644 44.4758 0.669612 0.496441 -0.552418 0.490491 45 57.5 1 0 +2129 1 1 0 57.0447 55.1797 45.1479 0.704471 0.51797 -0.485208 0.490491 45 57.5 1 0 +2130 1 1 0 56.4658 55.6425 44.8662 0.646578 0.564254 -0.513375 0.490491 45 57.5 1 0 +2131 1 1 0 57.3501 55.3678 45.8573 0.735011 0.536784 -0.414272 0.490491 45 57.5 1 0 +2132 1 1 0 56.7898 55.8472 45.5604 0.678977 0.584716 -0.443957 0.490491 45 57.5 1 0 +2133 1 1 0 56.1924 56.2831 45.2908 0.619242 0.628313 -0.470917 0.490491 45 57.5 1 0 +2134 1 1 0 54.7092 56.1924 43.7169 0.470917 0.619242 -0.628313 0.490491 45 57.5 1 0 +2135 1 1 0 55.1338 56.4658 44.3575 0.513375 0.646578 -0.564254 0.490491 45 57.5 1 0 +2136 1 1 0 54.4396 56.7898 44.1528 0.443957 0.678977 -0.584716 0.490491 45 57.5 1 0 +2137 1 1 0 55.5242 56.6961 45.0356 0.552418 0.669612 -0.496441 0.490491 45 57.5 1 0 +2138 1 1 0 54.8521 57.0447 44.8203 0.485208 0.704471 -0.51797 0.490491 45 57.5 1 0 +2139 1 1 0 54.1427 57.3501 44.6322 0.414272 0.735011 -0.536784 0.490491 45 57.5 1 0 +2140 1 1 0 56.0748 55.4065 44.1805 0.607478 0.54065 -0.581952 0.490491 45 57.5 1 0 +2141 1 1 0 55.8195 56.0748 44.5935 0.581952 0.607478 -0.54065 0.490491 45 57.5 1 0 +2142 1 1 0 55.4065 55.8195 43.9252 0.54065 0.581952 -0.607478 0.490491 45 57.5 1 0 +2143 1 1 0 48.9351 44.4814 41.7289 -0.106494 -0.551859 -0.82711 0.490491 45 57.5 1 0 +2144 1 1 0 48.2747 44.7087 41.6919 -0.172532 -0.529135 -0.830812 0.490491 45 57.5 1 0 +2145 1 1 0 47.6277 44.9579 41.6964 -0.237228 -0.504209 -0.830359 0.490491 45 57.5 1 0 +2146 1 1 0 47.8698 44.2875 42.0735 -0.213023 -0.571251 -0.79265 0.490491 45 57.5 1 0 +2147 1 1 0 48.5259 44.051 42.0983 -0.147413 -0.594895 -0.79017 0.490491 45 57.5 1 0 +2148 1 1 0 48.1257 43.6542 42.5021 -0.187432 -0.634579 -0.749786 0.490491 45 57.5 1 0 +2149 1 1 0 46.962 45.2377 41.7482 -0.303801 -0.476225 -0.825175 0.490491 45 57.5 1 0 +2150 1 1 0 46.3397 45.5302 41.8377 -0.366027 -0.446977 -0.816233 0.490491 45 57.5 1 0 +2151 1 1 0 46.5385 44.8388 42.1655 -0.346153 -0.516122 -0.783452 0.490491 45 57.5 1 0 +2152 1 1 0 45.7287 45.844 41.9698 -0.427135 -0.415597 -0.803016 0.490491 45 57.5 1 0 +2153 1 1 0 45.1429 46.1732 42.141 -0.485712 -0.382683 -0.785899 0.490491 45 57.5 1 0 +2154 1 1 0 45.3157 45.4601 42.4206 -0.46843 -0.45399 -0.757936 0.490491 45 57.5 1 0 +2155 1 1 0 45.9171 45.1376 42.2742 -0.408286 -0.48624 -0.772575 0.490491 45 57.5 1 0 +2156 1 1 0 46.1327 44.4663 42.6229 -0.38673 -0.553372 -0.737712 0.490491 45 57.5 1 0 +2157 1 1 0 45.5174 44.775 42.747 -0.448259 -0.522499 -0.725299 0.490491 45 57.5 1 0 +2158 1 1 0 45.7467 44.1221 43.1181 -0.425325 -0.587785 -0.688191 0.490491 45 57.5 1 0 +2159 1 1 0 47.711 43.2768 42.9602 -0.228899 -0.672319 -0.703983 0.490491 45 57.5 1 0 +2160 1 1 0 47.04 43.5259 42.9769 -0.296004 -0.647412 -0.70231 0.490491 45 57.5 1 0 +2161 1 1 0 47.3262 42.9476 43.4338 -0.267381 -0.705236 -0.65662 0.490491 45 57.5 1 0 +2162 1 1 0 46.3841 43.8081 43.0296 -0.361591 -0.619186 -0.697037 0.490491 45 57.5 1 0 +2163 1 1 0 46.6531 43.2109 43.465 -0.334691 -0.678913 -0.653497 0.490491 45 57.5 1 0 +2164 1 1 0 46.0023 43.5055 43.5316 -0.399769 -0.649448 -0.64684 0.490491 45 57.5 1 0 +2165 1 1 0 46.2825 42.9289 43.985 -0.371748 -0.707107 -0.601501 0.490491 45 57.5 1 0 +2166 1 1 0 46.9479 42.6521 43.9426 -0.305212 -0.734794 -0.605742 0.490491 45 57.5 1 0 +2167 1 1 0 46.5857 42.3959 44.4755 -0.341435 -0.760406 -0.552454 0.490491 45 57.5 1 0 +2168 1 1 0 47.1968 44.5489 42.0989 -0.280319 -0.545109 -0.790112 0.490491 45 57.5 1 0 +2169 1 1 0 46.7786 44.1631 42.5466 -0.322141 -0.583692 -0.745339 0.490491 45 57.5 1 0 +2170 1 1 0 47.4482 43.8907 42.5056 -0.25518 -0.610926 -0.749435 0.490491 45 57.5 1 0 +2171 1 1 0 44.4755 46.5857 42.3959 -0.552454 -0.341435 -0.760406 0.490491 45 57.5 1 0 +2172 1 1 0 43.9426 46.9479 42.6521 -0.605742 -0.305212 -0.734794 0.490491 45 57.5 1 0 +2173 1 1 0 43.985 46.2825 42.9289 -0.601501 -0.371748 -0.707107 0.490491 45 57.5 1 0 +2174 1 1 0 43.4338 47.3262 42.9476 -0.65662 -0.267381 -0.705236 0.490491 45 57.5 1 0 +2175 1 1 0 42.9602 47.711 43.2768 -0.703983 -0.228899 -0.672319 0.490491 45 57.5 1 0 +2176 1 1 0 42.9769 47.04 43.5259 -0.70231 -0.296004 -0.647412 0.490491 45 57.5 1 0 +2177 1 1 0 43.465 46.6531 43.2109 -0.653497 -0.334691 -0.678913 0.490491 45 57.5 1 0 +2178 1 1 0 43.5316 46.0023 43.5055 -0.64684 -0.399769 -0.649448 0.490491 45 57.5 1 0 +2179 1 1 0 43.0296 46.3841 43.8081 -0.697037 -0.361591 -0.619186 0.490491 45 57.5 1 0 +2180 1 1 0 43.1181 45.7467 44.1221 -0.688191 -0.425325 -0.587785 0.490491 45 57.5 1 0 +2181 1 1 0 42.5021 48.1257 43.6542 -0.749786 -0.187432 -0.634579 0.490491 45 57.5 1 0 +2182 1 1 0 42.0983 48.5259 44.051 -0.79017 -0.147413 -0.594895 0.490491 45 57.5 1 0 +2183 1 1 0 42.0735 47.8698 44.2875 -0.79265 -0.213023 -0.571251 0.490491 45 57.5 1 0 +2184 1 1 0 41.7289 48.9351 44.4814 -0.82711 -0.106494 -0.551859 0.490491 45 57.5 1 0 +2185 1 1 0 41.6919 48.2747 44.7087 -0.830812 -0.172532 -0.529135 0.490491 45 57.5 1 0 +2186 1 1 0 41.6964 47.6277 44.9579 -0.830359 -0.237228 -0.504209 0.490491 45 57.5 1 0 +2187 1 1 0 42.6229 46.1327 44.4663 -0.737712 -0.38673 -0.553372 0.490491 45 57.5 1 0 +2188 1 1 0 42.747 45.5174 44.775 -0.725299 -0.448259 -0.522499 0.490491 45 57.5 1 0 +2189 1 1 0 42.1655 46.5385 44.8388 -0.783452 -0.346153 -0.516122 0.490491 45 57.5 1 0 +2190 1 1 0 42.2742 45.9171 45.1376 -0.772575 -0.408286 -0.48624 0.490491 45 57.5 1 0 +2191 1 1 0 42.4206 45.3157 45.4601 -0.757936 -0.46843 -0.45399 0.490491 45 57.5 1 0 +2192 1 1 0 41.7482 46.962 45.2377 -0.825175 -0.303801 -0.476225 0.490491 45 57.5 1 0 +2193 1 1 0 41.8377 46.3397 45.5302 -0.816233 -0.366027 -0.446977 0.490491 45 57.5 1 0 +2194 1 1 0 41.9698 45.7287 45.844 -0.803016 -0.427135 -0.415597 0.490491 45 57.5 1 0 +2195 1 1 0 42.141 45.1429 46.1732 -0.785899 -0.485712 -0.382683 0.490491 45 57.5 1 0 +2196 1 1 0 42.5056 47.4482 43.8907 -0.749435 -0.25518 -0.610926 0.490491 45 57.5 1 0 +2197 1 1 0 42.0989 47.1968 44.5489 -0.790112 -0.280319 -0.545109 0.490491 45 57.5 1 0 +2198 1 1 0 42.5466 46.7786 44.1631 -0.745339 -0.322141 -0.583692 0.490491 45 57.5 1 0 +2199 1 1 0 46.1732 42.141 45.1429 -0.382683 -0.785899 -0.485712 0.490491 45 57.5 1 0 +2200 1 1 0 45.4601 42.4206 45.3157 -0.45399 -0.757936 -0.46843 0.490491 45 57.5 1 0 +2201 1 1 0 45.844 41.9698 45.7287 -0.415597 -0.803016 -0.427135 0.490491 45 57.5 1 0 +2202 1 1 0 44.775 42.747 45.5174 -0.522499 -0.725299 -0.448259 0.490491 45 57.5 1 0 +2203 1 1 0 45.1376 42.2742 45.9171 -0.48624 -0.772575 -0.408286 0.490491 45 57.5 1 0 +2204 1 1 0 44.1221 43.1181 45.7467 -0.587785 -0.688191 -0.425325 0.490491 45 57.5 1 0 +2205 1 1 0 44.4663 42.6229 46.1327 -0.553372 -0.737712 -0.38673 0.490491 45 57.5 1 0 +2206 1 1 0 44.8388 42.1655 46.5385 -0.516122 -0.783452 -0.346153 0.490491 45 57.5 1 0 +2207 1 1 0 45.5302 41.8377 46.3397 -0.446977 -0.816233 -0.366027 0.490491 45 57.5 1 0 +2208 1 1 0 45.2377 41.7482 46.962 -0.476225 -0.825175 -0.303801 0.490491 45 57.5 1 0 +2209 1 1 0 43.5055 43.5316 46.0023 -0.649448 -0.64684 -0.399769 0.490491 45 57.5 1 0 +2210 1 1 0 43.8081 43.0296 46.3841 -0.619186 -0.697037 -0.361591 0.490491 45 57.5 1 0 +2211 1 1 0 42.9289 43.985 46.2825 -0.707107 -0.601501 -0.371748 0.490491 45 57.5 1 0 +2212 1 1 0 43.2109 43.465 46.6531 -0.678913 -0.653497 -0.334691 0.490491 45 57.5 1 0 +2213 1 1 0 43.5259 42.9769 47.04 -0.647412 -0.70231 -0.296004 0.490491 45 57.5 1 0 +2214 1 1 0 42.3959 44.4755 46.5857 -0.760406 -0.552454 -0.341435 0.490491 45 57.5 1 0 +2215 1 1 0 42.6521 43.9426 46.9479 -0.734794 -0.605742 -0.305212 0.490491 45 57.5 1 0 +2216 1 1 0 42.9476 43.4338 47.3262 -0.705236 -0.65662 -0.267381 0.490491 45 57.5 1 0 +2217 1 1 0 43.2768 42.9602 47.711 -0.672319 -0.703983 -0.228899 0.490491 45 57.5 1 0 +2218 1 1 0 44.9579 41.6964 47.6277 -0.504209 -0.830359 -0.237228 0.490491 45 57.5 1 0 +2219 1 1 0 44.2875 42.0735 47.8698 -0.571251 -0.79265 -0.213023 0.490491 45 57.5 1 0 +2220 1 1 0 44.7087 41.6919 48.2747 -0.529135 -0.830812 -0.172532 0.490491 45 57.5 1 0 +2221 1 1 0 43.6542 42.5021 48.1257 -0.634579 -0.749786 -0.187432 0.490491 45 57.5 1 0 +2222 1 1 0 44.051 42.0983 48.5259 -0.594895 -0.79017 -0.147413 0.490491 45 57.5 1 0 +2223 1 1 0 44.4814 41.7289 48.9351 -0.551859 -0.82711 -0.106494 0.490491 45 57.5 1 0 +2224 1 1 0 44.1631 42.5466 46.7786 -0.583692 -0.745339 -0.322141 0.490491 45 57.5 1 0 +2225 1 1 0 43.8907 42.5056 47.4482 -0.610926 -0.749435 -0.25518 0.490491 45 57.5 1 0 +2226 1 1 0 44.5489 42.0989 47.1968 -0.545109 -0.790112 -0.280319 0.490491 45 57.5 1 0 +2227 1 1 0 44.6322 45.8573 42.6499 -0.536784 -0.414272 -0.735011 0.490491 45 57.5 1 0 +2228 1 1 0 44.1528 45.5604 43.2102 -0.584716 -0.443957 -0.678977 0.490491 45 57.5 1 0 +2229 1 1 0 43.7169 45.2908 43.8076 -0.628313 -0.470917 -0.619242 0.490491 45 57.5 1 0 +2230 1 1 0 44.3575 44.8662 43.5342 -0.564254 -0.513375 -0.646578 0.490491 45 57.5 1 0 +2231 1 1 0 44.8203 45.1479 42.9553 -0.51797 -0.485208 -0.704471 0.490491 45 57.5 1 0 +2232 1 1 0 45.0356 44.4758 43.3039 -0.496441 -0.552418 -0.669612 0.490491 45 57.5 1 0 +2233 1 1 0 43.3039 45.0356 44.4758 -0.669612 -0.496441 -0.552418 0.490491 45 57.5 1 0 +2234 1 1 0 42.9553 44.8203 45.1479 -0.704471 -0.51797 -0.485208 0.490491 45 57.5 1 0 +2235 1 1 0 43.5342 44.3575 44.8662 -0.646578 -0.564254 -0.513375 0.490491 45 57.5 1 0 +2236 1 1 0 42.6499 44.6322 45.8573 -0.735011 -0.536784 -0.414272 0.490491 45 57.5 1 0 +2237 1 1 0 43.2102 44.1528 45.5604 -0.678977 -0.584716 -0.443957 0.490491 45 57.5 1 0 +2238 1 1 0 43.8076 43.7169 45.2908 -0.619242 -0.628313 -0.470917 0.490491 45 57.5 1 0 +2239 1 1 0 45.2908 43.8076 43.7169 -0.470917 -0.619242 -0.628313 0.490491 45 57.5 1 0 +2240 1 1 0 44.8662 43.5342 44.3575 -0.513375 -0.646578 -0.564254 0.490491 45 57.5 1 0 +2241 1 1 0 45.5604 43.2102 44.1528 -0.443957 -0.678977 -0.584716 0.490491 45 57.5 1 0 +2242 1 1 0 44.4758 43.3039 45.0356 -0.552418 -0.669612 -0.496441 0.490491 45 57.5 1 0 +2243 1 1 0 45.1479 42.9553 44.8203 -0.485208 -0.704471 -0.51797 0.490491 45 57.5 1 0 +2244 1 1 0 45.8573 42.6499 44.6322 -0.414272 -0.735011 -0.536784 0.490491 45 57.5 1 0 +2245 1 1 0 43.9252 44.5935 44.1805 -0.607478 -0.54065 -0.581952 0.490491 45 57.5 1 0 +2246 1 1 0 44.1805 43.9252 44.5935 -0.581952 -0.607478 -0.54065 0.490491 45 57.5 1 0 +2247 1 1 0 44.5935 44.1805 43.9252 -0.54065 -0.581952 -0.607478 0.490491 45 57.5 1 0 +2248 1 1 0 51.0649 44.4814 41.7289 0.106494 -0.551859 -0.82711 0.490491 45 57.5 1 0 +2249 1 1 0 51.4741 44.051 42.0983 0.147413 -0.594895 -0.79017 0.490491 45 57.5 1 0 +2250 1 1 0 51.8743 43.6542 42.5021 0.187432 -0.634579 -0.749786 0.490491 45 57.5 1 0 +2251 1 1 0 52.1302 44.2875 42.0735 0.213023 -0.571251 -0.79265 0.490491 45 57.5 1 0 +2252 1 1 0 51.7253 44.7087 41.6919 0.172532 -0.529135 -0.830812 0.490491 45 57.5 1 0 +2253 1 1 0 52.3723 44.9579 41.6964 0.237228 -0.504209 -0.830359 0.490491 45 57.5 1 0 +2254 1 1 0 52.289 43.2768 42.9602 0.228899 -0.672319 -0.703983 0.490491 45 57.5 1 0 +2255 1 1 0 52.6738 42.9476 43.4338 0.267381 -0.705236 -0.65662 0.490491 45 57.5 1 0 +2256 1 1 0 52.96 43.5259 42.9769 0.296004 -0.647412 -0.70231 0.490491 45 57.5 1 0 +2257 1 1 0 53.0521 42.6521 43.9426 0.305212 -0.734794 -0.605742 0.490491 45 57.5 1 0 +2258 1 1 0 53.4143 42.3959 44.4755 0.341435 -0.760406 -0.552454 0.490491 45 57.5 1 0 +2259 1 1 0 53.7175 42.9289 43.985 0.371748 -0.707107 -0.601501 0.490491 45 57.5 1 0 +2260 1 1 0 53.3469 43.2109 43.465 0.334691 -0.678913 -0.653497 0.490491 45 57.5 1 0 +2261 1 1 0 53.6159 43.8081 43.0296 0.361591 -0.619186 -0.697037 0.490491 45 57.5 1 0 +2262 1 1 0 53.9977 43.5055 43.5316 0.399769 -0.649448 -0.64684 0.490491 45 57.5 1 0 +2263 1 1 0 54.2533 44.1221 43.1181 0.425325 -0.587785 -0.688191 0.490491 45 57.5 1 0 +2264 1 1 0 53.038 45.2377 41.7482 0.303801 -0.476225 -0.825175 0.490491 45 57.5 1 0 +2265 1 1 0 53.4615 44.8388 42.1655 0.346153 -0.516122 -0.783452 0.490491 45 57.5 1 0 +2266 1 1 0 53.6603 45.5302 41.8377 0.366027 -0.446977 -0.816233 0.490491 45 57.5 1 0 +2267 1 1 0 53.8673 44.4663 42.6229 0.38673 -0.553372 -0.737712 0.490491 45 57.5 1 0 +2268 1 1 0 54.0829 45.1376 42.2742 0.408286 -0.48624 -0.772575 0.490491 45 57.5 1 0 +2269 1 1 0 54.4826 44.775 42.747 0.448259 -0.522499 -0.725299 0.490491 45 57.5 1 0 +2270 1 1 0 54.6843 45.4601 42.4206 0.46843 -0.45399 -0.757936 0.490491 45 57.5 1 0 +2271 1 1 0 54.2713 45.844 41.9698 0.427135 -0.415597 -0.803016 0.490491 45 57.5 1 0 +2272 1 1 0 54.8571 46.1732 42.141 0.485712 -0.382683 -0.785899 0.490491 45 57.5 1 0 +2273 1 1 0 52.5518 43.8907 42.5056 0.25518 -0.610926 -0.749435 0.490491 45 57.5 1 0 +2274 1 1 0 53.2214 44.1631 42.5466 0.322141 -0.583692 -0.745339 0.490491 45 57.5 1 0 +2275 1 1 0 52.8032 44.5489 42.0989 0.280319 -0.545109 -0.790112 0.490491 45 57.5 1 0 +2276 1 1 0 53.8268 42.141 45.1429 0.382683 -0.785899 -0.485712 0.490491 45 57.5 1 0 +2277 1 1 0 54.156 41.9698 45.7287 0.415597 -0.803016 -0.427135 0.490491 45 57.5 1 0 +2278 1 1 0 54.5399 42.4206 45.3157 0.45399 -0.757936 -0.46843 0.490491 45 57.5 1 0 +2279 1 1 0 54.4698 41.8377 46.3397 0.446977 -0.816233 -0.366027 0.490491 45 57.5 1 0 +2280 1 1 0 54.7623 41.7482 46.962 0.476225 -0.825175 -0.303801 0.490491 45 57.5 1 0 +2281 1 1 0 55.1612 42.1655 46.5385 0.516122 -0.783452 -0.346153 0.490491 45 57.5 1 0 +2282 1 1 0 54.8624 42.2742 45.9171 0.48624 -0.772575 -0.408286 0.490491 45 57.5 1 0 +2283 1 1 0 55.225 42.747 45.5174 0.522499 -0.725299 -0.448259 0.490491 45 57.5 1 0 +2284 1 1 0 55.5337 42.6229 46.1327 0.553372 -0.737712 -0.38673 0.490491 45 57.5 1 0 +2285 1 1 0 55.8779 43.1181 45.7467 0.587785 -0.688191 -0.425325 0.490491 45 57.5 1 0 +2286 1 1 0 55.0421 41.6964 47.6277 0.504209 -0.830359 -0.237228 0.490491 45 57.5 1 0 +2287 1 1 0 55.2913 41.6919 48.2747 0.529135 -0.830812 -0.172532 0.490491 45 57.5 1 0 +2288 1 1 0 55.7125 42.0735 47.8698 0.571251 -0.79265 -0.213023 0.490491 45 57.5 1 0 +2289 1 1 0 55.5186 41.7289 48.9351 0.551859 -0.82711 -0.106494 0.490491 45 57.5 1 0 +2290 1 1 0 55.949 42.0983 48.5259 0.594895 -0.79017 -0.147413 0.490491 45 57.5 1 0 +2291 1 1 0 56.3458 42.5021 48.1257 0.634579 -0.749786 -0.187432 0.490491 45 57.5 1 0 +2292 1 1 0 56.1919 43.0296 46.3841 0.619186 -0.697037 -0.361591 0.490491 45 57.5 1 0 +2293 1 1 0 56.4945 43.5316 46.0023 0.649448 -0.64684 -0.399769 0.490491 45 57.5 1 0 +2294 1 1 0 56.4741 42.9769 47.04 0.647412 -0.70231 -0.296004 0.490491 45 57.5 1 0 +2295 1 1 0 56.7891 43.465 46.6531 0.678913 -0.653497 -0.334691 0.490491 45 57.5 1 0 +2296 1 1 0 57.0711 43.985 46.2825 0.707107 -0.601501 -0.371748 0.490491 45 57.5 1 0 +2297 1 1 0 56.7232 42.9602 47.711 0.672319 -0.703983 -0.228899 0.490491 45 57.5 1 0 +2298 1 1 0 57.0524 43.4338 47.3262 0.705236 -0.65662 -0.267381 0.490491 45 57.5 1 0 +2299 1 1 0 57.3479 43.9426 46.9479 0.734794 -0.605742 -0.305212 0.490491 45 57.5 1 0 +2300 1 1 0 57.6041 44.4755 46.5857 0.760406 -0.552454 -0.341435 0.490491 45 57.5 1 0 +2301 1 1 0 55.4511 42.0989 47.1968 0.545109 -0.790112 -0.280319 0.490491 45 57.5 1 0 +2302 1 1 0 56.1093 42.5056 47.4482 0.610926 -0.749435 -0.25518 0.490491 45 57.5 1 0 +2303 1 1 0 55.8369 42.5466 46.7786 0.583692 -0.745339 -0.322141 0.490491 45 57.5 1 0 +2304 1 1 0 55.5245 46.5857 42.3959 0.552454 -0.341435 -0.760406 0.490491 45 57.5 1 0 +2305 1 1 0 56.015 46.2825 42.9289 0.601501 -0.371748 -0.707107 0.490491 45 57.5 1 0 +2306 1 1 0 56.0574 46.9479 42.6521 0.605742 -0.305212 -0.734794 0.490491 45 57.5 1 0 +2307 1 1 0 56.4684 46.0023 43.5055 0.64684 -0.399769 -0.649448 0.490491 45 57.5 1 0 +2308 1 1 0 56.535 46.6531 43.2109 0.653497 -0.334691 -0.678913 0.490491 45 57.5 1 0 +2309 1 1 0 56.8819 45.7467 44.1221 0.688191 -0.425325 -0.587785 0.490491 45 57.5 1 0 +2310 1 1 0 56.9704 46.3841 43.8081 0.697037 -0.361591 -0.619186 0.490491 45 57.5 1 0 +2311 1 1 0 57.0231 47.04 43.5259 0.70231 -0.296004 -0.647412 0.490491 45 57.5 1 0 +2312 1 1 0 56.5662 47.3262 42.9476 0.65662 -0.267381 -0.705236 0.490491 45 57.5 1 0 +2313 1 1 0 57.0398 47.711 43.2768 0.703983 -0.228899 -0.672319 0.490491 45 57.5 1 0 +2314 1 1 0 57.253 45.5174 44.775 0.725299 -0.448259 -0.522499 0.490491 45 57.5 1 0 +2315 1 1 0 57.3771 46.1327 44.4663 0.737712 -0.38673 -0.553372 0.490491 45 57.5 1 0 +2316 1 1 0 57.5794 45.3157 45.4601 0.757936 -0.46843 -0.45399 0.490491 45 57.5 1 0 +2317 1 1 0 57.7258 45.9171 45.1376 0.772575 -0.408286 -0.48624 0.490491 45 57.5 1 0 +2318 1 1 0 57.8345 46.5385 44.8388 0.783452 -0.346153 -0.516122 0.490491 45 57.5 1 0 +2319 1 1 0 57.859 45.1429 46.1732 0.785899 -0.485712 -0.382683 0.490491 45 57.5 1 0 +2320 1 1 0 58.0302 45.7287 45.844 0.803016 -0.427135 -0.415597 0.490491 45 57.5 1 0 +2321 1 1 0 58.1623 46.3397 45.5302 0.816233 -0.366027 -0.446977 0.490491 45 57.5 1 0 +2322 1 1 0 58.2518 46.962 45.2377 0.825175 -0.303801 -0.476225 0.490491 45 57.5 1 0 +2323 1 1 0 57.4979 48.1257 43.6542 0.749786 -0.187432 -0.634579 0.490491 45 57.5 1 0 +2324 1 1 0 57.9265 47.8698 44.2875 0.79265 -0.213023 -0.571251 0.490491 45 57.5 1 0 +2325 1 1 0 57.9017 48.5259 44.051 0.79017 -0.147413 -0.594895 0.490491 45 57.5 1 0 +2326 1 1 0 58.3036 47.6277 44.9579 0.830359 -0.237228 -0.504209 0.490491 45 57.5 1 0 +2327 1 1 0 58.3081 48.2747 44.7087 0.830812 -0.172532 -0.529135 0.490491 45 57.5 1 0 +2328 1 1 0 58.2711 48.9351 44.4814 0.82711 -0.106494 -0.551859 0.490491 45 57.5 1 0 +2329 1 1 0 57.4534 46.7786 44.1631 0.745339 -0.322141 -0.583692 0.490491 45 57.5 1 0 +2330 1 1 0 57.9011 47.1968 44.5489 0.790112 -0.280319 -0.545109 0.490491 45 57.5 1 0 +2331 1 1 0 57.4944 47.4482 43.8907 0.749435 -0.25518 -0.610926 0.490491 45 57.5 1 0 +2332 1 1 0 54.1427 42.6499 44.6322 0.414272 -0.735011 -0.536784 0.490491 45 57.5 1 0 +2333 1 1 0 54.8521 42.9553 44.8203 0.485208 -0.704471 -0.51797 0.490491 45 57.5 1 0 +2334 1 1 0 55.5242 43.3039 45.0356 0.552418 -0.669612 -0.496441 0.490491 45 57.5 1 0 +2335 1 1 0 55.1338 43.5342 44.3575 0.513375 -0.646578 -0.564254 0.490491 45 57.5 1 0 +2336 1 1 0 54.4396 43.2102 44.1528 0.443957 -0.678977 -0.584716 0.490491 45 57.5 1 0 +2337 1 1 0 54.7092 43.8076 43.7169 0.470917 -0.619242 -0.628313 0.490491 45 57.5 1 0 +2338 1 1 0 56.1924 43.7169 45.2908 0.619242 -0.628313 -0.470917 0.490491 45 57.5 1 0 +2339 1 1 0 56.7898 44.1528 45.5604 0.678977 -0.584716 -0.443957 0.490491 45 57.5 1 0 +2340 1 1 0 56.4658 44.3575 44.8662 0.646578 -0.564254 -0.513375 0.490491 45 57.5 1 0 +2341 1 1 0 57.3501 44.6322 45.8573 0.735011 -0.536784 -0.414272 0.490491 45 57.5 1 0 +2342 1 1 0 57.0447 44.8203 45.1479 0.704471 -0.51797 -0.485208 0.490491 45 57.5 1 0 +2343 1 1 0 56.6961 45.0356 44.4758 0.669612 -0.496441 -0.552418 0.490491 45 57.5 1 0 +2344 1 1 0 54.9644 44.4758 43.3039 0.496441 -0.552418 -0.669612 0.490491 45 57.5 1 0 +2345 1 1 0 55.6425 44.8662 43.5342 0.564254 -0.513375 -0.646578 0.490491 45 57.5 1 0 +2346 1 1 0 55.1797 45.1479 42.9553 0.51797 -0.485208 -0.704471 0.490491 45 57.5 1 0 +2347 1 1 0 56.2831 45.2908 43.8076 0.628313 -0.470917 -0.619242 0.490491 45 57.5 1 0 +2348 1 1 0 55.8472 45.5604 43.2102 0.584716 -0.443957 -0.678977 0.490491 45 57.5 1 0 +2349 1 1 0 55.3678 45.8573 42.6499 0.536784 -0.414272 -0.735011 0.490491 45 57.5 1 0 +2350 1 1 0 55.8195 43.9252 44.5935 0.581952 -0.607478 -0.54065 0.490491 45 57.5 1 0 +2351 1 1 0 56.0748 44.5935 44.1805 0.607478 -0.54065 -0.581952 0.490491 45 57.5 1 0 +2352 1 1 0 55.4065 44.1805 43.9252 0.54065 -0.581952 -0.607478 0.490491 45 57.5 1 0 +2353 1 1 0 48.9351 44.4814 58.2711 -0.106494 -0.551859 0.82711 0.490491 45 57.5 1 0 +2354 1 1 0 48.5259 44.051 57.9017 -0.147413 -0.594895 0.79017 0.490491 45 57.5 1 0 +2355 1 1 0 48.1257 43.6542 57.4979 -0.187432 -0.634579 0.749786 0.490491 45 57.5 1 0 +2356 1 1 0 47.8698 44.2875 57.9265 -0.213023 -0.571251 0.79265 0.490491 45 57.5 1 0 +2357 1 1 0 48.2747 44.7087 58.3081 -0.172532 -0.529135 0.830812 0.490491 45 57.5 1 0 +2358 1 1 0 47.6277 44.9579 58.3036 -0.237228 -0.504209 0.830359 0.490491 45 57.5 1 0 +2359 1 1 0 47.711 43.2768 57.0398 -0.228899 -0.672319 0.703983 0.490491 45 57.5 1 0 +2360 1 1 0 47.3262 42.9476 56.5662 -0.267381 -0.705236 0.65662 0.490491 45 57.5 1 0 +2361 1 1 0 47.04 43.5259 57.0231 -0.296004 -0.647412 0.70231 0.490491 45 57.5 1 0 +2362 1 1 0 46.9479 42.6521 56.0574 -0.305212 -0.734794 0.605742 0.490491 45 57.5 1 0 +2363 1 1 0 46.5857 42.3959 55.5245 -0.341435 -0.760406 0.552454 0.490491 45 57.5 1 0 +2364 1 1 0 46.2825 42.9289 56.015 -0.371748 -0.707107 0.601501 0.490491 45 57.5 1 0 +2365 1 1 0 46.6531 43.2109 56.535 -0.334691 -0.678913 0.653497 0.490491 45 57.5 1 0 +2366 1 1 0 46.3841 43.8081 56.9704 -0.361591 -0.619186 0.697037 0.490491 45 57.5 1 0 +2367 1 1 0 46.0023 43.5055 56.4684 -0.399769 -0.649448 0.64684 0.490491 45 57.5 1 0 +2368 1 1 0 45.7467 44.1221 56.8819 -0.425325 -0.587785 0.688191 0.490491 45 57.5 1 0 +2369 1 1 0 46.962 45.2377 58.2518 -0.303801 -0.476225 0.825175 0.490491 45 57.5 1 0 +2370 1 1 0 46.5385 44.8388 57.8345 -0.346153 -0.516122 0.783452 0.490491 45 57.5 1 0 +2371 1 1 0 46.3397 45.5302 58.1623 -0.366027 -0.446977 0.816233 0.490491 45 57.5 1 0 +2372 1 1 0 46.1327 44.4663 57.3771 -0.38673 -0.553372 0.737712 0.490491 45 57.5 1 0 +2373 1 1 0 45.9171 45.1376 57.7258 -0.408286 -0.48624 0.772575 0.490491 45 57.5 1 0 +2374 1 1 0 45.5174 44.775 57.253 -0.448259 -0.522499 0.725299 0.490491 45 57.5 1 0 +2375 1 1 0 45.3157 45.4601 57.5794 -0.46843 -0.45399 0.757936 0.490491 45 57.5 1 0 +2376 1 1 0 45.7287 45.844 58.0302 -0.427135 -0.415597 0.803016 0.490491 45 57.5 1 0 +2377 1 1 0 45.1429 46.1732 57.859 -0.485712 -0.382683 0.785899 0.490491 45 57.5 1 0 +2378 1 1 0 47.4482 43.8907 57.4944 -0.25518 -0.610926 0.749435 0.490491 45 57.5 1 0 +2379 1 1 0 46.7786 44.1631 57.4534 -0.322141 -0.583692 0.745339 0.490491 45 57.5 1 0 +2380 1 1 0 47.1968 44.5489 57.9011 -0.280319 -0.545109 0.790112 0.490491 45 57.5 1 0 +2381 1 1 0 46.1732 42.141 54.8571 -0.382683 -0.785899 0.485712 0.490491 45 57.5 1 0 +2382 1 1 0 45.844 41.9698 54.2713 -0.415597 -0.803016 0.427135 0.490491 45 57.5 1 0 +2383 1 1 0 45.4601 42.4206 54.6843 -0.45399 -0.757936 0.46843 0.490491 45 57.5 1 0 +2384 1 1 0 45.5302 41.8377 53.6603 -0.446977 -0.816233 0.366027 0.490491 45 57.5 1 0 +2385 1 1 0 45.2377 41.7482 53.038 -0.476225 -0.825175 0.303801 0.490491 45 57.5 1 0 +2386 1 1 0 44.8388 42.1655 53.4615 -0.516122 -0.783452 0.346153 0.490491 45 57.5 1 0 +2387 1 1 0 45.1376 42.2742 54.0829 -0.48624 -0.772575 0.408286 0.490491 45 57.5 1 0 +2388 1 1 0 44.775 42.747 54.4826 -0.522499 -0.725299 0.448259 0.490491 45 57.5 1 0 +2389 1 1 0 44.4663 42.6229 53.8673 -0.553372 -0.737712 0.38673 0.490491 45 57.5 1 0 +2390 1 1 0 44.1221 43.1181 54.2533 -0.587785 -0.688191 0.425325 0.490491 45 57.5 1 0 +2391 1 1 0 44.9579 41.6964 52.3723 -0.504209 -0.830359 0.237228 0.490491 45 57.5 1 0 +2392 1 1 0 44.7087 41.6919 51.7253 -0.529135 -0.830812 0.172532 0.490491 45 57.5 1 0 +2393 1 1 0 44.2875 42.0735 52.1302 -0.571251 -0.79265 0.213023 0.490491 45 57.5 1 0 +2394 1 1 0 44.4814 41.7289 51.0649 -0.551859 -0.82711 0.106494 0.490491 45 57.5 1 0 +2395 1 1 0 44.051 42.0983 51.4741 -0.594895 -0.79017 0.147413 0.490491 45 57.5 1 0 +2396 1 1 0 43.6542 42.5021 51.8743 -0.634579 -0.749786 0.187432 0.490491 45 57.5 1 0 +2397 1 1 0 43.8081 43.0296 53.6159 -0.619186 -0.697037 0.361591 0.490491 45 57.5 1 0 +2398 1 1 0 43.5055 43.5316 53.9977 -0.649448 -0.64684 0.399769 0.490491 45 57.5 1 0 +2399 1 1 0 43.5259 42.9769 52.96 -0.647412 -0.70231 0.296004 0.490491 45 57.5 1 0 +2400 1 1 0 43.2109 43.465 53.3469 -0.678913 -0.653497 0.334691 0.490491 45 57.5 1 0 +2401 1 1 0 42.9289 43.985 53.7175 -0.707107 -0.601501 0.371748 0.490491 45 57.5 1 0 +2402 1 1 0 43.2768 42.9602 52.289 -0.672319 -0.703983 0.228899 0.490491 45 57.5 1 0 +2403 1 1 0 42.9476 43.4338 52.6738 -0.705236 -0.65662 0.267381 0.490491 45 57.5 1 0 +2404 1 1 0 42.6521 43.9426 53.0521 -0.734794 -0.605742 0.305212 0.490491 45 57.5 1 0 +2405 1 1 0 42.3959 44.4755 53.4143 -0.760406 -0.552454 0.341435 0.490491 45 57.5 1 0 +2406 1 1 0 44.5489 42.0989 52.8032 -0.545109 -0.790112 0.280319 0.490491 45 57.5 1 0 +2407 1 1 0 43.8907 42.5056 52.5518 -0.610926 -0.749435 0.25518 0.490491 45 57.5 1 0 +2408 1 1 0 44.1631 42.5466 53.2214 -0.583692 -0.745339 0.322141 0.490491 45 57.5 1 0 +2409 1 1 0 44.4755 46.5857 57.6041 -0.552454 -0.341435 0.760406 0.490491 45 57.5 1 0 +2410 1 1 0 43.985 46.2825 57.0711 -0.601501 -0.371748 0.707107 0.490491 45 57.5 1 0 +2411 1 1 0 43.9426 46.9479 57.3479 -0.605742 -0.305212 0.734794 0.490491 45 57.5 1 0 +2412 1 1 0 43.5316 46.0023 56.4945 -0.64684 -0.399769 0.649448 0.490491 45 57.5 1 0 +2413 1 1 0 43.465 46.6531 56.7891 -0.653497 -0.334691 0.678913 0.490491 45 57.5 1 0 +2414 1 1 0 43.1181 45.7467 55.8779 -0.688191 -0.425325 0.587785 0.490491 45 57.5 1 0 +2415 1 1 0 43.0296 46.3841 56.1919 -0.697037 -0.361591 0.619186 0.490491 45 57.5 1 0 +2416 1 1 0 42.9769 47.04 56.4741 -0.70231 -0.296004 0.647412 0.490491 45 57.5 1 0 +2417 1 1 0 43.4338 47.3262 57.0524 -0.65662 -0.267381 0.705236 0.490491 45 57.5 1 0 +2418 1 1 0 42.9602 47.711 56.7232 -0.703983 -0.228899 0.672319 0.490491 45 57.5 1 0 +2419 1 1 0 42.747 45.5174 55.225 -0.725299 -0.448259 0.522499 0.490491 45 57.5 1 0 +2420 1 1 0 42.6229 46.1327 55.5337 -0.737712 -0.38673 0.553372 0.490491 45 57.5 1 0 +2421 1 1 0 42.4206 45.3157 54.5399 -0.757936 -0.46843 0.45399 0.490491 45 57.5 1 0 +2422 1 1 0 42.2742 45.9171 54.8624 -0.772575 -0.408286 0.48624 0.490491 45 57.5 1 0 +2423 1 1 0 42.1655 46.5385 55.1612 -0.783452 -0.346153 0.516122 0.490491 45 57.5 1 0 +2424 1 1 0 42.141 45.1429 53.8268 -0.785899 -0.485712 0.382683 0.490491 45 57.5 1 0 +2425 1 1 0 41.9698 45.7287 54.156 -0.803016 -0.427135 0.415597 0.490491 45 57.5 1 0 +2426 1 1 0 41.8377 46.3397 54.4698 -0.816233 -0.366027 0.446977 0.490491 45 57.5 1 0 +2427 1 1 0 41.7482 46.962 54.7623 -0.825175 -0.303801 0.476225 0.490491 45 57.5 1 0 +2428 1 1 0 42.5021 48.1257 56.3458 -0.749786 -0.187432 0.634579 0.490491 45 57.5 1 0 +2429 1 1 0 42.0735 47.8698 55.7125 -0.79265 -0.213023 0.571251 0.490491 45 57.5 1 0 +2430 1 1 0 42.0983 48.5259 55.949 -0.79017 -0.147413 0.594895 0.490491 45 57.5 1 0 +2431 1 1 0 41.6964 47.6277 55.0421 -0.830359 -0.237228 0.504209 0.490491 45 57.5 1 0 +2432 1 1 0 41.6919 48.2747 55.2913 -0.830812 -0.172532 0.529135 0.490491 45 57.5 1 0 +2433 1 1 0 41.7289 48.9351 55.5186 -0.82711 -0.106494 0.551859 0.490491 45 57.5 1 0 +2434 1 1 0 42.5466 46.7786 55.8369 -0.745339 -0.322141 0.583692 0.490491 45 57.5 1 0 +2435 1 1 0 42.0989 47.1968 55.4511 -0.790112 -0.280319 0.545109 0.490491 45 57.5 1 0 +2436 1 1 0 42.5056 47.4482 56.1093 -0.749435 -0.25518 0.610926 0.490491 45 57.5 1 0 +2437 1 1 0 45.8573 42.6499 55.3678 -0.414272 -0.735011 0.536784 0.490491 45 57.5 1 0 +2438 1 1 0 45.1479 42.9553 55.1797 -0.485208 -0.704471 0.51797 0.490491 45 57.5 1 0 +2439 1 1 0 44.4758 43.3039 54.9644 -0.552418 -0.669612 0.496441 0.490491 45 57.5 1 0 +2440 1 1 0 44.8662 43.5342 55.6425 -0.513375 -0.646578 0.564254 0.490491 45 57.5 1 0 +2441 1 1 0 45.5604 43.2102 55.8472 -0.443957 -0.678977 0.584716 0.490491 45 57.5 1 0 +2442 1 1 0 45.2908 43.8076 56.2831 -0.470917 -0.619242 0.628313 0.490491 45 57.5 1 0 +2443 1 1 0 43.8076 43.7169 54.7092 -0.619242 -0.628313 0.470917 0.490491 45 57.5 1 0 +2444 1 1 0 43.2102 44.1528 54.4396 -0.678977 -0.584716 0.443957 0.490491 45 57.5 1 0 +2445 1 1 0 43.5342 44.3575 55.1338 -0.646578 -0.564254 0.513375 0.490491 45 57.5 1 0 +2446 1 1 0 42.6499 44.6322 54.1427 -0.735011 -0.536784 0.414272 0.490491 45 57.5 1 0 +2447 1 1 0 42.9553 44.8203 54.8521 -0.704471 -0.51797 0.485208 0.490491 45 57.5 1 0 +2448 1 1 0 43.3039 45.0356 55.5242 -0.669612 -0.496441 0.552418 0.490491 45 57.5 1 0 +2449 1 1 0 45.0356 44.4758 56.6961 -0.496441 -0.552418 0.669612 0.490491 45 57.5 1 0 +2450 1 1 0 44.3575 44.8662 56.4658 -0.564254 -0.513375 0.646578 0.490491 45 57.5 1 0 +2451 1 1 0 44.8203 45.1479 57.0447 -0.51797 -0.485208 0.704471 0.490491 45 57.5 1 0 +2452 1 1 0 43.7169 45.2908 56.1924 -0.628313 -0.470917 0.619242 0.490491 45 57.5 1 0 +2453 1 1 0 44.1528 45.5604 56.7898 -0.584716 -0.443957 0.678977 0.490491 45 57.5 1 0 +2454 1 1 0 44.6322 45.8573 57.3501 -0.536784 -0.414272 0.735011 0.490491 45 57.5 1 0 +2455 1 1 0 44.1805 43.9252 55.4065 -0.581952 -0.607478 0.54065 0.490491 45 57.5 1 0 +2456 1 1 0 43.9252 44.5935 55.8195 -0.607478 -0.54065 0.581952 0.490491 45 57.5 1 0 +2457 1 1 0 44.5935 44.1805 56.0748 -0.54065 -0.581952 0.607478 0.490491 45 57.5 1 0 +2458 1 1 0 51.0649 44.4814 58.2711 0.106494 -0.551859 0.82711 0.490491 45 57.5 1 0 +2459 1 1 0 51.7253 44.7087 58.3081 0.172532 -0.529135 0.830812 0.490491 45 57.5 1 0 +2460 1 1 0 52.3723 44.9579 58.3036 0.237228 -0.504209 0.830359 0.490491 45 57.5 1 0 +2461 1 1 0 52.1302 44.2875 57.9265 0.213023 -0.571251 0.79265 0.490491 45 57.5 1 0 +2462 1 1 0 51.4741 44.051 57.9017 0.147413 -0.594895 0.79017 0.490491 45 57.5 1 0 +2463 1 1 0 51.8743 43.6542 57.4979 0.187432 -0.634579 0.749786 0.490491 45 57.5 1 0 +2464 1 1 0 53.038 45.2377 58.2518 0.303801 -0.476225 0.825175 0.490491 45 57.5 1 0 +2465 1 1 0 53.6603 45.5302 58.1623 0.366027 -0.446977 0.816233 0.490491 45 57.5 1 0 +2466 1 1 0 53.4615 44.8388 57.8345 0.346153 -0.516122 0.783452 0.490491 45 57.5 1 0 +2467 1 1 0 54.2713 45.844 58.0302 0.427135 -0.415597 0.803016 0.490491 45 57.5 1 0 +2468 1 1 0 54.8571 46.1732 57.859 0.485712 -0.382683 0.785899 0.490491 45 57.5 1 0 +2469 1 1 0 54.6843 45.4601 57.5794 0.46843 -0.45399 0.757936 0.490491 45 57.5 1 0 +2470 1 1 0 54.0829 45.1376 57.7258 0.408286 -0.48624 0.772575 0.490491 45 57.5 1 0 +2471 1 1 0 53.8673 44.4663 57.3771 0.38673 -0.553372 0.737712 0.490491 45 57.5 1 0 +2472 1 1 0 54.4826 44.775 57.253 0.448259 -0.522499 0.725299 0.490491 45 57.5 1 0 +2473 1 1 0 54.2533 44.1221 56.8819 0.425325 -0.587785 0.688191 0.490491 45 57.5 1 0 +2474 1 1 0 52.289 43.2768 57.0398 0.228899 -0.672319 0.703983 0.490491 45 57.5 1 0 +2475 1 1 0 52.96 43.5259 57.0231 0.296004 -0.647412 0.70231 0.490491 45 57.5 1 0 +2476 1 1 0 52.6738 42.9476 56.5662 0.267381 -0.705236 0.65662 0.490491 45 57.5 1 0 +2477 1 1 0 53.6159 43.8081 56.9704 0.361591 -0.619186 0.697037 0.490491 45 57.5 1 0 +2478 1 1 0 53.3469 43.2109 56.535 0.334691 -0.678913 0.653497 0.490491 45 57.5 1 0 +2479 1 1 0 53.9977 43.5055 56.4684 0.399769 -0.649448 0.64684 0.490491 45 57.5 1 0 +2480 1 1 0 53.7175 42.9289 56.015 0.371748 -0.707107 0.601501 0.490491 45 57.5 1 0 +2481 1 1 0 53.0521 42.6521 56.0574 0.305212 -0.734794 0.605742 0.490491 45 57.5 1 0 +2482 1 1 0 53.4143 42.3959 55.5245 0.341435 -0.760406 0.552454 0.490491 45 57.5 1 0 +2483 1 1 0 52.8032 44.5489 57.9011 0.280319 -0.545109 0.790112 0.490491 45 57.5 1 0 +2484 1 1 0 53.2214 44.1631 57.4534 0.322141 -0.583692 0.745339 0.490491 45 57.5 1 0 +2485 1 1 0 52.5518 43.8907 57.4944 0.25518 -0.610926 0.749435 0.490491 45 57.5 1 0 +2486 1 1 0 55.5245 46.5857 57.6041 0.552454 -0.341435 0.760406 0.490491 45 57.5 1 0 +2487 1 1 0 56.0574 46.9479 57.3479 0.605742 -0.305212 0.734794 0.490491 45 57.5 1 0 +2488 1 1 0 56.015 46.2825 57.0711 0.601501 -0.371748 0.707107 0.490491 45 57.5 1 0 +2489 1 1 0 56.5662 47.3262 57.0524 0.65662 -0.267381 0.705236 0.490491 45 57.5 1 0 +2490 1 1 0 57.0398 47.711 56.7232 0.703983 -0.228899 0.672319 0.490491 45 57.5 1 0 +2491 1 1 0 57.0231 47.04 56.4741 0.70231 -0.296004 0.647412 0.490491 45 57.5 1 0 +2492 1 1 0 56.535 46.6531 56.7891 0.653497 -0.334691 0.678913 0.490491 45 57.5 1 0 +2493 1 1 0 56.4684 46.0023 56.4945 0.64684 -0.399769 0.649448 0.490491 45 57.5 1 0 +2494 1 1 0 56.9704 46.3841 56.1919 0.697037 -0.361591 0.619186 0.490491 45 57.5 1 0 +2495 1 1 0 56.8819 45.7467 55.8779 0.688191 -0.425325 0.587785 0.490491 45 57.5 1 0 +2496 1 1 0 57.4979 48.1257 56.3458 0.749786 -0.187432 0.634579 0.490491 45 57.5 1 0 +2497 1 1 0 57.9017 48.5259 55.949 0.79017 -0.147413 0.594895 0.490491 45 57.5 1 0 +2498 1 1 0 57.9265 47.8698 55.7125 0.79265 -0.213023 0.571251 0.490491 45 57.5 1 0 +2499 1 1 0 58.2711 48.9351 55.5186 0.82711 -0.106494 0.551859 0.490491 45 57.5 1 0 +2500 1 1 0 58.3081 48.2747 55.2913 0.830812 -0.172532 0.529135 0.490491 45 57.5 1 0 +2501 1 1 0 58.3036 47.6277 55.0421 0.830359 -0.237228 0.504209 0.490491 45 57.5 1 0 +2502 1 1 0 57.3771 46.1327 55.5337 0.737712 -0.38673 0.553372 0.490491 45 57.5 1 0 +2503 1 1 0 57.253 45.5174 55.225 0.725299 -0.448259 0.522499 0.490491 45 57.5 1 0 +2504 1 1 0 57.8345 46.5385 55.1612 0.783452 -0.346153 0.516122 0.490491 45 57.5 1 0 +2505 1 1 0 57.7258 45.9171 54.8624 0.772575 -0.408286 0.48624 0.490491 45 57.5 1 0 +2506 1 1 0 57.5794 45.3157 54.5399 0.757936 -0.46843 0.45399 0.490491 45 57.5 1 0 +2507 1 1 0 58.2518 46.962 54.7623 0.825175 -0.303801 0.476225 0.490491 45 57.5 1 0 +2508 1 1 0 58.1623 46.3397 54.4698 0.816233 -0.366027 0.446977 0.490491 45 57.5 1 0 +2509 1 1 0 58.0302 45.7287 54.156 0.803016 -0.427135 0.415597 0.490491 45 57.5 1 0 +2510 1 1 0 57.859 45.1429 53.8268 0.785899 -0.485712 0.382683 0.490491 45 57.5 1 0 +2511 1 1 0 57.4944 47.4482 56.1093 0.749435 -0.25518 0.610926 0.490491 45 57.5 1 0 +2512 1 1 0 57.9011 47.1968 55.4511 0.790112 -0.280319 0.545109 0.490491 45 57.5 1 0 +2513 1 1 0 57.4534 46.7786 55.8369 0.745339 -0.322141 0.583692 0.490491 45 57.5 1 0 +2514 1 1 0 53.8268 42.141 54.8571 0.382683 -0.785899 0.485712 0.490491 45 57.5 1 0 +2515 1 1 0 54.5399 42.4206 54.6843 0.45399 -0.757936 0.46843 0.490491 45 57.5 1 0 +2516 1 1 0 54.156 41.9698 54.2713 0.415597 -0.803016 0.427135 0.490491 45 57.5 1 0 +2517 1 1 0 55.225 42.747 54.4826 0.522499 -0.725299 0.448259 0.490491 45 57.5 1 0 +2518 1 1 0 54.8624 42.2742 54.0829 0.48624 -0.772575 0.408286 0.490491 45 57.5 1 0 +2519 1 1 0 55.8779 43.1181 54.2533 0.587785 -0.688191 0.425325 0.490491 45 57.5 1 0 +2520 1 1 0 55.5337 42.6229 53.8673 0.553372 -0.737712 0.38673 0.490491 45 57.5 1 0 +2521 1 1 0 55.1612 42.1655 53.4615 0.516122 -0.783452 0.346153 0.490491 45 57.5 1 0 +2522 1 1 0 54.4698 41.8377 53.6603 0.446977 -0.816233 0.366027 0.490491 45 57.5 1 0 +2523 1 1 0 54.7623 41.7482 53.038 0.476225 -0.825175 0.303801 0.490491 45 57.5 1 0 +2524 1 1 0 56.4945 43.5316 53.9977 0.649448 -0.64684 0.399769 0.490491 45 57.5 1 0 +2525 1 1 0 56.1919 43.0296 53.6159 0.619186 -0.697037 0.361591 0.490491 45 57.5 1 0 +2526 1 1 0 57.0711 43.985 53.7175 0.707107 -0.601501 0.371748 0.490491 45 57.5 1 0 +2527 1 1 0 56.7891 43.465 53.3469 0.678913 -0.653497 0.334691 0.490491 45 57.5 1 0 +2528 1 1 0 56.4741 42.9769 52.96 0.647412 -0.70231 0.296004 0.490491 45 57.5 1 0 +2529 1 1 0 57.6041 44.4755 53.4143 0.760406 -0.552454 0.341435 0.490491 45 57.5 1 0 +2530 1 1 0 57.3479 43.9426 53.0521 0.734794 -0.605742 0.305212 0.490491 45 57.5 1 0 +2531 1 1 0 57.0524 43.4338 52.6738 0.705236 -0.65662 0.267381 0.490491 45 57.5 1 0 +2532 1 1 0 56.7232 42.9602 52.289 0.672319 -0.703983 0.228899 0.490491 45 57.5 1 0 +2533 1 1 0 55.0421 41.6964 52.3723 0.504209 -0.830359 0.237228 0.490491 45 57.5 1 0 +2534 1 1 0 55.7125 42.0735 52.1302 0.571251 -0.79265 0.213023 0.490491 45 57.5 1 0 +2535 1 1 0 55.2913 41.6919 51.7253 0.529135 -0.830812 0.172532 0.490491 45 57.5 1 0 +2536 1 1 0 56.3458 42.5021 51.8743 0.634579 -0.749786 0.187432 0.490491 45 57.5 1 0 +2537 1 1 0 55.949 42.0983 51.4741 0.594895 -0.79017 0.147413 0.490491 45 57.5 1 0 +2538 1 1 0 55.5186 41.7289 51.0649 0.551859 -0.82711 0.106494 0.490491 45 57.5 1 0 +2539 1 1 0 55.8369 42.5466 53.2214 0.583692 -0.745339 0.322141 0.490491 45 57.5 1 0 +2540 1 1 0 56.1093 42.5056 52.5518 0.610926 -0.749435 0.25518 0.490491 45 57.5 1 0 +2541 1 1 0 55.4511 42.0989 52.8032 0.545109 -0.790112 0.280319 0.490491 45 57.5 1 0 +2542 1 1 0 55.3678 45.8573 57.3501 0.536784 -0.414272 0.735011 0.490491 45 57.5 1 0 +2543 1 1 0 55.8472 45.5604 56.7898 0.584716 -0.443957 0.678977 0.490491 45 57.5 1 0 +2544 1 1 0 56.2831 45.2908 56.1924 0.628313 -0.470917 0.619242 0.490491 45 57.5 1 0 +2545 1 1 0 55.6425 44.8662 56.4658 0.564254 -0.513375 0.646578 0.490491 45 57.5 1 0 +2546 1 1 0 55.1797 45.1479 57.0447 0.51797 -0.485208 0.704471 0.490491 45 57.5 1 0 +2547 1 1 0 54.9644 44.4758 56.6961 0.496441 -0.552418 0.669612 0.490491 45 57.5 1 0 +2548 1 1 0 56.6961 45.0356 55.5242 0.669612 -0.496441 0.552418 0.490491 45 57.5 1 0 +2549 1 1 0 57.0447 44.8203 54.8521 0.704471 -0.51797 0.485208 0.490491 45 57.5 1 0 +2550 1 1 0 56.4658 44.3575 55.1338 0.646578 -0.564254 0.513375 0.490491 45 57.5 1 0 +2551 1 1 0 57.3501 44.6322 54.1427 0.735011 -0.536784 0.414272 0.490491 45 57.5 1 0 +2552 1 1 0 56.7898 44.1528 54.4396 0.678977 -0.584716 0.443957 0.490491 45 57.5 1 0 +2553 1 1 0 56.1924 43.7169 54.7092 0.619242 -0.628313 0.470917 0.490491 45 57.5 1 0 +2554 1 1 0 54.7092 43.8076 56.2831 0.470917 -0.619242 0.628313 0.490491 45 57.5 1 0 +2555 1 1 0 55.1338 43.5342 55.6425 0.513375 -0.646578 0.564254 0.490491 45 57.5 1 0 +2556 1 1 0 54.4396 43.2102 55.8472 0.443957 -0.678977 0.584716 0.490491 45 57.5 1 0 +2557 1 1 0 55.5242 43.3039 54.9644 0.552418 -0.669612 0.496441 0.490491 45 57.5 1 0 +2558 1 1 0 54.8521 42.9553 55.1797 0.485208 -0.704471 0.51797 0.490491 45 57.5 1 0 +2559 1 1 0 54.1427 42.6499 55.3678 0.414272 -0.735011 0.536784 0.490491 45 57.5 1 0 +2560 1 1 0 56.0748 44.5935 55.8195 0.607478 -0.54065 0.581952 0.490491 45 57.5 1 0 +2561 1 1 0 55.8195 43.9252 55.4065 0.581952 -0.607478 0.54065 0.490491 45 57.5 1 0 +2562 1 1 0 55.4065 44.1805 56.0748 0.54065 -0.581952 0.607478 0.490491 45 57.5 1 0 +2563 2 2 1 50 50 62 0 0 1 0.490491 45 57.5 80 0 +2564 3 3 -1 50 50 38 0 0 1 0.490491 45 57.5 80 0 diff --git a/examples/USER/dielectric/in.confined b/examples/USER/dielectric/in.confined new file mode 100644 index 0000000000..c6508cfe08 --- /dev/null +++ b/examples/USER/dielectric/in.confined @@ -0,0 +1,80 @@ +# Two ions, a cation and an anion, confined between two interfaces: epsilon1 | epsilon2 | epsilon1 +# The interface normal vectors should be consistent with ed, pointing from region with epsilon1 to that with epsilon2 +# bottom interface: n = (0, 0, 1) +# top interface: n = (0, 0, -1) +# so that ed's are the same for both interfaces + +variable epsilon1 index 20 +variable epsilon2 index 8 + +variable data index data.confined + +newton off +units lj +atom_style dielectric +atom_modify map array +dimension 3 +boundary f f f + +variable method index gmres # gmres = BEM/GMRES + # icc = BEM/ICC* + # dof = Variational + # none + +variable ed equal "v_epsilon2 - v_epsilon1" +variable em equal "(v_epsilon2 + v_epsilon1)/2" +variable epsilon equal 1.0 # epsilon at the patch, not used for now +variable area equal 0.866 # patch area, same as in the data file + +read_data ${data} + +group interface type 1 +group ions type 2 3 + +group cations type 2 +group anions type 3 + +# 1.0 = q * epsilon2 = qreal for cations +# -1.0 = q * epsilon2 = qreal for anions +variable qscale equal "1.0 / v_epsilon2" +set group cations charge ${qscale} +variable qscale equal "-1.0 / v_epsilon2" +set group anions charge ${qscale} + +pair_style lj/cut/coul/cut/dielectric 1.122 20.0 +pair_coeff * * 1.0 1.0 +pair_coeff 1 1 0.0 1.0 + +neigh_modify every 1 delay 0 check yes one 5000 + +#compute ef all efield/atom +dump 1 all custom 100 all.dump id mol type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] +dump 2 interface custom 100 interface.dump id mol type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] +dump_modify 1 sort id + +dump 3 ions custom 100 ions.dump id mol type q x y z fx fy fz #c_ef[1] c_ef[2] c_ef[3] + +fix 1 ions nve + +if "${method} == gmres" then & + "fix 3 interface polarize/bem/gmres 1 1.0e-4" & + "fix_modify 3 itr_max 50 dielectrics ${ed} ${em} ${epsilon} ${area} NULL" & +elif "${method} == icc"& + "fix 3 interface polarize/bem/icc 1 1.0e-4 itr_max 50" & + "fix_modify 3 itr_max 50 dielectrics ${ed} ${em} ${epsilon} ${area} NULL" & +elif "${method} == dof" & + "fix 3 interface polarize/functional" & + "fix_modify 3 dielectrics ${ed} ${em} ${epsilon} ${area} NULL" & +else & + "print 'Unsupported polarization solver' " + +thermo 1000 +thermo_style custom step evdwl ecoul elong epair #f_3 +thermo_modify flush yes + +run 0 + + + + + diff --git a/examples/USER/dielectric/in.minimal b/examples/USER/dielectric/in.minimal new file mode 100644 index 0000000000..beb738d36f --- /dev/null +++ b/examples/USER/dielectric/in.minimal @@ -0,0 +1,39 @@ +# Interface +newton off +units lj +atom_style dielectric +atom_modify map array +dimension 3 +boundary p p f + +read_data data.minimal + +group interface type 1 +group ions type 2 3 + +pair_style coul/long/dielectric 5.0 +#pair_style coul/cut/dielectric 20.0 +pair_coeff * * + +thermo 1000 +thermo_style custom step evdwl ecoul elong epair +thermo_modify flush yes + +#compute ef all efield/atom +dump 1 all custom 100 dump.txt id type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] + +dump_modify 1 sort id + +fix 1 ions nve + +fix 3 interface polarize/bem/icc 1 1.0e-4 + +kspace_style pppm/dielectric 0.0001 +kspace_modify slab 3.0 + +velocity all create 1.0 2947942 mom yes dist gaussian + +run 0 + + + diff --git a/examples/USER/dielectric/in.nopbc b/examples/USER/dielectric/in.nopbc new file mode 100644 index 0000000000..bb7b506c90 --- /dev/null +++ b/examples/USER/dielectric/in.nopbc @@ -0,0 +1,51 @@ +# Interface +newton off +units lj +atom_style dielectric +atom_modify map array +dimension 3 +boundary f f f + +variable method index gmres # gmres = BEM/GMRES + # icc = BEM/ICC* + # dof = Variational + # none + +variable data index data.sphere #data.plane # data.minimal + +read_data ${data} + +group interface type 1 +group ions type 2 3 + +pair_style lj/cut/coul/cut/dielectric 50.0 +pair_coeff * * 1.0 1.0 +pair_coeff 1 1 0.0 1.0 + +neigh_modify one 5000 + +#compute ef all efield/atom +dump 1 all custom 100 all.dump id mol type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] +dump 2 interface custom 100 interface.dump id mol type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] + +dump_modify 1 sort id + +fix 1 ions nve + +if "${method} == gmres" then & + "fix 3 interface polarize/bem/gmres 1 1.0e-4" & +elif "${method} == icc"& + "fix 3 interface polarize/bem/icc 1 1.0e-4 itr_max 50" & +elif "${method} == dof" & + "fix 3 interface polarize/functional" & +else & + "print 'Unsupported method for polarization' " + +thermo 1000 +thermo_style custom step evdwl ecoul elong epair #f_3 +thermo_modify flush yes + +run 0 + + + diff --git a/examples/USER/dielectric/in.pbc b/examples/USER/dielectric/in.pbc new file mode 100644 index 0000000000..41226602fc --- /dev/null +++ b/examples/USER/dielectric/in.pbc @@ -0,0 +1,54 @@ +# Interface +newton off +units lj +atom_style dielectric +atom_modify map array +dimension 3 +boundary p p f + +variable method index gmres # gmres = BEM/GMRES + # icc = BEM/ICC* + # dof = Variational + # none + +variable data index data.sphere #data.plane # data.minimal + +read_data ${data} + +group interface type 1 +group ions type 2 3 + +pair_style lj/cut/coul/long/dielectric 1.122 10.0 +pair_coeff * * 1.0 1.0 +pair_coeff 1 1 0.0 1.0 + +kspace_style pppm/dielectric 0.0001 +kspace_modify slab 3.0 + +neigh_modify every 1 delay 0 check yes one 5000 + +#compute ef all efield/atom +dump 1 all custom 100 all.dump id mol type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] +dump 2 interface custom 100 interface.dump id mol type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] + +dump_modify 1 sort id + +fix 1 ions nve + +if "${method} == gmres" then & + "fix 3 interface polarize/bem/gmres 1 1.0e-4" & +elif "${method} == icc"& + "fix 3 interface polarize/bem/icc 1 1.0e-4 itr_max 50" & +elif "${method} == dof" & + "fix 3 interface polarize/functional" & +else & + "print 'Unsupported method for polarization' " + +thermo 100 +thermo_style custom step evdwl ecoul elong epair cpu +thermo_modify flush yes + +run 0 + + + diff --git a/src/GPU/pair_lj_cut_gpu.cpp b/src/GPU/pair_lj_cut_gpu.cpp index 1de70701f0..29b14c033f 100644 --- a/src/GPU/pair_lj_cut_gpu.cpp +++ b/src/GPU/pair_lj_cut_gpu.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://lammps.sandia.gov/, Sandia National Laboratories @@ -16,26 +17,19 @@ ------------------------------------------------------------------------- */ #include "pair_lj_cut_gpu.h" -#include -#include -#include #include "atom.h" -#include "atom_vec.h" -#include "comm.h" -#include "force.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "integrate.h" -#include "memory.h" -#include "error.h" -#include "neigh_request.h" -#include "universe.h" -#include "update.h" #include "domain.h" +#include "error.h" +#include "force.h" #include "gpu_extra.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" #include "suffix.h" +#include + using namespace LAMMPS_NS; // External functions from cuda library for atom decomposition @@ -141,22 +135,27 @@ void PairLJCutGPU::init_style() { cut_respa = nullptr; - if (force->newton_pair) - error->all(FLERR,"Cannot use newton pair with lj/cut/gpu pair style"); + //if (force->newton_pair) +// error->all(FLERR,"Cannot use newton pair with lj/cut/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; double cut; for (int i = 1; i <= atom->ntypes; i++) { for (int j = i; j <= atom->ntypes; j++) { + cut = init_one(i,j); if (setflag[i][j] != 0 || (setflag[i][i] != 0 && setflag[j][j] != 0)) { + cut = init_one(i,j); + //printf("lj/cut/gpu: i = %d; j = %d: setflag = %d cut = %f\n", i, j, setflag[i][j], cut); cut *= cut; if (cut > maxcut) maxcut = cut; cutsq[i][j] = cutsq[j][i] = cut; - } else + } else { + //printf("lj/cut/gpu: i = %d; j = %d: setflag = %d cut = %f\n", i, j, setflag[i][j], cut); cutsq[i][j] = cutsq[j][i] = 0.0; + } } } double cell_size = sqrt(maxcut) + neighbor->skin; diff --git a/src/USER-DIELECTRIC/Install.sh b/src/USER-DIELECTRIC/Install.sh new file mode 100644 index 0000000000..986e20e806 --- /dev/null +++ b/src/USER-DIELECTRIC/Install.sh @@ -0,0 +1,56 @@ +# Install/unInstall package files in LAMMPS +# mode = 0/1/2 for uninstall/install/update + +mode=$1 + +# enforce using portable C locale +LC_ALL=C +export LC_ALL + +# arg1 = file, arg2 = file it depends on + +action () { + if (test $mode = 0) then + rm -f ../$1 + elif (! cmp -s $1 ../$1) then + if (test -z "$2" || test -e ../$2) then + cp $1 .. + if (test $mode = 2) then + echo " updating src/$1" + fi + fi + elif (test -n "$2") then + if (test ! -e ../$2) then + rm -f ../$1 + fi + fi +} + +# list of files with optional dependcies + +action atom_vec_dielectric.cpp +action atom_vec_dielectric.h +action fix_polarize_bem_gmres.cpp +action fix_polarize_bem_gmres.h +action fix_polarize_bem_icc.cpp +action fix_polarize_bem_icc.h +action fix_polarize_functional.cpp +action fix_polarize_functional.h +action pair_lj_cut_coul_msm_dielectric.cpp +action pair_lj_cut_coul_msm_dielectric.h +action pair_lj_cut_coul_long_dielectric.cpp +action pair_lj_cut_coul_long_dielectric.h +action pair_lj_long_coul_long_dielectric.cpp pair_lj_long_coul_long.cpp +action pair_lj_long_coul_long_dielectric.h pair_lj_long_coul_long.cpp +action pair_lj_cut_coul_cut_dielectric.cpp +action pair_lj_cut_coul_cut_dielectric.h +action pair_coul_long_dielectric.cpp +action pair_coul_long_dielectric.h +action pair_coul_cut_dielectric.cpp +action pair_coul_cut_dielectric.h +action pppm_dielectric.cpp +action pppm_dielectric.h +action pppm_disp_dielectric.cpp pppm_disp.cpp +action pppm_disp_dielectric.h pppm_disp.h +action msm_dielectric.cpp +action msm_dielectric.h diff --git a/src/USER-DIELECTRIC/README b/src/USER-DIELECTRIC/README new file mode 100644 index 0000000000..5996d00572 --- /dev/null +++ b/src/USER-DIELECTRIC/README @@ -0,0 +1,73 @@ +* Description + +The USER-DIELECTRIC package provides several solvers for computing surface induced charges: + * the boundary element method using the GMRES solver (fix polarize/bem/gmres), + * the induced charge computation (ICC*) (fix polarize/bem/icc), and + * the direct optimization of an energy functional derived from the variational approach (fix polarize/functional). + +See the header of the source files for more details on the references of the methods. +Example input scripts are given at examples/USER/dielectric. + +The USER-DIELECTRIC package was created by Trung Nguyen while at Northwestern, +with contribution from Honghao Li (FixQeqDielectric) while at Northwestern. + +Questions can be addressed to Trung Nguyen (ndactrung@gmail.com). + +* Citation + +Please cite the following paper if you use the code for your publications + +Trung Dac Nguyen, Honghao Li, Debarshee Bagchi, Francisco J. Solis, Monica Olvera de la Cruz, +"Incorporating surface polarization effects into large-scale coarse-grained Molecular Dynamics simulation", +Computer Physics Communications 241, 80--91 (2019); DOI: 10.1016/j.cpc.2019.03.006. + +* Installation + +1. Clone the git repo: git clone https://bitbucket.org/ndtrung/lammps.git + +2. Check out the dielectric branch: git checkout dielectric + +3. Build: go to src/, and run + +make yes-molecule + +make yes-kspace + +make yes-user-dielectric + +a. If you don't have GSL libraries (libgsl.a and libgslcblas.a) installed in your machine, +remove fix_qeq_dielectric.cpp and fix_qeq_dielectric.h. Then build with + +make mpi -j8 + + +b. If you do have GSL headers and libraries installed, assuming that they are in /path/to/gsl/install, +copy MAKE/Makefile.mpi to MAKE/Makefile.mpi_gsl, and add to the variables CCFLAGS and LINKFLAGS +in MAKE/Makefile.mpi_gsl: + +GSL_PATH = /path/to/gsl/install + +... + +CCFLAGS = -O2 -march=native -funroll-loops -ffast-math -fopenmp -I$(GSL_PATH)/include + +... + +LINKFLAGS = -O2 -fopenmp -L$(GSL_PATH)/lib + +LIB = -lgsl -lgslcblas + +Finally, build with + +make mpi_gsl -j8 + +* Test + +Go to examples/USER/dielectric, and run + +mpirun -np 8 ../../../src/lmp_mpi -in in.confined + +or with the modified Makefile.mpi_gsl: + +mpirun -np 8 ../../../src/lmp_mpi_gsl -in in.confined + diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp new file mode 100644 index 0000000000..07ae1abd06 --- /dev/null +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp @@ -0,0 +1,1270 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +#include +#include +#include "atom_vec_dielectric.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +AtomVecDielectric::AtomVecDielectric(LAMMPS *lmp) : AtomVecFull(lmp), + mu(NULL), area(NULL), ed(NULL), em(NULL), q_real(NULL), epsilon(NULL), + curvature(NULL) +{ + comm_x_only = 0; // 0 to exchange other data in addition to x in pack comm + size_forward = 13; // # items in func: pack_comm + size_reverse = 3; + size_border = 18; // # items in func: pack_border + size_velocity = 3; + size_data_atom = 15; // # items from read data file, func: data_atom. + size_data_vel = 4; + xcol_data = 5; // column in data files where coordinates start + // the first four columns are tag, mol, type, q + + atom->mu_flag = 1; +} + +/* ---------------------------------------------------------------------- */ + +AtomVecDielectric::~AtomVecDielectric() +{ + memory->destroy(area); + memory->destroy(ed); + memory->destroy(em); + memory->destroy(epsilon); + memory->destroy(q_real); + memory->destroy(curvature); +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecDielectric::grow(int n) +{ + AtomVecFull::grow(n); + + mu = memory->grow(atom->mu,nmax,4,"atom:mu"); + + // USER-DIELECTRIC specifics + + area = memory->grow(area,nmax,"atom:area"); + ed = memory->grow(ed,nmax,"atom:ed"); + em = memory->grow(em,nmax,"atom:em"); + epsilon = memory->grow(epsilon,nmax,"atom:epsilon"); + q_real = memory->grow(q_real,nmax,"atom:q_real"); + curvature = memory->grow(curvature,nmax,"atom:curvature"); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs +------------------------------------------------------------------------- */ + +void AtomVecDielectric::grow_reset() +{ + AtomVecFull::grow_reset(); + + mu = atom->mu; +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVecDielectric::copy(int i, int j, int delflag) +{ + AtomVecFull::copy(i, j, delflag); + + // USER-DIELECTRIC specifics + + mu[j][0] = mu[i][0]; + mu[j][1] = mu[i][1]; + mu[j][2] = mu[i][2]; + mu[j][3] = mu[i][3]; + + area[j] = area[i]; + ed[j] = ed[i]; + em[j] = em[i]; + epsilon[j] = epsilon[i]; + q_real[j] = q_real[i]; + curvature[j] = curvature[i]; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDielectric::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = q_real[j]; + buf[m++] = curvature[j]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = q_real[j]; + buf[m++] = curvature[j]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDielectric::pack_comm_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = q_real[j]; + buf[m++] = curvature[j]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = q_real[j]; + buf[m++] = curvature[j]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = q_real[j]; + buf[m++] = curvature[j]; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDielectric::pack_comm_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = q_real[j]; + buf[m++] = curvature[j]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDielectric::unpack_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + q[i] = buf[m++]; + mu[i][0] = buf[m++]; + mu[i][1] = buf[m++]; + mu[i][2] = buf[m++]; + area[i] = buf[m++]; + ed[i] = buf[m++]; + em[i] = buf[m++]; + epsilon[i] = buf[m++]; + q_real[i] = buf[m++]; + curvature[i] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDielectric::unpack_comm_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + q[i] = buf[m++]; + mu[i][0] = buf[m++]; + mu[i][1] = buf[m++]; + mu[i][2] = buf[m++]; + area[i] = buf[m++]; + ed[i] = buf[m++]; + em[i] = buf[m++]; + epsilon[i] = buf[m++]; + q_real[i] = buf[m++]; + curvature[i] = buf[m++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDielectric::unpack_comm_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + q[i] = buf[m++]; + mu[i][0] = buf[m++]; + mu[i][1] = buf[m++]; + mu[i][2] = buf[m++]; + area[i] = buf[m++]; + ed[i] = buf[m++]; + em[i] = buf[m++]; + epsilon[i] = buf[m++]; + q_real[i] = buf[m++]; + curvature[i] = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDielectric::pack_reverse(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = f[i][0]; + buf[m++] = f[i][1]; + buf[m++] = f[i][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDielectric::unpack_reverse(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + f[j][0] += buf[m++]; + f[j][1] += buf[m++]; + f[j][2] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDielectric::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = ubuf(molecule[j]).d; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = mu[j][3]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = q_real[j]; + buf[m++] = curvature[j]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = ubuf(molecule[j]).d; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = mu[j][3]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = q_real[j]; + buf[m++] = curvature[j]; + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDielectric::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = ubuf(molecule[j]).d; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = mu[j][3]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = q_real[j]; + buf[m++] = curvature[j]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = ubuf(molecule[j]).d; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = mu[j][3]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = q_real[j]; + buf[m++] = curvature[j]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = ubuf(molecule[j]).d; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = mu[j][3]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = curvature[j]; + buf[m++] = q_real[j]; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + } + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDielectric::pack_border_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(molecule[j]).d; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = mu[j][3]; + buf[m++] = area[j]; + buf[m++] = ed[j]; + buf[m++] = em[j]; + buf[m++] = epsilon[j]; + buf[m++] = q_real[j]; + buf[m++] = curvature[j]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDielectric::unpack_border(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + molecule[i] = (tagint) ubuf(buf[m++]).i; + q[i] = buf[m++]; + mu[i][0] = buf[m++]; + mu[i][1] = buf[m++]; + mu[i][2] = buf[m++]; + mu[i][3] = buf[m++]; + area[i] = buf[m++]; + ed[i] = buf[m++]; + em[i] = buf[m++]; + epsilon[i] = buf[m++]; + q_real[i] = buf[m++]; + curvature[i] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDielectric::unpack_border_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + molecule[i] = (tagint) ubuf(buf[m++]).i; + q[i] = buf[m++]; + mu[i][0] = buf[m++]; + mu[i][1] = buf[m++]; + mu[i][2] = buf[m++]; + mu[i][3] = buf[m++]; + area[i] = buf[m++]; + ed[i] = buf[m++]; + em[i] = buf[m++]; + epsilon[i] = buf[m++]; + q_real[i] = buf[m++]; + curvature[i] = buf[m++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDielectric::unpack_border_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + molecule[i] = (tagint) ubuf(buf[m++]).i; + q[i] = buf[m++]; + mu[i][0] = buf[m++]; + mu[i][1] = buf[m++]; + mu[i][2] = buf[m++]; + mu[i][3] = buf[m++]; + area[i] = buf[m++]; + ed[i] = buf[m++]; + em[i] = buf[m++]; + epsilon[i] = buf[m++]; + q_real[i] = buf[m++]; + curvature[i] = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- + pack all atom quantities for shipping to another proc + xyz must be 1st 3 values, so that comm::exchange can test on them +------------------------------------------------------------------------- */ + +int AtomVecDielectric::pack_exchange(int i, double *buf) +{ + int k; + + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + + buf[m++] = ubuf(molecule[i]).d; + + buf[m++] = q[i]; + buf[m++] = mu[i][0]; + buf[m++] = mu[i][1]; + buf[m++] = mu[i][2]; + buf[m++] = mu[i][3]; + buf[m++] = area[i]; + buf[m++] = ed[i]; + buf[m++] = em[i]; + buf[m++] = epsilon[i]; + buf[m++] = q_real[i]; + buf[m++] = curvature[i]; + + buf[m++] = ubuf(num_bond[i]).d; + for (k = 0; k < num_bond[i]; k++) { + buf[m++] = ubuf(bond_type[i][k]).d; + buf[m++] = ubuf(bond_atom[i][k]).d; + } + + buf[m++] = ubuf(num_angle[i]).d; + for (k = 0; k < num_angle[i]; k++) { + buf[m++] = ubuf(angle_type[i][k]).d; + buf[m++] = ubuf(angle_atom1[i][k]).d; + buf[m++] = ubuf(angle_atom2[i][k]).d; + buf[m++] = ubuf(angle_atom3[i][k]).d; + } + + buf[m++] = ubuf(num_dihedral[i]).d; + for (k = 0; k < num_dihedral[i]; k++) { + buf[m++] = ubuf(dihedral_type[i][k]).d; + buf[m++] = ubuf(dihedral_atom1[i][k]).d; + buf[m++] = ubuf(dihedral_atom2[i][k]).d; + buf[m++] = ubuf(dihedral_atom3[i][k]).d; + buf[m++] = ubuf(dihedral_atom4[i][k]).d; + } + + buf[m++] = ubuf(num_improper[i]).d; + for (k = 0; k < num_improper[i]; k++) { + buf[m++] = ubuf(improper_type[i][k]).d; + buf[m++] = ubuf(improper_atom1[i][k]).d; + buf[m++] = ubuf(improper_atom2[i][k]).d; + buf[m++] = ubuf(improper_atom3[i][k]).d; + buf[m++] = ubuf(improper_atom4[i][k]).d; + } + + buf[m++] = ubuf(nspecial[i][0]).d; + buf[m++] = ubuf(nspecial[i][1]).d; + buf[m++] = ubuf(nspecial[i][2]).d; + for (k = 0; k < nspecial[i][2]; k++) buf[m++] = ubuf(special[i][k]).d; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDielectric::unpack_exchange(double *buf) +{ + int k; + + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + + molecule[nlocal] = (tagint) ubuf(buf[m++]).i; + + q[nlocal] = buf[m++]; + mu[nlocal][0] = buf[m++]; + mu[nlocal][1] = buf[m++]; + mu[nlocal][2] = buf[m++]; + mu[nlocal][3] = buf[m++]; + area[nlocal] = buf[m++]; + ed[nlocal] = buf[m++]; + em[nlocal] = buf[m++]; + epsilon[nlocal] = buf[m++]; + q_real[nlocal] = buf[m++]; + curvature[nlocal] = buf[m++]; + + num_bond[nlocal] = (int) ubuf(buf[m++]).i; + for (k = 0; k < num_bond[nlocal]; k++) { + bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; + bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; + } + + num_angle[nlocal] = (int) ubuf(buf[m++]).i; + for (k = 0; k < num_angle[nlocal]; k++) { + angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; + angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; + angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; + angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; + } + + num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; + for (k = 0; k < num_dihedral[nlocal]; k++) { + dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; + dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; + dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; + dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; + dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; + } + + num_improper[nlocal] = (int) ubuf(buf[m++]).i; + for (k = 0; k < num_improper[nlocal]; k++) { + improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; + improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; + improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; + improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; + improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; + } + + nspecial[nlocal][0] = (int) ubuf(buf[m++]).i; + nspecial[nlocal][1] = (int) ubuf(buf[m++]).i; + nspecial[nlocal][2] = (int) ubuf(buf[m++]).i; + for (k = 0; k < nspecial[nlocal][2]; k++) + special[nlocal][k] = (tagint) ubuf(buf[m++]).i; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]-> + unpack_exchange(nlocal,&buf[m]); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + size of restart data for all atoms owned by this proc + include extra data stored by fixes +------------------------------------------------------------------------- */ + +int AtomVecDielectric::size_restart() +{ + int i; + + int nlocal = atom->nlocal; + int n = 0; + // n is calculated from pack_restart: similar to full (17) + // 17 = 3 for x[], 4 for (tag, type, mask, image), 3 for v[], 1 for molecule ID, 1 for q, + // 4 for num bonds/angles/dihedrals/impropers and 1 for the first element (buf[0]) + // plus 10 = 4 for mu (norm) and 6 (area, ed, em, epsilon, q_real, curvature) + // totaling 27 + for (i = 0; i < nlocal; i++) + n += 27 + 2*num_bond[i] + 4*num_angle[i] + + 5*num_dihedral[i] + 5*num_improper[i]; + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + for (i = 0; i < nlocal; i++) + n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + + return n; +} + +/* ---------------------------------------------------------------------- + pack atom I's data for restart file including extra quantities + xyz must be 1st 3 values, so that read_restart can test on them + molecular types may be negative, but write as positive +------------------------------------------------------------------------- */ + +int AtomVecDielectric::pack_restart(int i, double *buf) +{ + int k; + + int m = 1; + buf[m++] = x[i][0]; + buf[m++] = x[i][1]; + buf[m++] = x[i][2]; + buf[m++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = ubuf(molecule[i]).d; + + buf[m++] = q[i]; + buf[m++] = mu[i][0]; + buf[m++] = mu[i][1]; + buf[m++] = mu[i][2]; + buf[m++] = mu[i][3]; + buf[m++] = area[i]; + buf[m++] = ed[i]; + buf[m++] = em[i]; + buf[m++] = epsilon[i]; + buf[m++] = q_real[i]; + buf[m++] = curvature[i]; + + buf[m++] = ubuf(num_bond[i]).d; + for (k = 0; k < num_bond[i]; k++) { + buf[m++] = ubuf(MAX(bond_type[i][k],-bond_type[i][k])).d; + buf[m++] = ubuf(bond_atom[i][k]).d; + } + + buf[m++] = ubuf(num_angle[i]).d; + for (k = 0; k < num_angle[i]; k++) { + buf[m++] = ubuf(MAX(angle_type[i][k],-angle_type[i][k])).d; + buf[m++] = ubuf(angle_atom1[i][k]).d; + buf[m++] = ubuf(angle_atom2[i][k]).d; + buf[m++] = ubuf(angle_atom3[i][k]).d; + } + + buf[m++] = ubuf(num_dihedral[i]).d; + for (k = 0; k < num_dihedral[i]; k++) { + buf[m++] = ubuf(MAX(dihedral_type[i][k],-dihedral_type[i][k])).d; + buf[m++] = ubuf(dihedral_atom1[i][k]).d; + buf[m++] = ubuf(dihedral_atom2[i][k]).d; + buf[m++] = ubuf(dihedral_atom3[i][k]).d; + buf[m++] = ubuf(dihedral_atom4[i][k]).d; + } + + buf[m++] = ubuf(num_improper[i]).d; + for (k = 0; k < num_improper[i]; k++) { + buf[m++] = ubuf(MAX(improper_type[i][k],-improper_type[i][k])).d; + buf[m++] = ubuf(improper_atom1[i][k]).d; + buf[m++] = ubuf(improper_atom2[i][k]).d; + buf[m++] = ubuf(improper_atom3[i][k]).d; + buf[m++] = ubuf(improper_atom4[i][k]).d; + } + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack data for one atom from restart file including extra quantities +------------------------------------------------------------------------- */ + +int AtomVecDielectric::unpack_restart(double *buf) +{ + int k; + + int nlocal = atom->nlocal; + if (nlocal == nmax) { + grow(0); + if (atom->nextra_store) + memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); + } + + int m = 1; + x[nlocal][0] = buf[m++]; + x[nlocal][1] = buf[m++]; + x[nlocal][2] = buf[m++]; + tag[nlocal] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + + molecule[nlocal] = (tagint) ubuf(buf[m++]).i; + + q[nlocal] = buf[m++]; + mu[nlocal][0] = buf[m++]; + mu[nlocal][1] = buf[m++]; + mu[nlocal][2] = buf[m++]; + mu[nlocal][3] = buf[m++]; + area[nlocal] = buf[m++]; + ed[nlocal] = buf[m++]; + em[nlocal] = buf[m++]; + epsilon[nlocal] = buf[m++]; + q_real[nlocal] = buf[m++]; + curvature[nlocal] = buf[m++]; + + num_bond[nlocal] = (int) ubuf(buf[m++]).i; + for (k = 0; k < num_bond[nlocal]; k++) { + bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; + bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; + } + + num_angle[nlocal] = (int) ubuf(buf[m++]).i; + for (k = 0; k < num_angle[nlocal]; k++) { + angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; + angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; + angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; + angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; + } + + num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; + for (k = 0; k < num_dihedral[nlocal]; k++) { + dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; + dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; + dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; + dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; + dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; + } + + num_improper[nlocal] = (int) ubuf(buf[m++]).i; + for (k = 0; k < num_improper[nlocal]; k++) { + improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; + improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; + improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; + improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; + improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; + } + + nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; + + double **extra = atom->extra; + if (atom->nextra_store) { + int size = static_cast (buf[0]) - m; + for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; + } + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults +------------------------------------------------------------------------- */ + +void AtomVecDielectric::create_atom(int itype, double *coord) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = 0; + type[nlocal] = itype; + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + mask[nlocal] = 1; + image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | + ((imageint) IMGMAX << IMGBITS) | IMGMAX; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + q[nlocal] = 0.0; + mu[nlocal][0] = 0.0; + mu[nlocal][1] = 0.0; + mu[nlocal][2] = 1.0; + mu[nlocal][3] = 1.0; + area[nlocal] = 1.0; + ed[nlocal] = 0.0; + em[nlocal] = 1.0; + epsilon[nlocal] = 1.0; + q_real[nlocal] = 0.0; + curvature[nlocal] = 0.0; + + molecule[nlocal] = 0; + num_bond[nlocal] = 0; + num_angle[nlocal] = 0; + num_dihedral[nlocal] = 0; + num_improper[nlocal] = 0; + nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecDielectric::data_atom(double *coord, imageint imagetmp, char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = ATOTAGINT(values[0]); + molecule[nlocal] = ATOTAGINT(values[1]); + type[nlocal] = atoi(values[2]); + if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + q_real[nlocal] = atof(values[3]); + + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + + mu[nlocal][0] = atof(values[7]); + mu[nlocal][1] = atof(values[8]); + mu[nlocal][2] = atof(values[9]); + mu[nlocal][3] = 1; + + area[nlocal] = atof(values[10]); + ed[nlocal] = atof(values[11]); + em[nlocal] = atof(values[12]); + epsilon[nlocal] = atof(values[13]); + curvature[nlocal] = atof(values[14]); + q[nlocal] = q_real[nlocal] / epsilon[nlocal]; + + image[nlocal] = imagetmp; + + mask[nlocal] = 1; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + num_bond[nlocal] = 0; + num_angle[nlocal] = 0; + num_dihedral[nlocal] = 0; + num_improper[nlocal] = 0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack hybrid quantities from one line in Atoms section of data file + initialize other atom quantities for this sub-style +------------------------------------------------------------------------- */ + +int AtomVecDielectric::data_atom_hybrid(int nlocal, char **values) +{ + molecule[nlocal] = ATOTAGINT(values[0]); + q_real[nlocal] = atof(values[1]); + mu[nlocal][0] = atof(values[2]); + mu[nlocal][1] = atof(values[3]); + mu[nlocal][2] = atof(values[4]); + mu[nlocal][3] = 1; + area[nlocal] = atof(values[5]); + ed[nlocal] = atof(values[6]); + em[nlocal] = atof(values[7]); + epsilon[nlocal] = atof(values[8]); + curvature[nlocal] = atof(values[9]); + q[nlocal] = q_real[nlocal] / epsilon[nlocal]; + + num_bond[nlocal] = 0; + num_angle[nlocal] = 0; + num_dihedral[nlocal] = 0; + num_improper[nlocal] = 0; + + return 10; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecDielectric::pack_data(double **buf) +{ + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(tag[i]).d; + buf[i][1] = ubuf(molecule[i]).d; + buf[i][2] = ubuf(type[i]).d; + buf[i][3] = q[i]; + buf[i][4] = x[i][0]; + buf[i][5] = x[i][1]; + buf[i][6] = x[i][2]; + buf[i][7] = mu[i][0]; + buf[i][8] = mu[i][1]; + buf[i][9] = mu[i][2]; + buf[i][10] = area[i]; + buf[i][11] = ed[i]; + buf[i][12] = em[i]; + buf[i][13] = epsilon[i]; + buf[i][14] = curvature[i]; + buf[i][15] = ubuf((image[i] & IMGMASK) - IMGMAX).d; + buf[i][16] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; + buf[i][17] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + } +} + +/* ---------------------------------------------------------------------- + pack hybrid atom info for data file +------------------------------------------------------------------------- */ + +int AtomVecDielectric::pack_data_hybrid(int i, double *buf) +{ + buf[0] = ubuf(molecule[i]).d; + buf[1] = q[i]; + buf[2] = mu[i][0]; + buf[3] = mu[i][1]; + buf[4] = mu[i][2]; + buf[5] = area[i]; + buf[6] = ed[i]; + buf[7] = em[i]; + buf[8] = epsilon[i]; + buf[9] = q_real[i]; + buf[10] = curvature[i]; + return 11; +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecDielectric::write_data(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++) + fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT +// " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e " +// "%-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", + " %d %g %g %g %g %g %g " + "%g %g %g %g %g %g %d %d %d\n", + (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, (int) ubuf(buf[i][2]).i, + buf[i][3],buf[i][4],buf[i][5], buf[i][6],buf[i][7],buf[i][8], + buf[i][9],buf[i][10],buf[i][11], buf[i][12], buf[i][13], buf[i][14], + (int) ubuf(buf[i][15]).i,(int) ubuf(buf[i][16]).i, + (int) ubuf(buf[i][17]).i); +} + +/* ---------------------------------------------------------------------- + write hybrid atom info to data file +------------------------------------------------------------------------- */ + +int AtomVecDielectric::write_data_hybrid(FILE *fp, double *buf) +{ + fprintf(fp, TAGINT_FORMAT + " %-1.16e %-1.16e %-1.16e %-1.16e %-1.16 %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e", + buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8], buf[9], buf[10]); + return 11; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecDielectric::memory_usage() +{ + bigint bytes = AtomVecFull::memory_usage(); + + if (atom->memcheck("mu")) bytes += memory->usage(mu,nmax,4); + + if (atom->memcheck("area")) bytes += memory->usage(area,nmax); + if (atom->memcheck("ed")) bytes += memory->usage(ed,nmax); + if (atom->memcheck("em")) bytes += memory->usage(em,nmax); + if (atom->memcheck("epsilon")) bytes += memory->usage(epsilon,nmax); + if (atom->memcheck("q_real")) bytes += memory->usage(q_real,nmax); + if (atom->memcheck("curvature")) bytes += memory->usage(curvature,nmax); + + return bytes; +} diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.h b/src/USER-DIELECTRIC/atom_vec_dielectric.h new file mode 100644 index 0000000000..bb932daeb0 --- /dev/null +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.h @@ -0,0 +1,89 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef ATOM_CLASS + +AtomStyle(dielectric,AtomVecDielectric) + +#else + +#ifndef LMP_ATOM_VEC_DIELECTRIC_H +#define LMP_ATOM_VEC_DIELECTRIC_H + +#include "atom_vec_full.h" + +namespace LAMMPS_NS { + +class AtomVecDielectric : public AtomVecFull { + public: + AtomVecDielectric(class LAMMPS *); + ~AtomVecDielectric(); + void grow(int); + void grow_reset(); + + void copy(int, int, int); + int pack_comm(int, int *, double *, int, int *); + int pack_comm_vel(int, int *, double *, int, int *); + int pack_comm_hybrid(int, int *, double *); + void unpack_comm(int, int, double *); + void unpack_comm_vel(int, int, double *); + int unpack_comm_hybrid(int, int, double *); + int pack_reverse(int, int, double *); + void unpack_reverse(int, int *, double *); + int pack_border(int, int *, double *, int, int *); + int pack_border_vel(int, int *, double *, int, int *); + int pack_border_hybrid(int, int *, double *); + void unpack_border(int, int, double *); + void unpack_border_vel(int, int, double *); + int unpack_border_hybrid(int, int, double *); + int pack_exchange(int, double *); + int unpack_exchange(double *); + int size_restart(); + int pack_restart(int, double *); + int unpack_restart(double *); + void create_atom(int, double *); + void data_atom(double *, imageint, char **); + int data_atom_hybrid(int, char **); + void pack_data(double **); + int pack_data_hybrid(int, double *); + void write_data(FILE *, int, double **); + int write_data_hybrid(FILE *, double *); + bigint memory_usage(); + + public: + double **mu; // normal vector at the patch + double *area; // patch area + double *em; // mean dielectric constant at the patch + double *ed; // difference in dielectric constants at the patch + double *epsilon; // dielectric at the patch and real charges + double *curvature; // curvature at the patch + double *q_real; // unscaled charge: q_real = value read in from data file +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Per-processor system is too big + +The number of owned atoms plus ghost atoms on a single +processor must fit in 32-bit integer. + +E: Invalid atom type in Atoms section of data file + +Atom types must range from 1 to specified # of types. + +*/ diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp new file mode 100644 index 0000000000..60c0056672 --- /dev/null +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -0,0 +1,959 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Boundary element method for the Poisson equation for surface induced charges + using GMRES + + Reference: Barros, Sinkovits, Luijten, J. Chem. Phys 2014, 140, 064903 + Contributing author: Trung Nguyen (Northwestern) + + GMRES solver: + Original C version by Lili Ju. + C++ version by John Burkardt. + Adapted to the version where A is an operator and (b-Ax) is computed directly + by Trung Nguyen. + + Richard Barrett, Michael Berry, Tony Chan, James Demmel, + June Donato, Jack Dongarra, Victor Eijkhout, Roidan Pozo, + Charles Romine, Henk van der Vorst, + Templates for the Solution of Linear Systems: + Building Blocks for Iterative Methods, + SIAM, 1994, + ISBN: 0898714710, + LC: QA297.8.T45. + + Tim Kelley, + Iterative Methods for Linear and Nonlinear Equations, + SIAM, 2004, + ISBN: 0898713528, + LC: QA297.8.K45. +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_polarize_bem_gmres.h" +#include "atom_vec_dielectric.h" +#include "update.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "neighbor.h" +#include "force.h" +#include "group.h" +#include "kspace.h" +#include "memory.h" +#include "modify.h" +#include "math_const.h" +#include "pair_coul_cut_dielectric.h" +#include "pair_coul_long_dielectric.h" +#include "pair_lj_cut_coul_cut_dielectric.h" +#include "pair_lj_cut_coul_long_dielectric.h" +#include "pair_lj_cut_coul_msm_dielectric.h" +#include "pppm_dielectric.h" +#include "msm_dielectric.h" +#include "random_park.h" +#include "timer.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathConst; + +//#define _POLARIZE_DEBUG + +/* ---------------------------------------------------------------------- */ + +FixPolarizeBEMGMRES::FixPolarizeBEMGMRES(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), + q_backup(NULL), c(NULL), g(NULL), h(NULL), r(NULL), s(NULL), v(NULL), y(NULL) +{ + if (narg < 5) error->all(FLERR,"Illegal fix polarize/bem/gmres command"); + + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"Fix polarize requires atom style dielectric"); + + // parse required arguments + + nevery = force->inumeric(FLERR,arg[3]); + if (nevery < 0) error->all(FLERR,"Illegal fix polarize/bem/gmres command"); + double tol = force->numeric(FLERR,arg[4]); + tol_abs = tol_rel = tol; + + itr_max = 20; + mr = 0; + randomized = 0; + ave_charge = 0; + + efield_pair = NULL; + efield_kspace = NULL; + + comm_forward = 1; + nmax = 0; + allocated = 0; + kspaceflag = 0; + + induced_charge_idx = NULL; + induced_charges = NULL; + rhs = NULL; + buffer = NULL; + tag2mat = NULL; + mat2tag = NULL; + + // set flags for arrays to clear in force_clear() + + torqueflag = extraflag = 0; + if (atom->torque_flag) torqueflag = 1; + if (atom->avec->forceclearflag) extraflag = 1; + + grow_arrays(atom->nmax); + atom->add_callback(0); // to ensure to work with atom->sort() + + // output the residual and actual number of iterations + + global_freq = 1; + vector_flag = 1; + size_vector = 2; + extvector = 0; +} + +/* ---------------------------------------------------------------------- */ + +FixPolarizeBEMGMRES::~FixPolarizeBEMGMRES() +{ + memory->destroy(q_backup); + memory->destroy(induced_charge_idx); + memory->destroy(induced_charges); + memory->destroy(rhs); + memory->destroy(buffer); + memory->destroy(mat2tag); + memory->destroy(tag2mat); + + if (allocated) deallocate(); + atom->delete_callback(id,0); +} + +/* ---------------------------------------------------------------------- */ + +int FixPolarizeBEMGMRES::setmask() +{ + int mask = 0; + mask |= PRE_FORCE; + mask |= THERMO_ENERGY; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::init() +{ + // mapping induced charge matrix/vector to atom tags and vice versa + + int i,maxtag; + double *q = atom->q; + int *mask = atom->mask; + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + + tagint max_tag = -1; + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) max_tag = MAX(max_tag,tag[i]); + + tagint itmp; + MPI_Allreduce(&max_tag,&itmp,1,MPI_LMP_TAGINT,MPI_MAX,world); + maxtag = (int) itmp; + + int *ncount; + memory->create(ncount,maxtag+1,"polarize:ncount"); + for (i = 0; i <= maxtag; i++) ncount[i] = 0; + + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) ncount[tag[i]]++; + + memory->create(tag2mat,maxtag+1,"polarize:tag2mat"); + MPI_Allreduce(ncount,tag2mat,maxtag+1,MPI_INT,MPI_SUM,world); + + num_induced_charges = 0; + for (i = 0; i <= maxtag; i++) + if (tag2mat[i]) tag2mat[i] = num_induced_charges++; + else tag2mat[i] = -1; + + memory->create(mat2tag,num_induced_charges,"polarize:mat2tag"); + + num_induced_charges = 0; + for (i = 0; i <= maxtag; i++) + if (tag2mat[i] >= 0) mat2tag[num_induced_charges++] = i; + + for (i = 0; i < nlocal; i++) { + induced_charge_idx[i] = -1; + if (mask[i] & groupbit) induced_charge_idx[i] = tag2mat[tag[i]]; + } + + memory->destroy(ncount); + + // allocate memory for the solver + + memory->create(induced_charges,num_induced_charges,"polarize:induced_charges"); + memory->create(rhs,num_induced_charges,"polarize:rhs"); + memory->create(buffer,num_induced_charges,"polarize:buffer"); + + mat_dim = num_induced_charges; + if (mr > mat_dim - 1 || mr <= 0) mr = mat_dim - 1; + + if (allocated == 0) { + allocate(); + allocated = 1; + } + + // initialize random induced charges with zero sum + + if (randomized) { + + RanPark *random = new RanPark(lmp,seed_charge + comm->me); + for (i = 0; i < 100; i++) random->uniform(); + double sum,tmp = 0; + for (i = 0; i < nlocal; i++) { + if (induced_charge_idx[i] < 0) continue; + q[i] = ave_charge*(random->uniform() - 0.5); + tmp += q[i]; + } + MPI_Allreduce(&tmp,&sum,1,MPI_DOUBLE,MPI_SUM,world); + sum /= (double)num_induced_charges; + + tmp = 0; + for (i = 0; i < nlocal; i++) { + if (induced_charge_idx[i] < 0) continue; + q[i] -= sum; + tmp += q[i]; + } + MPI_Allreduce(&tmp,&sum,1,MPI_DOUBLE,MPI_SUM,world); + + if (comm->me == 0) { + if (screen) fprintf(screen, "ave induced charge q = %g\n", sum); + } + delete random; + } + + if (comm->me == 0) { + if (screen) fprintf(screen,"GMRES solver for %d induced charges " + "using maximum %d q-vectors\n",num_induced_charges,mr); + if (logfile) fprintf(logfile,"GMRES solver for %d induced charges " + "using maximum %d q-vectors\n",num_induced_charges,mr); + } +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::setup(int vflag) +{ + // check if the pair styles in use are compatible + + if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric") == 0) + efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/msm/dielectric") == 0) + efield_pair = ((PairLJCutCoulMSMDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric") == 0) + efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"coul/long/dielectric") == 0) + efield_pair = ((PairCoulLongDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"coul/cut/dielectric") == 0) + efield_pair = ((PairCoulCutDielectric*)force->pair)->efield; + else error->all(FLERR,"Pair style not compatible with fix polarize"); + + if (kspaceflag) { + if (force->kspace) { + if (strcmp(force->kspace_style,"pppm/dielectric") == 0) + efield_kspace = ((PPPMDielectric*)force->kspace)->efield; + else if (strcmp(force->kspace_style,"msm/dielectric") == 0) + efield_kspace = ((MSMDielectric*)force->kspace)->efield; + else error->all(FLERR,"Kspace style not compatible with fix polarize/bem/gmres"); + } else error->all(FLERR,"No Kspace style available for fix polarize/bem/gmres"); + } + + first = 1; + compute_induced_charges(); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::pre_force(int) +{ + if (nevery == 0) return; + if (update->ntimestep % nevery) return; + + compute_induced_charges(); + + // make sure forces are reset to zero before actual forces are computed + + force_clear(); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::compute_induced_charges() +{ + double *q = atom->q; + double *q_real = avec->q_real; + double **norm = avec->mu; + double *area = avec->area; + double *ed = avec->ed; + double *em = avec->em; + double *epsilon = avec->epsilon; + int *mask = atom->mask; + int nlocal = atom->nlocal; + double epsilon0 = force->dielectric; + int eflag = 0; + int vflag = 0; + + // compute the right hand side (vector b) of Eq. (40) according to Eq. (42) + // keep the scaled real charges intact here to compute efield for the right hand side (b) + // and backup all the charges + // for induced charges q_real stores the free surface charge + // set the induced charges to be zero to compute the right hand side (b) + // the current value can be accessed via induced_charges[induced_charge_idx[i]] + + for (int i = 0; i < nlocal; i++) { + q_backup[i] = q[i]; + if (induced_charge_idx[i] >= 0) q[i] = 0; + } + + comm->forward_comm_fix(this); + + // note here q[i] are the bound charges including area + // so that kspace solver can be used directly with the charge values + // for the moment, require that newton off and full neighbor list for pair + // Note that in the definition of the electrical fields in Equations (41) and (53) + // in Ref. Barros et al there is a factor 1/(4pi), and + // that these are the electrical field is due to the rescaled real charges + // Note: the right-hand side (b) is in the unit of charge density + + force_clear(); + force->pair->compute(eflag,vflag); + if (kspaceflag) force->kspace->compute(eflag,vflag); + if (force->newton) comm->reverse_comm(); + + for (int i = 0; i < num_induced_charges; i++) buffer[i] = 0; + + for (int i = 0; i < nlocal; i++) { + if (induced_charge_idx[i] < 0) continue; + int idx = induced_charge_idx[i]; + if (ed[i] == 0) { + buffer[idx] = 0; + continue; + } + double Ex = efield_pair[i][0]; + double Ey = efield_pair[i][1]; + double Ez = efield_pair[i][2]; + if (kspaceflag) { + Ex += efield_kspace[i][0]; + Ey += efield_kspace[i][1]; + Ez += efield_kspace[i][2]; + } + double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / epsilon[i]; + double sigma_f = q_real[i] / area[i]; + buffer[idx] = (1 - em[i]) * sigma_f - epsilon0 * ed[i] * dot / (4*MY_PI); + } + + MPI_Allreduce(buffer,rhs,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + + // compute the initial residual r before iteration + // while it seems that assigning induced charges to the last values + // could improve convergence, it's not necessarily the cases + // where the system is evolving or diffusive + // to be defensive here, reset induced charges to zeros + // and initial residual r equal to rhs + + for (int i = 0; i < num_induced_charges; i++) { + induced_charges[i] = 0; + r[i] = rhs[i]; + } + + // get the norm of the right hand side vector + + normb = sqrt(vec_dot(rhs, rhs, num_induced_charges)); + if (normb < tol_abs) return; + + // use the GMRES solver to solve for the induced charges + + gmres_solve(induced_charges, r); + + // set the particle charges in the group to be the induced charges + // restore the charges of the real particles (that are not in the group) + + for (int i = 0; i < nlocal; i++) { + if (induced_charge_idx[i] >= 0) { + int idx = induced_charge_idx[i]; + q[i] = induced_charges[idx]*area[i] + q_real[i]; + } else { + q[i] = q_backup[i]; + } + } + + comm->forward_comm_fix(this); + + if (first) first = 0; + +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) +{ + int i,j,k,k_copy,n,itr; + double av,htmp,mu,rho_tol; + double delta = 1.0e-03; + + n = mat_dim; + + // compute the relative tolerance + // rho = norm(r) + rho = sqrt( vec_dot(r, r, n) ); + rho_tol = rho * tol_rel; + + // the outer loop to itr_max + // let the compiler optimize the 1d loops + + for (itr = 1; itr <= itr_max; itr++) { + + // the first vector v (i.e. v[0]) is the updated residual normalized + + for (i = 0; i < n; i++) + v[i+0*n] = r[i] / rho; + + g[0] = rho; + for (i = 1; i <= mr; i++) g[i] = 0.0; + + // fill up h with zero + + memset(h, 0, (mr+1)*mr*sizeof(double)); + + // the inner loop k = 1..(n-1) + // build up the k-th Krylov space, + // actually build the Q_k matrix of size n by k, whose the columns are k vectors v(1)...v(k) + // remember that v[0] is computed from the updated residual as above + + for (k = 1; k <= mr; k++) { + k_copy = k; + + // compute v(k) <- a * v(k-1) + // here is the tricky part: v(k-1) plays a role as "charges" + // matvec(a, v+(k-1)*n, v+k*n, n); + + apply_operator(v+(k-1)*n, v+k*n, n); + + // compute the norm of the vector v(k) + + av = sqrt(vec_dot(v+k*n, v+k*n, n)); + + // Arnoldi iteration to find v's + // orthogonalize the k vectors v(1) . . . v(k) + + for (j = 1; j <= k; j++) { + h[(j-1)+(k-1)*(mr+1)] = vec_dot(v+k*n, v+(j-1)*n, n); + for (i = 0; i < n; i++) + v[i+k*n] = v[i+k*n] - h[(j-1)+(k-1)*(mr+1)] * v[i+(j-1)*n]; + } + + // compute the norm of the newly created vector v(k) + + h[k+(k-1)*(mr+1)] = sqrt(vec_dot(v+k*n, v+k*n, n)); + + // if the norm is close to zero, repeat the above orthogonalization + + if ((av + delta * h[k+(k-1)*(mr+1)]) == av) { + for (j = 1; j <= k; j++) { + htmp = vec_dot(v+k*n, v+(j-1)*n, n); + h[(j-1)+(k-1)*(mr+1)] = h[(j-1)+(k-1)*(mr+1)] + htmp; + for (i = 0; i < n; i++) + v[i+k*n] = v[i+k*n] - htmp * v[i+(j-1)*n]; + } + h[k+(k-1)*(mr+1)] = sqrt( vec_dot(v+k*n, v+k*n, n) ); + } + + // if the norm of v(k) is nonzero, normalize v(k) + + if (h[k+(k-1)*(mr+1)] != 0.0) { + for (i = 0; i < n; i++) { + v[i+k*n] = v[i+k*n] / h[k+(k-1)*(mr+1)]; + } + } + + // if k is not the first iteration, + // find the vector y that minimizes the norm of the residual using the least square method + + if (k > 1) { + + // update y(i-1) <- h(k-1, i-1) for i = 1...(k+1) + + for (i = 1; i <= k + 1; i++) + y[i-1] = h[(i-1)+(k-1)*(mr+1)]; + + // apply the Given rotation to y[j-1] and y[j] for j = 1..(k-1) + + for (j = 1; j <= k - 1; j++) + mult_givens(c[j-1], s[j-1], j-1, y); + + // update h(k-1, i-1) <- y(i-1) for i = 1..(k_1) + + for (i = 1; i <= k + 1; i++) + h[i-1+(k-1)*(mr+1)] = y[i-1]; + } + + // compute cosine and sine terms of the Given rotations + + mu = sqrt(h[(k-1)+(k-1)*(mr+1)]*h[(k-1)+(k-1)*(mr+1)] + + h[ k +(k-1)*(mr+1)]*h[ k +(k-1)*(mr+1)]); + c[k-1] = h[(k-1)+(k-1)*(mr+1)] / mu; + s[k-1] = -h[ k +(k-1)*(mr+1)] / mu; + + // update h(k-1,k-1) and set h(k-1,k) to zero + + h[(k-1)+(k-1)*(mr+1)] = c[k-1] * h[(k-1)+(k-1)*(mr+1)] + - s[k-1] * h[ k +(k-1)*(mr+1)]; + h[k +(k-1)*(mr+1)] = 0; + + // apply the Givens rotation to g[k-1] and g[k] + + mult_givens(c[k-1], s[k-1], k-1, g); + + // compute the norm of the residual + + rho = fabs(g[k]); + + #ifdef _POLARIZE_DEBUG + if (comm->me == 0) { + char message[256]; + sprintf(message, "itr = %d: k = %d, norm(r) = %g norm(b) = %g", itr, k, rho, normb); + error->warning(FLERR, message); + } + #endif + + if (rho <= rho_tol && rho <= tol_abs) + break; + } + + k = k_copy - 1; + + // compute the estimate y from h + + y[k] = g[k] / h[k + k*(mr+1)]; + for (i = k; i >= 1; i--) { + y[i-1] = g[i-1]; + for (j = i + 1; j <= k + 1; j++) + y[i-1] = y[i-1] - h[(i-1)+(j-1)*(mr+1)] * y[j-1]; + y[i-1] = y[i-1] / h[(i-1)+(i-1)*(mr+1)]; + } + + // update x at the current iteration: x <- Q(n by k) * y (k by 1) + + for (i = 1; i <= n; i++) { + for (j = 1; j <= k + 1; j++) + x[i-1] = x[i-1] + v[(i-1)+(j-1)*n] * y[j-1]; + } + + // update the residual with the updated induced charges (x) + + update_residual(x, r, n); + + // rho = norm(r) + + rho = sqrt( vec_dot(r, r, n) ); + + #ifdef _POLARIZE_DEBUG + if (comm->me == 0) { + char message[256]; + sprintf(message, "itr = %d: norm(r) = %g norm(b) = %g", itr, rho, normb); + error->warning(FLERR, message); + } + #endif + + // Barros et al. suggested the condition: norm(r) < EPSILON norm(b) + + if (rho < tol_rel * normb) break; + + // general GMRES convergence criteria + + if (rho <= rho_tol && rho <= tol_abs) break; + } + + iterations = itr; +} + +/* ---------------------------------------------------------------------- + compute the result of operator A on a given vector w + matvec(A, v(k-1), v(k), n); +------------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::apply_operator(double* w, double* Aw, int n) +{ + int i; + double *q = atom->q; + double **norm = avec->mu; + double *area = avec->area; + double *ed = avec->ed; + double *em = avec->em; + double *epsilon = avec->epsilon; + int *mask = atom->mask; + int nlocal = atom->nlocal; + double epsilon0 = force->dielectric; + int eflag = 0; + int vflag = 0; + + // set the induced charges to be w + // the real charges are set to zero: Aw only involves sigma_b (not sigma_f) + // need not to revert the induced charges + // because update_residual() will set the induced charges anyway + + for (i = 0; i < nlocal; i++) { + if (induced_charge_idx[i] < 0) { + q[i] = 0; + } else { + int idx = induced_charge_idx[i]; + q[i] = w[idx]*area[i]; + } + } + + comm->forward_comm_fix(this); + + // compute the electrical field due to w*area: y = A (w*area) + + force_clear(); + force->pair->compute(eflag,vflag); + if (kspaceflag) force->kspace->compute(eflag,vflag); + if (force->newton) comm->reverse_comm(); + + // now efield is the electrical field due to induced charges only + // Note that in the definition of the electrical fields in Equations (41) and (53) + // in Ref. Barros et al there is a factor 1/(4pi). + + for (i = 0; i < num_induced_charges; i++) buffer[i] = 0; + + for (i = 0; i < nlocal; i++) { + if (induced_charge_idx[i] < 0) continue; + + int idx = induced_charge_idx[i]; + double Ex = efield_pair[i][0]; + double Ey = efield_pair[i][1]; + double Ez = efield_pair[i][2]; + if (kspaceflag) { + Ex += efield_kspace[i][0]; + Ey += efield_kspace[i][1]; + Ez += efield_kspace[i][2]; + } + double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / epsilon[i]; + buffer[idx] = em[i] * w[idx] + epsilon0 * ed[i] * dot / (4*MY_PI); + } + + MPI_Allreduce(buffer,Aw,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); +} + +/* ---------------------------------------------------------------------- + need to turn the real charges back on + set the induced charges to be w + compute the new residual in r = b - Ax without directly computing A x + using Eq. (60) in Barros et al. +------------------------------------------------------------------------ */ + +void FixPolarizeBEMGMRES::update_residual(double* w, double* r, int n) +{ + int i; + double *q = atom->q; + double *q_real = avec->q_real; + double **norm = avec->mu; + double *area = avec->area; + double *ed = avec->ed; + double *em = avec->em; + double *epsilon = avec->epsilon; + int *mask = atom->mask; + int nlocal = atom->nlocal; + double epsilon0 = force->dielectric; + int eflag = 0; + int vflag = 0; + + // compute the Coulombic forces and electrical field E + // due to both ions and induced charges + // note here q[i] = the bound charges including area + free surface charges + // so that kspace solver can be used directly + + for (i = 0; i < nlocal; i++) { + if (induced_charge_idx[i] < 0) { + q[i] = q_backup[i]; + } else { + int idx = induced_charge_idx[i]; + q[i] = w[idx]*area[i] + q_real[i]; + } + } + + comm->forward_comm_fix(this); + + force_clear(); + force->pair->compute(eflag,vflag); + if (kspaceflag) force->kspace->compute(eflag,vflag); + if (force->newton) comm->reverse_comm(); + + // compute the residual according to Eq. (60) in Barros et al. + // Note: in the definition of the electrical fields in Equations (41) and (53) + // in Ref. Barros et al there is a factor 1/(4pi). + + for (i = 0; i < num_induced_charges; i++) buffer[i] = 0; + + for (i = 0; i < nlocal; i++) { + if (induced_charge_idx[i] < 0) continue; + + int idx = induced_charge_idx[i]; + if (ed[i] == 0) { + buffer[idx] = 0; + continue; + } + double Ex = efield_pair[i][0]; + double Ey = efield_pair[i][1]; + double Ez = efield_pair[i][2]; + if (kspaceflag) { + Ex += efield_kspace[i][0]; + Ey += efield_kspace[i][1]; + Ez += efield_kspace[i][2]; + } + double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / epsilon[i]; + double sigma_f = q_real[i] / area[i]; + buffer[idx] = (1 - em[i]) * sigma_f - em[i] * w[idx] - epsilon0 * ed[i] * dot / (4*MY_PI); + } + + MPI_Allreduce(buffer,r,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::force_clear() +{ + int nbytes = sizeof(double) * atom->nlocal; + if (force->newton) nbytes += sizeof(double) * atom->nghost; + + if (nbytes) { + memset(&atom->f[0][0],0,3*nbytes); + if (torqueflag) memset(&atom->torque[0][0],0,3*nbytes); + if (extraflag) atom->avec->force_clear(0,nbytes); + } +} + +/* ---------------------------------------------------------------------- */ + +double FixPolarizeBEMGMRES::vec_dot(const double* a1, const double* a2, int n) +{ + double value = 0.0; + for (int i = 0; i < n; i++) value += (a1[i] * a2[i]); + return value; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +double FixPolarizeBEMGMRES::memory_usage() +{ + double bytes = 0; + bytes += mat_dim*sizeof(double); // induced_charges + bytes += mat_dim*sizeof(double); // buffer + bytes += mat_dim*sizeof(double); // rhs + bytes += atom->nmax*sizeof(double); // induced_charge_idx + bytes += atom->nmax*sizeof(double); // q_backup + bytes += mr*sizeof(double); // c + bytes += (mr+1)*sizeof(double); // g + bytes += (mr+1)*mr*sizeof(double); // h + bytes += mat_dim*sizeof(double); // r + bytes += mr*(mr+1)*sizeof(double); // s + bytes += mat_dim*sizeof(double); // v + bytes += (mr+1)*mr*sizeof(double); // y + return bytes; +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::allocate() +{ + memory->create(c, mr, "polarize:c"); + memory->create(g, mr+1, "polarize:g"); + memory->create(h, (mr+1)*mr, "polarize:h"); + memory->create(r, mat_dim, "polarize:r"); + memory->create(s, mr, "polarize:s"); + memory->create(v, mat_dim*(mr+1), "polarize:v"); + memory->create(y, mr+1, "polarize:y"); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::deallocate() +{ + memory->destroy(c); + memory->destroy(g); + memory->destroy(h); + memory->destroy(r); + memory->destroy(s); + memory->destroy(v); + memory->destroy(y); +} + +/* ---------------------------------------------------------------------- */ + +int FixPolarizeBEMGMRES::modify_param(int narg, char **arg) +{ + int iarg = 0; + while (iarg < narg) { + if (strcmp(arg[iarg],"itr_max") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); + itr_max = force->numeric(FLERR,arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"mr") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); + mr = force->numeric(FLERR,arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"kspace") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); + if (strcmp(arg[iarg+1],"yes") == 0) kspaceflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) kspaceflag = 0; + else error->all(FLERR,"Illegal fix_modify command for fix polarize"); + iarg += 2; + } else if (strcmp(arg[iarg],"dielectrics") == 0) { + if (iarg+6 > narg) error->all(FLERR,"Illegal fix_modify command"); + double epsiloni=-1, areai=-1; + double qreali=0; + int set_charge=0; + double ediff = force->numeric(FLERR,arg[iarg+1]); + double emean = force->numeric(FLERR,arg[iarg+2]); + if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = force->numeric(FLERR,arg[iarg+3]); + if (strcmp(arg[iarg+4],"NULL") != 0) areai = force->numeric(FLERR,arg[iarg+4]); + if (strcmp(arg[iarg+5],"NULL") != 0) { + qreali = force->numeric(FLERR,arg[iarg+5]); + set_charge = 1; + } + set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, qreali); + + iarg += 6; + } else if (strcmp(arg[iarg],"rand") == 0) { + if (iarg+3 > narg) error->all(FLERR,"Illegal fix_modify command"); + ave_charge = force->numeric(FLERR,arg[iarg+1]); + seed_charge = force->numeric(FLERR,arg[iarg+2]); + randomized = 1; + iarg += 3; + } else error->all(FLERR,"Illegal fix_modify command"); + } + + return iarg; +} + +/* ---------------------------------------------------------------------- + allocate local atom-based arrays +------------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::grow_arrays(int n) +{ + if (n > nmax) nmax = n; + memory->grow(induced_charge_idx,nmax,"polarize:induced_charge_idx"); + memory->grow(q_backup,nmax,"polarize:q_backup"); +} + +/* ---------------------------------------------------------------------- + copy values within local atom-based arrays +------------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::copy_arrays(int i, int j, int delflag) +{ + induced_charge_idx[j] = induced_charge_idx[i]; +} + +/* ---------------------------------------------------------------------- + initialize one atom's array values, called when atom is created +------------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::set_arrays(int i) +{ + induced_charge_idx[i] = -1; +} + +/* ---------------------------------------------------------------------- */ + +int FixPolarizeBEMGMRES::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int m; + for (m = 0; m < n; m++) buf[m] = atom->q[list[m]]; + return n; +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::unpack_forward_comm(int n, int first, double *buf) +{ + int i, m; + for (m = 0, i = first; m < n; m++, i++) atom->q[i] = buf[m]; +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based arrays for exchange with another proc +------------------------------------------------------------------------- */ + +int FixPolarizeBEMGMRES::pack_exchange(int i, double *buf) +{ + buf[0] = ubuf(induced_charge_idx[i]).d; + return 1; +} + +/* ---------------------------------------------------------------------- + unpack values in local atom-based arrays from exchange with another proc +------------------------------------------------------------------------- */ + +int FixPolarizeBEMGMRES::unpack_exchange(int nlocal, double *buf) +{ + induced_charge_idx[nlocal] = (int) ubuf(buf[0]).i; + return 1; +} + +/* ---------------------------------------------------------------------- + return the number of iterations for convergence + and current residual +------------------------------------------------------------------------- */ + +double FixPolarizeBEMGMRES::compute_vector(int n) +{ + if (n == 0) return iterations; + else if (n == 1) return rho; +} + +/* ---------------------------------------------------------------------- + set dielectric params for the atom in the group +------------------------------------------------------------------------- */ + +void FixPolarizeBEMGMRES::set_dielectric_params(double ediff, double emean, + double epsiloni, double areai, int set_charge, double qreali) +{ + double *area = avec->area; + double *ed = avec->ed; + double *em = avec->em; + double *q_real = avec->q_real; + double *epsilon = avec->epsilon; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + ed[i] = ediff; + em[i] = emean; + if (areai > 0) area[i] = areai; + if (epsiloni > 0) epsilon[i] = epsiloni; + if (set_charge) q_real[i] = qreali; + } + } +} diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h new file mode 100644 index 0000000000..b6c9a91717 --- /dev/null +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h @@ -0,0 +1,115 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(polarize/bem/gmres,FixPolarizeBEMGMRES) + +#else + +#ifndef LMP_FIX_POLARIZE_BEM_GMRES_H +#define LMP_FIX_POLARIZE_BEM_GMRES_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixPolarizeBEMGMRES : public Fix { + public: + FixPolarizeBEMGMRES(class LAMMPS *, int, char **); + ~FixPolarizeBEMGMRES(); + virtual int setmask(); + virtual void init(); + virtual void setup(int); + virtual void pre_force(int); + int pack_forward_comm(int, int*, double*, int, int*); + void unpack_forward_comm(int, int, double*); + int pack_exchange(int, double *); + int unpack_exchange(int, double *); + virtual double compute_vector(int); + + int modify_param(int, char**); + double memory_usage(); + void grow_arrays(int); + void copy_arrays(int, int, int); + void set_arrays(int); + virtual void allocate(); + virtual void deallocate(); + + virtual void compute_induced_charges(); + void set_dielectric_params(double, double, double, double, int, double); + + class AtomVecDielectric *avec; + + protected: + int nmax; + int nevery; // to be invoked every time steps + int* tag2mat; // tag2mat[atom->tag[i]] = the index of the atoms in the induced charge arrays from atom tags + int* mat2tag; // mat2tag[idx] = the atom tag of the induced charge idx in the induced charge arrays + int* induced_charge_idx; // return the index of the atoms in the induced charge arrays + int num_induced_charges; // total number of induced charges + double* induced_charges; // values of induced charges + double* buffer; // buffer of size num_induced_charges + double* q_backup; // backup for the real charges + int allocated; + double **efield_pair; // electrical field at position of atom i due to pair contribution + double **efield_kspace; // electrical field at position of atom i due to kspace contribution + int kspaceflag; // 1 if kspace is used for the induced charge computation + int torqueflag,extraflag; + + void force_clear(); + double vec_dot(const double*, const double*, int); // dot product between two vectors of length n + + private: + int mat_dim; // matrix dimension = total number of induced charges + int mr; // number of vectors used to span the Krylov space + int iterations; // actual number of iterations + int itr_max; // maximum number of outer iterations + int randomized; // 1 if generating random induced charges, 0 otherwise + double ave_charge; // average random charge + int seed_charge; + + double *c, *g, *h, *r, *s, *v, *y; // vectors used by the solver + double* rhs; // right-hand side vector of the equation Ax = b + double tol_abs, tol_rel; // tolerance for convergence + double normb; // norm of the rhs vector b + double rho; // norm of (b - Ax) + int first; // 1 if first time invoked (initializing induced charges with zero) + + void gmres_solve(double*, double*); // GMRES workhorse + void apply_operator(double*, double*, int); // compute Ax without explicitly storing A + void update_residual(double*, double*, int); // compute (b - Ax) directly (without computing b and Ax explcitly) + + // Givens rotations + inline void mult_givens(double c, double s, int k, double* g) { + double g1 = c * g[k] - s * g[k+1]; + double g2 = s * g[k] + c * g[k+1]; + g[k] = g1; + g[k+1] = g2; + } +}; + +} + +#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. + +*/ diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp new file mode 100644 index 0000000000..d606765a78 --- /dev/null +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -0,0 +1,450 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + An iterative solver for surface induced charges computation (ICC) + using Richarson iteration + + Contributing author: Trung Nguyen (Northwestern) + References: + Tyagi, Suzen, Sega, Barbosa, Kantorovich, Holm, J. Chem. Phys. 2010, 132, 154112 + Barros, Sinkovits, Luijten, J. Chem. Phys 2014, 140, 064903 +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_polarize_bem_icc.h" +#include "atom_vec_dielectric.h" +#include "update.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "neighbor.h" +#include "force.h" +#include "group.h" +#include "kspace.h" +#include "memory.h" +#include "modify.h" +#include "math_const.h" +#include "pair_coul_cut_dielectric.h" +#include "pair_coul_long_dielectric.h" +#include "pair_lj_cut_coul_cut_dielectric.h" +#include "pair_lj_cut_coul_long_dielectric.h" +#include "pair_lj_cut_coul_msm_dielectric.h" +#include "pppm_dielectric.h" +#include "msm_dielectric.h" +#include "random_park.h" +#include "timer.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathConst; + +//#define _POLARIZE_DEBUG + +/* ---------------------------------------------------------------------- */ + +FixPolarizeBEMICC::FixPolarizeBEMICC(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (narg < 5) error->all(FLERR,"Illegal fix polarize/bem/icc command"); + + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"Fix polarize requires atom style dielectric"); + + // parse required arguments + + nevery = force->inumeric(FLERR,arg[3]); + if (nevery < 0) error->all(FLERR,"Illegal fix polarize/bem/icc command"); + double tol = force->numeric(FLERR,arg[4]); + tol_abs = tol_rel = tol; + + itr_max = 20; + omega = 0.7; + randomized = 0; + ave_charge = 0; + + efield_pair = NULL; + efield_kspace = NULL; + + comm_forward = 1; + kspaceflag = 0; + + global_freq = 1; + vector_flag = 1; + size_vector = 2; + extvector = 0; + + // set flags for arrays to clear in force_clear() + + torqueflag = extraflag = 0; + if (atom->torque_flag) torqueflag = 1; + if (atom->avec->forceclearflag) extraflag = 1; +} + +/* ---------------------------------------------------------------------- */ + +FixPolarizeBEMICC::~FixPolarizeBEMICC() +{ +} + +/* ---------------------------------------------------------------------- */ + +int FixPolarizeBEMICC::setmask() +{ + int mask = 0; + mask |= PRE_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMICC::init() +{ + int ncount = group->count(igroup); + if (comm->me == 0) { + if (screen) fprintf(screen,"BEM/ICC solver for %d induced charges\n", ncount); + if (logfile) fprintf(logfile,"BEM/ICC solver for %d induced charges\n", ncount); + } + + // initialize random induced charges with zero sum + + if (randomized) { + + int i; + double *q = atom->q; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + RanPark *random = new RanPark(lmp,seed_charge + comm->me); + for (i = 0; i < 100; i++) random->uniform(); + double sum,tmp = 0; + for (i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + q[i] = ave_charge*(random->uniform() - 0.5); + tmp += q[i]; + } + MPI_Allreduce(&tmp,&sum,1,MPI_DOUBLE,MPI_SUM,world); + sum /= (double)ncount; + + tmp = 0; + for (i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + q[i] -= sum; + tmp += q[i]; + } + MPI_Allreduce(&tmp,&sum,1,MPI_DOUBLE,MPI_SUM,world); + + delete random; + } + +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMICC::setup(int vflag) +{ + // check if the pair styles in use are compatible + + if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric") == 0) + efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/msm/dielectric") == 0) + efield_pair = ((PairLJCutCoulMSMDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric") == 0) + efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"coul/long/dielectric") == 0) + efield_pair = ((PairCoulLongDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"coul/cut/dielectric") == 0) + efield_pair = ((PairCoulCutDielectric*)force->pair)->efield; + else error->all(FLERR,"Pair style not compatible with fix polarize/bem/icc"); + + // check if kspace is used for force computation + + if (force->kspace) { + + kspaceflag = 1; + if (strcmp(force->kspace_style,"pppm/dielectric") == 0) + efield_kspace = ((PPPMDielectric*)force->kspace)->efield; + else if (strcmp(force->kspace_style,"msm/dielectric") == 0) + efield_kspace = ((MSMDielectric*)force->kspace)->efield; + else error->all(FLERR,"Kspace style not compatible with fix polarize/bem/icc"); + + } else { + + if (kspaceflag == 1) { // users specified kspace yes + error->warning(FLERR,"No Kspace style available for fix polarize/bem/icc"); + kspaceflag = 0; + } + } + + compute_induced_charges(); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMICC::pre_force(int) +{ + if (nevery == 0) return; + if (update->ntimestep % nevery) return; + + compute_induced_charges(); + + // make sure forces are reset to zero before actual forces are computed + + force_clear(); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMICC::compute_induced_charges() +{ + double *q = atom->q; + double *q_real = avec->q_real; + double **norm = avec->mu; + double *area = avec->area; + double *ed = avec->ed; + double *em = avec->em; + double *epsilon = avec->epsilon; + int *mask = atom->mask; + int nlocal = atom->nlocal; + double epsilon0 = force->dielectric; + int eflag = 1; + int vflag = 0; + int itr; + + // use Eq. (64) in Barros et al. to initialize the induced charges + // Note: area[i] is included here to ensure correct charge unit + // for direct use in force/efield compute + // for induced charges q_real stores the free surface charge + // q_real are read from the data file + // Note that the electrical fields here are due to the rescaled real charges, + // and also multiplied by epsilon[i] + // Let's choose that epsilon[i] = em[i] for the interface particles + + force_clear(); + force->pair->compute(eflag,vflag); + if (kspaceflag) force->kspace->compute(eflag,vflag); + if (force->newton) comm->reverse_comm(); + + int i10 = 0; + for (int i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + + double Ex = efield_pair[i][0]; + double Ey = efield_pair[i][1]; + double Ez = efield_pair[i][2]; + if (kspaceflag) { + Ex += efield_kspace[i][0]; + Ey += efield_kspace[i][1]; + Ez += efield_kspace[i][2]; + } + + // divide (Ex,Ey,Ez) by epsilon[i] here + double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / (2*MY_PI) / epsilon[i]; + double q_free = q_real[i]; + double q_bound = 0; + q_bound = (1.0 / em[i] - 1) * q_free - epsilon0 * (ed[i] / (2 * em[i])) * dot * area[i]; + q[i] = q_free + q_bound; + } + + comm->forward_comm_fix(this); + + // iterate + + for (itr = 0; itr < itr_max; itr++) { + + force_clear(); + force->pair->compute(eflag,vflag); + if (kspaceflag) force->kspace->compute(eflag,vflag); + if (force->newton) comm->reverse_comm(); + + double tol = 0; + for (int i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + + double q_free = q_real[i]; + double qtmp = q[i] - q_free; + double Ex = efield_pair[i][0]; + double Ey = efield_pair[i][1]; + double Ez = efield_pair[i][2]; + if (kspaceflag) { + Ex += efield_kspace[i][0]; + Ey += efield_kspace[i][1]; + Ez += efield_kspace[i][2]; + } + + // Eq. (69) in Barros et al., sigma_f[i] = q_real[i] / area[i] + // note the area[i] is included here to ensure correct charge unit + // for direct use in force/efield compute + + double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / (4*MY_PI) / epsilon[i]; + double q_bound = q[i] - q_free; + q_bound = (1 - omega) * q_bound + omega * ((1.0 / em[i] - 1) * q_free - + epsilon0 * (ed[i] / em[i]) * dot * area[i]); + q[i] = q_free + q_bound; + + // Eq. (11) in Tyagi et al., with f from Eq. (6) + // NOTE: Tyagi et al. defined the normal vector n_i pointing + // from the medium containg the ions toward the other medium, + // which makes the normal vector direction depend on the ion position + // Also, since Tyagi et al. chose epsilon_1 for the uniform dielectric constant + // of the equivalent system, there is epsilon_1 in f in Eq. (6). + // Here we are using (q/epsilon_i) for the real charges and 1.0 for the equivalent system + // hence there's no epsilon_1 in the factor f + + //double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]); + //double f = (ed[i] / (2 * em[i])) / (2*MY_PI); + //q[i] = (1 - omega) * q[i] - omega * epsilon0 * f * dot * area[i]; + + double delta = fabs(qtmp - q_bound); + double r = (fabs(qtmp) > 0) ? delta/fabs(qtmp) : 0; + if (tol < r) tol = r; + + #ifdef _POLARIZE_DEBUG + //printf("i = %d: q_bound = %f \n", i, q_bound); + #endif + } + + comm->forward_comm_fix(this); + + MPI_Allreduce(&tol,&rho,1,MPI_DOUBLE,MPI_MAX,world); + #ifdef _POLARIZE_DEBUG + printf("itr = %d: rho = %f\n", itr, rho); + #endif + if (itr > 0 && rho < tol_rel) break; + } + + iterations = itr; +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMICC::force_clear() +{ + int nbytes = sizeof(double) * atom->nlocal; + if (force->newton) nbytes += sizeof(double) * atom->nghost; + + if (nbytes) { + memset(&atom->f[0][0],0,3*nbytes); + if (torqueflag) memset(&atom->torque[0][0],0,3*nbytes); + if (extraflag) atom->avec->force_clear(0,nbytes); + } +} + +/* ---------------------------------------------------------------------- */ + +int FixPolarizeBEMICC::modify_param(int narg, char **arg) +{ + int iarg = 0; + while (iarg < narg) { + if (strcmp(arg[iarg],"itr_max") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); + itr_max = force->numeric(FLERR,arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"omega") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); + omega = force->numeric(FLERR,arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"kspace") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); + if (strcmp(arg[iarg+1],"yes") == 0) kspaceflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) kspaceflag = 0; + else error->all(FLERR,"Illegal fix_modify command for fix polarize"); + iarg += 2; + } else if (strcmp(arg[iarg],"dielectrics") == 0) { + if (iarg+6 > narg) error->all(FLERR,"Illegal fix_modify command"); + double epsiloni=-1, areai=-1; + double qreali=0; + int set_charge=0; + double ediff = force->numeric(FLERR,arg[iarg+1]); + double emean = force->numeric(FLERR,arg[iarg+2]); + if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = force->numeric(FLERR,arg[iarg+3]); + if (strcmp(arg[iarg+4],"NULL") != 0) areai = force->numeric(FLERR,arg[iarg+4]); + if (strcmp(arg[iarg+5],"NULL") != 0) { + qreali = force->numeric(FLERR,arg[iarg+5]); + set_charge = 1; + } + set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, qreali); + + iarg += 6; + } else if (strcmp(arg[iarg],"rand") == 0) { + if (iarg+3 > narg) error->all(FLERR,"Illegal fix_modify command"); + ave_charge = force->numeric(FLERR,arg[iarg+1]); + seed_charge = force->numeric(FLERR,arg[iarg+2]); + randomized = 1; + iarg += 3; + } else error->all(FLERR,"Illegal fix_modify command"); + } + + return iarg; +} + +/* ---------------------------------------------------------------------- */ + +int FixPolarizeBEMICC::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int m; + for (m = 0; m < n; m++) buf[m] = atom->q[list[m]]; + return n; +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeBEMICC::unpack_forward_comm(int n, int first, double *buf) +{ + int i, m; + for (m = 0, i = first; m < n; m++, i++) atom->q[i] = buf[m]; +} + +/* ---------------------------------------------------------------------- + set dielectric params for the atom in the group +------------------------------------------------------------------------- */ + +void FixPolarizeBEMICC::set_dielectric_params(double ediff, double emean, + double epsiloni, double areai, int set_charge, double qreali) +{ + double *area = avec->area; + double *ed = avec->ed; + double *em = avec->em; + double *q_real = avec->q_real; + double *epsilon = avec->epsilon; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + ed[i] = ediff; + em[i] = emean; + if (areai > 0) area[i] = areai; + if (epsiloni > 0) epsilon[i] = epsiloni; + if (set_charge) q_real[i] = qreali; + } + } +} + +/* ---------------------------------------------------------------------- + return the actual number of iterations + and current relative error +------------------------------------------------------------------------- */ + +double FixPolarizeBEMICC::compute_vector(int n) +{ + if (n == 0) return iterations; + else if (n == 1) return rho; +} \ No newline at end of file diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.h b/src/USER-DIELECTRIC/fix_polarize_bem_icc.h new file mode 100644 index 0000000000..46e937a561 --- /dev/null +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.h @@ -0,0 +1,79 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(polarize/bem/icc,FixPolarizeBEMICC) + +#else + +#ifndef LMP_FIX_POLARIZE_BEM_ICC_H +#define LMP_FIX_POLARIZE_BEM_ICC_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixPolarizeBEMICC : public Fix { + public: + FixPolarizeBEMICC(class LAMMPS *, int, char **); + ~FixPolarizeBEMICC(); + virtual int setmask(); + virtual void init(); + virtual void setup(int); + virtual void pre_force(int); + virtual double compute_vector(int); + int modify_param(int, char**); + int pack_forward_comm(int, int*, double*, int, int*); + void unpack_forward_comm(int, int, double*); + + virtual void compute_induced_charges(); + void set_dielectric_params(double, double, double, double, int, double); + + class AtomVecDielectric *avec; + + protected: + int nevery; // to be invoked every time steps + double **efield_pair; // electrical field at position of atom i due to pair contribution + double **efield_kspace; // electrical field at position of atom i due to kspace contribution + int kspaceflag; // 1 if kspace is used for the induced charge computation + int torqueflag,extraflag; + + void force_clear(); + + private: + int iterations; // actual number of iterations + int itr_max; // maximum number of outer iterations + double tol_abs, tol_rel; // tolerance for convergence + double rho; // current error + double omega; // iterative weight + int randomized; // 1 if generating random induced charges, 0 otherwise + double ave_charge; // average random charge + int seed_charge; + +}; + +} + +#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. + +*/ diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp new file mode 100644 index 0000000000..e50f239e07 --- /dev/null +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -0,0 +1,1172 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Solve for induced charges on fixed sharp interfaces via optimizing the functional + developed by Jadhao et al. with respect to the induced charges themselves. + The linear equations to be solved for w are: + (Rww + Rww^T) w = q Rwq + At the beginning of the run, (Rww + Rww^T)^(-1) is computed; + at every time step, the vector (q Rwq) is computed and w is computed via + w = [Rww + Rww^T)^(-1)] (q Rwq) + NOTE: Oct 7, 2019: switch from matrix inversion to a conjugate gradient solver + + Contributing author: Trung Nguyen (Northwestern) + based on the full-matrix implementation by Honghao Li (Northwestern University) + Reference: Jadhao, Solis, Olvera de la Cruz, J. Chem. Phys. 138, 054119, 2013 +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_polarize_functional.h" +#include "atom_vec_dielectric.h" +#include "update.h" +#include "atom.h" +#include "comm.h" +#include "compute.h" +#include "domain.h" +#include "neighbor.h" +#include "force.h" +#include "group.h" +#include "pair.h" +#include "pair_coul_cut_dielectric.h" +#include "pair_coul_long_dielectric.h" +#include "pair_lj_cut_coul_cut_dielectric.h" +#include "pair_lj_cut_coul_long_dielectric.h" +#include "pair_lj_cut_coul_msm_dielectric.h" +#include "pppm_dielectric.h" +#include "msm_dielectric.h" +#include "kspace.h" +#include "memory.h" +#include "math_const.h" +#include "math_extra.h" +#include "modify.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "random_park.h" +#include "timer.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathExtra; +using namespace MathConst; + +enum {REAL2SCALED=0,SCALED2REAL=1}; + +#define EPSILON 1e-6 +//#define _POLARIZE_DEBUG + +/* ---------------------------------------------------------------------- */ + +FixPolarizeFunctional::FixPolarizeFunctional(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Illegal fix polarize/functional command"); + + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"Fix polarize/functional requires atom style dielectric"); + + comm_forward = 1; + nmax = 0; + allocated = 0; + + induced_charge_idx = NULL; + induced_charges = NULL; + tag2mat = NULL; + mat2tag = NULL; + tag2mat_ions = NULL; + mat2tag_ions = NULL; + ion_idx = NULL; + + rhs1 = NULL; + rhs2 = NULL; + buffer1 = NULL; + buffer2 = NULL; + + // set flags for arrays to clear in force_clear() + + torqueflag = extraflag = 0; + if (atom->torque_flag) torqueflag = 1; + if (atom->avec->forceclearflag) extraflag = 1; + + Rww = NULL; + inverse_matrix = NULL; + G1ww = NULL; + G2ww = NULL; + G3ww = NULL; + ndotGww = NULL; + + qiRqwVector = NULL; + G1qw_real = NULL; + sum2G2wq = NULL; + + sum1G2qw = NULL; + sum1G1qw_epsilon = NULL; + sum2ndotGwq_epsilon = NULL; + + efield_pair = NULL; + efield_kspace = NULL; + + includingG3ww = 1; + + cg_r = cg_p = cg_Ap = NULL; + cg_A = NULL; + + grow_arrays(atom->nmax); + atom->add_callback(0); // to ensure to work with atom->sort() +} + +/* ---------------------------------------------------------------------- */ + +FixPolarizeFunctional::~FixPolarizeFunctional() +{ + memory->destroy(mat2tag); + memory->destroy(tag2mat); + memory->destroy(tag2mat_ions); + memory->destroy(mat2tag_ions); + memory->destroy(ion_idx); + memory->destroy(induced_charge_idx); + memory->destroy(induced_charges); + memory->destroy(rhs1); + memory->destroy(rhs2); + memory->destroy(buffer1); + memory->destroy(buffer2); + + if (allocated) deallocate(); + atom->delete_callback(id,0); +} + +/* ---------------------------------------------------------------------- */ + +int FixPolarizeFunctional::setmask() +{ + int mask = 0; + mask |= PRE_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::init() +{ + // mapping induced charge matrix/vector to atom tags and vice versa + + int i,maxtag; + double *q = atom->q; + int *mask = atom->mask; + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + tagint max_tag; + tagint itmp; + int *ncount = NULL; + + // induced charge arrays setup + + max_tag = -1; + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) max_tag = MAX(max_tag,tag[i]); + + MPI_Allreduce(&max_tag,&itmp,1,MPI_LMP_TAGINT,MPI_MAX,world); + maxtag = (int) itmp; + + memory->create(ncount,maxtag+1,"polarize:ncount"); + for (i = 0; i <= maxtag; i++) ncount[i] = 0; + + for (i = 0; i < nlocal; i++) + if (mask[i] & groupbit) ncount[tag[i]]++; + + memory->create(tag2mat,maxtag+1,"polarize:tag2mat"); + MPI_Allreduce(ncount,tag2mat,maxtag+1,MPI_INT,MPI_SUM,world); + + num_induced_charges = 0; + for (i = 0; i <= maxtag; i++) + if (tag2mat[i]) tag2mat[i] = num_induced_charges++; + else tag2mat[i] = -1; + + memory->create(mat2tag,num_induced_charges,"polarize:mat2tag"); + + num_induced_charges = 0; + for (i = 0; i <= maxtag; i++) + if (tag2mat[i] >= 0) mat2tag[num_induced_charges++] = i; + + for (i = 0; i < nlocal; i++) { + induced_charge_idx[i] = -1; + if (mask[i] & groupbit) induced_charge_idx[i] = tag2mat[tag[i]]; + } + + memory->destroy(ncount); + + // ion arrays setup + + max_tag = -1; + for (i = 0; i < nlocal; i++) + if (!(mask[i] & groupbit)) max_tag = MAX(max_tag,tag[i]); + + MPI_Allreduce(&max_tag,&itmp,1,MPI_LMP_TAGINT,MPI_MAX,world); + maxtag = (int) itmp; + + memory->create(ncount,maxtag+1,"polarize:ncount"); + for (i = 0; i <= maxtag; i++) ncount[i] = 0; + + for (i = 0; i < nlocal; i++) + if (!(mask[i] & groupbit)) ncount[tag[i]]++; + + memory->create(tag2mat_ions,maxtag+1,"polarize:tag2mat_ions"); + MPI_Allreduce(ncount,tag2mat_ions,maxtag+1,MPI_INT,MPI_SUM,world); + + num_ions = 0; + for (i = 0; i <= maxtag; i++) + if (tag2mat_ions[i]) tag2mat_ions[i] = num_ions++; + else tag2mat_ions[i] = -1; + + memory->create(mat2tag_ions,num_ions,"polarize:mat2tag_ions"); + memory->create(rhs1,num_induced_charges,"polarize:rhs1"); + memory->create(rhs2,num_induced_charges,"polarize:rhs2"); + int buffer_size = (num_induced_charges > num_ions) ? num_induced_charges : num_ions; + memory->create(buffer1,buffer_size,num_induced_charges,"polarize:buffer1"); + memory->create(buffer2,num_induced_charges,num_induced_charges,"polarize:buffer2"); + memory->create(induced_charges,num_induced_charges,"polarize:induced_charges"); + + + + num_ions = 0; + for (i = 0; i <= maxtag; i++) + if (tag2mat_ions[i] >= 0) mat2tag_ions[num_ions++] = i; + + for (i = 0; i < nlocal; i++) { + ion_idx[i] = -1; + if (!(mask[i] & groupbit)) ion_idx[i] = tag2mat_ions[tag[i]]; + } + + memory->destroy(ncount); + + if (allocated == 0) { + nmax = atom->nmax; + allocate(); + allocated = 1; + } + + // need a full neighbor list w/ Newton off and ghost neighbors + // built whenever re-neighboring occurs + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->fix = 1; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->occasional = 0; + + if (force->kspace) g_ewald = force->kspace->g_ewald; + else g_ewald = 0.01; + + if (comm->me == 0) { + if (screen) fprintf(screen,"Direct solver using the variational approach " + "for %d induced charges\n", num_induced_charges); + if (logfile) fprintf(logfile,"Direct solver using the variational approach " + "for %d induced charges\n", num_induced_charges); + } +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::init_list(int id, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::setup(int vflag) +{ + // check if the pair styles in use are compatible + + if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric") == 0) + efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/msm/dielectric") == 0) + efield_pair = ((PairLJCutCoulMSMDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric") == 0) + efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"coul/long/dielectric") == 0) + efield_pair = ((PairCoulLongDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"coul/cut/dielectric") == 0) + efield_pair = ((PairCoulCutDielectric*)force->pair)->efield; + else error->all(FLERR,"Pair style not compatible with fix polarize/functional"); + + if (force->kspace) { + + kspaceflag = 1; + if (strcmp(force->kspace_style,"pppm/dielectric") == 0) + efield_kspace = ((PPPMDielectric*)force->kspace)->efield; + else if (strcmp(force->kspace_style,"msm/dielectric") == 0) + efield_kspace = ((MSMDielectric*)force->kspace)->efield; + else error->all(FLERR,"Kspace style not compatible with fix polarize/functional"); + + } else { + + if (kspaceflag == 1) { // users specified kspace yes + error->warning(FLERR,"No Kspace style available for fix polarize/functional"); + kspaceflag = 0; + } + } + + update_induced_charges(); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::setup_pre_force(int vflag) +{ + // calculate Rww before the run (assuming that the interface is fixed for now) + // otherwise this should be done every time step in pre_force() + + calculate_Rww_cutoff(); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::pre_force(int) +{ + // solve for the induced charges + + update_induced_charges(); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::update_induced_charges() +{ + // convert all ions from scaled charges (q) to real q by multiplying with epsilon + + charge_rescaled(SCALED2REAL); + + // compute the right hand side vector qiRwVector + + calculate_qiRqw_cutoff(); + + // conjugate gradient solver for w from Rww * w = -qRqw + + for (int i = 0; i < num_induced_charges; i++) + for (int j = 0; j < num_induced_charges; j++) + cg_A[i][j] = Rww[i][j] + Rww[j][i]; + + for (int i = 0; i < num_induced_charges; i++) induced_charges[i] = 0; + + cg_solver(cg_A, qiRqwVector, induced_charges, num_induced_charges); + + // assign charges to the particles in the group + + double *q = atom->q; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (induced_charge_idx[i] < 0) continue; + int idx = induced_charge_idx[i]; + q[i] = -induced_charges[idx] / (4*MY_PI); + } + + // revert to scaled charges to calculate forces + + charge_rescaled(REAL2SCALED); +} + +/* ---------------------------------------------------------------------- + scaled2real = 1: convert ion charges from scaled values (divided by epsilon) to real values + = 0: real values to scaled values +------------------------------------------------------------------------- */ + +void FixPolarizeFunctional::charge_rescaled(int scaled2real) +{ + double* q = atom->q; + double* q_real = avec->q_real; + double* epsilon = avec->epsilon; + int nlocal = atom->nlocal; + + if (scaled2real) { + for (int i = 0; i < nlocal; i++) + if (induced_charge_idx[i] < 0) q[i] = q_real[i]; + } else { + for (int i = 0; i < nlocal; i++) + if (induced_charge_idx[i] < 0) q[i] = q_real[i] / epsilon[i]; + } + + comm->forward_comm_fix(this); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::allocate() +{ + // initialize all data + // interface terms, all matrix of M*M + memory->create(inverse_matrix, num_induced_charges, num_induced_charges, "fix:inverse_matrix"); + memory->create(Rww, num_induced_charges, num_induced_charges, "fix:Rww"); + memory->create(G1ww, num_induced_charges, num_induced_charges, "fix:G1ww"); + memory->create(ndotGww, num_induced_charges, num_induced_charges, "fix:ndotGww"); + memory->create(G2ww, num_induced_charges, num_induced_charges, "fix:G2ww"); + memory->create(G3ww, num_induced_charges, num_induced_charges, "fix:G3ww"); + + // each step, qw, qq terms, temp data + + memory->create(qiRqwVector, num_induced_charges, "fix:qiRqwVector"); + memory->create(sum2G2wq, num_induced_charges, "fix:sum2G2wq"); + memory->create(G1qw_real, num_ions, num_induced_charges, "fix:G1qw_real"); + + // arrays of M + memory->create(sum1G2qw, num_induced_charges, "fix:sum1G2qw"); + memory->create(sum1G1qw_epsilon, num_induced_charges, "fix:sum1G1qw_epsilon"); + memory->create(sum2ndotGwq_epsilon, num_induced_charges, "fix:sum2ndotGwq_epsilon"); + + memory->create(cg_r, num_induced_charges, "polarize:cg_r"); + memory->create(cg_p, num_induced_charges, "polarize:cg_p"); + memory->create(cg_Ap, num_induced_charges, "polarize:cg_Ap"); + memory->create(cg_A, num_induced_charges, num_induced_charges, "polarize:cg_A"); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::deallocate() +{ + memory->destroy(inverse_matrix); + memory->destroy(Rww); + memory->destroy(G1ww); + memory->destroy(G2ww); + memory->destroy(G3ww); + memory->destroy(ndotGww); + + memory->destroy(qiRqwVector); + memory->destroy(sum2G2wq); + memory->destroy(G1qw_real); + + memory->destroy(sum1G2qw); + memory->destroy(sum1G1qw_epsilon); + memory->destroy(sum2ndotGwq_epsilon); + + memory->destroy(cg_r); + memory->destroy(cg_p); + memory->destroy(cg_Ap); + memory->destroy(cg_A); +} + +/* ---------------------------------------------------------------------- */ + +int FixPolarizeFunctional::modify_param(int narg, char **arg) +{ + int iarg = 0; + while (iarg < narg) { + if (strcmp(arg[iarg],"kspace") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); + if (strcmp(arg[iarg+1],"yes") == 0) kspaceflag = 1; + else if (strcmp(arg[iarg+1],"no") == 0) kspaceflag = 0; + else error->all(FLERR,"Illegal fix_modify command for fix polarize/functional"); + iarg += 2; + } else if (strcmp(arg[iarg],"dielectrics") == 0) { + if (iarg+6 > narg) error->all(FLERR,"Illegal fix_modify command"); + double epsiloni=-1, areai=-1; + double qreali=0; + int set_charge=0; + double ediff = force->numeric(FLERR,arg[iarg+1]); + double emean = force->numeric(FLERR,arg[iarg+2]); + if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = force->numeric(FLERR,arg[iarg+3]); + if (strcmp(arg[iarg+4],"NULL") != 0) areai = force->numeric(FLERR,arg[iarg+4]); + if (strcmp(arg[iarg+5],"NULL") != 0) { + qreali = force->numeric(FLERR,arg[iarg+5]); + set_charge = 1; + } + set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, qreali); + + iarg += 6; + } else error->all(FLERR,"Illegal fix_modify command"); + } + + return iarg; +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based arrays for exchange with another proc +------------------------------------------------------------------------- */ + +int FixPolarizeFunctional::pack_exchange(int i, double *buf) +{ + buf[0] = ubuf(induced_charge_idx[i]).d; + buf[1] = ubuf(ion_idx[i]).d; + return 2; +} + +/* ---------------------------------------------------------------------- + unpack values in local atom-based arrays from exchange with another proc +------------------------------------------------------------------------- */ + +int FixPolarizeFunctional::unpack_exchange(int nlocal, double *buf) +{ + induced_charge_idx[nlocal] = (int) ubuf(buf[0]).i; + ion_idx[nlocal] = (int) ubuf(buf[1]).i; + return 2; +} + +/* ---------------------------------------------------------------------- */ + +int FixPolarizeFunctional::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int m; + for (m = 0; m < n; m++) buf[m] = atom->q[list[m]]; + return n; +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::unpack_forward_comm(int n, int first, double *buf) +{ + int i, m; + for (m = 0, i = first; m < n; m++, i++) atom->q[i] = buf[m]; +} + +/* ---------------------------------------------------------------------- + allocate local atom-based arrays +------------------------------------------------------------------------- */ + +void FixPolarizeFunctional::grow_arrays(int n) +{ + if (n > nmax) nmax = n; + memory->grow(induced_charge_idx,nmax,"fix:induced_charge_idx"); + memory->grow(ion_idx,nmax,"fix:ion_idx"); +} + +/* ---------------------------------------------------------------------- + copy values within local atom-based arrays +------------------------------------------------------------------------- */ + +void FixPolarizeFunctional::copy_arrays(int i, int j, int delflag) +{ + induced_charge_idx[j] = induced_charge_idx[i]; + ion_idx[j] = ion_idx[i]; +} + +/* ---------------------------------------------------------------------- + initialize one atom's array values, called when atom is created +------------------------------------------------------------------------- */ + +void FixPolarizeFunctional::set_arrays(int i) +{ + induced_charge_idx[i] = -1; + ion_idx[i] = 0; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +double FixPolarizeFunctional::memory_usage() +{ + double bytes = 0; + bytes += num_induced_charges*num_induced_charges*sizeof(double); // inverse_matrix + bytes += num_induced_charges*num_induced_charges*sizeof(double); // Rww + bytes += num_induced_charges*num_induced_charges*sizeof(double); // G1ww + bytes += num_induced_charges*num_induced_charges*sizeof(double); // ndotGww + bytes += num_induced_charges*num_induced_charges*sizeof(double); // G2ww + bytes += num_induced_charges*num_induced_charges*sizeof(double); // G3ww + bytes += num_induced_charges*sizeof(double); // qiRqwVector + bytes += num_induced_charges*sizeof(double); // sum2G2wq + bytes += num_induced_charges*sizeof(double); // sum1G2qw + bytes += num_induced_charges*sizeof(double); // sum1G1qw_epsilon + bytes += num_induced_charges*sizeof(double); // sum2ndotGwq_epsilon + bytes += num_ions*num_induced_charges*sizeof(double); // G1qw_real + bytes += nmax*sizeof(int); // induced_charge_idx + bytes += nmax*sizeof(int); // ion_idx + bytes += num_induced_charges*sizeof(double); // induced_charges + return bytes; +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::calculate_Rww_cutoff() +{ + int *mask = atom->mask; + int *type = atom->type; + tagint* tag = atom->tag; + int nlocal = atom->nlocal; + double **x = atom->x; + double *area = avec->area; + double *curvature = avec->curvature; + double **norm = avec->mu; + double *ed = avec->ed; + double *em = avec->em; + + // invoke full neighbor list + + int inum,jnum,*ilist,*jlist,*numneigh,**firstneigh; + inum = list->inum; // number of entries in the neighbor list + ilist = list->ilist; // ilist[ii] gives the atom index of the entry ii in the list + numneigh = list->numneigh; // numneigh[i] gives the number of neighbors of local atom i + firstneigh = list->firstneigh; // firstneigh[i] gives the pointer to the neighbors of i + + // calculate G1ww, gradG1ww, ndotG1ww + // fill up buffer1 with local G1ww and buffer2 with local ndotGww + // seperate into two loops to let the compiler optimize / or later vectorization + + for (int i = 0; i < num_induced_charges; i++) + for (int j = 0; j < num_induced_charges; j++) buffer1[i][j] = 0; + + for (int i = 0; i < num_induced_charges; i++) + for (int j = 0; j < num_induced_charges; j++) buffer2[i][j] = 0; + + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + if (mask[i] & groupbit) { + // interface particles + int mi = induced_charge_idx[i]; + double xtmp = x[i][0]; + double ytmp = x[i][1]; + double ztmp = x[i][2]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (int kk = 0; kk < jnum; kk++) { + int k = jlist[kk] & NEIGHMASK; + if (mask[k] & groupbit) { + // interface particles: k can be ghost atoms + double delx = xtmp - x[k][0]; + double dely = ytmp - x[k][1]; + double delz = ztmp - x[k][2]; + domain->minimum_image(delx,dely,delz); + int mk = tag2mat[tag[k]]; + + //G1ww[mi][mk] = calculate_greens_ewald(delx, dely, delz); + buffer1[mi][mk] = calculate_greens_ewald(delx, dely, delz); + // gradG1ww is vector, directly change it in the function + double gradG1ww[3]; + //calculate_grad_greens_ewald(gradG1ww[mi][mk], delx, dely, delz); + calculate_grad_greens_ewald(gradG1ww, delx, dely, delz); + // use mu to store the normal vector of interface vertex + //ndotGww[mi][mk] = MathExtra::dot3(norm[i], gradG1ww[mi][mk]) / (4*MY_PI); + buffer2[mi][mk] = MathExtra::dot3(norm[i], gradG1ww) / (4*MY_PI); + } + } + + // special treatment for the diagonal terms, even though in the above loop there is mk == mi + //G1ww[mi][mi] = calculate_greens_ewald_self_vertex(area[i]); + buffer1[mi][mi] = calculate_greens_ewald_self_vertex(area[i]); + //ndotGww[mi][mi] = calculate_ndotgreens_ewald_self_vertex(area[i], curvature[i]) / (4*MY_PI); + buffer2[mi][mi] = calculate_ndotgreens_ewald_self_vertex(area[i], curvature[i]) / (4*MY_PI); + } + } + + MPI_Allreduce(buffer1[0],G1ww[0],num_induced_charges*num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(buffer2[0],ndotGww[0],num_induced_charges*num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + + // calculate G2ww + // fill up buffer1 with local G2ww + + for (int i = 0; i < num_induced_charges; i++) + for (int j = 0; j < num_induced_charges; j++) buffer1[i][j] = 0; + + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + if (mask[i] & groupbit) { + // interface particles + int mi = induced_charge_idx[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (int kk = 0; kk < jnum; kk++) { + int k = jlist[kk] & NEIGHMASK; + + if (mask[k] & groupbit) { + // interface particles: k can be ghost atoms + int mk = tag2mat[tag[k]]; + double temp = 0; + for (int ll = 0; ll < jnum; ll++) { + int l = jlist[ll] & NEIGHMASK; + if (mask[l] & groupbit) { + // interface particles: l can be ghost atoms + int ml = tag2mat[tag[l]]; + temp += G1ww[mi][ml] * ndotGww[ml][mk] * area[l] * ed[l]; + } + } + //G2ww[mi][mk] = temp; + buffer1[mi][mk] = temp; + } + } + + double temp = 0; + for (int kk = 0; kk < jnum; kk++) { + int k = jlist[kk] & NEIGHMASK; + if (mask[k] & groupbit) { + // interface particles: k can be ghost atoms + int mk = tag2mat[tag[k]]; + temp += G1ww[mi][mk] * ndotGww[mk][mi] * area[k] * ed[k]; + } + } + //G2ww[mi][mi] = temp; + buffer1[mi][mi] = temp; + } + } + + MPI_Allreduce(buffer1[0],G2ww[0],num_induced_charges*num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + + // calculate G3ww and Rww + // G3ww is implemented as in _exact(), but can be optionally excluded due to its minor contribution + // fill up buffer1 with local G3ww + + for (int i = 0; i < num_induced_charges; i++) + for (int j = 0; j < num_induced_charges; j++) buffer1[i][j] = 0; + + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + if (mask[i] & groupbit) { + // interface particles + int mi = induced_charge_idx[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (int kk = 0; kk < jnum; kk++) { + int k = jlist[kk] & NEIGHMASK; + + if (mask[k] & groupbit) { + // interface particles: k can be ghost atoms + int mk = tag2mat[tag[k]]; + + double a1 = em[i] * (em[k] - 1.0); + double a2 = 1.0 - em[i] - em[k]; + // The first term (w/ G1ww) contributes the most to Rww + // the second term (w/ G2ww) includes certain correction + //Rww[mi][mk] = a1 * G1ww[mi][mk] + a2 * G2ww[mi][mk]; + buffer1[mi][mk] = a1 * G1ww[mi][mk] + a2 * G2ww[mi][mk]; + + if (includingG3ww) { + double temp = 0; + for (int ll = 0; ll < jnum; ll++) { + int l = jlist[ll] & NEIGHMASK; + if (mask[l] & groupbit) { + // interface particles: l can be ghost atoms + int ml = tag2mat[tag[l]]; + temp += (ndotGww[ml][mi]) * G2ww[ml][mk] * area[l] * ed[l]; + } + } + G3ww[mi][mk] = temp; + //Rww[mi][mk] += G3ww[mi][mk]; + buffer1[mi][mk] += G3ww[mi][mk]; + } + } + } + + if (includingG3ww) { + double temp = 0; + for (int ll = 0; ll < jnum; ll++) { + int l = jlist[ll] & NEIGHMASK; + if (mask[l] & groupbit) { + // interface particles: l can be ghost atoms + int ml = tag2mat[tag[l]]; + temp += (ndotGww[ml][mi]) * G2ww[ml][mi] * area[l] * ed[l]; + } + } + G3ww[mi][mi] = temp; + //Rww[mi][mi] += G3ww[mi][mi]; + buffer1[mi][mi] += G3ww[mi][mi]; + } + + // including the diagonal term + double a1 = em[i] * (em[i] - 1.0); + double a2 = 1.0 - em[i] - em[i]; + // The first term (w/ G1ww) contributes the most to Rww + // the second term (w/ G2ww) includes certain correction + //Rww[mi][mi] = a1 * G1ww[mi][mi] + a2 * G2ww[mi][mi]; + buffer1[mi][mi] = a1 * G1ww[mi][mi] + a2 * G2ww[mi][mi]; + } + } + + MPI_Allreduce(buffer1[0],Rww[0],num_induced_charges*num_induced_charges, + MPI_DOUBLE,MPI_SUM,world); + + #ifdef _POLARIZE_DEBUG + if (comm->me == 0) { + FILE* fp = fopen("Rww-functional.txt", "w"); + for (int i = 0; i < num_induced_charges; i++) + fprintf(fp, "%d %g %g %g\n", i, Rww[i][i], Rww[i][num_induced_charges/2], + Rww[num_induced_charges/2][i]); + fclose(fp); + } + #endif +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::calculate_qiRqw_cutoff() +{ + int ii, i, k, kk, jnum; + double xtmp, ytmp, ztmp, delx, dely, delz, r; + int *mask = atom->mask; + int *type = atom->type; + tagint *tag = atom->tag; + int nlocal = atom->nlocal; + double **x = atom->x; + double *q = avec->q_real; + double *epsilon = avec->epsilon; + double *area = avec->area; + double **norm = avec->mu; + double *ed = avec->ed; + double *em = avec->em; + + // invoke full neighbor list + + int inum,*ilist,*jlist,*numneigh,**firstneigh; + inum = list->inum; // number of entries in the neighbor list + ilist = list->ilist; // ilist[ii] gives the atom index of the entry ii in the list + numneigh = list->numneigh; // numneigh[i] gives the number of neighbors of local atom i + firstneigh = list->firstneigh; // firstneigh[i] gives the pointer to the neighbors of i + + // calculate G1qw_real + // fill up buffer1 with local G1qw_real + + for (int i = 0; i < num_ions; i++) + for (int j = 0; j < num_induced_charges; j++) buffer1[i][j] = 0; + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (!(mask[i] & groupbit)) { + // ion particles + int mi = ion_idx[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (kk = 0; kk < jnum; kk++) { + k = jlist[kk] & NEIGHMASK; + if (mask[k] & groupbit) { + // interface particles: k can be ghost atoms + delx = xtmp - x[k][0]; + dely = ytmp - x[k][1]; + delz = ztmp - x[k][2]; + domain->minimum_image(delx,dely,delz); + r = sqrt(delx * delx + dely * dely + delz * delz); + + int mk = tag2mat[tag[k]]; + //G1qw_real[mi][mk] = greens_real(r); + buffer1[mi][mk] = greens_real(r); + } + } + } + } + + MPI_Allreduce(buffer1[0],G1qw_real[0],num_ions*num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + + // the following loop need the above results: gradG1wq_real + // calculate sum1G1qw_epsilon and sum2ndotGwq_epsilon + // fill up rhs1 with local sum1G1qw_epsilon and rhs2 with local sum2ndotGwq_epsilon + + memset(rhs1, 0, num_induced_charges*sizeof(double)); + memset(rhs2, 0, num_induced_charges*sizeof(double)); + + for (kk = 0; kk < inum; kk++) { + k = ilist[kk]; // k is local index + if (mask[k] & groupbit) { + // interface particles + int mk = induced_charge_idx[k]; + xtmp = x[k][0]; + ytmp = x[k][1]; + ztmp = x[k][2]; + jlist = firstneigh[k]; + jnum = numneigh[k]; + + double tempndotG[3] = {0.0, 0.0, 0.0}; + double temp_sum1 = 0; + for (ii = 0; ii < jnum; ii++) { + i = jlist[ii] & NEIGHMASK; + if (!(mask[i] & groupbit)) { + // ions particles: i can be ghost atoms + delx = x[i][0] - xtmp; + dely = x[i][1] - ytmp; + delz = x[i][2] - ztmp; + domain->minimum_image(delx,dely,delz); + + int mi = tag2mat_ions[tag[i]]; //ion_idx[i]; //get_matrix_index_from_local_index(i); + //calculate_grad_greens_real(gradG1wq_real[mk][mi], delx, dely, delz); + double gradG1wq[3]; + calculate_grad_greens_real(gradG1wq, delx, dely, delz); + MathExtra::scale3(-1.0, gradG1wq); + + tempndotG[0] += gradG1wq[0] * (q[i] / epsilon[i]); + tempndotG[1] += gradG1wq[1] * (q[i] / epsilon[i]); + tempndotG[2] += gradG1wq[2] * (q[i] / epsilon[i]); + temp_sum1 += G1qw_real[mi][mk] * q[i] / epsilon[i]; + } + } + //sum1G1qw_epsilon[mk] = temp_sum1;// + ewaldDielectric->sum1G1qw_k_epsilon[mk]; + rhs1[mk] = temp_sum1; + //sum2ndotGwq_epsilon[mk] = MathExtra::dot3(norm[k], tempndotG); + rhs2[mk] = MathExtra::dot3(norm[k], tempndotG); + } + } + + MPI_Allreduce(rhs1,sum1G1qw_epsilon,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(rhs2,sum2ndotGwq_epsilon,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + + // calculate G2, gradient G2 + // sum2G2wq and sum1G2qw + +// for (int i = 0; i < num_induced_charges; i++) rhs1[i] = rhs2[i] = 0; + memset(rhs1, 0, num_induced_charges*sizeof(double)); + memset(rhs2, 0, num_induced_charges*sizeof(double)); + + for (kk = 0; kk < inum; kk++) { + k = ilist[kk]; // k is local index + if (mask[k] & groupbit) { + // interface particles + int mk = induced_charge_idx[k]; + jlist = firstneigh[k]; + jnum = numneigh[k]; + + double tempwq = 0; + double temp = 0; + for (ii = 0; ii < jnum; ii++) { + i = jlist[ii] & NEIGHMASK; + if (mask[i] & groupbit) { + // interface particles: i can be ghost atoms + int mi = tag2mat[tag[i]]; + tempwq += G1ww[mk][mi] * (sum2ndotGwq_epsilon[mi]) * area[i] * ed[i]; + temp += sum1G1qw_epsilon[mi] * (ndotGww[mi][mk]) * area[i] * ed[i]; + } + } + + // add the corresponding self terms + tempwq += G1ww[mk][mk] * (sum2ndotGwq_epsilon[mk]) * area[k] * ed[k]; + temp += sum1G1qw_epsilon[mk] * (ndotGww[mk][mk]) * area[k] * ed[k]; + + //sum2G2wq[mk] = tempwq; + rhs1[mk] = tempwq; + //sum1G2qw[mk] = temp; + rhs2[mk] = temp; + } + } + + MPI_Allreduce(rhs1,sum2G2wq,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(rhs2,sum1G2qw,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + + // calculate G3, gradient G3 + // fill up rhs1 with local qiRqwVector + + memset(rhs1, 0, num_induced_charges*sizeof(double)); + + for (kk = 0; kk < inum; kk++) { + k = ilist[kk]; // k is local index + if (mask[k] & groupbit) { + // interface particles + int mk = induced_charge_idx[k]; + jlist = firstneigh[k]; + jnum = numneigh[k]; + + double sum1G3qw = 0; + double qiRwwVectorTemp1 = 0; + for (ii = 0; ii < jnum; ii++) { + i = jlist[ii] & NEIGHMASK; + if (mask[i] & groupbit) { + // interface particles: i can be ghost atoms + int mi = tag2mat[tag[i]]; + sum1G3qw += sum2ndotGwq_epsilon[mi] * G2ww[mi][mk] * area[i] * ed[i]; + } else { + // ions particles: i can be ghost atoms + int mi = tag2mat_ions[tag[i]]; //ion_idx[i]; + qiRwwVectorTemp1 += q[i] * (1.0 - em[k] / epsilon[i]) * G1qw_real[mi][mk]; + } + } + // qiRwwVectorTemp1 += ewaldDielectric->sum1G1qw_k[mk] - em[k] * ewaldDielectric->sum1G1qw_k_epsilon[mk]; + + // add the diagonal term + sum1G3qw += sum2ndotGwq_epsilon[mk] * G2ww[mk][mk] * area[k] * ed[k]; + + // qiRwwVectorTemp2 is a significant contribution, of which sum2G2wq is significant + double qiRwwVectorTemp2 = (1.0 - 2.0 * em[k]) * sum2G2wq[mk] + sum1G2qw[mk] + 2.0 * sum1G3qw; +// qiRqwVector[mk] = qiRwwVectorTemp1 + qiRwwVectorTemp2; + rhs1[mk] = qiRwwVectorTemp1 + qiRwwVectorTemp2; + } + } + + MPI_Allreduce(rhs1,qiRqwVector,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + + #ifdef _POLARIZE_DEBUG + if (comm->me == 0) { + FILE* fp = fopen("qRqw-functional.txt", "w"); + for (int i = 0; i < num_induced_charges; i++) + fprintf(fp, "%d %g\n", i, qiRqwVector[i]); + fclose(fp); + } + #endif +} + +/* ---------------------------------------------------------------------- + set dielectric params for the atom in the group +------------------------------------------------------------------------- */ + +void FixPolarizeFunctional::set_dielectric_params(double ediff, double emean, + double epsiloni, double areai, int set_charge, double qreali) +{ + double *area = avec->area; + double *ed = avec->ed; + double *em = avec->em; + double *q_real = avec->q_real; + double *epsilon = avec->epsilon; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + ed[i] = ediff; + em[i] = emean; + if (areai > 0) area[i] = areai; + if (epsiloni > 0) epsilon[i] = epsiloni; + if (set_charge) q_real[i] = qreali; + } + } +} + +/* ---------------------------------------------------------------------- + real Green's function +------------------------------------------------------------------------ */ + +double FixPolarizeFunctional::greens_real(double r) +{ + return erfc(g_ewald * r) / r; +} + +/* ---------------------------------------------------------------------- */ + +double FixPolarizeFunctional::grad_greens_real_factor(double r) +{ + double alpharij = g_ewald * r; + double factor = erfc(alpharij) + 2.0 * alpharij / MY_PIS * exp(-(alpharij * alpharij)); + double r3 = r*r*r; + return (factor * (-1.0 / r3)); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::calculate_grad_greens_real(double *vec, double dx, double dy, double dz) +{ + double r = sqrt(dx * dx + dy * dy + dz * dz); + double real = grad_greens_real_factor(r); + vec[0] = real * dx; + vec[1] = real * dy; + vec[2] = real * dz; +} + +/* ---------------------------------------------------------------------- */ + +double FixPolarizeFunctional::calculate_greens_ewald(double dx, double dy, double dz) +{ + // excluding the reciprocal term + double r = sqrt(dx * dx + dy * dy + dz * dz); + return greens_real(r); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::calculate_grad_greens_ewald(double *vec, double dx, double dy, double dz) + { + // real part of grad greens, excluding the reciprocal term + calculate_grad_greens_real(vec, dx, dy, dz); +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::calculate_matrix_multiply_vector(double **matrix, + double *in_vec, double *out_vec, int M) +{ + #pragma parallel omp for + for (int k = 0; k < M; ++k) { + double temp = 0.0; + for (int l = 0; l < M; ++l) { + temp += matrix[k][l] * in_vec[l]; + } + out_vec[k] = temp; + } +} + +/* ---------------------------------------------------------------------- */ + +double FixPolarizeFunctional::calculate_greens_ewald_self_vertex(double area) +{ + // excluding the reciprocal term + double corr = 2.0 * MY_PIS / sqrt(area); + double self_energy = -2.0 * g_ewald / MY_PIS; + return corr + self_energy; +} + +/* ---------------------------------------------------------------------- */ + +double FixPolarizeFunctional::calculate_ndotgreens_ewald_self_vertex(double area, double curvature) +{ + // this term is important, cannot be set to zero. see .pptx + // curvature = 1 / R, minus if norm is inverse of R to center. + // Honghao Li's result, the same with Erik's paper, J Chem Phys 140 064903 (2014) + return curvature * MY_PIS / sqrt(area); +} + +/* ---------------------------------------------------------------------- + compute the inner product between two vectors x and y: x^t * y + where ^t is the transpose operator +-- ---------------------------------------------------------------------- */ + +double FixPolarizeFunctional::inner_product(double* x, double* y, int N) +{ + double t = 0; + for (int i = 0; i < N; i++) t += x[i]*y[i]; + return t; +} + +/* ---------------------------------------------------------------------- */ + +void FixPolarizeFunctional::cg_solver(double** A, double* b, double* x, int N) +{ + calculate_matrix_multiply_vector(A, x, cg_p, N); + for (int i = 0; i < N; i++) { + cg_r[i] = b[i] - cg_p[i]; + cg_p[i] = cg_r[i]; + } + double rsq = inner_product(cg_r, cg_r, N); + + // maximum number of iterations do not exceed N + for (int k = 0; k < N; k++) { + + // Ap = A * p + calculate_matrix_multiply_vector(A, cg_p, cg_Ap, N); + + // pAp = p^t * Ap + double pAp = inner_product(cg_p, cg_Ap, N); + + // alpha = r^t * r / pAp + double alpha = rsq / pAp; + + // x = x + alpha * p + // r = r - alpha * Ap + for (int i = 0; i < N; i++) { + x[i] = x[i] + alpha*cg_p[i]; + cg_r[i] = cg_r[i] - alpha*cg_Ap[i]; + } + double rsq_new = inner_product(cg_r, cg_r, N); + if (rsq_new < EPSILON) break; + + // beta = rsq_new / rsq + double beta = rsq_new / rsq; + for (int i = 0; i < N; i++) + cg_p[i] = cg_r[i] + beta*cg_p[i]; + rsq = rsq_new; + } + +} diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.h b/src/USER-DIELECTRIC/fix_polarize_functional.h new file mode 100644 index 0000000000..4fe021e760 --- /dev/null +++ b/src/USER-DIELECTRIC/fix_polarize_functional.h @@ -0,0 +1,127 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(polarize/functional,FixPolarizeFunctional) + +#else + +#ifndef LMP_FIX_POLARIZE_FUNCTIONAL_H +#define LMP_FIX_POLARIZE_FUNCTIONAL_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixPolarizeFunctional : public Fix { + public: + FixPolarizeFunctional(class LAMMPS *, int, char **); + ~FixPolarizeFunctional(); + int setmask(); + void init(); + void init_list(int,class NeighList *); + void setup(int); + void setup_pre_force(int vflag); + void pre_force(int); + int pack_exchange(int, double *); + int unpack_exchange(int, double *); + int pack_forward_comm(int, int*, double*, int, int*); + void unpack_forward_comm(int, int, double*); + + int modify_param(int, char **); + double memory_usage(); + void allocate(); + void deallocate(); + void grow_arrays(int); + void copy_arrays(int, int, int); + void set_arrays(int); + + protected: + int nmax; + class AtomVecDielectric* avec; + class NeighList *list; + + void set_dielectric_params(double, double, double, double, int, double); + void charge_rescaled(int); + void update_induced_charges(); + + double **inverse_matrix; + double **G1ww, **ndotGww, **G2ww, **G3ww, **Rww; + + int* tag2mat; // tag2mat[atom->tag[i]] = the index of the atoms in the induced charge arrays from atom tags + int* mat2tag; // mat2tag[idx] = the atom tag of the induced charge idx in the induced charge arrays + int* induced_charge_idx; // return the index of the atoms in the induced charge arrays + int num_induced_charges; // total number of induced charges + double* induced_charges; // values of induced charges + int* tag2mat_ions; // tag2mat_ions[atom->tag[i]] returns the index of the atoms in the ion arrays from atom tags + int* mat2tag_ions; // mat2tag_ions[idx] returns the atom tag of the ion idx in the ion arrays + int* ion_idx; // return the index of the atoms in the ion arrays + int num_ions; // total number of ions + double* rhs1; + double* rhs2; + double** buffer1; + double** buffer2; + + int allocated; + int kspaceflag; // 1 if kspace is used for the induced charge computation + double **efield_pair; // electrical field at position of atom i due to pair contribution + double **efield_kspace; // electrical field at position of atom i due to kspace contribution + int torqueflag,extraflag; + double g_ewald; + int includingG3ww; + + void calculate_Rww_cutoff(); + void calculate_qiRqw_cutoff(); + + // qw, qq ion-interface terms + double *qiRqwVector; + double **G1qw_real; + double *sum2G2wq; + double *sum1G2qw; + double *sum1G1qw_epsilon; + double *sum2ndotGwq_epsilon; + + // conjugate gradient solver + double *cg_r; + double *cg_p; + double *cg_Ap; + double **cg_A; + + void calculate_matrix_multiply_vector(double **, double *, double *, int); + double inner_product(double*, double*, int); + void cg_solver(double**, double*, double*, int); + + inline double greens_real(double); + inline double grad_greens_real_factor(double); + inline void calculate_grad_greens_real(double *, double, double, double); + inline double calculate_greens_ewald(double, double, double); + inline void calculate_grad_greens_ewald(double *, double, double, double); + inline double calculate_greens_ewald_self_vertex(double); + inline double calculate_ndotgreens_ewald_self_vertex(double, double); +}; + +} + +#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. + +*/ diff --git a/src/USER-DIELECTRIC/fix_qeq_dielectric.cpp b/src/USER-DIELECTRIC/fix_qeq_dielectric.cpp new file mode 100644 index 0000000000..0489351ed6 --- /dev/null +++ b/src/USER-DIELECTRIC/fix_qeq_dielectric.cpp @@ -0,0 +1,1281 @@ +/* ---------------------------------------------------------------------- + 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 authors: + full-matrix: Honghao Li (Northwestern University) + neighbor list: Trung Nguyen (Northwestern University) + Ref.: Jadhao, Solis, Olvera de la Cruz, J. Chem. Phys. 138, 054119, 2013 +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include +#include "fix_qeq_dielectric.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "domain.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "update.h" +#include "force.h" +#include "kspace.h" +#include "group.h" +#include "pair.h" +#include "respa.h" +#include "math_const.h" +#include "math_extra.h" +#include "memory.h" +#include "citeme.h" +#include "error.h" +#include + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathConst; +using namespace MathExtra; + +#define _POLARIZE_DEBUG + +/* ---------------------------------------------------------------------- */ + +FixQEqDielectric::FixQEqDielectric(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Illegal fix qeq/dielectric command"); + + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"fix qeq/dielectric requires atom style dielectric"); + + comm_forward = 1; + + // register with Atom class + grow_arrays(atom->nmax); + atom->add_callback(0); + + // kspace info +// ewaldDielectric = NULL; + + tags_interface = NULL; + tags_ions = NULL; + + // interface terms + Rww = NULL; + inverse_matrix = NULL; + G1ww = NULL; + G2ww = NULL; + G3ww = NULL; + ndotGww = NULL; + gradG1ww = NULL; + + qiRqwVector = NULL; + G1qq_real = NULL; + G1qw_real = NULL; + gradG1wq_real = NULL; + sum2G2wq = NULL; + + sum1G2qw = NULL; + sum1G3qw = NULL; + sum1G1qw_epsilon = NULL; + sum2ndotGwq_epsilon = NULL; + + q_induced_charges = NULL; + + full = 1; + includingG3ww = 1; +} + +/* ---------------------------------------------------------------------- */ + +FixQEqDielectric::~FixQEqDielectric() +{ + // unregister callbacks to this fix from Atom class + + if (copymode) return; + + atom->delete_callback(id,0); + +// if (ewaldDielectric) delete ewaldDielectric; +// ewaldDielectric = NULL; + + memory->destroy(tags_interface); + memory->destroy(tags_ions); + + memory->destroy(inverse_matrix); + memory->destroy(Rww); + memory->destroy(G1ww); + memory->destroy(G2ww); + memory->destroy(G3ww); + memory->destroy(ndotGww); + memory->destroy3d_offset(gradG1ww,0); + + memory->destroy(qiRqwVector); + memory->destroy(sum2G2wq); + memory->destroy(G1qq_real); + memory->destroy(G1qw_real); + memory->destroy3d_offset(gradG1wq_real,0); + + memory->destroy(sum1G2qw); + memory->destroy(sum1G3qw); + memory->destroy(sum1G1qw_epsilon); + memory->destroy(sum2ndotGwq_epsilon); + + memory->destroy(q_induced_charges); + +} + +/* ---------------------------------------------------------------------- */ + +int FixQEqDielectric::setmask() +{ + int mask = 0; + mask |= PRE_FORCE; + mask |= PRE_FORCE_RESPA; + mask |= MIN_PRE_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::init() +{ + if (atom->map_style == 0) + error->all(FLERR,"Fix qeq/dielectric requires an atom map, see atom_modify"); + + ngroup = group->count(igroup); + if (ngroup == 0) error->all(FLERR,"Fix qeq/dielectric group has no atoms"); + + if (comm->nprocs > 1) error->all(FLERR,"Fix qeq/dielectric works with 1 MPI for now"); + + // need a full neighbor list w/ Newton off and ghost neighbors + // built whenever re-neighboring occurs + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->fix = 1; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->occasional = 0; + + if (strstr(update->integrate_style,"respa")) + nlevels_respa = ((Respa *) update->integrate)->nlevels; + + // TODO: some data needed later, some just temp should be defined and release in setup_pre_force. + // initial interfaces terms + n_induced_charges = ngroup; + n_ions = atom->nlocal - n_induced_charges; + if (force->kspace) g_ewald = force->kspace->g_ewald; + else g_ewald = 0.01; + + // kspace +// int narg = 1; +// char *arg[10] = {"0.0000"}; // this does not matter, the accuracy_relative is manually changed to kspace accuracy_relative in constructor. +// ewaldDielectric = new EwaldDielectric(n_induced_charges, n_ions, lmp, narg, arg); + // tags, after ewaldDielectric created, tags will be transfer to that class too. + memory->create(tags_interface, n_induced_charges, "fix:tags_interface"); + memory->create(tags_ions, n_ions, "fix:tags_ions"); + + // initialize all data + // interface terms, all matrix of M*M + memory->create(inverse_matrix, n_induced_charges, n_induced_charges, "fix:inverse_matrix"); + memory->create(Rww, n_induced_charges, n_induced_charges, "fix:Rww"); + memory->create(G1ww, n_induced_charges, n_induced_charges, "fix:G1ww"); + memory->create(ndotGww, n_induced_charges, n_induced_charges, "fix:ndotGww"); + memory->create(G2ww, n_induced_charges, n_induced_charges, "fix:G2ww"); + memory->create(G3ww, n_induced_charges, n_induced_charges, "fix:G3ww"); + memory->create3d_offset(gradG1ww,0,n_induced_charges,n_induced_charges,3,"fix:gradG1ww"); + + // each step, qw, qq terms, temp data + memory->create(qiRqwVector, n_induced_charges, "fix:qiRqwVector"); + memory->create(sum2G2wq, n_induced_charges, "fix:sum2G2wq"); + memory->create(G1qq_real, n_ions, n_ions, "fix:G1qq_real"); + memory->create(G1qw_real, n_ions, n_induced_charges, "fix:G1qw_real"); + memory->create3d_offset(gradG1wq_real,0,n_induced_charges,n_ions,3,"fix:gradG1wq_real"); + // array of M + memory->create(sum1G2qw, n_induced_charges, "fix:sum1G2qw"); + memory->create(sum1G3qw, n_induced_charges, "fix:sum1G3qw"); + memory->create(sum1G1qw_epsilon, n_induced_charges, "fix:sum1G1qw_epsilon"); + memory->create(sum2ndotGwq_epsilon, n_induced_charges, "fix:sum2ndotGwq_epsilon"); + + memory->create(q_induced_charges, n_induced_charges, "fix:q_induced_charges"); + + setup_tags(); +// print_all_properties(); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::init_list(int id, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::setup_pre_force(int vflag) +{ +// printf("========= calculate structure factors and kspace terms ==========\n"); + // calculate structure factor and kspace terms first + // TODO this step seems not necessary, check it later + // since the 3-loop calculate explicit kspace term G(sk, sm), so the structure factor stuff is not necessary +// ewaldDielectric->calculate_structure_factors(); +// ewaldDielectric->calculate_kspace_terms(); + + printf("==== Start setup_pre_force in fix_qeq_dielectric ======\n"); + clock_t t = clock(); + #ifdef _OPENMP + double startTime = omp_get_wtime(); + #endif + + if (full) calculate_Rww_full(); + else calculate_Rww_cutoff(); + + // calculate inverse matrix (Rww + Rww^T)^(-1), + printf("==== Calculate the inverse of matrix Rww ======\n"); + calculate_inverse_matrix(Rww, inverse_matrix, n_induced_charges); + + pre_force(vflag); + + printf("==== End setup_pre_force in fix_qeq_dielectric ======\n"); + +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::calculate_Rww_full() +{ + int *mask = atom->mask; + int *type = atom->type; + int nlocal = atom->nlocal; + double **x = atom->x; + double *area = avec->area; + double *curvature = avec->curvature; + double **norm = avec->mu; + double *ed = avec->ed; + double *em = avec->em; + + // calculate interface term Rww and the inverse matrix (Rww + Rww^T)^(-1); + + #pragma omp parallel + { + + // calculate G1ww, gradG1ww, ndotG1ww + // =========== Loop over all nlocal ===============, we need all pair G^Kspace(i, j) + #pragma omp for + for (int k = 0; k < n_induced_charges; ++k) { + // nk: all nlocal index in atom[] starts with n---, k is the index of all the matrix + int nk = get_index_interface(k); + double xtmp = x[nk][0]; + double ytmp = x[nk][1]; + double ztmp = x[nk][2]; + + for (int l = 0; l < n_induced_charges; ++l) { + int nl = get_index_interface(l); + + // ik = il, dr = 0, different equation + if (nk == nl) { + G1ww[k][l] = calculate_greens_ewald_self_vertex(area[nk]); + ndotGww[k][l] = calculate_ndotgreens_ewald_self_vertex(area[nk], curvature[nk]) / (4*MY_PI); + continue; + } else { + // k != l + double delx = xtmp - x[nl][0]; + double dely = ytmp - x[nl][1]; + double delz = ztmp - x[nl][2]; + + domain->minimum_image(delx,dely,delz); + + G1ww[k][l] = calculate_greens_ewald(delx, dely, delz); + // gradG1ww is vector, directly change it in the function + calculate_grad_greens_ewald(gradG1ww[k][l], delx, dely, delz); + // use mu to store the normal vector of interface vertex + ndotGww[k][l] = MathExtra::dot3(norm[nk], gradG1ww[k][l]) / (4*MY_PI); + } + } + } + + // calculate G2ww + #pragma omp for + for (int k = 0; k < n_induced_charges; ++k) { + for (int l = 0; l < n_induced_charges; ++l) { + double temp = 0; + for (int m = 0; m < n_induced_charges; ++m) { + int nm = get_index_interface(m); + temp += G1ww[k][m] * ndotGww[m][l] * area[nm] * ed[nm]; + } + G2ww[k][l] = temp; + } + } + + // calculate G3ww and Rww + #pragma omp for + for (int k = 0; k < n_induced_charges; ++k) { + int nk = get_index_interface(k); + for (int l = 0; l < n_induced_charges; ++l) { + int nl = get_index_interface(l); + double temp = 0; + for (int m = 0; m < n_induced_charges; ++m) { + int nm = get_index_interface(m); + temp += (ndotGww[m][k]) * G2ww[m][l] * area[nm] * ed[nm]; + } + G3ww[k][l] = temp; + double a1 = em[nk] * (em[nl] - 1.0); + double a2 = 1.0 - em[nk] - em[nl]; + // The first term (w/ G1ww) contributes the most to Rww + // the second term (w/ G2ww) includes certain correction + // the third term (w/ G3ww) corresponds to a minor contribution + Rww[k][l] = a1 * G1ww[k][l] + a2 * G2ww[k][l] + G3ww[k][l]; + } + } + } // end of the whole parallel region + + #ifdef _POLARIZE_DEBUG + if (comm->me == 0) { + FILE* fp = fopen("Rww-qeq-full.txt", "w"); + for (int i = 0; i < n_induced_charges; i++) + fprintf(fp, "%d %g\n", i, Rww[i][i]); + fclose(fp); + } + #endif +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::calculate_Rww_cutoff() +{ + int *mask = atom->mask; + int *type = atom->type; + int nlocal = atom->nlocal; + double **x = atom->x; + double *area = avec->area; + double *curvature = avec->curvature; + double **norm = avec->mu; + double *ed = avec->ed; + double *em = avec->em; + + // invoke full neighbor list (will copy or build if necessary) + + int inum,jnum,*ilist,*jlist,*numneigh,**firstneigh; + + inum = list->inum; // number of entries in the neighbor list + ilist = list->ilist; // ilist[ii] gives the atom index of the entry ii in the list + numneigh = list->numneigh; // numneigh[i] gives the number of neighbors of local atom i + firstneigh = list->firstneigh; // firstneigh[i] gives the pointer to the neighbors of i + + // calculate G1ww, gradG1ww, ndotG1ww + + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + if (mask[i] & groupbit) { + // interface particles + int mi = get_matrix_index_from_local_index(i); + double xtmp = x[i][0]; + double ytmp = x[i][1]; + double ztmp = x[i][2]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (int kk = 0; kk < jnum; kk++) { + int k = jlist[kk] & NEIGHMASK; + if (mask[k] & groupbit) { + // interface particles + double delx = xtmp - x[k][0]; + double dely = ytmp - x[k][1]; + double delz = ztmp - x[k][2]; + domain->minimum_image(delx,dely,delz); + int mk = get_matrix_index_from_local_index(k); + + G1ww[mi][mk] = calculate_greens_ewald(delx, dely, delz); + // gradG1ww is vector, directly change it in the function + calculate_grad_greens_ewald(gradG1ww[mi][mk], delx, dely, delz); + // use mu to store the normal vector of interface vertex + ndotGww[mi][mk] = MathExtra::dot3(norm[i], gradG1ww[mi][mk]) / (4*MY_PI); + } + } + + // special treatment for the diagonal terms because in the above loop there is no mk == mi + + G1ww[mi][mi] = calculate_greens_ewald_self_vertex(area[i]); + ndotGww[mi][mi] = calculate_ndotgreens_ewald_self_vertex(area[i], curvature[i]) / (4*MY_PI); + } + } + + // calculate G2ww + + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + if (mask[i] & groupbit) { + // interface particles + int mi = get_matrix_index_from_local_index(i); + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (int kk = 0; kk < jnum; kk++) { + int k = jlist[kk] & NEIGHMASK; + + if (mask[k] & groupbit) { + // interface particles + int mk = get_matrix_index_from_local_index(k); + double temp = 0; + for (int ll = 0; ll < jnum; ll++) { + int l = jlist[ll] & NEIGHMASK; + if (mask[l] & groupbit) { + // interface particles + int ml = get_matrix_index_from_local_index(l); + temp += G1ww[mi][ml] * ndotGww[ml][mk] * area[l] * ed[l]; + } + } + G2ww[mi][mk] = temp; + } + } + + // including the diagonal term + double temp = 0; + for (int kk = 0; kk < jnum; kk++) { + int k = jlist[kk] & NEIGHMASK; + if (mask[k] & groupbit) { + // interface particles + int mk = get_matrix_index_from_local_index(k); + temp += G1ww[mi][mk] * ndotGww[mk][mi] * area[k] * ed[k]; + } + } + G2ww[mi][mi] = temp; + } + } + + // calculate G3ww and Rww +/* + // G3ww is implemented as in _exact(), but can be optionally excluded + for (int k = 0; k < n_induced_charges; ++k) { + int nk = get_index_interface(k); + for (int l = 0; l < n_induced_charges; ++l) { + int nl = get_index_interface(l); + double a1 = em[nk] * (em[nl] - 1.0); + double a2 = 1.0 - em[nk] - em[nl]; + // The first term (w/ G1ww) contributes the most to Rww + // the second term (w/ G2ww) includes certain correction + Rww[k][l] = a1 * G1ww[k][l] + a2 * G2ww[k][l]; + + // the third term (w/ G3ww) corresponds to a minor contribution + if (includingG3ww) { + double temp = 0; + for (int m = 0; m < n_induced_charges; ++m) { + int nm = get_index_interface(m); + temp += (ndotGww[m][k]) * G2ww[m][l] * area[nm] * ed[nm]; + } + G3ww[k][l] = temp; + Rww[k][l] += G3ww[k][l]; + } + } + } +*/ + + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + if (mask[i] & groupbit) { + // interface particles + int mi = get_matrix_index_from_local_index(i); + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (int kk = 0; kk < jnum; kk++) { + int k = jlist[kk] & NEIGHMASK; + + if (mask[k] & groupbit) { + // interface particles + int mk = get_matrix_index_from_local_index(k); + + double a1 = em[mi] * (em[mk] - 1.0); + double a2 = 1.0 - em[mi] - em[mk]; + // The first term (w/ G1ww) contributes the most to Rww + // the second term (w/ G2ww) includes certain correction + Rww[mi][mk] = a1 * G1ww[mi][mk] + a2 * G2ww[mi][mk]; + + if (includingG3ww) { + double temp = 0; + for (int ll = 0; ll < jnum; ll++) { + int l = jlist[ll] & NEIGHMASK; + if (mask[l] & groupbit) { + // interface particles + int ml = get_matrix_index_from_local_index(l); + temp += (ndotGww[ml][mi]) * G2ww[ml][mk] * area[l] * ed[l]; + } + } + G3ww[mi][mk] = temp; + Rww[mi][mk] += G3ww[mi][mk]; + } + } + } + + if (includingG3ww) { + double temp = 0; + for (int ll = 0; ll < jnum; ll++) { + int l = jlist[ll] & NEIGHMASK; + if (mask[l] & groupbit) { + // interface particles + int ml = get_matrix_index_from_local_index(l); + temp += (ndotGww[ml][mi]) * G2ww[ml][mi] * area[l] * ed[l]; + } + } + G3ww[mi][mi] = temp; + Rww[mi][mi] += G3ww[mi][mi]; + } + + // including the diagonal term + double a1 = em[i] * (em[i] - 1.0); + double a2 = 1.0 - em[i] - em[i]; + // The first term (w/ G1ww) contributes the most to Rww + // the second term (w/ G2ww) includes certain correction + Rww[mi][mi] = a1 * G1ww[mi][mi] + a2 * G2ww[mi][mi]; + if (includingG3ww) Rww[mi][mi] += G3ww[mi][mi]; + } + } + + #ifdef _POLARIZE_DEBUG + if (comm->me == 0) { + FILE* fp = fopen("Rww-qeq-cutoff.txt", "w"); + for (int i = 0; i < n_induced_charges; i++) + fprintf(fp, "%d %g\n", i, Rww[i][i]); + fclose(fp); + } + #endif +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::setup_pre_force_respa(int vflag, int ilevel) +{ + if (ilevel < nlevels_respa-1) return; + setup_pre_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::min_setup_pre_force(int vflag) +{ + setup_pre_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::pre_force(int vflag) +{ +// setup_tags_local(); + + // very important! change all ions q to real q to calculate the structure factor, + // later will change to scaled q to calculate force. + change_all_ions_q_to_real_q(); + + // calculate structure factor and kspace terms first +// ewaldDielectric->calculate_structure_factors(); +// ewaldDielectric->calculate_kspace_terms(); + + // main calculation + if (full) calculate_qiRqw_full(); + else calculate_qiRqw_cutoff(); + + // compute induced charges + compute_induced_charges(); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::calculate_qiRqw_full() +{ + int *mask = atom->mask; + int *type = atom->type; + int nlocal = atom->nlocal; + double **x = atom->x; + double *q = avec->q_real; + double *epsilon = avec->epsilon; + double *area = avec->area; + double **norm = avec->mu; + double *ed = avec->ed; + double *em = avec->em; + + // compute Green's functions + // compute qRqw + + #pragma omp parallel + { + + // calculate G1, gradient G1 + #pragma omp for + for (int i = 0; i < n_ions; i++) { + int ni = get_index_ions(i); + double xtmp = x[ni][0]; + double ytmp = x[ni][1]; + double ztmp = x[ni][2]; + + for (int k = 0; k < n_induced_charges; ++k) { + int nk = get_index_interface(k); + double delx = xtmp - x[nk][0]; + double dely = ytmp - x[nk][1]; + double delz = ztmp - x[nk][2]; + domain->minimum_image(delx,dely,delz); + double r = sqrt(delx * delx + dely * dely + delz * delz); + G1qw_real[i][k] = greens_real(r); + } + } + + // the following loop need the above results, + #pragma omp for + for (int k = 0; k < n_induced_charges; ++k) { + int nk = get_index_interface(k); + double xtmp = x[nk][0]; + double ytmp = x[nk][1]; + double ztmp = x[nk][2]; + double tempndotG[3] = {0.0, 0.0, 0.0}; + double temp_sum1 = 0; + for (int i = 0; i < n_ions; i++) { + int ni = get_index_ions(i); + // posvecqw[i][k] + double delx = x[ni][0] - xtmp; + double dely = x[ni][1] - ytmp; + double delz = x[ni][2] - ztmp; + domain->minimum_image(delx,dely,delz); + calculate_grad_greens_real(gradG1wq_real[k][i], delx, dely, delz); + MathExtra::scale3(-1.0, gradG1wq_real[k][i]); + + tempndotG[0] += gradG1wq_real[k][i][0] * (q[ni] / epsilon[ni]); + tempndotG[1] += gradG1wq_real[k][i][1] * (q[ni] / epsilon[ni]); + tempndotG[2] += gradG1wq_real[k][i][2] * (q[ni] / epsilon[ni]); + temp_sum1 += G1qw_real[i][k] * q[ni] / epsilon[ni]; + } + sum1G1qw_epsilon[k] = temp_sum1; // + ewaldDielectric->sum1G1qw_k_epsilon[k]; +// double temp_sum2 = 0; +// for (int ic = 0; ic < 3; ++ic) { +// temp_sum2 += norm[nk][ic] * (tempndotG[ic] + ewaldDielectric->sum2gradG1wq_k_epsilon[k][ic]); +// temp_sum2 += norm[nk][ic] * (tempndotG[ic]); +// } + double temp_sum2 = MathExtra::dot3(norm[nk], tempndotG); + sum2ndotGwq_epsilon[k] = temp_sum2; + } + + // calculate G2, gradient G2 + #pragma omp for nowait + for (int k = 0; k < n_induced_charges; ++k) { + double tempwq = 0; + for (int m = 0; m < n_induced_charges; ++m) { + int nm = get_index_interface(m); + tempwq += G1ww[k][m] * (sum2ndotGwq_epsilon[m]) * area[nm] * ed[nm]; + } + sum2G2wq[k] = tempwq; + } + + #pragma omp for + for (int k = 0; k < n_induced_charges; ++k) { + double temp = 0; + for (int m = 0; m < n_induced_charges; ++m) { + int nm = get_index_interface(m); + temp += sum1G1qw_epsilon[m] * (ndotGww[m][k]) * area[nm] * ed[nm]; + } + sum1G2qw[k] = temp; + } + + // calculate G3, gradient G3 + #pragma omp for + for (int k = 0; k < n_induced_charges; ++k) { + int nk = get_index_interface(k); + + double qiRwwVectorTemp1 = 0; + for (int i = 0; i < n_ions; ++i) { + int ni = get_index_ions(i); + qiRwwVectorTemp1 += q[ni] * (1.0 - em[nk] / epsilon[ni]) * G1qw_real[i][k]; + } +// qiRwwVectorTemp1 += ewaldDielectric->sum1G1qw_k[k] - em[nk] * ewaldDielectric->sum1G1qw_k_epsilon[k]; + + double temp = 0; + for (int m = 0; m < n_induced_charges; ++m) { + int nm = get_index_interface(m); + temp += sum2ndotGwq_epsilon[m] * G2ww[m][k] * area[nm] * ed[nm]; + } + sum1G3qw[k] = temp; + + // qiRwwVectorTemp2 is a significant contribution, of which sum2G2wq is significant + double qiRwwVectorTemp2 = (1.0 - 2.0 * em[nk]) * sum2G2wq[k] + sum1G2qw[k] + 2.0 * sum1G3qw[k]; + qiRqwVector[k] = qiRwwVectorTemp1 + qiRwwVectorTemp2; + } + + } // end of parallel region +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::calculate_qiRqw_cutoff() +{ + int ii, i, mi, k, kk, mk, jnum; + double xtmp, ytmp, ztmp, delx, dely, delz, r; + int *mask = atom->mask; + int *type = atom->type; + int nlocal = atom->nlocal; + double **x = atom->x; + double *q = avec->q_real; + double *epsilon = avec->epsilon; + double *area = avec->area; + double **norm = avec->mu; + double *ed = avec->ed; + double *em = avec->em; + + // invoke full neighbor list (will copy or build if necessary) + + int inum,*ilist,*jlist,*numneigh,**firstneigh; + + inum = list->inum; // number of entries in the neighbor list + ilist = list->ilist; // ilist[ii] gives the atom index of the entry ii in the list + numneigh = list->numneigh; // numneigh[i] gives the number of neighbors of local atom i + firstneigh = list->firstneigh; // firstneigh[i] gives the pointer to the neighbors of i + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (!(mask[i] & groupbit)) { + // ion particles + mi = get_matrix_index_from_local_index(i); + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (kk = 0; kk < jnum; kk++) { + k = jlist[kk] & NEIGHMASK; + if (mask[k] & groupbit) { + // interface particles + delx = xtmp - x[k][0]; + dely = ytmp - x[k][1]; + delz = ztmp - x[k][2]; + domain->minimum_image(delx,dely,delz); + r = sqrt(delx * delx + dely * dely + delz * delz); + mk = get_matrix_index_from_local_index(k); + G1qw_real[mi][mk] = greens_real(r); + } + } + } + } + + // the following loop need the above results, + for (kk = 0; kk < inum; kk++) { + k = ilist[kk]; // k is local index + if (mask[k] & groupbit) { + // interface particles + mk = get_matrix_index_from_local_index(k); + xtmp = x[k][0]; + ytmp = x[k][1]; + ztmp = x[k][2]; + jlist = firstneigh[k]; + jnum = numneigh[k]; + + double tempndotG[3] = {0.0, 0.0, 0.0}; + double temp_sum1 = 0; + for (ii = 0; ii < jnum; ii++) { + i = jlist[ii] & NEIGHMASK; + if (!(mask[i] & groupbit)) { + // ions particles + delx = x[i][0] - xtmp; + dely = x[i][1] - ytmp; + delz = x[i][2] - ztmp; + domain->minimum_image(delx,dely,delz); + + mi = get_matrix_index_from_local_index(i); + calculate_grad_greens_real(gradG1wq_real[mk][mi], delx, dely, delz); + MathExtra::scale3(-1.0, gradG1wq_real[mk][mi]); + + tempndotG[0] += gradG1wq_real[mk][mi][0] * (q[i] / epsilon[i]); + tempndotG[1] += gradG1wq_real[mk][mi][1] * (q[i] / epsilon[i]); + tempndotG[2] += gradG1wq_real[mk][mi][2] * (q[i] / epsilon[i]); + temp_sum1 += G1qw_real[mi][mk] * q[i] / epsilon[i]; + } + } + sum1G1qw_epsilon[mk] = temp_sum1;// + ewaldDielectric->sum1G1qw_k_epsilon[mk]; +// double temp_sum2 = 0; +// for (int ic = 0; ic < 3; ++ic) { +// temp_sum2 += norm[k][ic] * (tempndotG[ic] + ewaldDielectric->sum2gradG1wq_k_epsilon[mk][ic]); +// temp_sum2 += norm[k][ic] * (tempndotG[ic]); +// } + double temp_sum2 = MathExtra::dot3(norm[k], tempndotG); + sum2ndotGwq_epsilon[mk] = temp_sum2; + } + } + + // calculate G2, gradient G2 + for (kk = 0; kk < inum; kk++) { + k = ilist[kk]; // k is local index + if (mask[k] & groupbit) { + // interface particles + mk = get_matrix_index_from_local_index(k); + jlist = firstneigh[k]; + jnum = numneigh[k]; + + double tempwq = 0; + double temp = 0; + for (ii = 0; ii < jnum; ii++) { + i = jlist[ii] & NEIGHMASK; + if (mask[i] & groupbit) { + // interface particles + mi = get_matrix_index_from_local_index(i); + tempwq += G1ww[mk][mi] * (sum2ndotGwq_epsilon[mi]) * area[i] * ed[i]; + temp += sum1G1qw_epsilon[mi] * (ndotGww[mi][mk]) * area[i] * ed[i]; + } + } + + // add the corresponding self terms + tempwq += G1ww[mk][mk] * (sum2ndotGwq_epsilon[mk]) * area[k] * ed[k]; + temp += sum1G1qw_epsilon[mk] * (ndotGww[mk][mk]) * area[k] * ed[k]; + + sum2G2wq[mk] = tempwq; + sum1G2qw[mk] = temp; + } + } + + // calculate G3, gradient G3 + for (kk = 0; kk < inum; kk++) { + k = ilist[kk]; // k is local index + if (mask[k] & groupbit) { + // interface particles + mk = get_matrix_index_from_local_index(k); + + // qiRwwVectorTemp2 is a significant contribution, of which sum2G2wq is significant + double qiRwwVectorTemp1 = 0; + double qiRwwVectorTemp2 = (1.0 - 2.0 * em[k]) * sum2G2wq[mk]; + + if (includingG3ww) { + jlist = firstneigh[k]; + jnum = numneigh[k]; + double temp = 0; + for (ii = 0; ii < jnum; ii++) { + i = jlist[ii] & NEIGHMASK; + if (mask[i] & groupbit) { + // interface particles + mi = get_matrix_index_from_local_index(i); + temp += sum2ndotGwq_epsilon[mi] * G2ww[mi][mk] * area[i] * ed[i]; + } else { + // ions particles + mi = get_matrix_index_from_local_index(i); + qiRwwVectorTemp1 += q[i] * (1.0 - em[k] / epsilon[i]) * G1qw_real[mi][mk]; + } + } + // qiRwwVectorTemp1 += ewaldDielectric->sum1G1qw_k[mk] - em[k] * ewaldDielectric->sum1G1qw_k_epsilon[mk]; + + // add the corresponding self term + temp += sum2ndotGwq_epsilon[mk] * G2ww[mk][mk] * area[k] * ed[k]; + sum1G3qw[mk] = temp; + + qiRwwVectorTemp2 += sum1G2qw[mk] + 2.0 * sum1G3qw[mk]; + } + +// double qiRwwVectorTemp2 = (1.0 - 2.0 * em[k]) * sum2G2wq[mk] + + sum1G2qw[mk] + 2.0 * sum1G3qw[mk]; + qiRqwVector[mk] = qiRwwVectorTemp1 + qiRwwVectorTemp2; + } + } + #ifdef _POLARIZE_DEBUG + if (comm->me == 0) { + FILE* fp = fopen("qRqw-qeq.txt", "w"); + for (int i = 0; i < n_induced_charges; i++) + fprintf(fp, "%d %g\n", i, qiRqwVector[i]); + fclose(fp); + } + #endif +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::pre_force_respa(int vflag, int ilevel, int iloop) +{ + if (ilevel == nlevels_respa-1) pre_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::min_pre_force(int vflag) +{ + pre_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::compute_induced_charges() +{ + // inverse_matrix * qRqw, notice the w = - inverse_matrix * qRqw, do not forget the minus sign. + calculate_matrix_multiply_vector(inverse_matrix, qiRqwVector, + q_induced_charges, n_induced_charges); + + // map q induced charges back into atom, from global id tag = k to nlocal index of nk. + for (int k = 0; k < n_induced_charges; ++k) { + int nk = get_index_interface(k); + atom->q[nk] = -q_induced_charges[k] / (4*MY_PI); + } + + // important! change to scaled q to calculate force. + change_all_ions_q_to_scaled_q(); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::change_all_ions_q_to_real_q() +{ + for (int i = 0; i < n_ions; ++i) { + int ni = get_index_ions(i); + atom->q[ni] = avec->q_real[ni]; + } + // communicate the induced charges + // for single MPI, this updates the ghost atoms' charges + comm->forward_comm_fix(this); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::change_all_ions_q_to_scaled_q() +{ + for (int i = 0; i < n_ions; ++i) { + int ni = get_index_ions(i); + atom->q[ni] = avec->q_real[ni] / avec->epsilon[ni]; + } + // communicate the induced charges + // for single MPI, this updates the ghost atoms' charges + comm->forward_comm_fix(this); +} + +/* ---------------------------------------------------------------------- */ + +int FixQEqDielectric::modify_param(int narg, char **arg) +{ + int iarg = 0; + while (iarg < narg) { + if (strcmp(arg[iarg],"full") == 0) { + if (strcmp(arg[iarg+1],"yes") == 0) full = 1; + else if (strcmp(arg[iarg+1],"no") == 0) full = 0; + else error->all(FLERR,"Illegal fix_modify command for fix qeq/dielectric"); + iarg += 2; + } else if (strcmp(arg[iarg],"dielectrics") == 0) { + if (iarg+5 > narg) error->all(FLERR,"Illegal fix_modify command"); + double epsiloni=-1, areai=-1; + double ediff = force->numeric(FLERR,arg[iarg+1]); + double emean = force->numeric(FLERR,arg[iarg+2]); + if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = force->numeric(FLERR,arg[iarg+3]); + if (strcmp(arg[iarg+4],"NULL") != 0) areai = force->numeric(FLERR,arg[iarg+4]); + + set_dielectric_params(ediff, emean, epsiloni, areai); + + iarg += 5; + } else error->all(FLERR,"Illegal fix_modify command"); + } + + return iarg; +} + +/* ---------------------------------------------------------------------- */ + +int FixQEqDielectric::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int m; + for (m = 0; m < n; m++) buf[m] = atom->q[list[m]]; + return n; +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::unpack_forward_comm(int n, int first, double *buf) +{ + int i, m; + for (m = 0, i = first; m < n; m++, i++) atom->q[i] = buf[m]; +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays +------------------------------------------------------------------------- */ + +double FixQEqDielectric::memory_usage() +{ + double bytes = 0; + + return bytes; +} + +/* ---------------------------------------------------------------------- + allocate fictitious charge arrays +------------------------------------------------------------------------- */ + +void FixQEqDielectric::grow_arrays(int nmax) +{ + +} + +/* ---------------------------------------------------------------------- + copy values within fictitious charge arrays +------------------------------------------------------------------------- */ + +void FixQEqDielectric::copy_arrays(int i, int j, int delflag) +{ + +} + +/* ---------------------------------------------------------------------- + set dielectric params for the atom in the group +------------------------------------------------------------------------- */ + +void FixQEqDielectric::set_dielectric_params(double ediff, double emean, + double epsiloni, double areai) +{ + int i; + double *area = avec->area; + double *ed = avec->ed; + double *em = avec->em; + double *epsilon = avec->epsilon; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + ed[i] = ediff; + em[i] = emean; + if (areai > 0) area[i] = areai; + if (epsiloni > 0) epsilon[i] = epsiloni; + } + } +} + +/* ---------------------------------------------------------------------- + setup mapping from tags to indices in matrices/vectors +------------------------------------------------------------------------- */ +void FixQEqDielectric::setup_tags() +{ + // This function should not be put into init(), because the indices would change, so put it in pre_force_setup(). + // TODO: this function should be called each time the local index changes. +// if (atom->nlocal != atom->natoms) +// error->all(FLERR, "Single MPI only"); + + //TODO: suppose there are only 2 types of atoms, one for interface and one for ions. + + tagint* tag = atom->tag; + int* mask = atom->mask; + int nlocal = atom->nlocal; + + int i_interface = 0; + int i_ions = 0; + int t; + for (int i = 0; i < nlocal; ++i) { + // interface atoms + if (mask[i] & groupbit) { + t = tag[i]; + tags_interface[i_interface] = t; + if (t >= matrix_index_from_global_id.size()) + matrix_index_from_global_id.resize(t + 1); + matrix_index_from_global_id[t] = i_interface; + i_interface++; + } else { + // ions atoms + t = tag[i]; + tags_ions[i_ions] = t; + if (t >= matrix_index_from_global_id.size()) + matrix_index_from_global_id.resize(t + 1); + matrix_index_from_global_id[t] = i_ions; + i_ions++; + } + } + +// assert(i_interface == n_induced_charges); +// assert(i_ions == n_ions); + + // ewald calculations need the information of all tags +// ewaldDielectric->tags_interface = tags_interface; +// ewaldDielectric->tags_ions = tags_ions; +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::print_all_properties() +{ + // set epsilon_ions, em, ed, and q of interfaces + double *q_real = avec->q_real; + double *q = atom->q; + double *epsilon = avec->epsilon; + double *area = avec->area; + double *curvature = avec->curvature; + double **norm = avec->mu; + double *ed = avec->ed; + double *em = avec->em; + // debug file + FILE *debugFile = fopen("_debug.log", "w"); + fprintf(debugFile, "============ Ions Info =============\n"); + for (int i = 0; i < n_ions; ++i) { + int ni = get_index_ions(i); + fprintf(debugFile, "id: %d, local index: %d, real q: %f, rescaled q: %f, epsilon: %f\n", + atom->tag[ni], ni, q_real[ni], atom->q[ni], epsilon[ni]); + } + fprintf(debugFile, "============ Interface Info =============\n"); + for (int k = 0; k < n_induced_charges; ++k) { + int nk = get_index_interface(k); + fprintf(debugFile, "id: %d, local index: %d, xyz: %f %f %f, q: %f, scaled q: %f, area: %f, " + "curvature: %f, em: %f, ed: %f, norm: %f %f %f\n", + atom->tag[nk], nk, atom->x[nk][0], atom->x[nk][1], atom->x[nk][2], + q_real[nk], atom->q[nk], area[nk], curvature[nk], em[nk], ed[nk], + norm[nk][0], norm[nk][1], norm[nk][2]); + } + fclose(debugFile); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::setup_tags_local() +{ + // TODO: this function should be called each time the local index changes. + //TODO: suppose there are only 2 types of atoms, one for interface and one for ions. + tags_interface_local.clear(); + tags_ions_local.clear(); + int i_interface = 0; + int i_ions = 0; + for (int i = 0; i < atom->nlocal; ++i) { + // interface atoms + if ((atom->mask[i] & groupbit)) { + tags_interface_local.push_back(atom->tag[i]); + i_interface++; + } else { + // ions atoms + tags_ions_local.push_back(atom->tag[i]); + i_ions++; + } + } + n_induced_charges_local = i_interface; + n_ions_local = i_ions; + + // ewald calculations need the information of all tags +// ewaldDielectric->tags_interface_local = &tags_interface_local; +// ewaldDielectric->tags_ions_local = &tags_ions_local; +} + +/* ---------------------------------------------------------------------- + real Green's function +------------------------------------------------------------------------ */ + +double FixQEqDielectric::greens_real(double r) +{ + return erfc(g_ewald * r) / r; +} + +/* ---------------------------------------------------------------------- */ + +double FixQEqDielectric::grad_greens_real_factor(double r) +{ + double alpharij = g_ewald * r; + double factor = erfc(alpharij) + 2.0 * alpharij / MY_PIS * exp(-(alpharij * alpharij)); + double r3 = r*r*r; + return factor * (-1.0 / r3); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::calculate_grad_greens_real(double *vec, double dx, double dy, double dz) +{ + double r = sqrt(dx * dx + dy * dy + dz * dz); + double real = grad_greens_real_factor(r); + vec[0] = real * dx; + vec[1] = real * dy; + vec[2] = real * dz; +} + +/* ---------------------------------------------------------------------- */ + +double FixQEqDielectric::calculate_greens_ewald(double dx, double dy, double dz) +{ + double r = sqrt(dx * dx + dy * dy + dz * dz); + return greens_real(r);// + calculate_greens_ewald_reciprocal(dx, dy, dz); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::calculate_grad_greens_ewald(double *vec, double dx, double dy, double dz) + { + // real part of grad greens, must be first, because the vec is reset + calculate_grad_greens_real(vec, dx, dy, dz); + // kspace part, must be 2nd, because the vec is self additive. +// calculate_grad_greens_ewald_reciprocal(vec, dx, dy, dz); +} + +/* ---------------------------------------------------------------------- + given the matrix Rww, calculate inverse matrix (Rww + Rww^T)^(-1), +------------------------------------------------------------------------ */ + +void FixQEqDielectric::calculate_inverse_matrix(double **Rww, double **inverse_matrix, int M) +{ + // convel rt into gsmatrix + gsl_matrix *matrixRww = gsl_matrix_alloc(M, M); + for (int k = 0; k < M; ++k) { + for (int l = 0; l < M; ++l) { + gsl_matrix_set(matrixRww, k, l, Rww[k][l]); + } + } + + // QT: = Rww + Rww ^ T Matrix + gsl_matrix *QT = gsl_matrix_alloc(M, M); + gsl_matrix_transpose_memcpy(QT, matrixRww); + gsl_matrix_add(QT, matrixRww); + + + int sign; + gsl_permutation *p = gsl_permutation_alloc(M); + gsl_linalg_LU_decomp(QT, p, &sign); + gsl_linalg_LU_invert(QT, p, matrixRww); // here matrixRww to store inverse_matrix + + // convert back + for (int k = 0; k < M; ++k) { + for (int l = 0; l < M; ++l) { + inverse_matrix[k][l] = gsl_matrix_get(matrixRww, k, l); + } + } + + gsl_matrix_free(QT); + gsl_permutation_free(p); + gsl_matrix_free(matrixRww); +} + +/* ---------------------------------------------------------------------- */ + +void FixQEqDielectric::calculate_matrix_multiply_vector(double **matrix, + double *in_vec, double *out_vec, int M) +{ + #pragma parallel omp for + for (int k = 0; k < M; ++k) { + double temp = 0.0; + for (int l = 0; l < M; ++l) { + temp += matrix[k][l] * in_vec[l]; + } + out_vec[k] = temp; + } +} + +/* ---------------------------------------------------------------------- */ + +double FixQEqDielectric::calculate_greens_ewald_self_vertex(double area) +{ + // this term is very important, cannot be set to zero. see .pptx + double corr = 2.0 * MY_PIS / sqrt(area); + double self_energy = -2.0 * g_ewald / MY_PIS; + return corr + self_energy;// + calculate_greens_ewald_reciprocal(0, 0, 0); +} + +/* ---------------------------------------------------------------------- */ + +double FixQEqDielectric::calculate_ndotgreens_ewald_self_vertex(double area, double curvature) +{ + // this term is important, cannot be set to zero. see .pptx + // curvature = 1 / R, minus if norm is inverse of R to center. + // Honghao Li's result, the same with Erik's paper, J Chem Phys 140 064903 (2014) + return curvature * MY_PIS / sqrt(area); +} + diff --git a/src/USER-DIELECTRIC/fix_qeq_dielectric.h b/src/USER-DIELECTRIC/fix_qeq_dielectric.h new file mode 100644 index 0000000000..ae573bac55 --- /dev/null +++ b/src/USER-DIELECTRIC/fix_qeq_dielectric.h @@ -0,0 +1,153 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(qeq/dielectric,FixQEqDielectric) + +#else + +#ifndef LMP_FIX_QEQ_DIELECTRIC_H +#define LMP_FIX_QEQ_DIELECTRIC_H + +#include +#include "atom.h" +#include "fix.h" +//#include "ewald_dielectric.h" + +namespace LAMMPS_NS { + +class FixQEqDielectric : public Fix { + public: + FixQEqDielectric(class LAMMPS *, int, char **); + ~FixQEqDielectric(); + int setmask(); + void init(); + void init_list(int,class NeighList *); + void setup_pre_force(int); + void pre_force(int); + int modify_param(int, char**); + + void setup_pre_force_respa(int, int); + void pre_force_respa(int, int, int); + void min_setup_pre_force(int); + void min_pre_force(int); + + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + void grow_arrays(int); + void copy_arrays(int, int, int); + double memory_usage(); + + void calculate_Rww_full(); + void calculate_Rww_cutoff(); + + void calculate_qiRqw_full(); + void calculate_qiRqw_cutoff(); + + void compute_induced_charges(); + void set_dielectric_params(double, double, double, double); + + protected: + class AtomVecDielectric* avec; + + int nevery; + int nlevels_respa; + class NeighList *list; + + bigint ngroup; + int full; + int includingG3ww; + + // Ewald-related functions and data structures +// class EwaldDielectric *ewaldDielectric; + + // interface term, ww + // matrix M*M + double **inverse_matrix; + double **G1ww, **ndotGww, **G2ww, **G3ww, **Rww; + double ***gradG1ww; //matrix of vectors M*M*3 + double *q_induced_charges; + + // qw, qq ion-interface terms + double *qiRqwVector; + double **G1qq_real, **G1qw_real; + double ***gradG1wq_real; //matrix of vectors M*M*3 + double *sum2G2wq; + // temp data for each steps + double *sum1G2qw; + double *sum1G3qw; + double *sum1G1qw_epsilon; + double *sum2ndotGwq_epsilon; + + double greens_real(double); + double grad_greens_real_factor(double); + void calculate_grad_greens_real(double *, double, double, double); + double calculate_greens_ewald(double, double, double); + void calculate_grad_greens_ewald(double *, double, double, double); + void calculate_inverse_matrix(double **, double **, int); + void calculate_matrix_multiply_vector(double **, double *, double *, int); + double calculate_greens_ewald_self_vertex(double); + double calculate_ndotgreens_ewald_self_vertex(double, double); + double g_ewald; + + private: + // to store the global id (tag) of different particles. + int n_induced_charges, n_ions; + int *tags_interface, *tags_ions; + void setup_tags(); + inline int get_index_interface(int num) { + int id = tags_interface[num]; // id = fixed global id + return atom->map(id); + }; + inline int get_index_ions(int num) { + int id = tags_ions[num]; // id = fixed global id + return atom->map(id); + }; + void change_all_ions_q_to_real_q(); + void change_all_ions_q_to_scaled_q(); + + int n_induced_charges_local, n_ions_local; + std::vector tags_interface_local, tags_ions_local; + std::vector matrix_index_from_local_index; + std::vector matrix_index_from_global_id; + void setup_tags_local(); + inline int get_index_interface_local(int num) { + int id = tags_interface_local[num]; // id = fixed global id + return atom->map(id); + }; + inline int get_index_ions_local(int num) { + int id = tags_ions_local[num]; // id = fixed global id + return atom->map(id); + }; + + inline int get_matrix_index_from_local_index(int k) { + // for atom with local index k, what is the index in matrix (Rww + RwwT)^-1 for the whole system. + // notice this local index include ghost index too! + int id = atom->tag[k]; // id = fixed global id + return matrix_index_from_global_id[id]; + } + + // read all em, ed, norm of interface, and epsilon of ions + void print_all_properties(); + +}; + +} + +#endif +#endif diff --git a/src/USER-DIELECTRIC/msm_dielectric.cpp b/src/USER-DIELECTRIC/msm_dielectric.cpp new file mode 100644 index 0000000000..89308e5be6 --- /dev/null +++ b/src/USER-DIELECTRIC/msm_dielectric.cpp @@ -0,0 +1,366 @@ +/* ---------------------------------------------------------------------- + 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 authors: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include "msm_dielectric.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "gridcomm.h" +#include "neighbor.h" +#include "force.h" +#include "pair.h" +#include "domain.h" +#include "memory.h" +#include "error.h" + +#include "math_const.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +enum{REVERSE_RHO,REVERSE_AD,REVERSE_AD_PERATOM}; +enum{FORWARD_RHO,FORWARD_AD,FORWARD_AD_PERATOM}; +/* ---------------------------------------------------------------------- */ + +MSMDielectric::MSMDielectric(LAMMPS *lmp) : MSM(lmp) +{ + efield = NULL; + phi = NULL; +} + +/* ---------------------------------------------------------------------- + free all memory +------------------------------------------------------------------------- */ + +MSMDielectric::~MSMDielectric() +{ + memory->destroy(efield); + memory->destroy(phi); +} + +/* ---------------------------------------------------------------------- + called once before run +------------------------------------------------------------------------- */ + +void MSMDielectric::init() +{ + MSM::init(); + + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"pppm/dielectric requires atom style dielectric"); +} + +/* ---------------------------------------------------------------------- + compute the MSMDielectric long-range force, energy, virial +------------------------------------------------------------------------- */ + +void MSMDielectric::compute(int eflag, int vflag) +{ + int i,j; + + // set energy/virial flags + + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = evflag_atom = eflag_global = vflag_global = + eflag_atom = vflag_atom = eflag_either = vflag_either = 0; + + if (scalar_pressure_flag && vflag_either) { + if (vflag_atom) + error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' to obtain " + "per-atom virial with kspace_style MSMDielectric"); + + // must switch on global energy computation if not already on + + if (eflag == 0 || eflag == 2) { + eflag++; + ev_setup(eflag,vflag); + } + } + + // if atom count has changed, update qsum and qsqsum + + if (atom->natoms != natoms_original) { + qsum_qsq(); + natoms_original = atom->natoms; + } + + // return if there are no charges + + if (qsqsum == 0.0) return; + + // invoke allocate_peratom() if needed for first time + + if (vflag_atom && !peratom_allocate_flag) { + allocate_peratom(); + cg_peratom_all->ghost_notify(); + cg_peratom_all->setup(); + for (int n=0; nghost_notify(); + cg_peratom[n]->setup(); + } + } + + // convert atoms from box to lamda coords + + if (triclinic) + domain->x2lamda(atom->nlocal); + + // extend size of per-atom arrays if necessary + + if (atom->nmax > nmax) { + memory->destroy(part2grid); + memory->destroy(efield); + nmax = atom->nmax; + memory->create(part2grid,nmax,3,"msm:part2grid"); + memory->create(efield,nmax,3,"msm:efield"); + } + + // find grid points for all my particles + // map my particle charge onto my local 3d density grid (aninterpolation) + + particle_map(); + make_rho(); + + // all procs reverse communicate charge density values from + // their ghost grid points + // to fully sum contribution in their 3d grid + + current_level = 0; + cg_all->reverse_comm(this,REVERSE_RHO); + + // forward communicate charge density values to fill ghost grid points + // compute direct sum interaction and then restrict to coarser grid + + for (int n=0; n<=levels-2; n++) { + if (!active_flag[n]) continue; + current_level = n; + cg[n]->forward_comm(this,FORWARD_RHO); + + direct(n); + restriction(n); + } + + // compute direct interation for top grid level for nonperiodic + // and for second from top grid level for periodic + + if (active_flag[levels-1]) { + if (domain->nonperiodic) { + current_level = levels-1; + cg[levels-1]->forward_comm(this,FORWARD_RHO); + direct_top(levels-1); + cg[levels-1]->reverse_comm(this,REVERSE_AD); + if (vflag_atom) + cg_peratom[levels-1]->reverse_comm(this,REVERSE_AD_PERATOM); + } else { + // Here using MPI_Allreduce is cheaper than using commgrid + grid_swap_forward(levels-1,qgrid[levels-1]); + direct(levels-1); + grid_swap_reverse(levels-1,egrid[levels-1]); + current_level = levels-1; + if (vflag_atom) + cg_peratom[levels-1]->reverse_comm(this,REVERSE_AD_PERATOM); + } + } + + // prolongate energy/virial from coarser grid to finer grid + // reverse communicate from ghost grid points to get full sum + + for (int n=levels-2; n>=0; n--) { + if (!active_flag[n]) continue; + prolongation(n); + + current_level = n; + cg[n]->reverse_comm(this,REVERSE_AD); + + // extra per-atom virial communication + + if (vflag_atom) + cg_peratom[n]->reverse_comm(this,REVERSE_AD_PERATOM); + } + + // all procs communicate E-field values + // to fill ghost cells surrounding their 3d bricks + + current_level = 0; + cg_all->forward_comm(this,FORWARD_AD); + + // extra per-atom energy/virial communication + + if (vflag_atom) + cg_peratom_all->forward_comm(this,FORWARD_AD_PERATOM); + + // calculate the force on my particles (interpolation) + + fieldforce(); + + // calculate the per-atom energy/virial for my particles + + if (evflag_atom) fieldforce_peratom(); + + // sum global energy across procs and add in self-energy term + + const double qscale = qqrd2e * scale; + + if (eflag_global) { + double energy_all; + MPI_Allreduce(&energy,&energy_all,1,MPI_DOUBLE,MPI_SUM,world); + energy = energy_all; + + double e_self = qsqsum*gamma(0.0)/cutoff; + energy -= e_self; + energy *= 0.5*qscale; + } + + // total long-range virial + + if (vflag_global && !scalar_pressure_flag) { + double virial_all[6]; + MPI_Allreduce(virial,virial_all,6,MPI_DOUBLE,MPI_SUM,world); + for (i = 0; i < 6; i++) virial[i] = 0.5*qscale*virial_all[i]; + } + + // fast compute of scalar pressure (if requested) + + if (scalar_pressure_flag && vflag_global) + for (i = 0; i < 3; i++) virial[i] = energy/3.0; + + // per-atom energy/virial + // energy includes self-energy correction + + if (evflag_atom) { + double *q = atom->q; + int nlocal = atom->nlocal; + + if (eflag_atom) { + for (i = 0; i < nlocal; i++) { + eatom[i] -= q[i]*q[i]*gamma(0.0)/cutoff; + eatom[i] *= 0.5*qscale; + } + } + + if (vflag_atom) { + for (i = 0; i < nlocal; i++) + for (j = 0; j < 6; j++) vatom[i][j] *= 0.5*qscale; + } + } + + // convert atoms back from lamda to box coords + + if (triclinic) + domain->lamda2x(atom->nlocal); +} + +/* ---------------------------------------------------------------------- + interpolate from grid to get force on my particles +------------------------------------------------------------------------- */ + +void MSMDielectric::fieldforce() +{ + //fprintf(screen,"MSM interpolation\n\n"); + + double ***egridn = egrid[0]; + + int i,l,m,n,nx,ny,nz,mx,my,mz; + double dx,dy,dz; + double phi_x,phi_y,phi_z,u; + double dphi_x,dphi_y,dphi_z; + double ekx,eky,ekz,etmp; + + + // loop over my charges, interpolate electric field from nearby grid points + // (nx,ny,nz) = global coords of grid pt to "lower left" of charge + // (dx,dy,dz) = distance to "lower left" grid pt + // (mx,my,mz) = global coords of moving stencil pt + // ek = 3 components of E-field on particle + + double *q = atom->q; + double **x = atom->x; + double **f = atom->f; + double *eps = avec->epsilon; + int nlocal = atom->nlocal; + + for (i = 0; i < nlocal; i++) { + nx = part2grid[i][0]; + ny = part2grid[i][1]; + nz = part2grid[i][2]; + dx = nx - (x[i][0]-boxlo[0])*delxinv[0]; + dy = ny - (x[i][1]-boxlo[1])*delyinv[0]; + dz = nz - (x[i][2]-boxlo[2])*delzinv[0]; + + compute_phis_and_dphis(dx,dy,dz); + + u = ekx = eky = ekz = 0.0; + for (n = nlower; n <= nupper; n++) { + mz = n+nz; + phi_z = phi1d[2][n]; + dphi_z = dphi1d[2][n]; + for (m = nlower; m <= nupper; m++) { + my = m+ny; + phi_y = phi1d[1][m]; + dphi_y = dphi1d[1][m]; + for (l = nlower; l <= nupper; l++) { + mx = l+nx; + phi_x = phi1d[0][l]; + dphi_x = dphi1d[0][l]; + etmp = egridn[mz][my][mx]; + u += phi_z*phi_y*phi_x*etmp; + ekx += dphi_x*phi_y*phi_z*etmp; + eky += phi_x*dphi_y*phi_z*etmp; + ekz += phi_x*phi_y*dphi_z*etmp; + } + } + } + + ekx *= delxinv[0]; + eky *= delyinv[0]; + ekz *= delzinv[0]; + + // electrical potential + + phi[i] = u; + + // effectively divide by length for a triclinic system + + if (triclinic) { + double tmp[3]; + tmp[0] = ekx; + tmp[1] = eky; + tmp[2] = ekz; + x2lamdaT(&tmp[0],&tmp[0]); + ekx = tmp[0]; + eky = tmp[1]; + ekz = tmp[2]; + } + + // convert E-field to force + const double efactor = scale * eps[i]; + efield[i][0] = efactor*ekx; + efield[i][1] = efactor*eky; + efield[i][2] = efactor*ekz; + + const double qfactor = qqrd2e*scale*q[i]; + f[i][0] += qfactor*ekx; + f[i][1] += qfactor*eky; + f[i][2] += qfactor*ekz; + } +} diff --git a/src/USER-DIELECTRIC/msm_dielectric.h b/src/USER-DIELECTRIC/msm_dielectric.h new file mode 100644 index 0000000000..2dbac12704 --- /dev/null +++ b/src/USER-DIELECTRIC/msm_dielectric.h @@ -0,0 +1,55 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef KSPACE_CLASS + +KSpaceStyle(msm/dielectric,MSMDielectric) + +#else + +#ifndef LMP_MSM_DIELECTRIC_H +#define LMP_MSM_DIELECTRIC_H + +#include "msm.h" + +namespace LAMMPS_NS { + +class MSMDielectric : public MSM { + public: + MSMDielectric(class LAMMPS *); + virtual ~MSMDielectric(); + virtual void init(); + virtual void compute(int, int); + void fieldforce(); + + double** efield; + double* phi; + + protected: + class AtomVecDielectric* avec; +}; + +} + +#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. + +*/ diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp new file mode 100644 index 0000000000..3d76d475c1 --- /dev/null +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp @@ -0,0 +1,177 @@ +/* ---------------------------------------------------------------------- + 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: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_coul_cut_dielectric.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "memory.h" +#include "math_const.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define EPSILON 1e-6 + +/* ---------------------------------------------------------------------- */ + +PairCoulCutDielectric::PairCoulCutDielectric(LAMMPS *lmp) : PairCoulCut(lmp) +{ + efield = NULL; + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairCoulCutDielectric::~PairCoulCutDielectric() +{ + memory->destroy(efield); +} + +/* ---------------------------------------------------------------------- */ + +void PairCoulCutDielectric::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,ecoul,fpair; + double fpair_i,fpair_j; + double rsq,r2inv,rinv,forcecoul,factor_coul,efield_i; + int *ilist,*jlist,*numneigh,**firstneigh; + + if (atom->nmax > nmax) { + memory->destroy(efield); + nmax = atom->nmax; + memory->create(efield,nmax,3,"pair:efield"); + } + + ecoul = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + double *q_real = avec->q_real; + double* eps = avec->epsilon; + double** norm = avec->mu; + double* curvature = avec->curvature; + double* area = avec->area; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + etmp = eps[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + double curvature_threshold = sqrt(area[i]); + if (curvature[i] < curvature_threshold) { + double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; + efield[i][0] = sf*norm[i][0]; + efield[i][1] = sf*norm[i][1]; + efield[i][2] = sf*norm[i][2]; + } else { + efield[i][0] = efield[i][1] = efield[i][2] = 0; + } + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_coul = special_coul[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype] && rsq > EPSILON) { + r2inv = 1.0/rsq; + rinv = sqrt(r2inv); + efield_i = qqrd2e * scale[itype][jtype] * q[j]*rinv; + forcecoul = qtmp*efield_i; + + fpair_i = factor_coul*etmp*forcecoul*r2inv; + f[i][0] += delx*fpair_i; + f[i][1] += dely*fpair_i; + f[i][2] += delz*fpair_i; + + efield_i *= (factor_coul*etmp*r2inv); + efield[i][0] += delx*efield_i; + efield[i][1] += dely*efield_i; + efield[i][2] += delz*efield_i; + + if (newton_pair && j >= nlocal) { + fpair_j = factor_coul*eps[j]*forcecoul*r2inv; + f[j][0] -= delx*fpair_j; + f[j][1] -= dely*fpair_j; + f[j][2] -= delz*fpair_j; + } + + if (eflag) { + ecoul = factor_coul * qqrd2e * scale[itype][jtype] * qtmp*q[j]*(etmp+eps[j])*rinv; + ecoul *= 0.5; + } + if (evflag) ev_tally_full(i,0.0,ecoul,fpair_i,delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairCoulCutDielectric::init_style() +{ + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"Pair coul/cut/dielectric requires atom style dielectric"); + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; +} + diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h new file mode 100644 index 0000000000..fee444536a --- /dev/null +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h @@ -0,0 +1,62 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(coul/cut/dielectric,PairCoulCutDielectric) + +#else + +#ifndef LMP_PAIR_COUL_CUT_DIELECTRIC_H +#define LMP_PAIR_COUL_CUT_DIELECTRIC_H + +#include "pair_coul_cut.h" + +namespace LAMMPS_NS { + +class PairCoulCutDielectric : public PairCoulCut { + public: + PairCoulCutDielectric(class LAMMPS *); + virtual ~PairCoulCutDielectric(); + virtual void compute(int, int); + void init_style(); + + double** efield; + + protected: + class AtomVecDielectric* avec; + int nmax; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair style coul/cut/dielectric requires atom attribute q + +The atom style defined does not have these attributes. + +*/ diff --git a/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp new file mode 100644 index 0000000000..6a87e39fe0 --- /dev/null +++ b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp @@ -0,0 +1,236 @@ +/* ---------------------------------------------------------------------- + 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: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_coul_long_dielectric.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "force.h" +#include "kspace.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "update.h" +#include "integrate.h" +#include "respa.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 + +/* ---------------------------------------------------------------------- */ + +PairCoulLongDielectric::PairCoulLongDielectric(LAMMPS *lmp) : PairCoulLong(lmp) +{ + efield = NULL; + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairCoulLongDielectric::~PairCoulLongDielectric() +{ + memory->destroy(efield); +} + +/* ---------------------------------------------------------------------- */ + +void PairCoulLongDielectric::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itable,itype,jtype; + double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,ecoul; + double fpair_i,fpair_j; + double fraction,table; + double r,r2inv,forcecoul,factor_coul; + double grij,expm2,prefactor,t,erfc,prefactorE,efield_i; + int *ilist,*jlist,*numneigh,**firstneigh; + double rsq; + + ecoul = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + if (atom->nmax > nmax) { + memory->destroy(efield); + nmax = atom->nmax; + memory->create(efield,nmax,3,"pair:efield"); + } + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + double** norm = avec->mu; + double* curvature = avec->curvature; + double* area = avec->area; + double *eps = avec->epsilon; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + etmp = eps[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + double curvature_threshold = sqrt(area[i]); + if (curvature[i] < curvature_threshold) { + double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; + efield[i][0] = sf*norm[i][0]; + efield[i][1] = sf*norm[i][1]; + efield[i][2] = sf*norm[i][2]; + } else { + efield[i][0] = efield[i][1] = efield[i][2] = 0; + } + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_coul = special_coul[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cut_coulsq) { + r2inv = 1.0/rsq; + if (!ncoultablebits || rsq <= tabinnersq) { + r = sqrt(rsq); + grij = g_ewald * r; + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor = qqrd2e * scale[itype][jtype] * qtmp*q[j]/r; + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + + prefactorE = qqrd2e * scale[itype][jtype] * q[j]/r; + efield_i = prefactorE * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) efield_i -= (1.0-factor_coul)*prefactorE; + + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + forcecoul = scale[itype][jtype] * qtmp*q[j] * table; + efield_i = scale[itype][jtype] * q[j] * table; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = scale[itype][jtype] * qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + + prefactorE = scale[itype][jtype] * q[j] * table; + efield_i -= (1.0-factor_coul)*prefactorE; + } + } + + fpair_i = etmp * forcecoul * r2inv; + f[i][0] += delx*fpair_i; + f[i][1] += dely*fpair_i; + f[i][2] += delz*fpair_i; + + efield_i *= (etmp*r2inv); + efield[i][0] += delx*efield_i; + efield[i][1] += dely*efield_i; + efield[i][2] += delz*efield_i; + + if (newton_pair && j >= nlocal) { + fpair_j = eps[j] * forcecoul * r2inv; + f[j][0] -= delx*fpair_j; + f[j][1] -= dely*fpair_j; + f[j][2] -= delz*fpair_j; + } + + if (eflag) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*(etmp+eps[j])*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = scale[itype][jtype] * qtmp*q[j]*(etmp+eps[j]) * table; + } + ecoul *= 0.5; + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } + + if (evflag) ev_tally_full(i,0.0,ecoul,fpair_i,delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairCoulLongDielectric::init_style() +{ + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"Pair coul/long/dielectric requires atom style dielectric"); + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; + + cut_coulsq = cut_coul * cut_coul; + + // insure use of KSpace long-range solver, set g_ewald + + if (force->kspace == NULL) + error->all(FLERR,"Pair style requires a KSpace style"); + g_ewald = force->kspace->g_ewald; + + // setup force tables + + if (ncoultablebits) init_tables(cut_coul,NULL); +} + diff --git a/src/USER-DIELECTRIC/pair_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_coul_long_dielectric.h new file mode 100644 index 0000000000..dc4d51bbce --- /dev/null +++ b/src/USER-DIELECTRIC/pair_coul_long_dielectric.h @@ -0,0 +1,67 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(coul/long/dielectric,PairCoulLongDielectric) + +#else + +#ifndef LMP_PAIR_COUL_LONG_DIELECTRIC_H +#define LMP_PAIR_COUL_LONG_DIELECTRIC_H + +#include "pair_coul_long.h" + +namespace LAMMPS_NS { + +class PairCoulLongDielectric : public PairCoulLong { + public: + PairCoulLongDielectric(class LAMMPS *); + ~PairCoulLongDielectric(); + virtual void compute(int, int); + virtual void init_style(); + + double **efield; + + protected: + class AtomVecDielectric* avec; + int nmax; + +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair style coul/long/dielectric requires atom attribute q + +The atom style defined does not have this attribute. + +E: Pair style requires a KSpace style + +No kspace style is defined. + +*/ diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp new file mode 100644 index 0000000000..51be72acaa --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp @@ -0,0 +1,240 @@ +/* ---------------------------------------------------------------------- + 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: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_lj_cut_coul_cut_dielectric.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define EPSILON 1e-6 + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulCutDielectric::PairLJCutCoulCutDielectric(LAMMPS *lmp) : PairLJCutCoulCut(lmp) +{ + efield = NULL; + epot = NULL; + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulCutDielectric::~PairLJCutCoulCutDielectric() +{ + memory->destroy(efield); + memory->destroy(epot); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulCutDielectric::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double fpair_i,fpair_j; + double rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj,efield_i,epot_i; + int *ilist,*jlist,*numneigh,**firstneigh; + + if (atom->nmax > nmax) { + memory->destroy(efield); + memory->destroy(epot); + nmax = atom->nmax; + memory->create(efield,nmax,3,"pair:efield"); + memory->create(epot,nmax,"pair:epot"); + } + + evdwl = ecoul = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + double *q_real = avec->q_real; + double* eps = avec->epsilon; + double** norm = avec->mu; + double* curvature = avec->curvature; + double* area = avec->area; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + etmp = eps[i]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + double curvature_threshold = sqrt(area[i]); + if (curvature[i] < curvature_threshold) { + double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; + efield[i][0] = sf*norm[i][0]; + efield[i][1] = sf*norm[i][1]; + efield[i][2] = sf*norm[i][2]; + } else { + efield[i][0] = efield[i][1] = efield[i][2] = 0; + } + + epot[i] = 0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[sbmask(j)]; + factor_coul = special_coul[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r2inv = 1.0/rsq; + + if (rsq < cut_coulsq[itype][jtype] && rsq > EPSILON) { + efield_i = q[j]*sqrt(r2inv); + forcecoul = qqrd2e * qtmp*efield_i; + epot_i = efield_i; + } else epot_i = efield_i = forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fpair_i = (factor_coul*etmp*forcecoul + factor_lj*forcelj) * r2inv; + f[i][0] += delx*fpair_i; + f[i][1] += dely*fpair_i; + f[i][2] += delz*fpair_i; + + efield_i *= (factor_coul*etmp*r2inv); + efield[i][0] += delx*efield_i; + efield[i][1] += dely*efield_i; + efield[i][2] += delz*efield_i; + + epot[i] += epot_i; + + if (newton_pair && j >= nlocal) { + fpair_j = (factor_coul*eps[j]*forcecoul + factor_lj*forcelj) * r2inv; + f[j][0] -= delx*fpair_j; + f[j][1] -= dely*fpair_j; + f[j][2] -= delz*fpair_j; + } + + if (eflag) { + if (rsq < cut_coulsq[itype][jtype]) { + ecoul = factor_coul * qqrd2e * qtmp*q[j]*(etmp+eps[j])*sqrt(r2inv); + } else ecoul = 0.0; + ecoul *= 0.5; + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - + offset[itype][jtype]; + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (evflag) ev_tally_full(i,evdwl,ecoul,fpair_i,delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairLJCutCoulCutDielectric::init_style() +{ + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"Pair lj/cut/coul/cut/dielectric requires atom style dielectric"); + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutCoulCutDielectric::single(int i, int j, int itype, int jtype, + double rsq, + double factor_coul, double factor_lj, + double &fforce) +{ + double r2inv,r6inv,forcecoul,forcelj,phicoul,ei,ej,philj; + double* eps = avec->epsilon; + + r2inv = 1.0/rsq; + if (rsq < cut_coulsq[itype][jtype]) + forcecoul = force->qqrd2e * atom->q[i]*atom->q[j]*sqrt(r2inv)*eps[i]; + else forcecoul = 0.0; + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else forcelj = 0.0; + fforce = (factor_coul*forcecoul + factor_lj*forcelj) * r2inv; + + double eng = 0.0; + if (eps[i] == 1) ei = 0; + else ei = eps[i]; + if (eps[j] == 1) ej = 0; + else ej = eps[j]; + if (rsq < cut_coulsq[itype][jtype]) { + phicoul = force->qqrd2e * atom->q[i]*atom->q[j]*sqrt(r2inv); + phicoul *= 0.5*(ei+ej); + eng += factor_coul*phicoul; + } + if (rsq < cut_ljsq[itype][jtype]) { + philj = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - + offset[itype][jtype]; + eng += factor_lj*philj; + } + + return eng; +} \ No newline at end of file diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h new file mode 100644 index 0000000000..54ec2a6100 --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h @@ -0,0 +1,64 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/coul/cut/dielectric,PairLJCutCoulCutDielectric) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_CUT_DIELECTRIC_H +#define LMP_PAIR_LJ_CUT_COUL_CUT_DIELECTRIC_H + +#include "pair_lj_cut_coul_cut.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulCutDielectric : public PairLJCutCoulCut { + public: + PairLJCutCoulCutDielectric(class LAMMPS *); + virtual ~PairLJCutCoulCutDielectric(); + virtual void compute(int, int); + virtual double single(int, int, int, int, double, double, double, double &); + void init_style(); + + double** efield; + double* epot; + + protected: + class AtomVecDielectric* avec; + int nmax; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair style lj/cut/coul/cut/dielectric requires atom attribute q + +The atom style defined does not have this attribute. + +*/ diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp new file mode 100644 index 0000000000..6056c37cb8 --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp @@ -0,0 +1,232 @@ +/* ---------------------------------------------------------------------- + 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: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_lj_cut_coul_cut_dielectric_omp.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define EPSILON 1e-6 + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulCutDielectricOMP::PairLJCutCoulCutDielectricOMP(LAMMPS *lmp) : + PairLJCutCoulCutDielectric(lmp), ThrOMP(lmp, THR_PAIR) +{ + +} + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulCutDielectricOMP::~PairLJCutCoulCutDielectricOMP() +{ +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulCutDielectricOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + } else evflag = vflag_fdotr = 0; + + if (atom->nmax > nmax) { + memory->destroy(efield); + memory->destroy(epot); + nmax = atom->nmax; + memory->create(efield,nmax,3,"pair:efield"); + memory->create(epot,nmax,"pair:epot"); + } + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(none) shared(eflag,vflag) +#endif + { + int ifrom, ito, tid; + + loop_setup_thr(ifrom, ito, tid, inum, nthreads); + ThrData *thr = fix->get_thr(tid); + thr->timer(Timer::START); + ev_setup_thr(eflag, vflag, nall, eatom, vatom, thr); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(ifrom, ito, thr); + else eval<1,1,0>(ifrom, ito, thr); + } else { + if (force->newton_pair) eval<1,0,1>(ifrom, ito, thr); + else eval<1,0,0>(ifrom, ito, thr); + } + } else { + if (force->newton_pair) eval<0,0,1>(ifrom, ito, thr); + else eval<0,0,0>(ifrom, ito, thr); + } + + thr->timer(Timer::PAIR); + reduce_thr(this, eflag, vflag, thr); + } // end of omp parallel region +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData * const thr) +{ + int i,j,ii,jj,jnum,itype,jtype,itable; + double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double fpair_i,fpair_j; + double r,rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc,prefactorE,efield_i,epot_i; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0]; + dbl3_t * _noalias const f = (dbl3_t *) thr->get_f()[0]; + const double * _noalias const q = atom->q; + const double * _noalias const eps = avec->epsilon; + const dbl3_t * _noalias const norm = (dbl3_t *) avec->mu[0]; + const double * _noalias const curvature = avec->curvature; + const double * _noalias const area = avec->area; + const int * _noalias const type = atom->type; + const int nlocal = atom->nlocal; + const double * _noalias const special_coul = force->special_coul; + const double * _noalias const special_lj = force->special_lj; + const double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp,extmp,eytmp,eztmp; + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + qtmp = q[i]; + xtmp = x[i].x; + ytmp = x[i].y; + ztmp = x[i].z; + etmp = eps[i]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + extmp=eytmp=eztmp=0.0; + + // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + double curvature_threshold = sqrt(area[i]); + if (curvature[i] < curvature_threshold) { + double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; + efield[i][0] = sf*norm[i].x; + efield[i][1] = sf*norm[i].y; + efield[i][2] = sf*norm[i].z; + } else { + efield[i][0] = efield[i][1] = efield[i][2] = 0; + } + + epot[i] = 0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[sbmask(j)]; + factor_coul = special_coul[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j].x; + dely = ytmp - x[j].y; + delz = ztmp - x[j].z; + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r2inv = 1.0/rsq; + + if (rsq < cut_coulsq[itype][jtype] && rsq > EPSILON) { + efield_i = q[j]*sqrt(r2inv); + forcecoul = qqrd2e * qtmp*efield_i; + epot_i = efield_i; + } else epot_i = efield_i = forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fpair_i = (factor_coul*etmp*forcecoul + factor_lj*forcelj) * r2inv; + + fxtmp += delx*fpair_i; + fytmp += dely*fpair_i; + fztmp += delz*fpair_i; + + efield_i *= (factor_coul*etmp*r2inv); + extmp += delx*efield_i; + eytmp += dely*efield_i; + eztmp += delz*efield_i; + epot[i] += epot_i; + + if (NEWTON_PAIR || j >= nlocal) { + fpair_j = (factor_coul*eps[j]*forcecoul + factor_lj*forcelj) * r2inv; + f[j].x -= delx*fpair_j; + f[j].y -= dely*fpair_j; + f[j].z -= delz*fpair_j; + } + + if (EFLAG) { + if (rsq < cut_coulsq[itype][jtype]) { + ecoul = factor_coul * qqrd2e * qtmp*q[j]*(etmp+eps[j])*sqrt(r2inv); + } else ecoul = 0.0; + ecoul *= 0.5; + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - + offset[itype][jtype]; + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fpair,delx,dely,delz,thr); + } + } + f[i].x += fxtmp; + f[i].y += fytmp; + f[i].z += fztmp; + efield[i][0] += extmp; + efield[i][1] += eytmp; + efield[i][2] += eztmp; + } +} + diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h new file mode 100644 index 0000000000..f84aa91c0c --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h @@ -0,0 +1,60 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/coul/cut/dielectric/omp,PairLJCutCoulCutDielectricOMP) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_CUT_DIELECTRIC_OMP_H +#define LMP_PAIR_LJ_CUT_COUL_CUT_DIELECTRIC_OMP_H + +#include "pair_lj_cut_coul_cut_dielectric.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulCutDielectricOMP : public PairLJCutCoulCutDielectric, public ThrOMP { + public: + PairLJCutCoulCutDielectricOMP(class LAMMPS *); + virtual ~PairLJCutCoulCutDielectricOMP(); + virtual void compute(int, int); + + protected: + template + void eval(int ifrom, int ito, ThrData * const thr); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair style lj/cut/coul/cut/dielectric requires atom attribute q + +The atom style defined does not have this attribute. + +*/ diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp new file mode 100644 index 0000000000..c094aff898 --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp @@ -0,0 +1,249 @@ +/* ---------------------------------------------------------------------- + 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: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_lj_cut_coul_debye_dielectric.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define EPSILON 1e-6 + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulDebyeDielectric::PairLJCutCoulDebyeDielectric(LAMMPS *lmp) : PairLJCutCoulDebye(lmp) +{ + efield = NULL; + epot = NULL; + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulDebyeDielectric::~PairLJCutCoulDebyeDielectric() +{ + memory->destroy(efield); + memory->destroy(epot); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulDebyeDielectric::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double fpair_i,fpair_j; + double rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj,efield_i,epot_i; + double r,rinv,screening; + int *ilist,*jlist,*numneigh,**firstneigh; + + if (atom->nmax > nmax) { + memory->destroy(efield); + memory->destroy(epot); + nmax = atom->nmax; + memory->create(efield,nmax,3,"pair:efield"); + memory->create(epot,nmax,"pair:epot"); + } + + evdwl = ecoul = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + double *q_real = avec->q_real; + double* eps = avec->epsilon; + double** norm = avec->mu; + double* curvature = avec->curvature; + double* area = avec->area; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + etmp = eps[i]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + double curvature_threshold = sqrt(area[i]); + if (curvature[i] < curvature_threshold) { + double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; + efield[i][0] = sf*norm[i][0]; + efield[i][1] = sf*norm[i][1]; + efield[i][2] = sf*norm[i][2]; + } else { + efield[i][0] = efield[i][1] = efield[i][2] = 0; + } + + epot[i] = 0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[sbmask(j)]; + factor_coul = special_coul[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r2inv = 1.0/rsq; + + if (rsq < cut_coulsq[itype][jtype] && rsq > EPSILON) { + r = sqrt(rsq); + rinv = 1.0/r; + screening = exp(-kappa*r); + efield_i = qqrd2e * q[j] * screening * (kappa + rinv); + forcecoul = qtmp*efield_i; + epot_i = efield_i; + } else efield_i = forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fpair_i = (factor_coul*etmp*forcecoul + factor_lj*forcelj) * r2inv; + f[i][0] += delx*fpair_i; + f[i][1] += dely*fpair_i; + f[i][2] += delz*fpair_i; + + efield_i *= (factor_coul*etmp*r2inv); + efield[i][0] += delx*efield_i; + efield[i][1] += dely*efield_i; + efield[i][2] += delz*efield_i; + + epot[i] += epot_i; + + if (newton_pair && j >= nlocal) { + fpair_j = (factor_coul*eps[j]*forcecoul + factor_lj*forcelj) * r2inv; + f[j][0] -= delx*fpair_j; + f[j][1] -= dely*fpair_j; + f[j][2] -= delz*fpair_j; + } + + if (eflag) { + if (rsq < cut_coulsq[itype][jtype]) { + ecoul = factor_coul * qqrd2e * qtmp*q[j]*(etmp+eps[j]) * rinv * screening; + } else ecoul = 0.0; + ecoul *= 0.5; + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - + offset[itype][jtype]; + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (evflag) ev_tally_full(i,evdwl,ecoul,fpair_i,delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairLJCutCoulDebyeDielectric::init_style() +{ + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"Pair lj/cut/coul/debye/dielectric requires atom style dielectric"); + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutCoulDebyeDielectric::single(int i, int j, int itype, int jtype, + double rsq, + double factor_coul, double factor_lj, + double &fforce) +{ + double r2inv,r6inv,forcecoul,forcelj,phicoul,ei,ej,philj; + double r,rinv,screening; + double* eps = avec->epsilon; + + r2inv = 1.0/rsq; + if (rsq < cut_coulsq[itype][jtype]) { + r = sqrt(rsq); + rinv = 1.0/r; + screening = exp(-kappa*r); + forcecoul = force->qqrd2e * atom->q[i]*atom->q[j] * + screening * (kappa + rinv) * eps[i]; + } else forcecoul = 0.0; + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else forcelj = 0.0; + fforce = (factor_coul*forcecoul + factor_lj*forcelj) * r2inv; + + double eng = 0.0; + if (eps[i] == 1) ei = 0; + else ei = eps[i]; + if (eps[j] == 1) ej = 0; + else ej = eps[j]; + if (rsq < cut_coulsq[itype][jtype]) { + phicoul = force->qqrd2e * atom->q[i]*atom->q[j] * rinv * screening; + phicoul *= 0.5*(ei+ej); + eng += factor_coul*phicoul; + } + if (rsq < cut_ljsq[itype][jtype]) { + philj = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - + offset[itype][jtype]; + eng += factor_lj*philj; + } + + return eng; +} diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h new file mode 100644 index 0000000000..9df0edb364 --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h @@ -0,0 +1,64 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/coul/debye/dielectric,PairLJCutCoulDebyeDielectric) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_DEBYE_DIELECTRIC_H +#define LMP_PAIR_LJ_CUT_COUL_DEBYE_DIELECTRIC_H + +#include "pair_lj_cut_coul_debye.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulDebyeDielectric : public PairLJCutCoulDebye { + public: + PairLJCutCoulDebyeDielectric(class LAMMPS *); + virtual ~PairLJCutCoulDebyeDielectric(); + virtual void compute(int, int); + virtual double single(int, int, int, int, double, double, double, double &); + void init_style(); + + double** efield; + double* epot; + + protected: + class AtomVecDielectric* avec; + int nmax; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair style lj/cut/coul/debye/dielectric requires atom attribute q + +The atom style defined does not have this attribute. + +*/ diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp new file mode 100644 index 0000000000..5af71e3d33 --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp @@ -0,0 +1,340 @@ +/* ---------------------------------------------------------------------- + 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: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_lj_cut_coul_long_dielectric.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "force.h" +#include "kspace.h" +#include "update.h" +#include "integrate.h" +#include "respa.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 + +#define EPSILON 1e-6 + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulLongDielectric::PairLJCutCoulLongDielectric(LAMMPS *lmp) : PairLJCutCoulLong(lmp) +{ + respa_enable = 0; + cut_respa = NULL; + efield = NULL; + epot = NULL; + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulLongDielectric::~PairLJCutCoulLongDielectric() +{ + memory->destroy(efield); + memory->destroy(epot); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulLongDielectric::compute(int eflag, int vflag) +{ + int i,ii,j,jj,inum,jnum,itype,jtype,itable; + double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul; + double fpair_i,fpair_j; + double fraction,table; + double r,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc,prefactorE,efield_i,epot_i; + int *ilist,*jlist,*numneigh,**firstneigh; + double rsq; + + evdwl = ecoul = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + if (atom->nmax > nmax) { + memory->destroy(efield); + memory->destroy(epot); + nmax = atom->nmax; + memory->create(efield,nmax,3,"pair:efield"); + memory->create(epot,nmax,"pair:epot"); + } + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + double *eps = avec->epsilon; + double** norm = avec->mu; + double* curvature = avec->curvature; + double* area = avec->area; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + etmp = eps[i]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + double curvature_threshold = sqrt(area[i]); + if (curvature[i] < curvature_threshold) { + double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; + efield[i][0] = sf*norm[i][0]; + efield[i][1] = sf*norm[i][1]; + efield[i][2] = sf*norm[i][2]; + } else { + efield[i][0] = efield[i][1] = efield[i][2] = 0; + } + + epot[i] = 0; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[sbmask(j)]; + factor_coul = special_coul[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r2inv = 1.0/rsq; + r = sqrt(rsq); + + if (rsq < cut_coulsq && rsq > EPSILON) { + if (!ncoultablebits || rsq <= tabinnersq) { + + grij = g_ewald * r; + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor = qqrd2e * qtmp*q[j]/r; + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + + prefactorE = q[j]/r; + efield_i = prefactorE * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) efield_i -= (1.0-factor_coul)*prefactorE; + epot_i = efield_i; + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + forcecoul = qtmp*q[j] * table; + efield_i = q[j] * table/qqrd2e; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + + prefactorE = q[j] * table/qqrd2e; + efield_i -= (1.0-factor_coul)*prefactorE; + } + epot_i = efield_i; + } + } else epot_i = efield_i = forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fpair_i = (forcecoul*etmp + factor_lj*forcelj) * r2inv; + f[i][0] += delx*fpair_i; + f[i][1] += dely*fpair_i; + f[i][2] += delz*fpair_i; + + efield_i *= (etmp*r2inv); + efield[i][0] += delx*efield_i; + efield[i][1] += dely*efield_i; + efield[i][2] += delz*efield_i; + + epot[i] += epot_i; + + if (newton_pair && j >= nlocal) { + + fpair_j = (forcecoul*eps[j] + factor_lj*forcelj) * r2inv; + f[j][0] -= delx*fpair_j; + f[j][1] -= dely*fpair_j; + f[j][2] -= delz*fpair_j; + } + + if (eflag) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*(etmp+eps[j])*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j]*(etmp+eps[j]) * table; + } + ecoul *= 0.5; + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - + offset[itype][jtype]; + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (evflag) ev_tally_full(i,evdwl,ecoul,fpair_i,delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairLJCutCoulLongDielectric::init_style() +{ + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"Pair lj/cut/coul/long/dielectric requires atom style dielectric"); + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; + + cut_coulsq = cut_coul * cut_coul; + + // insure use of KSpace long-range solver, set g_ewald + + if (force->kspace == NULL) + error->all(FLERR,"Pair style requires a KSpace style"); + g_ewald = force->kspace->g_ewald; + + // setup force tables + + if (ncoultablebits) init_tables(cut_coul,cut_respa); +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutCoulLongDielectric::single(int i, int j, int itype, int jtype, + double rsq, + double factor_coul, double factor_lj, + double &fforce) +{ + double r2inv,r6inv,r,grij,expm2,t,erfc,ei,ej,prefactor; + double fraction,table,forcecoul,forcelj,phicoul,philj; + int itable; + double *eps = avec->epsilon; + + r2inv = 1.0/rsq; + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) { + r = sqrt(rsq); + grij = g_ewald * r; + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor = force->qqrd2e * atom->q[i]*atom->q[j]/r; + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + } else { + union_int_float_t rsq_lookup_single; + rsq_lookup_single.f = rsq; + itable = rsq_lookup_single.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup_single.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + forcecoul = atom->q[i]*atom->q[j] * table; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = atom->q[i]*atom->q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fforce = (forcecoul*eps[i] + factor_lj*forcelj) * r2inv; + + double eng = 0.0; + if (eps[i] == 1) ei = 0; + else ei = eps[i]; + if (eps[j] == 1) ej = 0; + else ej = eps[j]; + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + phicoul = prefactor*(ei+ej)*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + phicoul = atom->q[i]*atom->q[j]*(ei+ej) * table; + } + phicoul *= 0.5; + if (factor_coul < 1.0) phicoul -= (1.0-factor_coul)*prefactor; + eng += phicoul; + } + + if (rsq < cut_ljsq[itype][jtype]) { + philj = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - + offset[itype][jtype]; + eng += factor_lj*philj; + } + + return eng; +} \ No newline at end of file diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h new file mode 100644 index 0000000000..24afa7e6fa --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h @@ -0,0 +1,74 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/coul/long/dielectric,PairLJCutCoulLongDielectric) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_LONG_DIELECTRIC_H +#define LMP_PAIR_LJ_CUT_COUL_LONG_DIELECTRIC_H + +#include "pair_lj_cut_coul_long.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulLongDielectric : public PairLJCutCoulLong { + + public: + PairLJCutCoulLongDielectric(class LAMMPS *); + virtual ~PairLJCutCoulLongDielectric(); + virtual void compute(int, int); + virtual void init_style(); + virtual double single(int, int, int, int, double, double, double, double &); + + double** efield; + double* epot; + + protected: + class AtomVecDielectric* avec; + int nmax; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair style lj/cut/coul/long/dielectric requires atom attribute q + +The atom style defined does not have this attribute. + +E: Pair style requires a KSpace style + +No kspace style is defined. + +E: Pair cutoff < Respa interior cutoff + +One or more pairwise cutoffs are too short to use with the specified +rRESPA cutoffs. + +*/ diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp new file mode 100644 index 0000000000..952df57533 --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp @@ -0,0 +1,278 @@ +/* ---------------------------------------------------------------------- + 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: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_lj_cut_coul_long_dielectric_omp.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "force.h" +#include "kspace.h" +#include "update.h" +#include "integrate.h" +#include "respa.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 + +#define EPSILON 1e-6 + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulLongDielectricOMP::PairLJCutCoulLongDielectricOMP(LAMMPS *lmp) : + PairLJCutCoulLongDielectric(lmp), ThrOMP(lmp, THR_PAIR) +{ +} + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulLongDielectricOMP::~PairLJCutCoulLongDielectricOMP() +{ +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulLongDielectricOMP::compute(int eflag, int vflag) +{ + if (eflag || vflag) { + ev_setup(eflag,vflag); + } else evflag = vflag_fdotr = 0; + + if (atom->nmax > nmax) { + memory->destroy(efield); + memory->destroy(epot); + nmax = atom->nmax; + memory->create(efield,nmax,3,"pair:efield"); + memory->create(epot,nmax,"pair:epot"); + } + + const int nall = atom->nlocal + atom->nghost; + const int nthreads = comm->nthreads; + const int inum = list->inum; + +#if defined(_OPENMP) +#pragma omp parallel default(none) shared(eflag,vflag) +#endif + { + int ifrom, ito, tid; + + loop_setup_thr(ifrom, ito, tid, inum, nthreads); + ThrData *thr = fix->get_thr(tid); + thr->timer(Timer::START); + ev_setup_thr(eflag, vflag, nall, eatom, vatom, thr); + + if (evflag) { + if (eflag) { + if (force->newton_pair) eval<1,1,1>(ifrom, ito, thr); + else eval<1,1,0>(ifrom, ito, thr); + } else { + if (force->newton_pair) eval<1,0,1>(ifrom, ito, thr); + else eval<1,0,0>(ifrom, ito, thr); + } + } else { + if (force->newton_pair) eval<0,0,1>(ifrom, ito, thr); + else eval<0,0,0>(ifrom, ito, thr); + } + + thr->timer(Timer::PAIR); + reduce_thr(this, eflag, vflag, thr); + } // end of omp parallel region +} + +/* ---------------------------------------------------------------------- */ + +template +void PairLJCutCoulLongDielectricOMP::eval(int iifrom, int iito, ThrData * const thr) +{ + int i,j,ii,jj,jnum,itype,jtype,itable; + double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; + double fraction,table; + double r,rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double grij,expm2,prefactor,t,erfc,prefactorE,efield_i,epot_i; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + + const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0]; + dbl3_t * _noalias const f = (dbl3_t *) thr->get_f()[0]; + const double * _noalias const q = atom->q; + const double * _noalias const eps = avec->epsilon; + const dbl3_t * _noalias const norm = (dbl3_t *) avec->mu[0]; + const double * _noalias const curvature = avec->curvature; + const double * _noalias const area = avec->area; + const int * _noalias const type = atom->type; + const int nlocal = atom->nlocal; + const double * _noalias const special_coul = force->special_coul; + const double * _noalias const special_lj = force->special_lj; + const double qqrd2e = force->qqrd2e; + double fxtmp,fytmp,fztmp,extmp,eytmp,eztmp; + + + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = iifrom; ii < iito; ++ii) { + + i = ilist[ii]; + qtmp = q[i]; + xtmp = x[i].x; + ytmp = x[i].y; + ztmp = x[i].z; + etmp = eps[i]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + fxtmp=fytmp=fztmp=0.0; + extmp=eytmp=eztmp=0.0; + + // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + double curvature_threshold = sqrt(area[i]); + if (curvature[i] < curvature_threshold) { + double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; + efield[i][0] = sf*norm[i].x; + efield[i][1] = sf*norm[i].y; + efield[i][2] = sf*norm[i].z; + } else { + efield[i][0] = efield[i][1] = efield[i][2] = 0; + } + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[sbmask(j)]; + factor_coul = special_coul[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j].x; + dely = ytmp - x[j].y; + delz = ztmp - x[j].z; + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r2inv = 1.0/rsq; + + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) { + r = sqrt(rsq); + grij = g_ewald * r; + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor = qqrd2e * qtmp*q[j]/r; + forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + + prefactorE = q[j]/r; + efield_i = prefactorE * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) efield_i -= (1.0-factor_coul)*prefactorE; + epot_i = efield_i; + + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + forcecoul = qtmp*q[j] * table; + efield_i = q[j] * table/qqrd2e; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + + prefactorE = q[j] * table/qqrd2e; + efield_i -= (1.0-factor_coul)*prefactorE; + } + epot_i = efield_i; + } + } else epot_i = efield_i = forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + forcelj *= factor_lj; + } else forcelj = 0.0; + + fpair = (forcecoul + forcelj) * r2inv; + + fxtmp += delx*fpair; + fytmp += dely*fpair; + fztmp += delz*fpair; + + efield_i *= (etmp*r2inv); + extmp += delx*efield_i; + eytmp += dely*efield_i; + eztmp += delz*efield_i; + epot[i] += epot_i; + + if (NEWTON_PAIR || j < nlocal) { + f[j].x -= delx*fpair; + f[j].y -= dely*fpair; + f[j].z -= delz*fpair; + } + + if (EFLAG) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*(etmp+eps[j])*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j]*(etmp+eps[j]) * table; + } + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - + offset[itype][jtype]; + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, + evdwl,ecoul,fpair,delx,dely,delz,thr); + } + } + f[i].x += fxtmp; + f[i].y += fytmp; + f[i].z += fztmp; + efield[i][0] += extmp; + efield[i][1] += eytmp; + efield[i][2] += eztmp; + } +} diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h new file mode 100644 index 0000000000..5a1033b606 --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h @@ -0,0 +1,70 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/coul/long/dielectric/omp,PairLJCutCoulLongDielectricOMP) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_LONG_DIELECTRIC_OMP_H +#define LMP_PAIR_LJ_CUT_COUL_LONG_DIELECTRIC_OMP_H + +#include "pair_lj_cut_coul_long_dielectric.h" +#include "thr_omp.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulLongDielectricOMP : public PairLJCutCoulLongDielectric, public ThrOMP { + + public: + PairLJCutCoulLongDielectricOMP(class LAMMPS *); + virtual ~PairLJCutCoulLongDielectricOMP(); + virtual void compute(int, int); + + protected: + template + void eval(int ifrom, int ito, ThrData * const thr); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair style lj/cut/coul/long/dielectric requires atom attribute q + +The atom style defined does not have this attribute. + +E: Pair style requires a KSpace style + +No kspace style is defined. + +E: Pair cutoff < Respa interior cutoff + +One or more pairwise cutoffs are too short to use with the specified +rRESPA cutoffs. + +*/ diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp new file mode 100644 index 0000000000..3aa55a1bce --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp @@ -0,0 +1,389 @@ +/* ---------------------------------------------------------------------- + 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: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_lj_cut_coul_msm_dielectric.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "force.h" +#include "kspace.h" +#include "update.h" +#include "integrate.h" +#include "respa.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define EPSILON 1e-6 + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulMSMDielectric::PairLJCutCoulMSMDielectric(LAMMPS *lmp) : PairLJCutCoulLong(lmp) +{ + ewaldflag = pppmflag = 0; + msmflag = 1; + respa_enable = 0; + cut_respa = NULL; + + nmax = 0; + ftmp = NULL; + efield = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairLJCutCoulMSMDielectric::~PairLJCutCoulMSMDielectric() +{ + if (ftmp) memory->destroy(ftmp); + memory->destroy(efield); +} + +/* ---------------------------------------------------------------------- */ + +void PairLJCutCoulMSMDielectric::compute(int eflag, int vflag) +{ + int i,ii,j,jj,inum,jnum,itype,jtype,itable; + double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair,fcoul; + double fpair_i,fpair_j; + double fraction,table; + double r,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; + double egamma,fgamma,prefactor,prefactorE,efield_i; + int *ilist,*jlist,*numneigh,**firstneigh; + double rsq; + int eflag_old = eflag; + + if (force->kspace->scalar_pressure_flag && vflag) { + if (vflag > 2) + error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' " + "to obtain per-atom virial with kspace_style MSM"); + + if (atom->nmax > nmax) { + if (ftmp) memory->destroy(ftmp); + nmax = atom->nmax; + memory->create(ftmp,nmax,3,"pair:ftmp"); + } + memset(&ftmp[0][0],0,nmax*3*sizeof(double)); + + // must switch on global energy computation if not already on + + if (eflag == 0 || eflag == 2) { + eflag++; + } + } + + if (!efield || atom->nmax > nmax) { + if (efield) memory->destroy(efield); + nmax = atom->nmax; + memory->create(efield,nmax,3,"pair:efield"); + } + + evdwl = ecoul = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **f = atom->f; + double *q = atom->q; + double *eps = avec->epsilon; + double** norm = avec->mu; + double* curvature = avec->curvature; + double* area = avec->area; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + qtmp = q[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + etmp = eps[i]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + double curvature_threshold = sqrt(area[i]); + if (curvature[i] < curvature_threshold) { + double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; + efield[i][0] = sf*norm[i][0]; + efield[i][1] = sf*norm[i][1]; + efield[i][2] = sf*norm[i][2]; + } else { + efield[i][0] = efield[i][1] = efield[i][2] = 0; + } + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[sbmask(j)]; + factor_coul = special_coul[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + r2inv = 1.0/rsq; + + if (rsq < cut_coulsq && rsq > EPSILON) { + if (!ncoultablebits || rsq <= tabinnersq) { + r = sqrt(rsq); + prefactor = qqrd2e * qtmp*q[j]/r; + egamma = 1.0 - (r/cut_coul)*force->kspace->gamma(r/cut_coul); + fgamma = 1.0 + (rsq/cut_coulsq)*force->kspace->dgamma(r/cut_coul); + forcecoul = prefactor * fgamma; + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + + prefactorE = q[j]/r; + efield_i = prefactorE * fgamma; + if (factor_coul < 1.0) efield_i -= (1.0-factor_coul)*prefactorE; + + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + forcecoul = qtmp*q[j] * table; + efield_i = q[j] * table/qqrd2e; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + + prefactorE = q[j] * table/qqrd2e; + efield_i -= (1.0-factor_coul)*prefactorE; + } + } + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + if (!(force->kspace->scalar_pressure_flag && vflag)) { + + fpair_i = (forcecoul*etmp + factor_lj*forcelj) * r2inv; + f[i][0] += delx*fpair_i; + f[i][1] += dely*fpair_i; + f[i][2] += delz*fpair_i; + + efield_i *= (etmp*r2inv); + efield[i][0] += delx*efield_i; + efield[i][1] += dely*efield_i; + efield[i][2] += delz*efield_i; + + if (newton_pair && j >= nlocal) { + fpair_j = (forcecoul*eps[j] + factor_lj*forcelj) * r2inv; + f[j][0] -= delx*fpair_j; + f[j][1] -= dely*fpair_j; + f[j][2] -= delz*fpair_j; + } + } else { + // separate LJ and Coulombic forces + + fpair = (factor_lj*forcelj) * r2inv; + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + if (newton_pair) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + fpair_i = (forcecoul*etmp) * r2inv; + ftmp[i][0] += delx*fpair_i; + ftmp[i][1] += dely*fpair_i; + ftmp[i][2] += delz*fpair_i; + + efield_i *= (etmp*r2inv); + efield[i][0] += delx*efield_i; + efield[i][1] += dely*efield_i; + efield[i][2] += delz*efield_i; + + if (newton_pair && j >= nlocal) { + fpair_j = (forcecoul*eps[j]) * r2inv; + ftmp[j][0] -= delx*fpair_j; + ftmp[j][1] -= dely*fpair_j; + ftmp[j][2] -= delz*fpair_j; + } + } + + if (eflag) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*(etmp+eps[j])*egamma; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j]*(etmp+eps[j]) * table; + } + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + + if (eflag_old && rsq < cut_ljsq[itype][jtype]) { + evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - + offset[itype][jtype]; + evdwl *= factor_lj; + } else evdwl = 0.0; + } + + if (evflag) ev_tally_full(i,evdwl,ecoul,fpair_i,delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); + + if (force->kspace->scalar_pressure_flag && vflag) { + for (i = 0; i < 3; i++) virial[i] += force->pair->eng_coul/3.0; + for (int i = 0; i < nmax; i++) { + f[i][0] += ftmp[i][0]; + f[i][1] += ftmp[i][1]; + f[i][2] += ftmp[i][2]; + } + } +} + +/* ---------------------------------------------------------------------- */ + +double PairLJCutCoulMSMDielectric::single(int i, int j, int itype, int jtype, + double rsq, + double factor_coul, double factor_lj, + double &fforce) +{ + double r2inv,r6inv,r,egamma,fgamma,prefactor; + double fraction,table,forcecoul,forcelj,phicoul,philj; + int itable; + + r2inv = 1.0/rsq; + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) { + r = sqrt(rsq); + prefactor = force->qqrd2e * atom->q[i]*atom->q[j]/r; + egamma = 1.0 - (r/cut_coul)*force->kspace->gamma(r/cut_coul); + fgamma = 1.0 + (rsq/cut_coulsq)*force->kspace->dgamma(r/cut_coul); + forcecoul = prefactor * fgamma; + if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + } else { + union_int_float_t rsq_lookup_single; + rsq_lookup_single.f = rsq; + itable = rsq_lookup_single.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup_single.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + forcecoul = atom->q[i]*atom->q[j] * table; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = atom->q[i]*atom->q[j] * table; + forcecoul -= (1.0-factor_coul)*prefactor; + } + } + } else forcecoul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { + r6inv = r2inv*r2inv*r2inv; + forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + } else forcelj = 0.0; + + fforce = (forcecoul + factor_lj*forcelj) * r2inv; + + double eng = 0.0; + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + phicoul = prefactor*egamma; + else { + table = etable[itable] + fraction*detable[itable]; + phicoul = atom->q[i]*atom->q[j] * table; + } + if (factor_coul < 1.0) phicoul -= (1.0-factor_coul)*prefactor; + eng += phicoul; + } + + if (rsq < cut_ljsq[itype][jtype]) { + philj = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - + offset[itype][jtype]; + eng += factor_lj*philj; + } + + return eng; +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairLJCutCoulMSMDielectric::init_style() +{ + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"Pair lj/cut/coul/msm/dielectric requires atom style dielectric"); + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; + + cut_coulsq = cut_coul * cut_coul; + + // insure use of KSpace long-range solver, set g_ewald + + if (force->kspace == NULL) + error->all(FLERR,"Pair style requires a KSpace style"); + g_ewald = force->kspace->g_ewald; + + // setup force tables + + if (ncoultablebits) init_tables(cut_coul,cut_respa); +} + +/* ---------------------------------------------------------------------- */ + +void *PairLJCutCoulMSMDielectric::extract(const char *str, int &dim) +{ + dim = 0; + if (strcmp(str,"cut_coul") == 0) return (void *) &cut_coul; + dim = 2; + if (strcmp(str,"epsilon") == 0) return (void *) epsilon; + if (strcmp(str,"sigma") == 0) return (void *) sigma; + return NULL; +} diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h new file mode 100644 index 0000000000..77f772315b --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h @@ -0,0 +1,59 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/cut/coul/msm/dielectric,PairLJCutCoulMSMDielectric) + +#else + +#ifndef LMP_PAIR_LJ_CUT_COUL_MSM_DIELECTRIC_H +#define LMP_PAIR_LJ_CUT_COUL_MSM_DIELECTRIC_H + +#include "pair_lj_cut_coul_long.h" + +namespace LAMMPS_NS { + +class PairLJCutCoulMSMDielectric : public PairLJCutCoulLong { + public: + PairLJCutCoulMSMDielectric(class LAMMPS *); + virtual ~PairLJCutCoulMSMDielectric(); + virtual void init_style(); + virtual void compute(int, int); + virtual double single(int, int, int, int, double, double, double, double &); + virtual void *extract(const char *, int &); + + double **efield; + + protected: + class AtomVecDielectric* avec; + int nmax; + double **ftmp; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Must use 'kspace_modify pressure/scalar no' to obtain per-atom virial with kspace_style MSM + +The kspace scalar pressure option cannot be used to obtain per-atom virial. + +E: Must use 'kspace_modify pressure/scalar no' for rRESPA with kspace_style MSM + +The kspace scalar pressure option cannot (yet) be used with rRESPA. + +*/ diff --git a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp new file mode 100644 index 0000000000..ae2eb4a383 --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp @@ -0,0 +1,365 @@ +/* ---------------------------------------------------------------------- + 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: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "math_vector.h" +#include "pair_lj_long_coul_long_dielectric.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "force.h" +#include "kspace.h" +#include "update.h" +#include "integrate.h" +#include "respa.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 + +/* ---------------------------------------------------------------------- */ + +PairLJLongCoulLongDielectric::PairLJLongCoulLongDielectric(LAMMPS *lmp) + : PairLJLongCoulLong(lmp) +{ + respa_enable = 0; + cut_respa = NULL; + efield = NULL; + epot = NULL; + nmax = 0; +} + +/* ---------------------------------------------------------------------- + free all arrays +------------------------------------------------------------------------- */ + +PairLJLongCoulLongDielectric::~PairLJLongCoulLongDielectric() +{ + memory->destroy(efield); + memory->destroy(epot); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairLJLongCoulLongDielectric::init_style() +{ + PairLJLongCoulLongDielectric::init_style(); + + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"Pair lj/long/coul/long/dielectric requires atom style dielectric"); + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; +} + +/* ---------------------------------------------------------------------- + compute pair interactions +------------------------------------------------------------------------- */ + +void PairLJLongCoulLongDielectric::compute(int eflag, int vflag) +{ + double evdwl,ecoul,fpair; + evdwl = ecoul = 0.0; + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = 0; + + if (atom->nmax > nmax) { + memory->destroy(efield); + memory->destroy(epot); + nmax = atom->nmax; + memory->create(efield,nmax,3,"pair:efield"); + memory->create(epot,nmax,"pair:epot"); + } + + double **x = atom->x, *x0 = x[0]; + double **f = atom->f, *f0 = f[0], *fi = f0; + double *q = atom->q; + double *eps = avec->epsilon; + double** norm = avec->mu; + double* curvature = avec->curvature; + double* area = avec->area; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_coul = force->special_coul; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double qqrd2e = force->qqrd2e; + + int i,ii,j,jj,inum,jnum,itype,jtype,itable; + double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz; + int order1 = ewald_order&(1<<1), order6 = ewald_order&(1<<6); + int *ineigh, *ineighn, *jneigh, *jneighn, typei, typej, ni; + double qi = 0.0, qri = 0.0; + double fpair_i,fpair_j; + double fraction,table; + double *cutsqi, *cut_ljsqi, *lj1i, *lj2i, *lj3i, *lj4i, *offseti; + double grij,expm2,prefactor,t,erfc,prefactorE,efield_i,epot_i; + double r,rsq,r2inv,force_coul,force_lj,factor_coul,factor_lj; + double g2 = g_ewald_6*g_ewald_6, g6 = g2*g2*g2, g8 = g6*g2; + vector xi, d; + + ineighn = (ineigh = list->ilist)+list->inum; + + for (; ineighfirstneigh[i])+list->numneigh[i]; + + // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + double curvature_threshold = sqrt(area[i]); + if (curvature[i] < curvature_threshold) { + double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; + efield[i][0] = sf*norm[i][0]; + efield[i][1] = sf*norm[i][1]; + efield[i][2] = sf*norm[i][2]; + } else { + efield[i][0] = efield[i][1] = efield[i][2] = 0; + } + + epot[i] = 0; + + for (; jneigh= cutsq[typei][typej]) continue; + + r2inv = 1.0/rsq; + r = sqrt(rsq); + + if (order1 && (rsq < cut_coulsq)) { // coulombic + if (!ncoultablebits || rsq <= tabinnersq) { + + grij = g_ewald * r; + expm2 = exp(-grij*grij); + t = 1.0 / (1.0 + EWALD_P*grij); + erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; + prefactor = qqrd2e * qtmp*q[j]/r; + force_coul = prefactor * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) force_coul -= (1.0-factor_coul)*prefactor; + + prefactorE = q[j]/r; + efield_i = prefactorE * (erfc + EWALD_F*grij*expm2); + if (factor_coul < 1.0) efield_i -= (1.0-factor_coul)*prefactorE; + epot_i = efield_i; + } else { + union_int_float_t rsq_lookup; + rsq_lookup.f = rsq; + itable = rsq_lookup.i & ncoulmask; + itable >>= ncoulshiftbits; + fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; + table = ftable[itable] + fraction*dftable[itable]; + force_coul = qtmp*q[j] * table; + efield_i = q[j] * table/qqrd2e; + if (factor_coul < 1.0) { + table = ctable[itable] + fraction*dctable[itable]; + prefactor = qtmp*q[j] * table; + force_coul -= (1.0-factor_coul)*prefactor; + + prefactorE = q[j] * table/qqrd2e; + efield_i -= (1.0-factor_coul)*prefactorE; + } + epot_i = efield_i; + } + } + else epot_i = efield_i = force_coul = ecoul = 0.0; + + if (rsq < cut_ljsqi[typej]) { // lj + if (order6) { // long-range lj + if(!ndisptablebits || rsq <= tabinnerdispsq) { // series real space + double rn = r2inv*r2inv*r2inv; + double x2 = g2*rsq, a2 = 1.0/x2; + x2 = a2*exp(-x2)*lj4i[typej]; + if (ni == 0) { + force_lj = + (rn*=rn)*lj1i[typej]-g8*(((6.0*a2+6.0)*a2+3.0)*a2+1.0)*x2*rsq; + if (eflag) + evdwl = rn*lj3i[typej]-g6*((a2+1.0)*a2+0.5)*x2; + } + else { // special case + double f = special_lj[ni], t = rn*(1.0-f); + force_lj = f*(rn *= rn)*lj1i[typej]- + g8*(((6.0*a2+6.0)*a2+3.0)*a2+1.0)*x2*rsq+t*lj2i[typej]; + if (eflag) + evdwl = f*rn*lj3i[typej]-g6*((a2+1.0)*a2+0.5)*x2+t*lj4i[typej]; + } + } + else { // table real space + union_int_float_t disp_t; + disp_t.f = rsq; + const int disp_k = (disp_t.i & ndispmask)>>ndispshiftbits; + double f_disp = (rsq-rdisptable[disp_k])*drdisptable[disp_k]; + double rn = r2inv*r2inv*r2inv; + if (ni == 0) { + force_lj = (rn*=rn)*lj1i[typej]-(fdisptable[disp_k]+f_disp*dfdisptable[disp_k])*lj4i[typej]; + if (eflag) evdwl = rn*lj3i[typej]-(edisptable[disp_k]+f_disp*dedisptable[disp_k])*lj4i[typej]; + } + else { // special case + double f = special_lj[ni], t = rn*(1.0-f); + force_lj = f*(rn *= rn)*lj1i[typej]-(fdisptable[disp_k]+f_disp*dfdisptable[disp_k])*lj4i[typej]+t*lj2i[typej]; + if (eflag) evdwl = f*rn*lj3i[typej]-(edisptable[disp_k]+f_disp*dedisptable[disp_k])*lj4i[typej]+t*lj4i[typej]; + } + } + } + else { // cut lj + double rn = r2inv*r2inv*r2inv; + if (ni == 0) { + force_lj = rn*(rn*lj1i[typej]-lj2i[typej]); + if (eflag) evdwl = rn*(rn*lj3i[typej]-lj4i[typej])-offseti[typej]; + } + else { // special case + double f = special_lj[ni]; + force_lj = f*rn*(rn*lj1i[typej]-lj2i[typej]); + if (eflag) + evdwl = f * (rn*(rn*lj3i[typej]-lj4i[typej])-offseti[typej]); + } + } + } + + else force_lj = evdwl = 0.0; + + fpair = (force_coul*etmp+force_lj)*r2inv; + f[i][0] += delx*fpair_i; + f[i][1] += dely*fpair_i; + f[i][2] += delz*fpair_i; + + efield_i *= (etmp*r2inv); + efield[i][0] += delx*efield_i; + efield[i][1] += dely*efield_i; + efield[i][2] += delz*efield_i; + + epot[i] += epot_i; + + if (newton_pair && j >= nlocal) { + + fpair_j = (force_coul*eps[j] + factor_lj*force_lj) * r2inv; + f[j][0] -= delx*fpair_j; + f[j][1] -= dely*fpair_j; + f[j][2] -= delz*fpair_j; + } + + if (eflag) { + if (rsq < cut_coulsq) { + if (!ncoultablebits || rsq <= tabinnersq) + ecoul = prefactor*(etmp+eps[j])*erfc; + else { + table = etable[itable] + fraction*detable[itable]; + ecoul = qtmp*q[j]*(etmp+eps[j]) * table; + } + ecoul *= 0.5; + if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + } else ecoul = 0.0; + + } + + if (evflag) ev_tally_full(i,evdwl,ecoul,fpair_i,delx,dely,delz); + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- */ + +double PairLJLongCoulLongDielectric::single(int i, int j, int itype, int jtype, + double rsq, double factor_coul, double factor_lj, + double &fforce) +{ + double r2inv, r6inv, force_coul, force_lj, ei, ej; + double g2 = g_ewald_6*g_ewald_6, g6 = g2*g2*g2, g8 = g6*g2, *q = atom->q; + double *eps = avec->epsilon; + + double eng = 0.0; + if (eps[i] == 1) ei = 0; + else ei = eps[i]; + if (eps[j] == 1) ej = 0; + else ej = eps[j]; + + r2inv = 1.0/rsq; + if ((ewald_order&2) && (rsq < cut_coulsq)) { // coulombic + if (!ncoultablebits || rsq <= tabinnersq) { // series real space + double r = sqrt(rsq), x = g_ewald*r; + double s = force->qqrd2e*q[i]*q[j], t = 1.0/(1.0+EWALD_P*x); + r = s*(1.0-factor_coul)/r; s *= g_ewald*exp(-x*x); + force_coul = (t *= ((((t*A5+A4)*t+A3)*t+A2)*t+A1)*s/x)+EWALD_F*s-r; + eng += (t-r)*(ei+ej)*0.5; + } + else { // table real space + union_int_float_t t; + t.f = rsq; + const int k = (t.i & ncoulmask) >> ncoulshiftbits; + double f = (rsq-rtable[k])*drtable[k], qiqj = q[i]*q[j]; + t.f = (1.0-factor_coul)*(ctable[k]+f*dctable[k]); + force_coul = qiqj*(ftable[k]+f*dftable[k]-t.f); + eng += qiqj*(etable[k]+f*detable[k]-t.f)*(ei+ej)*0.5; + } + } else force_coul = 0.0; + + if (rsq < cut_ljsq[itype][jtype]) { // lennard-jones + r6inv = r2inv*r2inv*r2inv; + if (ewald_order&64) { // long-range + double x2 = g2*rsq, a2 = 1.0/x2, t = r6inv*(1.0-factor_lj); + x2 = a2*exp(-x2)*lj4[itype][jtype]; + force_lj = factor_lj*(r6inv *= r6inv)*lj1[itype][jtype]- + g8*(((6.0*a2+6.0)*a2+3.0)*a2+a2)*x2*rsq+t*lj2[itype][jtype]; + eng += factor_lj*r6inv*lj3[itype][jtype]- + g6*((a2+1.0)*a2+0.5)*x2+t*lj4[itype][jtype]; + } + else { // cut + force_lj = factor_lj*r6inv*(lj1[itype][jtype]*r6inv-lj2[itype][jtype]); + eng += factor_lj*(r6inv*(r6inv*lj3[itype][jtype]- + lj4[itype][jtype])-offset[itype][jtype]); + } + } else force_lj = 0.0; + + fforce = (force_coul*eps[i]+force_lj)*r2inv; + return eng; +} diff --git a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h new file mode 100644 index 0000000000..4ba4683d8b --- /dev/null +++ b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h @@ -0,0 +1,56 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(lj/long/coul/long/dielectric,PairLJLongCoulLongDielectric) + +#else + +#ifndef LMP_PAIR_LJ_LONG_COUL_LONG_DIELECTRIC_H +#define LMP_PAIR_LJ_LONG_COUL_LONG_DIELECTRIC_H + +#include "pair_lj_long_coul_long.h" + +namespace LAMMPS_NS { + +class PairLJLongCoulLongDielectric : public PairLJLongCoulLong { + public: + PairLJLongCoulLongDielectric(class LAMMPS *); + virtual ~PairLJLongCoulLongDielectric(); + virtual void compute(int, int); + void init_style(); + double single(int, int, int, int, double, double, double, double &); + + double** efield; + double* epot; + + protected: + class AtomVecDielectric* avec; + int nmax; +}; + +} + +#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. + +*/ diff --git a/src/USER-DIELECTRIC/pppm_dielectric.cpp b/src/USER-DIELECTRIC/pppm_dielectric.cpp new file mode 100644 index 0000000000..084e0ab689 --- /dev/null +++ b/src/USER-DIELECTRIC/pppm_dielectric.cpp @@ -0,0 +1,1439 @@ +/* ---------------------------------------------------------------------- + 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 authors: Trung Nguyen (Northwestern) + point-dipoles by Stan Moore (SNL) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include "pppm_dielectric.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "gridcomm.h" +#include "neighbor.h" +#include "force.h" +#include "pair.h" +#include "domain.h" +#include "fft3d_wrap.h" +#include "remap_wrap.h" +#include "memory.h" +#include "error.h" + +#include "math_const.h" +#include "math_special.h" + +using namespace LAMMPS_NS; +using namespace MathConst; +using namespace MathSpecial; + +#define SMALL 0.00001 + +#ifdef FFT_SINGLE +#define ZEROF 0.0f +#define ONEF 1.0f +#else +#define ZEROF 0.0 +#define ONEF 1.0 +#endif + +enum{REVERSE_RHO,REVERSE_MU}; +enum{FORWARD_IK,FORWARD_MU,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_MU_PERATOM,FORWARD_AD_PERATOM}; + +/* ---------------------------------------------------------------------- */ + +PPPMDielectric::PPPMDielectric(LAMMPS *lmp) : PPPM(lmp), + cg_mu(NULL), densityx_brick_dipole(NULL), densityy_brick_dipole(NULL), densityz_brick_dipole(NULL), + u_brick_dipole(NULL), ux_brick_dipole(NULL), uy_brick_dipole(NULL), uz_brick_dipole(NULL), + vdxx_brick_dipole(NULL), vdxy_brick_dipole(NULL), vdyy_brick_dipole(NULL), vdxz_brick_dipole(NULL), + vdyz_brick_dipole(NULL), vdzz_brick_dipole(NULL), work3(NULL), work4(NULL), + densityx_fft_dipole(NULL), densityy_fft_dipole(NULL), densityz_fft_dipole(NULL) +{ + dipoleflag = 0; // turned off for now, until dipole works + group_group_enable = 0; + + mu_flag = 0; + + efield = NULL; + phi = NULL; + potflag = 0; + + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"pppm/dielectric requires atom style dielectric"); +} + +/* ---------------------------------------------------------------------- */ + +PPPMDielectric::~PPPMDielectric() +{ + memory->destroy(efield); + memory->destroy(phi); +} + +/* ---------------------------------------------------------------------- + called once before run +------------------------------------------------------------------------- */ + +void PPPMDielectric::init() +{ + PPPM::init(); + + if (mu_flag) musum_musq(); + + if (mu_flag) { + cg_mu->ghost_notify(); + cg_mu->setup(); + } +} + +/* ---------------------------------------------------------------------- + reset local grid arrays and communication stencils + called by fix balance b/c it changed sizes of processor sub-domains +------------------------------------------------------------------------- */ + +void PPPMDielectric::setup_grid() +{ + PPPM::setup_grid(); + + if (mu_flag) { + cg_mu->ghost_notify(); + if (overlap_allowed == 0 && cg_mu->ghost_overlap()) + error->all(FLERR,"PPPMDielectric grid stencil extends " + "beyond nearest neighbor processor"); + cg_mu->setup(); + } + + // pre-compute volume-dependent coeffs + + PPPM::setup(); +} + +/* ---------------------------------------------------------------------- + compute the PPPMDielectric long-range force, energy, virial +------------------------------------------------------------------------- */ + +void PPPMDielectric::compute(int eflag, int vflag) +{ + int i,j; + + // set energy/virial flags + // invoke allocate_peratom() if needed for first time + + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = evflag_atom = eflag_global = vflag_global = + eflag_atom = vflag_atom = 0; + + if (potflag) evflag_atom = 1; + + if (evflag_atom && !peratom_allocate_flag) { + allocate_peratom(); + cg_peratom->ghost_notify(); + cg_peratom->setup(); + } + + // if atom count has changed, update qsum and qsqsum + + if (atom->natoms != natoms_original) { + qsum_qsq(); + musum_musq(); + natoms_original = atom->natoms; + } + + // return if there are no charges or dipoles + + //if (qsqsum == 0.0 && musqsum == 0.0) return; + + // convert atoms from box to lamda coords + + if (triclinic == 0) boxlo = domain->boxlo; + else { + boxlo = domain->boxlo_lamda; + domain->x2lamda(atom->nlocal); + } + + // extend size of per-atom arrays if necessary + + if (atom->nmax > nmax) { + memory->destroy(part2grid); + memory->destroy(efield); + memory->destroy(phi); + nmax = atom->nmax; + memory->create(part2grid,nmax,3,"pppm/dielectric:part2grid"); + memory->create(efield,nmax,3,"pppm/dielectric:efield"); + memory->create(phi,nmax,"pppm/dielectric:phi"); + } + + // find grid points for all my particles + // map my particle charge onto my local 3d density grid + + particle_map(); + make_rho(); + + if (mu_flag) + make_rho_dipole(); + + // all procs communicate density values from their ghost cells + // to fully sum contribution in their 3d bricks + // remap from 3d decomposition to FFT decomposition + + cg->reverse_comm(this,REVERSE_RHO); + brick2fft(); + + if (mu_flag) { + cg_mu->reverse_comm(this,REVERSE_MU); + brick2fft_dipole(); + } + + // compute potential gradient on my FFT grid and + // portion of e_long on this proc's FFT grid + // return gradients (electric fields) in 3d brick decomposition + // also performs per-atom calculations via poisson_peratom() + + poisson(); + + if (mu_flag) + poisson_ik_dipole(); + + // all procs communicate E-field values + // to fill ghost cells surrounding their 3d bricks + + if (differentiation_flag == 1) cg->forward_comm(this,FORWARD_AD); + else cg->forward_comm(this,FORWARD_IK); + + if (mu_flag) + cg_mu->forward_comm(this,FORWARD_MU); + + // extra per-atom energy/virial communication + + if (evflag_atom) { + if (differentiation_flag == 1 && vflag_atom) + cg_peratom->forward_comm(this,FORWARD_AD_PERATOM); + else if (differentiation_flag == 0) + cg_peratom->forward_comm(this,FORWARD_IK_PERATOM); + } + + // calculate the force on my particles + + fieldforce(); + + if (mu_flag) + fieldforce_ik_dipole(); + + // extra per-atom energy/virial communication + + if (evflag_atom) fieldforce_peratom(); + + // sum global energy across procs and add in volume-dependent term + + const double qscale = qqrd2e * scale; + const double g3 = g_ewald*g_ewald*g_ewald; + + if (eflag_global) { + double energy_all; + MPI_Allreduce(&energy,&energy_all,1,MPI_DOUBLE,MPI_SUM,world); + energy = energy_all; + + energy *= 0.5*volume; + energy -= g_ewald*qsqsum/MY_PIS + + MY_PI2*qsum*qsum / (g_ewald*g_ewald*volume); + if (mu_flag) + energy -= musqsum*qqrd2e*2.0*g3/3.0/MY_PIS; + energy *= qscale; + } + + // sum global virial across procs + + if (vflag_global) { + double virial_all[6]; + MPI_Allreduce(virial,virial_all,6,MPI_DOUBLE,MPI_SUM,world); + for (i = 0; i < 6; i++) virial[i] = 0.5*qscale*volume*virial_all[i]; + } + + // per-atom energy/virial + // energy includes self-energy correction + // ntotal accounts for TIP4P tallying eatom/vatom for ghost atoms + + if (evflag_atom) { + double *q = atom->q; + double **mu = atom->mu; + int nlocal = atom->nlocal; + int ntotal = nlocal; + if (tip4pflag) ntotal += atom->nghost; + + if (eflag_atom) { + for (i = 0; i < nlocal; i++) { + eatom[i] *= 0.5; + eatom[i] -= g_ewald*q[i]*q[i]/MY_PIS + MY_PI2*q[i]*qsum / + (g_ewald*g_ewald*volume); + + if (mu_flag) + eatom[i] -= (mu[i][0]*mu[i][0] + mu[i][1]*mu[i][1] + mu[i][2]*mu[i][2])*qqrd2e*2.0*g3/3.0/MY_PIS; + + eatom[i] *= qscale; + } + for (i = nlocal; i < ntotal; i++) eatom[i] *= 0.5*qscale; + } + + if (vflag_atom) { + for (i = 0; i < ntotal; i++) + for (j = 0; j < 6; j++) vatom[i][j] *= 0.5*qscale; + } + } + + // 2d slab correction + + if (slabflag == 1) slabcorr(); + + // convert atoms back from lamda to box coords + + if (triclinic) domain->lamda2x(atom->nlocal); +} + +/* ---------------------------------------------------------------------- + allocate memory that depends on # of K-vectors and order +------------------------------------------------------------------------- */ + +void PPPMDielectric::allocate() +{ + PPPM::allocate(); + + if (mu_flag) { + memory->create3d_offset(densityx_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:densityx_brick_dipole"); + memory->create3d_offset(densityy_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:densityy_brick_dipole"); + memory->create3d_offset(densityz_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:densityz_brick_dipole"); + + memory->create(densityx_fft_dipole,nfft_both,"pppm:densityy_fft_dipole"); + memory->create(densityy_fft_dipole,nfft_both,"pppm:densityy_fft_dipole"); + memory->create(densityz_fft_dipole,nfft_both,"pppm:densityz_fft_dipole"); + + memory->create(work3,2*nfft_both,"pppm:work3"); + memory->create(work4,2*nfft_both,"pppm:work4"); + + memory->create3d_offset(u_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:u_brick_dipole"); + + memory->create3d_offset(ux_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:ux_brick_dipole"); + memory->create3d_offset(uy_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:uy_brick_dipole"); + memory->create3d_offset(uz_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:uz_brick_dipole"); + + memory->create3d_offset(vdxx_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:vdxx_brick_dipole"); + memory->create3d_offset(vdxy_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:vdxy_brick_dipole"); + memory->create3d_offset(vdyy_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:vdyy_brick_dipole"); + memory->create3d_offset(vdxz_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:vdxz_brick_dipole"); + memory->create3d_offset(vdyz_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:vdyz_brick_dipole"); + memory->create3d_offset(vdzz_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, + nxlo_out,nxhi_out,"pppm:vdzz_brick_dipole"); + + int (*procneigh)[2] = comm->procneigh; + cg_mu = new GridComm(lmp,world,9,3, + nxlo_in,nxhi_in,nylo_in,nyhi_in,nzlo_in,nzhi_in, + nxlo_out,nxhi_out,nylo_out,nyhi_out,nzlo_out,nzhi_out, + procneigh[0][0],procneigh[0][1],procneigh[1][0], + procneigh[1][1],procneigh[2][0],procneigh[2][1]); + } +} + +/* ---------------------------------------------------------------------- + deallocate memory that depends on # of K-vectors and order +------------------------------------------------------------------------- */ + +void PPPMDielectric::deallocate() +{ + PPPM::deallocate(); + + if (mu_flag) { + memory->destroy3d_offset(densityx_brick_dipole,nzlo_out,nylo_out,nxlo_out); + memory->destroy3d_offset(densityy_brick_dipole,nzlo_out,nylo_out,nxlo_out); + memory->destroy3d_offset(densityz_brick_dipole,nzlo_out,nylo_out,nxlo_out); + + memory->destroy3d_offset(u_brick_dipole,nzlo_out,nylo_out,nxlo_out); + + memory->destroy3d_offset(ux_brick_dipole,nzlo_out,nylo_out,nxlo_out); + memory->destroy3d_offset(uy_brick_dipole,nzlo_out,nylo_out,nxlo_out); + memory->destroy3d_offset(uz_brick_dipole,nzlo_out,nylo_out,nxlo_out); + + memory->destroy3d_offset(vdxx_brick_dipole,nzlo_out,nylo_out,nxlo_out); + memory->destroy3d_offset(vdxy_brick_dipole,nzlo_out,nylo_out,nxlo_out); + memory->destroy3d_offset(vdyy_brick_dipole,nzlo_out,nylo_out,nxlo_out); + memory->destroy3d_offset(vdxz_brick_dipole,nzlo_out,nylo_out,nxlo_out); + memory->destroy3d_offset(vdyz_brick_dipole,nzlo_out,nylo_out,nxlo_out); + memory->destroy3d_offset(vdzz_brick_dipole,nzlo_out,nylo_out,nxlo_out); + + memory->destroy(densityx_fft_dipole); + memory->destroy(densityy_fft_dipole); + memory->destroy(densityz_fft_dipole); + + memory->destroy(work3); + memory->destroy(work4); + + delete cg_mu; + } +} + +/* ---------------------------------------------------------------------- + create discretized "density" on section of global grid due to my particles + density(x,y,z) = charge "density" at grid points of my 3d brick + (nxlo:nxhi,nylo:nyhi,nzlo:nzhi) is extent of my brick (including ghosts) + in global grid +------------------------------------------------------------------------- */ + +void PPPMDielectric::make_rho_dipole() +{ + int l,m,n,nx,ny,nz,mx,my,mz; + FFT_SCALAR dx,dy,dz; + FFT_SCALAR x0,y0,z0; + FFT_SCALAR x1,y1,z1; + FFT_SCALAR x2,y2,z2; + + // clear 3d density array + + memset(&(densityx_brick_dipole[nzlo_out][nylo_out][nxlo_out]),0, + ngrid*sizeof(FFT_SCALAR)); + memset(&(densityy_brick_dipole[nzlo_out][nylo_out][nxlo_out]),0, + ngrid*sizeof(FFT_SCALAR)); + memset(&(densityz_brick_dipole[nzlo_out][nylo_out][nxlo_out]),0, + ngrid*sizeof(FFT_SCALAR)); + + // loop over my charges, add their contribution to nearby grid points + // (nx,ny,nz) = global coords of grid pt to "lower left" of charge + // (dx,dy,dz) = distance to "lower left" grid pt + // (mx,my,mz) = global coords of moving stencil pt + + double **mu = atom->mu; + double **x = atom->x; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + + nx = part2grid[i][0]; + ny = part2grid[i][1]; + nz = part2grid[i][2]; + dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; + dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; + dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; + + compute_rho1d(dx,dy,dz); + + z0 = delvolinv * mu[i][0]; + z1 = delvolinv * mu[i][1]; + z2 = delvolinv * mu[i][2]; + for (n = nlower; n <= nupper; n++) { + mz = n+nz; + y0 = z0*rho1d[2][n]; + y1 = z1*rho1d[2][n]; + y2 = z2*rho1d[2][n]; + for (m = nlower; m <= nupper; m++) { + my = m+ny; + x0 = y0*rho1d[1][m]; + x1 = y1*rho1d[1][m]; + x2 = y2*rho1d[1][m]; + for (l = nlower; l <= nupper; l++) { + mx = l+nx; + densityx_brick_dipole[mz][my][mx] += x0*rho1d[0][l]; + densityy_brick_dipole[mz][my][mx] += x1*rho1d[0][l]; + densityz_brick_dipole[mz][my][mx] += x2*rho1d[0][l]; + } + } + } + } +} + +/* ---------------------------------------------------------------------- + remap density from 3d brick decomposition to FFT decomposition +------------------------------------------------------------------------- */ + +void PPPMDielectric::brick2fft_dipole() +{ + int n,ix,iy,iz; + + // copy grabs inner portion of density from 3d brick + // remap could be done as pre-stage of FFT, + // but this works optimally on only double values, not complex values + + n = 0; + for (iz = nzlo_in; iz <= nzhi_in; iz++) + for (iy = nylo_in; iy <= nyhi_in; iy++) + for (ix = nxlo_in; ix <= nxhi_in; ix++) { + densityx_fft_dipole[n] = densityx_brick_dipole[iz][iy][ix]; + densityy_fft_dipole[n] = densityy_brick_dipole[iz][iy][ix]; + densityz_fft_dipole[n] = densityz_brick_dipole[iz][iy][ix]; + n++; + } + + remap->perform(densityx_fft_dipole,densityx_fft_dipole,work1); + remap->perform(densityy_fft_dipole,densityy_fft_dipole,work1); + remap->perform(densityz_fft_dipole,densityz_fft_dipole,work1); +} + +/* ---------------------------------------------------------------------- + FFT-based Poisson solver for ik +------------------------------------------------------------------------- */ + +void PPPMDielectric::poisson_ik_dipole() +{ + int i,j,k,n,ii; + double eng; + double wreal,wimg; + + // transform dipole density (r -> k) + + n = 0; + for (i = 0; i < nfft; i++) { + work1[n] = densityx_fft_dipole[i]; + work1[n+1] = ZEROF; + work2[n] = densityy_fft_dipole[i]; + work2[n+1] = ZEROF; + work3[n] = densityz_fft_dipole[i]; + work3[n+1] = ZEROF; + n += 2; + } + + fft1->compute(work1,work1,1); + fft1->compute(work2,work2,1); + fft1->compute(work3,work3,1); + + // global energy and virial contribution + + double scaleinv = 1.0/(nx_pppm*ny_pppm*nz_pppm); + double s2 = scaleinv*scaleinv; + + if (eflag_global || vflag_global) { + if (vflag_global) { + n = 0; + ii = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + wreal = (work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); + wimg = (work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); + eng = s2 * greensfn[ii] * (wreal*wreal + wimg*wimg); + //eng = s2 * greensfn[ii] * (wreal+wimg)*(wreal+wimg); + for (int jj = 0; jj < 6; jj++) virial[jj] += eng*vg[ii][jj]; + if (eflag_global) energy += eng; + ii++; + n += 2; + } + } else { + n = 0; + ii = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + wreal = (work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); + wimg = (work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); + energy += + //s2 * greensfn[ii] * (wreal+wimg)*(wreal+wimg); + s2 * greensfn[ii] * (wreal*wreal + wimg*wimg); + ii++; + n += 2; + } + } + } + + // scale by 1/total-grid-pts to get rho(k) + // multiply by Green's function to get V(k) + + n = 0; + for (i = 0; i < nfft; i++) { + work1[n] *= scaleinv * greensfn[i]; + work1[n+1] *= scaleinv * greensfn[i]; + work2[n] *= scaleinv * greensfn[i]; + work2[n+1] *= scaleinv * greensfn[i]; + work3[n] *= scaleinv * greensfn[i]; + work3[n+1] *= scaleinv * greensfn[i]; + n += 2; + } + + // triclinic system + + /*if (triclinic) { + poisson_ik_triclinic(); + return; + }*/ + + // compute electric potential + // FFT leaves data in 3d brick decomposition + + n = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + work4[n] = work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]; + work4[n+1] = work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]; + n += 2; + } + + fft2->compute(work4,work4,-1); + + n = 0; + for (k = nzlo_in; k <= nzhi_in; k++) + for (j = nylo_in; j <= nyhi_in; j++) + for (i = nxlo_in; i <= nxhi_in; i++) { + u_brick_dipole[k][j][i] = work4[n]; + n += 2; + } + + // Ex + + n = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + work4[n] = fkx[i]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); + work4[n+1] = fkx[i]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); + n += 2; + } + + fft2->compute(work4,work4,-1); + + n = 0; + for (k = nzlo_in; k <= nzhi_in; k++) + for (j = nylo_in; j <= nyhi_in; j++) + for (i = nxlo_in; i <= nxhi_in; i++) { + ux_brick_dipole[k][j][i] = work4[n]; + n += 2; + } + + // Ey + + n = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + work4[n] = fky[j]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); + work4[n+1] = fky[j]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); + n += 2; + } + + fft2->compute(work4,work4,-1); + + n = 0; + for (k = nzlo_in; k <= nzhi_in; k++) + for (j = nylo_in; j <= nyhi_in; j++) + for (i = nxlo_in; i <= nxhi_in; i++) { + uy_brick_dipole[k][j][i] = work4[n]; + n += 2; + } + + // Ez + + n = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + work4[n] = fkz[k]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); + work4[n+1] = fkz[k]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); + n += 2; + } + + fft2->compute(work4,work4,-1); + + n = 0; + for (k = nzlo_in; k <= nzhi_in; k++) + for (j = nylo_in; j <= nyhi_in; j++) + for (i = nxlo_in; i <= nxhi_in; i++) { + uz_brick_dipole[k][j][i] = work4[n]; + n += 2; + } + + // Vxx + + n = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + work4[n] = fkx[i]*fkx[i]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); + work4[n+1] = -fkx[i]*fkx[i]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); + n += 2; + } + + fft2->compute(work4,work4,-1); + + n = 0; + for (k = nzlo_in; k <= nzhi_in; k++) + for (j = nylo_in; j <= nyhi_in; j++) + for (i = nxlo_in; i <= nxhi_in; i++) { + vdxx_brick_dipole[k][j][i] = work4[n]; + n += 2; + } + + // Vyy + + n = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + work4[n] = fky[j]*fky[j]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); + work4[n+1] = -fky[j]*fky[j]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); + n += 2; + } + + fft2->compute(work4,work4,-1); + + n = 0; + for (k = nzlo_in; k <= nzhi_in; k++) + for (j = nylo_in; j <= nyhi_in; j++) + for (i = nxlo_in; i <= nxhi_in; i++) { + vdyy_brick_dipole[k][j][i] = work4[n]; + n += 2; + } + + // Vzz + + n = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + work4[n] = fkz[k]*fkz[k]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); + work4[n+1] = -fkz[k]*fkz[k]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); + n += 2; + } + + fft2->compute(work4,work4,-1); + + n = 0; + for (k = nzlo_in; k <= nzhi_in; k++) + for (j = nylo_in; j <= nyhi_in; j++) + for (i = nxlo_in; i <= nxhi_in; i++) { + vdzz_brick_dipole[k][j][i] = work4[n]; + n += 2; + } + + // Vxy + + n = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + work4[n] = fkx[i]*fky[j]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); + work4[n+1] = -fkx[i]*fky[j]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); + n += 2; + } + + fft2->compute(work4,work4,-1); + + n = 0; + for (k = nzlo_in; k <= nzhi_in; k++) + for (j = nylo_in; j <= nyhi_in; j++) + for (i = nxlo_in; i <= nxhi_in; i++) { + vdxy_brick_dipole[k][j][i] = work4[n]; + n += 2; + } + + // Vxz + + n = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + work4[n] = fkx[i]*fkz[k]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); + work4[n+1] = -fkx[i]*fkz[k]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); + n += 2; + } + + fft2->compute(work4,work4,-1); + + n = 0; + for (k = nzlo_in; k <= nzhi_in; k++) + for (j = nylo_in; j <= nyhi_in; j++) + for (i = nxlo_in; i <= nxhi_in; i++) { + vdxz_brick_dipole[k][j][i] = work4[n]; + n += 2; + } + + // Vyz + + n = 0; + for (k = nzlo_fft; k <= nzhi_fft; k++) + for (j = nylo_fft; j <= nyhi_fft; j++) + for (i = nxlo_fft; i <= nxhi_fft; i++) { + work4[n] = fky[j]*fkz[k]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); + work4[n+1] = -fky[j]*fkz[k]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); + n += 2; + } + + fft2->compute(work4,work4,-1); + + n = 0; + for (k = nzlo_in; k <= nzhi_in; k++) + for (j = nylo_in; j <= nyhi_in; j++) + for (i = nxlo_in; i <= nxhi_in; i++) { + vdyz_brick_dipole[k][j][i] = work4[n]; + n += 2; + } +} + +/* ---------------------------------------------------------------------- + interpolate from grid to get electric field & force on my particles for ik +------------------------------------------------------------------------- */ + +void PPPMDielectric::fieldforce_ik() +{ + int i,l,m,n,nx,ny,nz,mx,my,mz; + FFT_SCALAR dx,dy,dz,x0,y0,z0; + FFT_SCALAR ekx,eky,ekz,u; + + // loop over my charges, interpolate electric field from nearby grid points + // (nx,ny,nz) = global coords of grid pt to "lower left" of charge + // (dx,dy,dz) = distance to "lower left" grid pt + // (mx,my,mz) = global coords of moving stencil pt + // ek = 3 components of E-field on particle + + double *q = atom->q; + double **x = atom->x; + double **f = atom->f; + double *eps = avec->epsilon; + int nlocal = atom->nlocal; + + for (i = 0; i < nlocal; i++) { + nx = part2grid[i][0]; + ny = part2grid[i][1]; + nz = part2grid[i][2]; + dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; + dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; + dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; + + compute_rho1d(dx,dy,dz); + + u = ekx = eky = ekz = ZEROF; + for (n = nlower; n <= nupper; n++) { + mz = n+nz; + z0 = rho1d[2][n]; + for (m = nlower; m <= nupper; m++) { + my = m+ny; + y0 = z0*rho1d[1][m]; + for (l = nlower; l <= nupper; l++) { + mx = l+nx; + x0 = y0*rho1d[0][l]; + if (potflag) u += x0*u_brick[mz][my][mx]; + ekx -= x0*vdx_brick[mz][my][mx]; + eky -= x0*vdy_brick[mz][my][mx]; + ekz -= x0*vdz_brick[mz][my][mx]; + } + } + } + + // electrostatic potential + + if (potflag) phi[i] = u; + + // convert E-field to force + const double efactor = scale * eps[i]; + efield[i][0] = efactor*ekx; + efield[i][1] = efactor*eky; + efield[i][2] = efactor*ekz; + + const double qfactor = qqrd2e * scale * q[i] * eps[i]; + f[i][0] += qfactor*ekx; + f[i][1] += qfactor*eky; + if (slabflag != 2) f[i][2] += qfactor*ekz; + } +} + + +/* ---------------------------------------------------------------------- + interpolate from grid to get electric field & force on my particles for ik +------------------------------------------------------------------------- */ + +void PPPMDielectric::fieldforce_ik_dipole() +{ + int i,l,m,n,nx,ny,nz,mx,my,mz; + FFT_SCALAR dx,dy,dz,u; + FFT_SCALAR x0,y0,z0; + FFT_SCALAR ex,ey,ez; + FFT_SCALAR vxx,vyy,vzz,vxy,vxz,vyz; + + // loop over my charges, interpolate electric field from nearby grid points + // (nx,ny,nz) = global coords of grid pt to "lower left" of charge + // (dx,dy,dz) = distance to "lower left" grid pt + // (mx,my,mz) = global coords of moving stencil pt + + + double **mu = atom->mu; + double **x = atom->x; + double **f = atom->f; + double **t = atom->torque; + + int nlocal = atom->nlocal; + + for (i = 0; i < nlocal; i++) { + nx = part2grid[i][0]; + ny = part2grid[i][1]; + nz = part2grid[i][2]; + dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; + dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; + dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; + + compute_rho1d(dx,dy,dz); + + u = ex = ey = ez = ZEROF; + vxx = vyy = vzz = vxy = vxz = vyz = ZEROF; + for (n = nlower; n <= nupper; n++) { + mz = n+nz; + z0 = rho1d[2][n]; + for (m = nlower; m <= nupper; m++) { + my = m+ny; + y0 = z0*rho1d[1][m]; + for (l = nlower; l <= nupper; l++) { + mx = l+nx; + x0 = y0*rho1d[0][l]; + u += x0*u_brick_dipole[mz][my][mx]; + ex -= x0*ux_brick_dipole[mz][my][mx]; + ey -= x0*uy_brick_dipole[mz][my][mx]; + ez -= x0*uz_brick_dipole[mz][my][mx]; + vxx -= x0*vdxx_brick_dipole[mz][my][mx]; + vyy -= x0*vdyy_brick_dipole[mz][my][mx]; + vzz -= x0*vdzz_brick_dipole[mz][my][mx]; + vxy -= x0*vdxy_brick_dipole[mz][my][mx]; + vxz -= x0*vdxz_brick_dipole[mz][my][mx]; + vyz -= x0*vdyz_brick_dipole[mz][my][mx]; + } + } + } + + // electrical potential due to dipoles + + if (potflag) phi[i] = u; + + // convert E-field to torque + + const double mufactor = qqrd2e * scale; + f[i][0] += mufactor*(vxx*mu[i][0] + vxy*mu[i][1] + vxz*mu[i][2]); + f[i][1] += mufactor*(vxy*mu[i][0] + vyy*mu[i][1] + vyz*mu[i][2]); + f[i][2] += mufactor*(vxz*mu[i][0] + vyz*mu[i][1] + vzz*mu[i][2]); + + t[i][0] += mufactor*(mu[i][1]*ez - mu[i][2]*ey); + t[i][1] += mufactor*(mu[i][2]*ex - mu[i][0]*ez); + t[i][2] += mufactor*(mu[i][0]*ey - mu[i][1]*ex); + } +} + +/* ---------------------------------------------------------------------- + interpolate from grid to get electric field & force on my particles for ad +------------------------------------------------------------------------- */ + +void PPPMDielectric::fieldforce_ad() +{ + int i,l,m,n,nx,ny,nz,mx,my,mz; + FFT_SCALAR dx,dy,dz; + FFT_SCALAR ekx,eky,ekz,u; + + double s1,s2,s3; + double sf = 0.0; + double *prd; + + prd = domain->prd; + double xprd = prd[0]; + double yprd = prd[1]; + double zprd = prd[2]; + + double hx_inv = nx_pppm/xprd; + double hy_inv = ny_pppm/yprd; + double hz_inv = nz_pppm/zprd; + + // loop over my charges, interpolate electric field from nearby grid points + // (nx,ny,nz) = global coords of grid pt to "lower left" of charge + // (dx,dy,dz) = distance to "lower left" grid pt + // (mx,my,mz) = global coords of moving stencil pt + // ek = 3 components of E-field on particle + + double *q = atom->q; + double **x = atom->x; + double **f = atom->f; + double *eps = avec->epsilon; + int nlocal = atom->nlocal; + + for (i = 0; i < nlocal; i++) { + nx = part2grid[i][0]; + ny = part2grid[i][1]; + nz = part2grid[i][2]; + dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; + dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; + dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; + + compute_rho1d(dx,dy,dz); + compute_drho1d(dx,dy,dz); + + u = ekx = eky = ekz = ZEROF; + for (n = nlower; n <= nupper; n++) { + mz = n+nz; + for (m = nlower; m <= nupper; m++) { + my = m+ny; + for (l = nlower; l <= nupper; l++) { + mx = l+nx; + u += rho1d[0][l]*rho1d[1][m]*rho1d[2][n]*u_brick[mz][my][mx]; + ekx += drho1d[0][l]*rho1d[1][m]*rho1d[2][n]*u_brick[mz][my][mx]; + eky += rho1d[0][l]*drho1d[1][m]*rho1d[2][n]*u_brick[mz][my][mx]; + ekz += rho1d[0][l]*rho1d[1][m]*drho1d[2][n]*u_brick[mz][my][mx]; + } + } + } + ekx *= hx_inv; + eky *= hy_inv; + ekz *= hz_inv; + + // electrical potential + + if (potflag) phi[i] = u; + + // convert E-field to force and substract self forces + + const double qfactor = qqrd2e * scale; + double qtmp = eps[i]*q[i]; + + s1 = x[i][0]*hx_inv; + s2 = x[i][1]*hy_inv; + s3 = x[i][2]*hz_inv; + sf = sf_coeff[0]*sin(2*MY_PI*s1); + sf += sf_coeff[1]*sin(4*MY_PI*s1); + sf *= 2*qtmp*qtmp; + f[i][0] += qfactor*(ekx*qtmp - sf); + if (qtmp != 0) efield[i][0] = qfactor*(ekx - sf/qtmp); + else efield[i][0] = qfactor*ekx; + + sf = sf_coeff[2]*sin(2*MY_PI*s2); + sf += sf_coeff[3]*sin(4*MY_PI*s2); + sf *= 2*qtmp*qtmp; + f[i][1] += qfactor*(eky*qtmp - sf); + if (qtmp != 0) efield[i][1] = qfactor*(eky - sf/qtmp); + else efield[i][1] = qfactor*eky; + + sf = sf_coeff[4]*sin(2*MY_PI*s3); + sf += sf_coeff[5]*sin(4*MY_PI*s3); + sf *= 2*qtmp*qtmp; + if (slabflag != 2) { + f[i][2] += qfactor*(ekz*qtmp - sf); + if (qtmp != 0) efield[i][2] = qfactor*(ekz - sf/qtmp); + else efield[i][2] = qfactor*ekz; + } + + } +} + +/* ---------------------------------------------------------------------- + pack own values to buf to send to another proc +------------------------------------------------------------------------- */ + +void PPPMDielectric::pack_forward(int flag, FFT_SCALAR *buf, int nlist, int *list) +{ + int n = 0; + + if (flag == FORWARD_IK) { + FFT_SCALAR *xsrc = &vdx_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *ysrc = &vdy_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *zsrc = &vdz_brick[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) { + buf[n++] = xsrc[list[i]]; + buf[n++] = ysrc[list[i]]; + buf[n++] = zsrc[list[i]]; + } + } else if (flag == FORWARD_MU) { + FFT_SCALAR *src_ux = &ux_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *src_uy = &uy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *src_uz = &uz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *src_vxx = &vdxx_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *src_vyy = &vdyy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *src_vzz = &vdzz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *src_vxy = &vdxy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *src_vxz = &vdxz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *src_vyz = &vdyz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) { + buf[n++] = src_ux[list[i]]; + buf[n++] = src_uy[list[i]]; + buf[n++] = src_uz[list[i]]; + buf[n++] = src_vxx[list[i]]; + buf[n++] = src_vyy[list[i]]; + buf[n++] = src_vzz[list[i]]; + buf[n++] = src_vxy[list[i]]; + buf[n++] = src_vxz[list[i]]; + buf[n++] = src_vyz[list[i]]; + } + } else if (flag == FORWARD_AD) { + FFT_SCALAR *src = &u_brick[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) + buf[i] = src[list[i]]; + } else if (flag == FORWARD_IK_PERATOM) { + FFT_SCALAR *esrc = &u_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v0src = &v0_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v1src = &v1_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v2src = &v2_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v3src = &v3_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v4src = &v4_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v5src = &v5_brick[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) { + if (eflag_atom) buf[n++] = esrc[list[i]]; + if (vflag_atom) { + buf[n++] = v0src[list[i]]; + buf[n++] = v1src[list[i]]; + buf[n++] = v2src[list[i]]; + buf[n++] = v3src[list[i]]; + buf[n++] = v4src[list[i]]; + buf[n++] = v5src[list[i]]; + } + } + } else if (flag == FORWARD_AD_PERATOM) { + FFT_SCALAR *v0src = &v0_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v1src = &v1_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v2src = &v2_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v3src = &v3_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v4src = &v4_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v5src = &v5_brick[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) { + buf[n++] = v0src[list[i]]; + buf[n++] = v1src[list[i]]; + buf[n++] = v2src[list[i]]; + buf[n++] = v3src[list[i]]; + buf[n++] = v4src[list[i]]; + buf[n++] = v5src[list[i]]; + } + } +} + +/* ---------------------------------------------------------------------- + unpack another proc's own values from buf and set own ghost values +------------------------------------------------------------------------- */ + +void PPPMDielectric::unpack_forward(int flag, FFT_SCALAR *buf, int nlist, int *list) +{ + int n = 0; + + if (flag == FORWARD_IK) { + FFT_SCALAR *xdest = &vdx_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *ydest = &vdy_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *zdest = &vdz_brick[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) { + xdest[list[i]] = buf[n++]; + ydest[list[i]] = buf[n++]; + zdest[list[i]] = buf[n++]; + } + } else if (flag == FORWARD_MU) { + FFT_SCALAR *dest_ux = &ux_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *dest_uy = &uy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *dest_uz = &uz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *dest_vxx = &vdxx_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *dest_vyy = &vdyy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *dest_vzz = &vdzz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *dest_vxy = &vdxy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *dest_vxz = &vdxz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *dest_vyz = &vdyz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) { + dest_ux[list[i]] = buf[n++]; + dest_uy[list[i]] = buf[n++]; + dest_uz[list[i]] = buf[n++]; + dest_vxx[list[i]] = buf[n++]; + dest_vyy[list[i]] = buf[n++]; + dest_vzz[list[i]] = buf[n++]; + dest_vxy[list[i]] = buf[n++]; + dest_vxz[list[i]] = buf[n++]; + dest_vyz[list[i]] = buf[n++]; + } + } else if (flag == FORWARD_AD) { + FFT_SCALAR *dest = &u_brick[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) + dest[list[i]] = buf[i]; + } else if (flag == FORWARD_IK_PERATOM) { + FFT_SCALAR *esrc = &u_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v0src = &v0_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v1src = &v1_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v2src = &v2_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v3src = &v3_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v4src = &v4_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v5src = &v5_brick[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) { + if (eflag_atom) esrc[list[i]] = buf[n++]; + if (vflag_atom) { + v0src[list[i]] = buf[n++]; + v1src[list[i]] = buf[n++]; + v2src[list[i]] = buf[n++]; + v3src[list[i]] = buf[n++]; + v4src[list[i]] = buf[n++]; + v5src[list[i]] = buf[n++]; + } + } + } else if (flag == FORWARD_AD_PERATOM) { + FFT_SCALAR *v0src = &v0_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v1src = &v1_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v2src = &v2_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v3src = &v3_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v4src = &v4_brick[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *v5src = &v5_brick[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) { + v0src[list[i]] = buf[n++]; + v1src[list[i]] = buf[n++]; + v2src[list[i]] = buf[n++]; + v3src[list[i]] = buf[n++]; + v4src[list[i]] = buf[n++]; + v5src[list[i]] = buf[n++]; + } + } +} + +/* ---------------------------------------------------------------------- + pack ghost values into buf to send to another proc +------------------------------------------------------------------------- */ + +void PPPMDielectric::pack_reverse(int flag, FFT_SCALAR *buf, int nlist, int *list) +{ + int n = 0; + if (flag == REVERSE_RHO) { + FFT_SCALAR *src = &density_brick[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) + buf[n++] = src[list[i]]; + } else if (flag == REVERSE_MU) { + FFT_SCALAR *src_mu0 = &densityx_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *src_mu1 = &densityy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *src_mu2 = &densityz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) { + buf[n++] = src_mu0[list[i]]; + buf[n++] = src_mu1[list[i]]; + buf[n++] = src_mu2[list[i]]; + } + } +} + +/* ---------------------------------------------------------------------- + unpack another proc's ghost values from buf and add to own values +------------------------------------------------------------------------- */ + +void PPPMDielectric::unpack_reverse(int flag, FFT_SCALAR *buf, int nlist, int *list) +{ + int n = 0; + if (flag == REVERSE_RHO) { + FFT_SCALAR *dest = &density_brick[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) + dest[list[i]] += buf[n++]; + } else if (flag == REVERSE_MU) { + FFT_SCALAR *dest_mu0 = &densityx_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *dest_mu1 = &densityy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + FFT_SCALAR *dest_mu2 = &densityz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; + for (int i = 0; i < nlist; i++) { + dest_mu0[list[i]] += buf[n++]; + dest_mu1[list[i]] += buf[n++]; + dest_mu2[list[i]] += buf[n++]; + } + } +} + +/* ---------------------------------------------------------------------- + Slab-geometry correction term to dampen inter-slab interactions between + periodically repeating slabs. Yields good approximation to 2D Ewald if + adequate empty space is left between repeating slabs (J. Chem. Phys. + 111, 3155). Slabs defined here to be parallel to the xy plane. Also + extended to non-neutral systems (J. Chem. Phys. 131, 094107). +------------------------------------------------------------------------- */ + +void PPPMDielectric::slabcorr() +{ + // compute local contribution to global dipole moment + + double *q = atom->q; + double **x = atom->x; + double *eps = avec->epsilon; + double zprd = domain->zprd; + int nlocal = atom->nlocal; + + double dipole = 0.0; + for (int i = 0; i < nlocal; i++) dipole += q[i]*x[i][2]; + + if (mu_flag) { + double **mu = atom->mu; + for (int i = 0; i < nlocal; i++) dipole += mu[i][2]; + } + + // sum local contributions to get global dipole moment + + double dipole_all; + MPI_Allreduce(&dipole,&dipole_all,1,MPI_DOUBLE,MPI_SUM,world); + + // need to make non-neutral systems and/or + // per-atom energy translationally invariant + + double dipole_r2 = 0.0; + if (eflag_atom || fabs(qsum) > SMALL) { + + if (mu_flag) + error->all(FLERR,"Cannot (yet) use kspace slab correction with " + "long-range dipoles and non-neutral systems or per-atom energy"); + + for (int i = 0; i < nlocal; i++) + dipole_r2 += q[i]*x[i][2]*x[i][2]; + + // sum local contributions + + double tmp; + MPI_Allreduce(&dipole_r2,&tmp,1,MPI_DOUBLE,MPI_SUM,world); + dipole_r2 = tmp; + } + + // compute corrections + + const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - + qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + const double qscale = qqrd2e * scale; + + if (eflag_global) energy += qscale * e_slabcorr; + + // per-atom energy + + if (eflag_atom) { + double efact = qscale * MY_2PI/volume; + for (int i = 0; i < nlocal; i++) + eatom[i] += efact * eps[i]*q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + + qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); + } + + // add on force corrections + + double ffact = qscale * (-4.0*MY_PI/volume); + double **f = atom->f; + + for (int i = 0; i < nlocal; i++) { + f[i][2] += ffact * eps[i]*q[i]*(dipole_all - qsum*x[i][2]); + efield[i][2] += ffact * eps[i]*(dipole_all - qsum*x[i][2]); + } + + // add on torque corrections + + if (mu_flag && atom->torque) { + double **mu = atom->mu; + double **torque = atom->torque; + for (int i = 0; i < nlocal; i++) { + torque[i][0] += ffact * dipole_all * mu[i][1]; + torque[i][1] += -ffact * dipole_all * mu[i][0]; + } + } +} + +/* ---------------------------------------------------------------------- + compute qsum,qsqsum,q2 and give error/warning if not charge neutral + called initially, when particle count changes, when charges are changed +------------------------------------------------------------------------- */ + +void PPPMDielectric::qsum_qsq() +{ + const double * const q = atom->q; + const double * const eps = avec->epsilon; + const int nlocal = atom->nlocal; + double qsum_local(0.0), qsqsum_local(0.0); + +#if defined(_OPENMP) +#pragma omp parallel for default(none) reduction(+:qsum_local,qsqsum_local) +#endif + for (int i = 0; i < nlocal; i++) { + double qtmp = eps[i]*q[i]; + qsum_local += qtmp; + qsqsum_local += qtmp*qtmp; + } + + MPI_Allreduce(&qsum_local,&qsum,1,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&qsqsum_local,&qsqsum,1,MPI_DOUBLE,MPI_SUM,world); + + q2 = qsqsum * force->qqrd2e; +} + +/* ---------------------------------------------------------------------- + memory usage of local arrays +------------------------------------------------------------------------- */ + +double PPPMDielectric::memory_usage() +{ + double bytes = nmax*3 * sizeof(double); + int nbrick = (nxhi_out-nxlo_out+1) * (nyhi_out-nylo_out+1) * + (nzhi_out-nzlo_out+1); + if (differentiation_flag == 1) { + bytes += 2 * nbrick * sizeof(FFT_SCALAR); + } else { + bytes += 4 * nbrick * sizeof(FFT_SCALAR); + } + if (triclinic) bytes += 3 * nfft_both * sizeof(double); + bytes += 6 * nfft_both * sizeof(double); + bytes += nfft_both * sizeof(double); + bytes += nfft_both*5 * sizeof(FFT_SCALAR); + + if (mu_flag) { + bytes += 3 * nbrick * sizeof(FFT_SCALAR); + //work? + } + + if (peratom_allocate_flag) + bytes += 6 * nbrick * sizeof(FFT_SCALAR); + + if (group_allocate_flag) { + bytes += 2 * nbrick * sizeof(FFT_SCALAR); + bytes += 2 * nfft_both * sizeof(FFT_SCALAR);; + } + + if (cg) bytes += cg->memory_usage(); + + if (mu_flag) + bytes += cg_mu->memory_usage(); + + return bytes; +} + + +/* ---------------------------------------------------------------------- + compute qsum,qsqsum,q2 and give error/warning if not charge neutral + called initially, when particle count changes, when charges are changed +------------------------------------------------------------------------- */ + +void PPPMDielectric::musum_musq() +{ + double** mu = atom->mu; + const int nlocal = atom->nlocal; + double musum_local(0.0), musqsum_local(0.0); + + for (int i = 0; i < nlocal; i++) { + musum_local += mu[i][0] + mu[i][1] + mu[i][2]; + musqsum_local += mu[i][0]*mu[i][0] + mu[i][1]*mu[i][1] + mu[i][2]*mu[i][2]; + } + + MPI_Allreduce(&musum_local,&musum,1,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&musqsum_local,&musqsum,1,MPI_DOUBLE,MPI_SUM,world); + + /* + if ((qsqsum == 0.0) && (comm->me == 0) && warn_nocharge) { + error->warning(FLERR,"Using kspace solver on system with no charge"); + warn_nocharge = 0; + }*/ + + mu2 = musqsum * force->qqrd2e; + + // not yet sure of the correction needed for non-neutral systems + // so issue warning or error + /* + if (fabs(qsum) > SMALL) { + char str[128]; + sprintf(str,"System is not charge neutral, net charge = %g",qsum); + if (!warn_nonneutral) error->all(FLERR,str); + if (warn_nonneutral == 1 && comm->me == 0) error->warning(FLERR,str); + warn_nonneutral = 2; + }*/ +} + diff --git a/src/USER-DIELECTRIC/pppm_dielectric.h b/src/USER-DIELECTRIC/pppm_dielectric.h new file mode 100644 index 0000000000..e30d03cd9b --- /dev/null +++ b/src/USER-DIELECTRIC/pppm_dielectric.h @@ -0,0 +1,94 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef KSPACE_CLASS + +KSpaceStyle(pppm/dielectric,PPPMDielectric) + +#else + +#ifndef LMP_PPPM_DIELECTRIC_H +#define LMP_PPPM_DIELECTRIC_H + +#include "pppm.h" + +namespace LAMMPS_NS { + +class PPPMDielectric : public PPPM { + public: + PPPMDielectric(class LAMMPS *); + virtual ~PPPMDielectric(); + virtual void init(); + void setup_grid(); + virtual void compute(int, int); + virtual double memory_usage(); + + double** efield; + double* phi; + int potflag; // 1/0 if per-atom electrostatic potential phi is needed + + void qsum_qsq(); + + protected: + FFT_SCALAR ***densityx_brick_dipole,***densityy_brick_dipole,***densityz_brick_dipole; + FFT_SCALAR ***vdxx_brick_dipole,***vdyy_brick_dipole,***vdzz_brick_dipole; + FFT_SCALAR ***vdxy_brick_dipole,***vdxz_brick_dipole,***vdyz_brick_dipole; + FFT_SCALAR ***u_brick_dipole; + FFT_SCALAR ***ux_brick_dipole,***uy_brick_dipole,***uz_brick_dipole; + FFT_SCALAR *densityx_fft_dipole,*densityy_fft_dipole,*densityz_fft_dipole; + FFT_SCALAR *work3,*work4; + + class GridComm *cg_mu; + + virtual void allocate(); + virtual void deallocate(); + void slabcorr(); + + void fieldforce_ik(); + void fieldforce_ad(); + + // grid communication + + virtual void pack_forward(int, FFT_SCALAR *, int, int *); + virtual void unpack_forward(int, FFT_SCALAR *, int, int *); + virtual void pack_reverse(int, FFT_SCALAR *, int, int *); + virtual void unpack_reverse(int, FFT_SCALAR *, int, int *); + + // dipole + + int mu_flag; + double musqsum,musum,mu2; + void make_rho_dipole(); + void brick2fft_dipole(); + void poisson_ik_dipole(); + void fieldforce_ik_dipole(); + void musum_musq(); + + class AtomVecDielectric* avec; + +}; + +} + +#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. + +*/ diff --git a/src/USER-DIELECTRIC/pppm_disp_dielectric.cpp b/src/USER-DIELECTRIC/pppm_disp_dielectric.cpp new file mode 100644 index 0000000000..8493428aa1 --- /dev/null +++ b/src/USER-DIELECTRIC/pppm_disp_dielectric.cpp @@ -0,0 +1,820 @@ +/* ---------------------------------------------------------------------- + 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 authors: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include "pppm_disp_dielectric.h" +#include "math_const.h" +#include "atom.h" +#include "atom_vec_dielectric.h" +#include "comm.h" +#include "gridcomm.h" +#include "neighbor.h" +#include "force.h" +#include "pair.h" +#include "bond.h" +#include "angle.h" +#include "domain.h" +#include "fft3d_wrap.h" +#include "remap_wrap.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define MAXORDER 7 +#define OFFSET 16384 +#define SMALL 0.00001 +#define LARGE 10000.0 +#define EPS_HOC 1.0e-7 + +enum{REVERSE_RHO, REVERSE_RHO_G, REVERSE_RHO_A, REVERSE_RHO_NONE}; +enum{FORWARD_IK, FORWARD_AD, FORWARD_IK_PERATOM, FORWARD_AD_PERATOM, + FORWARD_IK_G, FORWARD_AD_G, FORWARD_IK_PERATOM_G, FORWARD_AD_PERATOM_G, + FORWARD_IK_A, FORWARD_AD_A, FORWARD_IK_PERATOM_A, FORWARD_AD_PERATOM_A, + FORWARD_IK_NONE, FORWARD_AD_NONE, FORWARD_IK_PERATOM_NONE, FORWARD_AD_PERATOM_NONE}; + +#ifdef FFT_SINGLE +#define ZEROF 0.0f +#define ONEF 1.0f +#else +#define ZEROF 0.0 +#define ONEF 1.0 +#endif + +/* ---------------------------------------------------------------------- */ + +PPPMDispDielectric::PPPMDispDielectric(LAMMPS *lmp) : PPPMDisp(lmp) +{ + dipoleflag = 0; // turned off for now, until dipole works + group_group_enable = 0; + + mu_flag = 0; + + efield = NULL; + phi = NULL; + potflag = 0; + + avec = (AtomVecDielectric *) atom->style_match("dielectric"); + if (!avec) error->all(FLERR,"pppm/dielectric requires atom style dielectric"); +} + +/* ---------------------------------------------------------------------- */ + +PPPMDispDielectric::~PPPMDispDielectric() +{ + memory->destroy(efield); + memory->destroy(phi); +} + +/* ---------------------------------------------------------------------- + compute the PPPM long-range force, energy, virial +------------------------------------------------------------------------- */ + +void PPPMDispDielectric::compute(int eflag, int vflag) +{ + + int i; + // convert atoms from box to lamda coords + + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = evflag_atom = eflag_global = vflag_global = + eflag_atom = vflag_atom = 0; + + if (potflag) evflag_atom = 1; + + if (evflag_atom && !peratom_allocate_flag) { + allocate_peratom(); + if (function[0]) { + cg_peratom->ghost_notify(); + cg_peratom->setup(); + } + if (function[1] + function[2] + function[3]) { + cg_peratom_6->ghost_notify(); + cg_peratom_6->setup(); + } + peratom_allocate_flag = 1; + } + + if (triclinic == 0) boxlo = domain->boxlo; + else { + boxlo = domain->boxlo_lamda; + domain->x2lamda(atom->nlocal); + } + // extend size of per-atom arrays if necessary + + if (atom->nmax > nmax) { + + if (function[0]) { + memory->destroy(part2grid); + memory->destroy(efield); + memory->destroy(phi); + } + if (function[1] + function[2] + function[3]) memory->destroy(part2grid_6); + nmax = atom->nmax; + if (function[0]) { + memory->create(part2grid,nmax,3,"pppm/disp:part2grid"); + memory->create(efield,nmax,3,"pppm/disp:efield"); + memory->create(phi,nmax,"pppm/disp:phi"); + } + if (function[1] + function[2] + function[3]) + memory->create(part2grid_6,nmax,3,"pppm/disp:part2grid_6"); + } + + energy = 0.0; + energy_1 = 0.0; + energy_6 = 0.0; + if (vflag) for (i = 0; i < 6; i++) virial_6[i] = virial_1[i] = 0.0; + + // find grid points for all my particles + // distribute partcles' charges/dispersion coefficients on the grid + // communication between processors and remapping two fft + // Solution of poissons equation in k-space and backtransformation + // communication between processors + // calculation of forces + + if (function[0]) { + + //perfrom calculations for coulomb interactions only + + particle_map_c(delxinv, delyinv, delzinv, shift, part2grid, nupper, nlower, + nxlo_out, nylo_out, nzlo_out, nxhi_out, nyhi_out, nzhi_out); + + make_rho_c(); + + cg->reverse_comm(this,REVERSE_RHO); + + brick2fft(nxlo_in, nylo_in, nzlo_in, nxhi_in, nyhi_in, nzhi_in, + density_brick, density_fft, work1,remap); + + if (differentiation_flag == 1) { + + poisson_ad(work1, work2, density_fft, fft1, fft2, + nx_pppm, ny_pppm, nz_pppm, nfft, + nxlo_fft, nylo_fft, nzlo_fft, nxhi_fft, nyhi_fft, nzhi_fft, + nxlo_in, nylo_in, nzlo_in, nxhi_in, nyhi_in, nzhi_in, + energy_1, greensfn, + virial_1, vg,vg2, + u_brick, v0_brick, v1_brick, v2_brick, v3_brick, v4_brick, v5_brick); + + cg->forward_comm(this,FORWARD_AD); + + fieldforce_c_ad(); + + if (vflag_atom) cg_peratom->forward_comm(this, FORWARD_AD_PERATOM); + + } else { + poisson_ik(work1, work2, density_fft, fft1, fft2, + nx_pppm, ny_pppm, nz_pppm, nfft, + nxlo_fft, nylo_fft, nzlo_fft, nxhi_fft, nyhi_fft, nzhi_fft, + nxlo_in, nylo_in, nzlo_in, nxhi_in, nyhi_in, nzhi_in, + energy_1, greensfn, + fkx, fky, fkz,fkx2, fky2, fkz2, + vdx_brick, vdy_brick, vdz_brick, virial_1, vg,vg2, + u_brick, v0_brick, v1_brick, v2_brick, v3_brick, v4_brick, v5_brick); + + cg->forward_comm(this, FORWARD_IK); + + fieldforce_c_ik(); + + if (evflag_atom) cg_peratom->forward_comm(this, FORWARD_IK_PERATOM); + } + if (evflag_atom) fieldforce_c_peratom(); + } + + if (function[1]) { + //perfrom calculations for geometric mixing + particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, part2grid_6, nupper_6, nlower_6, + nxlo_out_6, nylo_out_6, nzlo_out_6, nxhi_out_6, nyhi_out_6, nzhi_out_6); + make_rho_g(); + + + cg_6->reverse_comm(this, REVERSE_RHO_G); + + brick2fft(nxlo_in_6, nylo_in_6, nzlo_in_6, nxhi_in_6, nyhi_in_6, nzhi_in_6, + density_brick_g, density_fft_g, work1_6,remap_6); + + if (differentiation_flag == 1) { + + poisson_ad(work1_6, work2_6, density_fft_g, fft1_6, fft2_6, + nx_pppm_6, ny_pppm_6, nz_pppm_6, nfft_6, + nxlo_fft_6, nylo_fft_6, nzlo_fft_6, nxhi_fft_6, nyhi_fft_6, nzhi_fft_6, + nxlo_in_6, nylo_in_6, nzlo_in_6, nxhi_in_6, nyhi_in_6, nzhi_in_6, + energy_6, greensfn_6, + virial_6, vg_6, vg2_6, + u_brick_g, v0_brick_g, v1_brick_g, v2_brick_g, v3_brick_g, v4_brick_g, v5_brick_g); + + cg_6->forward_comm(this,FORWARD_AD_G); + + fieldforce_g_ad(); + + if (vflag_atom) cg_peratom_6->forward_comm(this,FORWARD_AD_PERATOM_G); + + } else { + poisson_ik(work1_6, work2_6, density_fft_g, fft1_6, fft2_6, + nx_pppm_6, ny_pppm_6, nz_pppm_6, nfft_6, + nxlo_fft_6, nylo_fft_6, nzlo_fft_6, nxhi_fft_6, nyhi_fft_6, nzhi_fft_6, + nxlo_in_6, nylo_in_6, nzlo_in_6, nxhi_in_6, nyhi_in_6, nzhi_in_6, + energy_6, greensfn_6, + fkx_6, fky_6, fkz_6,fkx2_6, fky2_6, fkz2_6, + vdx_brick_g, vdy_brick_g, vdz_brick_g, virial_6, vg_6, vg2_6, + u_brick_g, v0_brick_g, v1_brick_g, v2_brick_g, v3_brick_g, v4_brick_g, v5_brick_g); + + cg_6->forward_comm(this,FORWARD_IK_G); + + fieldforce_g_ik(); + + + if (evflag_atom) cg_peratom_6->forward_comm(this, FORWARD_IK_PERATOM_G); + } + if (evflag_atom) fieldforce_g_peratom(); + } + + if (function[2]) { + //perform calculations for arithmetic mixing + particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, part2grid_6, nupper_6, nlower_6, + nxlo_out_6, nylo_out_6, nzlo_out_6, nxhi_out_6, nyhi_out_6, nzhi_out_6); + make_rho_a(); + + cg_6->reverse_comm(this, REVERSE_RHO_A); + + brick2fft_a(); + + if ( differentiation_flag == 1) { + + poisson_ad(work1_6, work2_6, density_fft_a3, fft1_6, fft2_6, + nx_pppm_6, ny_pppm_6, nz_pppm_6, nfft_6, + nxlo_fft_6, nylo_fft_6, nzlo_fft_6, nxhi_fft_6, nyhi_fft_6, nzhi_fft_6, + nxlo_in_6, nylo_in_6, nzlo_in_6, nxhi_in_6, nyhi_in_6, nzhi_in_6, + energy_6, greensfn_6, + virial_6, vg_6, vg2_6, + u_brick_a3, v0_brick_a3, v1_brick_a3, v2_brick_a3, v3_brick_a3, v4_brick_a3, v5_brick_a3); + poisson_2s_ad(density_fft_a0, density_fft_a6, + u_brick_a0, v0_brick_a0, v1_brick_a0, v2_brick_a0, v3_brick_a0, v4_brick_a0, v5_brick_a0, + u_brick_a6, v0_brick_a6, v1_brick_a6, v2_brick_a6, v3_brick_a6, v4_brick_a6, v5_brick_a6); + poisson_2s_ad(density_fft_a1, density_fft_a5, + u_brick_a1, v0_brick_a1, v1_brick_a1, v2_brick_a1, v3_brick_a1, v4_brick_a1, v5_brick_a1, + u_brick_a5, v0_brick_a5, v1_brick_a5, v2_brick_a5, v3_brick_a5, v4_brick_a5, v5_brick_a5); + poisson_2s_ad(density_fft_a2, density_fft_a4, + u_brick_a2, v0_brick_a2, v1_brick_a2, v2_brick_a2, v3_brick_a2, v4_brick_a2, v5_brick_a2, + u_brick_a4, v0_brick_a4, v1_brick_a4, v2_brick_a4, v3_brick_a4, v4_brick_a4, v5_brick_a4); + + cg_6->forward_comm(this, FORWARD_AD_A); + + fieldforce_a_ad(); + + if (evflag_atom) cg_peratom_6->forward_comm(this, FORWARD_AD_PERATOM_A); + + } else { + + poisson_ik(work1_6, work2_6, density_fft_a3, fft1_6, fft2_6, + nx_pppm_6, ny_pppm_6, nz_pppm_6, nfft_6, + nxlo_fft_6, nylo_fft_6, nzlo_fft_6, nxhi_fft_6, nyhi_fft_6, nzhi_fft_6, + nxlo_in_6, nylo_in_6, nzlo_in_6, nxhi_in_6, nyhi_in_6, nzhi_in_6, + energy_6, greensfn_6, + fkx_6, fky_6, fkz_6,fkx2_6, fky2_6, fkz2_6, + vdx_brick_a3, vdy_brick_a3, vdz_brick_a3, virial_6, vg_6, vg2_6, + u_brick_a3, v0_brick_a3, v1_brick_a3, v2_brick_a3, v3_brick_a3, v4_brick_a3, v5_brick_a3); + poisson_2s_ik(density_fft_a0, density_fft_a6, + vdx_brick_a0, vdy_brick_a0, vdz_brick_a0, + vdx_brick_a6, vdy_brick_a6, vdz_brick_a6, + u_brick_a0, v0_brick_a0, v1_brick_a0, v2_brick_a0, v3_brick_a0, v4_brick_a0, v5_brick_a0, + u_brick_a6, v0_brick_a6, v1_brick_a6, v2_brick_a6, v3_brick_a6, v4_brick_a6, v5_brick_a6); + poisson_2s_ik(density_fft_a1, density_fft_a5, + vdx_brick_a1, vdy_brick_a1, vdz_brick_a1, + vdx_brick_a5, vdy_brick_a5, vdz_brick_a5, + u_brick_a1, v0_brick_a1, v1_brick_a1, v2_brick_a1, v3_brick_a1, v4_brick_a1, v5_brick_a1, + u_brick_a5, v0_brick_a5, v1_brick_a5, v2_brick_a5, v3_brick_a5, v4_brick_a5, v5_brick_a5); + poisson_2s_ik(density_fft_a2, density_fft_a4, + vdx_brick_a2, vdy_brick_a2, vdz_brick_a2, + vdx_brick_a4, vdy_brick_a4, vdz_brick_a4, + u_brick_a2, v0_brick_a2, v1_brick_a2, v2_brick_a2, v3_brick_a2, v4_brick_a2, v5_brick_a2, + u_brick_a4, v0_brick_a4, v1_brick_a4, v2_brick_a4, v3_brick_a4, v4_brick_a4, v5_brick_a4); + + cg_6->forward_comm(this, FORWARD_IK_A); + + fieldforce_a_ik(); + + if (evflag_atom) cg_peratom_6->forward_comm(this, FORWARD_IK_PERATOM_A); + } + if (evflag_atom) fieldforce_a_peratom(); + } + + if (function[3]) { + //perfrom calculations if no mixing rule applies + particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, part2grid_6, nupper_6, nlower_6, + nxlo_out_6, nylo_out_6, nzlo_out_6, nxhi_out_6, nyhi_out_6, nzhi_out_6); + + make_rho_none(); + + cg_6->reverse_comm(this, REVERSE_RHO_NONE); + + brick2fft_none(); + + if (differentiation_flag == 1) { + + int n = 0; + for (int k = 0; kforward_comm(this,FORWARD_AD_NONE); + + fieldforce_none_ad(); + + if (vflag_atom) cg_peratom_6->forward_comm(this,FORWARD_AD_PERATOM_NONE); + + } else { + int n = 0; + for (int k = 0; kforward_comm(this,FORWARD_IK_NONE); + + fieldforce_none_ik(); + + if (evflag_atom) + cg_peratom_6->forward_comm(this, FORWARD_IK_PERATOM_NONE); + } + if (evflag_atom) fieldforce_none_peratom(); + } + + // update qsum and qsqsum, if atom count has changed and energy needed + + if ((eflag_global || eflag_atom) && atom->natoms != natoms_original) { + qsum_qsq(); + natoms_original = atom->natoms; + } + + // sum energy across procs and add in volume-dependent term + + const double qscale = force->qqrd2e * scale; + if (eflag_global) { + double energy_all; + MPI_Allreduce(&energy_1,&energy_all,1,MPI_DOUBLE,MPI_SUM,world); + energy_1 = energy_all; + MPI_Allreduce(&energy_6,&energy_all,1,MPI_DOUBLE,MPI_SUM,world); + energy_6 = energy_all; + + energy_1 *= 0.5*volume; + energy_6 *= 0.5*volume; + + energy_1 -= g_ewald*qsqsum/MY_PIS + + MY_PI2*qsum*qsum / (g_ewald*g_ewald*volume); + energy_6 += - MY_PI*MY_PIS/(6*volume)*pow(g_ewald_6,3)*csumij + + 1.0/12.0*pow(g_ewald_6,6)*csum; + energy_1 *= qscale; + } + + // sum virial across procs + + if (vflag_global) { + double virial_all[6]; + MPI_Allreduce(virial_1,virial_all,6,MPI_DOUBLE,MPI_SUM,world); + for (i = 0; i < 6; i++) virial[i] = 0.5*qscale*volume*virial_all[i]; + MPI_Allreduce(virial_6,virial_all,6,MPI_DOUBLE,MPI_SUM,world); + for (i = 0; i < 6; i++) virial[i] += 0.5*volume*virial_all[i]; + if (function[1]+function[2]+function[3]){ + double a = MY_PI*MY_PIS/(6*volume)*pow(g_ewald_6,3)*csumij; + virial[0] -= a; + virial[1] -= a; + virial[2] -= a; + } + } + + if (eflag_atom) { + if (function[0]) { + double *q = atom->q; + for (i = 0; i < atom->nlocal; i++) { + eatom[i] -= qscale*g_ewald*q[i]*q[i]/MY_PIS + qscale*MY_PI2*q[i]*qsum / (g_ewald*g_ewald*volume); //coulomb self energy correction + } + } + if (function[1] + function[2] + function[3]) { + int tmp; + for (i = 0; i < atom->nlocal; i++) { + tmp = atom->type[i]; + eatom[i] += - MY_PI*MY_PIS/(6*volume)*pow(g_ewald_6,3)*csumi[tmp] + + 1.0/12.0*pow(g_ewald_6,6)*cii[tmp]; + } + } + } + + if (vflag_atom) { + if (function[1] + function[2] + function[3]) { + int tmp; + for (i = 0; i < atom->nlocal; i++) { + tmp = atom->type[i]; + for (int n = 0; n < 3; n++) vatom[i][n] -= MY_PI*MY_PIS/(6*volume)*pow(g_ewald_6,3)*csumi[tmp]; //dispersion self virial correction + } + } + } + + + // 2d slab correction + + if (slabflag) slabcorr(eflag); + if (function[0]) energy += energy_1; + if (function[1] + function[2] + function[3]) energy += energy_6; + + // convert atoms back from lamda to box coords + + if (triclinic) domain->lamda2x(atom->nlocal); +} + +/* ---------------------------------------------------------------------- + interpolate from grid to get electric field & force on my particles + for ik scheme +------------------------------------------------------------------------- */ + +void PPPMDispDielectric::fieldforce_c_ik() +{ + int i,l,m,n,nx,ny,nz,mx,my,mz; + FFT_SCALAR dx,dy,dz,x0,y0,z0; + FFT_SCALAR ekx,eky,ekz,u; + + // loop over my charges, interpolate electric field from nearby grid points + // (nx,ny,nz) = global coords of grid pt to "lower left" of charge + // (dx,dy,dz) = distance to "lower left" grid pt + // (mx,my,mz) = global coords of moving stencil pt + // ek = 3 components of E-field on particle + + double *q = atom->q; + double **x = atom->x; + double **f = atom->f; + double *eps = avec->epsilon; + int nlocal = atom->nlocal; + + for (i = 0; i < nlocal; i++) { + nx = part2grid[i][0]; + ny = part2grid[i][1]; + nz = part2grid[i][2]; + dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; + dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; + dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; + + compute_rho1d(dx,dy,dz, order, rho_coeff, rho1d); + + u = ekx = eky = ekz = ZEROF; + for (n = nlower; n <= nupper; n++) { + mz = n+nz; + z0 = rho1d[2][n]; + for (m = nlower; m <= nupper; m++) { + my = m+ny; + y0 = z0*rho1d[1][m]; + for (l = nlower; l <= nupper; l++) { + mx = l+nx; + x0 = y0*rho1d[0][l]; + if (potflag) u += x0*u_brick[mz][my][mx]; + ekx -= x0*vdx_brick[mz][my][mx]; + eky -= x0*vdy_brick[mz][my][mx]; + ekz -= x0*vdz_brick[mz][my][mx]; + } + } + } + + // electrostatic potential + + if (potflag) phi[i] = u; + + // convert E-field to force + + const double efactor = scale * eps[i]; + efield[i][0] = efactor*ekx; + efield[i][1] = efactor*eky; + efield[i][2] = efactor*ekz; + + // convert E-field to force + + const double qfactor = force->qqrd2e * scale * q[i]; + f[i][0] += qfactor*ekx; + f[i][1] += qfactor*eky; + if (slabflag != 2) f[i][2] += qfactor*ekz; + } +} +/* ---------------------------------------------------------------------- + interpolate from grid to get electric field & force on my particles + for ad scheme +------------------------------------------------------------------------- */ + +void PPPMDispDielectric::fieldforce_c_ad() +{ + int i,l,m,n,nx,ny,nz,mx,my,mz; + FFT_SCALAR dx,dy,dz; + FFT_SCALAR ekx,eky,ekz,u; + double s1,s2,s3; + double sf = 0.0; + + double *prd; + + if (triclinic == 0) prd = domain->prd; + else prd = domain->prd_lamda; + + double xprd = prd[0]; + double yprd = prd[1]; + double zprd = prd[2]; + double zprd_slab = zprd*slab_volfactor; + + double hx_inv = nx_pppm/xprd; + double hy_inv = ny_pppm/yprd; + double hz_inv = nz_pppm/zprd_slab; + + // loop over my charges, interpolate electric field from nearby grid points + // (nx,ny,nz) = global coords of grid pt to "lower left" of charge + // (dx,dy,dz) = distance to "lower left" grid pt + // (mx,my,mz) = global coords of moving stencil pt + // ek = 3 components of E-field on particle + + double *q = atom->q; + double **x = atom->x; + double **f = atom->f; + double *eps = avec->epsilon; + int nlocal = atom->nlocal; + + for (i = 0; i < nlocal; i++) { + nx = part2grid[i][0]; + ny = part2grid[i][1]; + nz = part2grid[i][2]; + dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; + dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; + dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; + + compute_rho1d(dx,dy,dz, order, rho_coeff, rho1d); + compute_drho1d(dx,dy,dz, order, drho_coeff, drho1d); + + u = ekx = eky = ekz = ZEROF; + for (n = nlower; n <= nupper; n++) { + mz = n+nz; + for (m = nlower; m <= nupper; m++) { + my = m+ny; + for (l = nlower; l <= nupper; l++) { + mx = l+nx; + u += rho1d[0][l]*rho1d[1][m]*rho1d[2][n]*u_brick[mz][my][mx]; + ekx += drho1d[0][l]*rho1d[1][m]*rho1d[2][n]*u_brick[mz][my][mx]; + eky += rho1d[0][l]*drho1d[1][m]*rho1d[2][n]*u_brick[mz][my][mx]; + ekz += rho1d[0][l]*rho1d[1][m]*drho1d[2][n]*u_brick[mz][my][mx]; + } + } + } + ekx *= hx_inv; + eky *= hy_inv; + ekz *= hz_inv; + + // electrical potential + + if (potflag) phi[i] = u; + + // convert E-field to force and substract self forces + const double qfactor = qqrd2e * scale; + double qtmp = eps[i]*q[i]; + + s1 = x[i][0]*hx_inv; + s2 = x[i][1]*hy_inv; + s3 = x[i][2]*hz_inv; + sf = sf_coeff[0]*sin(2*MY_PI*s1); + sf += sf_coeff[1]*sin(4*MY_PI*s1); + sf *= 2*q[i]*q[i]; + f[i][0] += qfactor*(ekx*q[i] - sf); + + sf = sf_coeff[2]*sin(2*MY_PI*s2); + sf += sf_coeff[3]*sin(4*MY_PI*s2); + sf *= 2*q[i]*q[i]; + f[i][1] += qfactor*(eky*q[i] - sf); + + sf = sf_coeff[4]*sin(2*MY_PI*s3); + sf += sf_coeff[5]*sin(4*MY_PI*s3); + sf *= 2*q[i]*q[i]; + if (slabflag != 2) f[i][2] += qfactor*(ekz*q[i] - sf); + } +} + +/* ---------------------------------------------------------------------- + interpolate from grid to get electric field & force on my particles +------------------------------------------------------------------------- */ + +void PPPMDispDielectric::fieldforce_c_peratom() +{ + int i,l,m,n,nx,ny,nz,mx,my,mz; + FFT_SCALAR dx,dy,dz,x0,y0,z0; + FFT_SCALAR u_pa,v0,v1,v2,v3,v4,v5; + + // loop over my charges, interpolate electric field from nearby grid points + // (nx,ny,nz) = global coords of grid pt to "lower left" of charge + // (dx,dy,dz) = distance to "lower left" grid pt + // (mx,my,mz) = global coords of moving stencil pt + // ek = 3 components of E-field on particle + + double *q = atom->q; + double **x = atom->x; + + int nlocal = atom->nlocal; + + for (i = 0; i < nlocal; i++) { + nx = part2grid[i][0]; + ny = part2grid[i][1]; + nz = part2grid[i][2]; + dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; + dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; + dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; + + compute_rho1d(dx,dy,dz, order, rho_coeff, rho1d); + + u_pa = v0 = v1 = v2 = v3 = v4 = v5 = ZEROF; + for (n = nlower; n <= nupper; n++) { + mz = n+nz; + z0 = rho1d[2][n]; + for (m = nlower; m <= nupper; m++) { + my = m+ny; + y0 = z0*rho1d[1][m]; + for (l = nlower; l <= nupper; l++) { + mx = l+nx; + x0 = y0*rho1d[0][l]; + if (eflag_atom) u_pa += x0*u_brick[mz][my][mx]; + if (vflag_atom) { + v0 += x0*v0_brick[mz][my][mx]; + v1 += x0*v1_brick[mz][my][mx]; + v2 += x0*v2_brick[mz][my][mx]; + v3 += x0*v3_brick[mz][my][mx]; + v4 += x0*v4_brick[mz][my][mx]; + v5 += x0*v5_brick[mz][my][mx]; + } + } + } + } + + // electrostatic potential + + phi[i] = u_pa; + + // convert E-field to force + + const double qfactor = 0.5*force->qqrd2e * scale * q[i]; + + if (eflag_atom) eatom[i] += u_pa*qfactor; + if (vflag_atom) { + vatom[i][0] += v0*qfactor; + vatom[i][1] += v1*qfactor; + vatom[i][2] += v2*qfactor; + vatom[i][3] += v3*qfactor; + vatom[i][4] += v4*qfactor; + vatom[i][5] += v5*qfactor; + } + } +} + +/* ---------------------------------------------------------------------- + Slab-geometry correction term to dampen inter-slab interactions between + periodically repeating slabs. Yields good approximation to 2D Ewald if + adequate empty space is left between repeating slabs (J. Chem. Phys. + 111, 3155). Slabs defined here to be parallel to the xy plane. Also + extended to non-neutral systems (J. Chem. Phys. 131, 094107). +------------------------------------------------------------------------- */ + +void PPPMDispDielectric::slabcorr(int eflag) +{ + // compute local contribution to global dipole moment + + double *q = atom->q; + double **x = atom->x; + double *eps = avec->epsilon; + double zprd = domain->zprd; + int nlocal = atom->nlocal; + + double dipole = 0.0; + for (int i = 0; i < nlocal; i++) dipole += q[i]*x[i][2]; + + if (mu_flag) { + double **mu = atom->mu; + for (int i = 0; i < nlocal; i++) dipole += mu[i][2]; + } + + // sum local contributions to get global dipole moment + + double dipole_all; + MPI_Allreduce(&dipole,&dipole_all,1,MPI_DOUBLE,MPI_SUM,world); + + // need to make non-neutral systems and/or + // per-atom energy translationally invariant + + double dipole_r2 = 0.0; + if (eflag_atom || fabs(qsum) > SMALL) { + + if (mu_flag) + error->all(FLERR,"Cannot (yet) use kspace slab correction with " + "long-range dipoles and non-neutral systems or per-atom energy"); + + for (int i = 0; i < nlocal; i++) + dipole_r2 += q[i]*x[i][2]*x[i][2]; + + // sum local contributions + + double tmp; + MPI_Allreduce(&dipole_r2,&tmp,1,MPI_DOUBLE,MPI_SUM,world); + dipole_r2 = tmp; + } + + // compute corrections + + const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - + qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; + const double qscale = qqrd2e * scale; + + if (eflag_global) energy += qscale * e_slabcorr; + + // per-atom energy + + if (eflag_atom) { + double efact = qscale * MY_2PI/volume; + for (int i = 0; i < nlocal; i++) + eatom[i] += efact * eps[i]*q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + + qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); + } + + // add on force corrections + + double ffact = qscale * (-4.0*MY_PI/volume); + double **f = atom->f; + + for (int i = 0; i < nlocal; i++) { + f[i][2] += ffact * eps[i]*q[i]*(dipole_all - qsum*x[i][2]); + efield[i][2] += ffact * eps[i]*(dipole_all - qsum*x[i][2]); + } + + // add on torque corrections + + if (mu_flag && atom->torque) { + double **mu = atom->mu; + double **torque = atom->torque; + for (int i = 0; i < nlocal; i++) { + torque[i][0] += ffact * dipole_all * mu[i][1]; + torque[i][1] += -ffact * dipole_all * mu[i][0]; + } + } +} + +/* ---------------------------------------------------------------------- + memory usage of local arrays +------------------------------------------------------------------------- */ + +double PPPMDispDielectric::memory_usage() +{ + double bytes = PPPMDisp::memory_usage(); + bytes += nmax*3 * sizeof(double); + bytes += nmax * sizeof(double); + return bytes; +} + +/* ---------------------------------------------------------------------- + compute qsum,qsqsum,q2 and give error/warning if not charge neutral + called initially, when particle count changes, when charges are changed +------------------------------------------------------------------------- */ + +void PPPMDispDielectric::qsum_qsq() +{ + const double * const q = atom->q; + const double * const eps = avec->epsilon; + const int nlocal = atom->nlocal; + double qsum_local(0.0), qsqsum_local(0.0); + +#if defined(_OPENMP) +#pragma omp parallel for default(none) reduction(+:qsum_local,qsqsum_local) +#endif + for (int i = 0; i < nlocal; i++) { + double qtmp = eps[i]*q[i]; + qsum_local += qtmp; + qsqsum_local += qtmp*qtmp; + } + + MPI_Allreduce(&qsum_local,&qsum,1,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&qsqsum_local,&qsqsum,1,MPI_DOUBLE,MPI_SUM,world); + + q2 = qsqsum * force->qqrd2e; +} diff --git a/src/USER-DIELECTRIC/pppm_disp_dielectric.h b/src/USER-DIELECTRIC/pppm_disp_dielectric.h new file mode 100644 index 0000000000..eef0fa7e94 --- /dev/null +++ b/src/USER-DIELECTRIC/pppm_disp_dielectric.h @@ -0,0 +1,62 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef KSPACE_CLASS + +KSpaceStyle(pppm/disp/dielectric,PPPMDispDielectric) + +#else + +#ifndef LMP_PPPM_DISP_DIELECTRIC_H +#define LMP_PPPM_DISP_DIELECTRIC_H + +#include "pppm_disp.h" + +namespace LAMMPS_NS { + +class PPPMDispDielectric : public PPPMDisp { + public: + PPPMDispDielectric(class LAMMPS *); + virtual ~PPPMDispDielectric(); + virtual double memory_usage(); + virtual void compute(int, int); + void qsum_qsq(); + void slabcorr(int); + + double** efield; + double* phi; + int potflag; // 1/0 if per-atom electrostatic potential phi is needed + + protected: + virtual void fieldforce_c_ik(); + virtual void fieldforce_c_ad(); + virtual void fieldforce_c_peratom(); + + class AtomVecDielectric* avec; + int mu_flag; +}; + +} + +#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. + +*/ diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index 002429e7b3..6643f6eab4 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -533,7 +533,7 @@ void PairHybrid::coeff(int narg, char **arg) void PairHybrid::init_style() { int i,m,itype,jtype,used,istyle,skip; - + printf("pair hybrid init style\n"); // error if a sub-style is not used int ntypes = atom->ntypes; @@ -655,6 +655,7 @@ void PairHybrid::init_style() double PairHybrid::init_one(int i, int j) { + printf("pair hybrid init one\n"); // if I,J is not set explicitly: // perform mixing only if I,I sub-style = J,J sub-style // also require I,I and J,J are both assigned to single sub-style From 454e11f7a5d317d1456cb464c62336394273650a Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 28 May 2021 12:41:52 -0500 Subject: [PATCH 02/80] Bringing USER-DIELECTRIC up-to-date with latest changes in upstream LAMMPS --- src/GPU/pair_lj_cut_gpu.cpp | 11 +- src/USER-DIELECTRIC/atom_vec_dielectric.cpp | 1254 +---------------- src/USER-DIELECTRIC/atom_vec_dielectric.h | 52 +- src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 61 +- src/USER-DIELECTRIC/msm_dielectric.cpp | 78 +- .../pair_coul_cut_dielectric.cpp | 28 +- .../pair_coul_cut_dielectric.h | 1 + .../pair_coul_long_dielectric.cpp | 21 +- .../pair_lj_cut_coul_cut_dielectric.cpp | 20 +- .../pair_lj_cut_coul_long_dielectric.cpp | 24 +- .../pair_lj_cut_coul_msm_dielectric.cpp | 22 +- src/USER-DIELECTRIC/pppm_dielectric.cpp | 1017 +------------ src/USER-DIELECTRIC/pppm_dielectric.h | 32 - src/atom.cpp | 13 + src/atom.h | 4 + 15 files changed, 255 insertions(+), 2383 deletions(-) diff --git a/src/GPU/pair_lj_cut_gpu.cpp b/src/GPU/pair_lj_cut_gpu.cpp index 29b14c033f..ea4e9532fd 100644 --- a/src/GPU/pair_lj_cut_gpu.cpp +++ b/src/GPU/pair_lj_cut_gpu.cpp @@ -135,27 +135,22 @@ void PairLJCutGPU::init_style() { cut_respa = nullptr; - //if (force->newton_pair) -// error->all(FLERR,"Cannot use newton pair with lj/cut/gpu pair style"); + if (force->newton_pair) + error->all(FLERR,"Cannot use newton pair with lj/cut/gpu pair style"); // Repeat cutsq calculation because done after call to init_style double maxcut = -1.0; double cut; for (int i = 1; i <= atom->ntypes; i++) { for (int j = i; j <= atom->ntypes; j++) { - cut = init_one(i,j); if (setflag[i][j] != 0 || (setflag[i][i] != 0 && setflag[j][j] != 0)) { - cut = init_one(i,j); - //printf("lj/cut/gpu: i = %d; j = %d: setflag = %d cut = %f\n", i, j, setflag[i][j], cut); cut *= cut; if (cut > maxcut) maxcut = cut; cutsq[i][j] = cutsq[j][i] = cut; - } else { - //printf("lj/cut/gpu: i = %d; j = %d: setflag = %d cut = %f\n", i, j, setflag[i][j], cut); + } else cutsq[i][j] = cutsq[j][i] = 0.0; - } } } double cell_size = sqrt(maxcut) + neighbor->skin; diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp index 07ae1abd06..1c2a99eb19 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp @@ -26,1245 +26,83 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -AtomVecDielectric::AtomVecDielectric(LAMMPS *lmp) : AtomVecFull(lmp), - mu(NULL), area(NULL), ed(NULL), em(NULL), q_real(NULL), epsilon(NULL), - curvature(NULL) +AtomVecDielectric::AtomVecDielectric(LAMMPS *lmp) : AtomVec(lmp) { - comm_x_only = 0; // 0 to exchange other data in addition to x in pack comm - size_forward = 13; // # items in func: pack_comm - size_reverse = 3; - size_border = 18; // # items in func: pack_border - size_velocity = 3; - size_data_atom = 15; // # items from read data file, func: data_atom. - size_data_vel = 4; - xcol_data = 5; // column in data files where coordinates start - // the first four columns are tag, mol, type, q + molecular = Atom::ATOMIC; + mass_type = PER_TYPE; + + atom->q_flag = atom->mu_flag = 1; - atom->mu_flag = 1; -} + // strings with peratom variables to include in each AtomVec method + // strings cannot contain fields in corresponding AtomVec default strings + // order of fields in a string does not matter + // except: fields_data_atom & fields_data_vel must match data file -/* ---------------------------------------------------------------------- */ + fields_grow = (char *) "q mu3 area ed em epsilon curvature"; + fields_copy = (char *) "q mu3 area ed em epsilon curvature"; + fields_comm = (char *) "q mu3 area ed em epsilon curvature"; + fields_comm_vel = (char *) "q mu3 area ed em epsilon curvature"; + fields_reverse = (char *) ""; + fields_border = (char *) "q mu3 area ed em epsilon curvature"; + fields_border_vel = (char *) "q mu3 area ed em epsilon curvature"; + fields_exchange = (char *) "q mu3 area ed em epsilon curvature"; + fields_restart = (char * ) "q mu3 area ed em epsilon curvature"; + fields_create = (char *) "q mu3 area ed em epsilon curvature"; + fields_data_atom = (char *) "id molecule type q x mu3 area ed em epsilon curvature"; + fields_data_vel = (char *) "id v"; -AtomVecDielectric::~AtomVecDielectric() -{ - memory->destroy(area); - memory->destroy(ed); - memory->destroy(em); - memory->destroy(epsilon); - memory->destroy(q_real); - memory->destroy(curvature); + setup_fields(); } /* ---------------------------------------------------------------------- - grow atom arrays - n = 0 grows arrays by a chunk - n > 0 allocates arrays to size n + set local copies of all grow ptrs used by this class, except defaults + needed in replicate when 2 atom classes exist and it calls pack_restart() ------------------------------------------------------------------------- */ -void AtomVecDielectric::grow(int n) +void AtomVecDielectric::grow_pointers() { - AtomVecFull::grow(n); - - mu = memory->grow(atom->mu,nmax,4,"atom:mu"); - - // USER-DIELECTRIC specifics - - area = memory->grow(area,nmax,"atom:area"); - ed = memory->grow(ed,nmax,"atom:ed"); - em = memory->grow(em,nmax,"atom:em"); - epsilon = memory->grow(epsilon,nmax,"atom:epsilon"); - q_real = memory->grow(q_real,nmax,"atom:q_real"); - curvature = memory->grow(curvature,nmax,"atom:curvature"); -} - -/* ---------------------------------------------------------------------- - reset local array ptrs -------------------------------------------------------------------------- */ - -void AtomVecDielectric::grow_reset() -{ - AtomVecFull::grow_reset(); - mu = atom->mu; + area = atom->area; + ed = atom->ed; + em = atom->em; + epsilon = atom->epsilon; + curvature = atom->curvature; + q_unscaled = atom->q_unscaled; } /* ---------------------------------------------------------------------- - copy atom I info to atom J + initialize non-zero atom quantities ------------------------------------------------------------------------- */ -void AtomVecDielectric::copy(int i, int j, int delflag) +void AtomVecDielectric::create_atom_post(int ilocal) { - AtomVecFull::copy(i, j, delflag); - - // USER-DIELECTRIC specifics - - mu[j][0] = mu[i][0]; - mu[j][1] = mu[i][1]; - mu[j][2] = mu[i][2]; - mu[j][3] = mu[i][3]; - - area[j] = area[i]; - ed[j] = ed[i]; - em[j] = em[i]; - epsilon[j] = epsilon[i]; - q_real[j] = q_real[i]; - curvature[j] = curvature[i]; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDielectric::pack_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = q_real[j]; - buf[m++] = curvature[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = q_real[j]; - buf[m++] = curvature[j]; - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDielectric::pack_comm_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = q_real[j]; - buf[m++] = curvature[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; - dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; - dz = pbc[2]*domain->zprd; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = q_real[j]; - buf[m++] = curvature[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = q_real[j]; - buf[m++] = curvature[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDielectric::pack_comm_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = q_real[j]; - buf[m++] = curvature[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDielectric::unpack_comm(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - area[i] = buf[m++]; - ed[i] = buf[m++]; - em[i] = buf[m++]; - epsilon[i] = buf[m++]; - q_real[i] = buf[m++]; - curvature[i] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDielectric::unpack_comm_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - area[i] = buf[m++]; - ed[i] = buf[m++]; - em[i] = buf[m++]; - epsilon[i] = buf[m++]; - q_real[i] = buf[m++]; - curvature[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDielectric::unpack_comm_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - area[i] = buf[m++]; - ed[i] = buf[m++]; - em[i] = buf[m++]; - epsilon[i] = buf[m++]; - q_real[i] = buf[m++]; - curvature[i] = buf[m++]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDielectric::pack_reverse(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - buf[m++] = f[i][0]; - buf[m++] = f[i][1]; - buf[m++] = f[i][2]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDielectric::unpack_reverse(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - f[j][0] += buf[m++]; - f[j][1] += buf[m++]; - f[j][2] += buf[m++]; - } -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDielectric::pack_border(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = q_real[j]; - buf[m++] = curvature[j]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = q_real[j]; - buf[m++] = curvature[j]; - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDielectric::pack_border_vel(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int i,j,m; - double dx,dy,dz,dvx,dvy,dvz; - - m = 0; - if (pbc_flag == 0) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0]; - buf[m++] = x[j][1]; - buf[m++] = x[j][2]; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = q_real[j]; - buf[m++] = curvature[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - if (domain->triclinic == 0) { - dx = pbc[0]*domain->xprd; - dy = pbc[1]*domain->yprd; - dz = pbc[2]*domain->zprd; - } else { - dx = pbc[0]; - dy = pbc[1]; - dz = pbc[2]; - } - if (!deform_vremap) { - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = q_real[j]; - buf[m++] = curvature[j]; - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } else { - dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; - dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; - dvz = pbc[2]*h_rate[2]; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = x[j][0] + dx; - buf[m++] = x[j][1] + dy; - buf[m++] = x[j][2] + dz; - buf[m++] = ubuf(tag[j]).d; - buf[m++] = ubuf(type[j]).d; - buf[m++] = ubuf(mask[j]).d; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = curvature[j]; - buf[m++] = q_real[j]; - if (mask[i] & deform_groupbit) { - buf[m++] = v[j][0] + dvx; - buf[m++] = v[j][1] + dvy; - buf[m++] = v[j][2] + dvz; - } else { - buf[m++] = v[j][0]; - buf[m++] = v[j][1]; - buf[m++] = v[j][2]; - } - } - } - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); - - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDielectric::pack_border_hybrid(int n, int *list, double *buf) -{ - int i,j,m; - - m = 0; - for (i = 0; i < n; i++) { - j = list[i]; - buf[m++] = ubuf(molecule[j]).d; - buf[m++] = q[j]; - buf[m++] = mu[j][0]; - buf[m++] = mu[j][1]; - buf[m++] = mu[j][2]; - buf[m++] = mu[j][3]; - buf[m++] = area[j]; - buf[m++] = ed[j]; - buf[m++] = em[j]; - buf[m++] = epsilon[j]; - buf[m++] = q_real[j]; - buf[m++] = curvature[j]; - } - return m; -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDielectric::unpack_border(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - mu[i][3] = buf[m++]; - area[i] = buf[m++]; - ed[i] = buf[m++]; - em[i] = buf[m++]; - epsilon[i] = buf[m++]; - q_real[i] = buf[m++]; - curvature[i] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -void AtomVecDielectric::unpack_border_vel(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - if (i == nmax) grow(0); - x[i][0] = buf[m++]; - x[i][1] = buf[m++]; - x[i][2] = buf[m++]; - tag[i] = (tagint) ubuf(buf[m++]).i; - type[i] = (int) ubuf(buf[m++]).i; - mask[i] = (int) ubuf(buf[m++]).i; - molecule[i] = (tagint) ubuf(buf[m++]).i; - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - mu[i][3] = buf[m++]; - area[i] = buf[m++]; - ed[i] = buf[m++]; - em[i] = buf[m++]; - epsilon[i] = buf[m++]; - q_real[i] = buf[m++]; - curvature[i] = buf[m++]; - v[i][0] = buf[m++]; - v[i][1] = buf[m++]; - v[i][2] = buf[m++]; - } - - if (atom->nextra_border) - for (int iextra = 0; iextra < atom->nextra_border; iextra++) - m += modify->fix[atom->extra_border[iextra]]-> - unpack_border(n,first,&buf[m]); -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDielectric::unpack_border_hybrid(int n, int first, double *buf) -{ - int i,m,last; - - m = 0; - last = first + n; - for (i = first; i < last; i++) { - molecule[i] = (tagint) ubuf(buf[m++]).i; - q[i] = buf[m++]; - mu[i][0] = buf[m++]; - mu[i][1] = buf[m++]; - mu[i][2] = buf[m++]; - mu[i][3] = buf[m++]; - area[i] = buf[m++]; - ed[i] = buf[m++]; - em[i] = buf[m++]; - epsilon[i] = buf[m++]; - q_real[i] = buf[m++]; - curvature[i] = buf[m++]; - } - return m; + area[ilocal] = 1.0; + em[ilocal] = 1.0; + epsilon[ilocal] = 1.0; } /* ---------------------------------------------------------------------- - pack all atom quantities for shipping to another proc - xyz must be 1st 3 values, so that comm::exchange can test on them + modify what AtomVec::data_atom() just unpacked + or initialize other atom quantities ------------------------------------------------------------------------- */ -int AtomVecDielectric::pack_exchange(int i, double *buf) +void AtomVecDielectric::data_atom_post(int ilocal) { - int k; - - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - - buf[m++] = ubuf(molecule[i]).d; - - buf[m++] = q[i]; - buf[m++] = mu[i][0]; - buf[m++] = mu[i][1]; - buf[m++] = mu[i][2]; - buf[m++] = mu[i][3]; - buf[m++] = area[i]; - buf[m++] = ed[i]; - buf[m++] = em[i]; - buf[m++] = epsilon[i]; - buf[m++] = q_real[i]; - buf[m++] = curvature[i]; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(bond_type[i][k]).d; - buf[m++] = ubuf(bond_atom[i][k]).d; - } - - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(angle_type[i][k]).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; - } - - buf[m++] = ubuf(num_dihedral[i]).d; - for (k = 0; k < num_dihedral[i]; k++) { - buf[m++] = ubuf(dihedral_type[i][k]).d; - buf[m++] = ubuf(dihedral_atom1[i][k]).d; - buf[m++] = ubuf(dihedral_atom2[i][k]).d; - buf[m++] = ubuf(dihedral_atom3[i][k]).d; - buf[m++] = ubuf(dihedral_atom4[i][k]).d; - } - - buf[m++] = ubuf(num_improper[i]).d; - for (k = 0; k < num_improper[i]; k++) { - buf[m++] = ubuf(improper_type[i][k]).d; - buf[m++] = ubuf(improper_atom1[i][k]).d; - buf[m++] = ubuf(improper_atom2[i][k]).d; - buf[m++] = ubuf(improper_atom3[i][k]).d; - buf[m++] = ubuf(improper_atom4[i][k]).d; - } - - buf[m++] = ubuf(nspecial[i][0]).d; - buf[m++] = ubuf(nspecial[i][1]).d; - buf[m++] = ubuf(nspecial[i][2]).d; - for (k = 0; k < nspecial[i][2]; k++) buf[m++] = ubuf(special[i][k]).d; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- */ - -int AtomVecDielectric::unpack_exchange(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - q[nlocal] = buf[m++]; - mu[nlocal][0] = buf[m++]; - mu[nlocal][1] = buf[m++]; - mu[nlocal][2] = buf[m++]; - mu[nlocal][3] = buf[m++]; - area[nlocal] = buf[m++]; - ed[nlocal] = buf[m++]; - em[nlocal] = buf[m++]; - epsilon[nlocal] = buf[m++]; - q_real[nlocal] = buf[m++]; - curvature[nlocal] = buf[m++]; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_dihedral[nlocal]; k++) { - dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; - dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_improper[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_improper[nlocal]; k++) { - improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; - improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][1] = (int) ubuf(buf[m++]).i; - nspecial[nlocal][2] = (int) ubuf(buf[m++]).i; - for (k = 0; k < nspecial[nlocal][2]; k++) - special[nlocal][k] = (tagint) ubuf(buf[m++]).i; - - if (atom->nextra_grow) - for (int iextra = 0; iextra < atom->nextra_grow; iextra++) - m += modify->fix[atom->extra_grow[iextra]]-> - unpack_exchange(nlocal,&buf[m]); - - atom->nlocal++; - return m; + double* q = atom->q; + q_unscaled[ilocal] = q[ilocal]; + q[ilocal] /= epsilon[ilocal]; } /* ---------------------------------------------------------------------- - size of restart data for all atoms owned by this proc - include extra data stored by fixes + unmodify values packed by AtomVec::pack_data() ------------------------------------------------------------------------- */ -int AtomVecDielectric::size_restart() +void AtomVecDielectric::pack_data_post(int ilocal) { - int i; - - int nlocal = atom->nlocal; - int n = 0; - // n is calculated from pack_restart: similar to full (17) - // 17 = 3 for x[], 4 for (tag, type, mask, image), 3 for v[], 1 for molecule ID, 1 for q, - // 4 for num bonds/angles/dihedrals/impropers and 1 for the first element (buf[0]) - // plus 10 = 4 for mu (norm) and 6 (area, ed, em, epsilon, q_real, curvature) - // totaling 27 - for (i = 0; i < nlocal; i++) - n += 27 + 2*num_bond[i] + 4*num_angle[i] + - 5*num_dihedral[i] + 5*num_improper[i]; - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - for (i = 0; i < nlocal; i++) - n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); - - return n; + double* q = atom->q; + q_unscaled[ilocal] = q[ilocal]/epsilon[ilocal]; } -/* ---------------------------------------------------------------------- - pack atom I's data for restart file including extra quantities - xyz must be 1st 3 values, so that read_restart can test on them - molecular types may be negative, but write as positive -------------------------------------------------------------------------- */ -int AtomVecDielectric::pack_restart(int i, double *buf) -{ - int k; - int m = 1; - buf[m++] = x[i][0]; - buf[m++] = x[i][1]; - buf[m++] = x[i][2]; - buf[m++] = ubuf(tag[i]).d; - buf[m++] = ubuf(type[i]).d; - buf[m++] = ubuf(mask[i]).d; - buf[m++] = ubuf(image[i]).d; - buf[m++] = v[i][0]; - buf[m++] = v[i][1]; - buf[m++] = v[i][2]; - buf[m++] = ubuf(molecule[i]).d; - buf[m++] = q[i]; - buf[m++] = mu[i][0]; - buf[m++] = mu[i][1]; - buf[m++] = mu[i][2]; - buf[m++] = mu[i][3]; - buf[m++] = area[i]; - buf[m++] = ed[i]; - buf[m++] = em[i]; - buf[m++] = epsilon[i]; - buf[m++] = q_real[i]; - buf[m++] = curvature[i]; - - buf[m++] = ubuf(num_bond[i]).d; - for (k = 0; k < num_bond[i]; k++) { - buf[m++] = ubuf(MAX(bond_type[i][k],-bond_type[i][k])).d; - buf[m++] = ubuf(bond_atom[i][k]).d; - } - - buf[m++] = ubuf(num_angle[i]).d; - for (k = 0; k < num_angle[i]; k++) { - buf[m++] = ubuf(MAX(angle_type[i][k],-angle_type[i][k])).d; - buf[m++] = ubuf(angle_atom1[i][k]).d; - buf[m++] = ubuf(angle_atom2[i][k]).d; - buf[m++] = ubuf(angle_atom3[i][k]).d; - } - - buf[m++] = ubuf(num_dihedral[i]).d; - for (k = 0; k < num_dihedral[i]; k++) { - buf[m++] = ubuf(MAX(dihedral_type[i][k],-dihedral_type[i][k])).d; - buf[m++] = ubuf(dihedral_atom1[i][k]).d; - buf[m++] = ubuf(dihedral_atom2[i][k]).d; - buf[m++] = ubuf(dihedral_atom3[i][k]).d; - buf[m++] = ubuf(dihedral_atom4[i][k]).d; - } - - buf[m++] = ubuf(num_improper[i]).d; - for (k = 0; k < num_improper[i]; k++) { - buf[m++] = ubuf(MAX(improper_type[i][k],-improper_type[i][k])).d; - buf[m++] = ubuf(improper_atom1[i][k]).d; - buf[m++] = ubuf(improper_atom2[i][k]).d; - buf[m++] = ubuf(improper_atom3[i][k]).d; - buf[m++] = ubuf(improper_atom4[i][k]).d; - } - - if (atom->nextra_restart) - for (int iextra = 0; iextra < atom->nextra_restart; iextra++) - m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); - - buf[0] = m; - return m; -} - -/* ---------------------------------------------------------------------- - unpack data for one atom from restart file including extra quantities -------------------------------------------------------------------------- */ - -int AtomVecDielectric::unpack_restart(double *buf) -{ - int k; - - int nlocal = atom->nlocal; - if (nlocal == nmax) { - grow(0); - if (atom->nextra_store) - memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); - } - - int m = 1; - x[nlocal][0] = buf[m++]; - x[nlocal][1] = buf[m++]; - x[nlocal][2] = buf[m++]; - tag[nlocal] = (tagint) ubuf(buf[m++]).i; - type[nlocal] = (int) ubuf(buf[m++]).i; - mask[nlocal] = (int) ubuf(buf[m++]).i; - image[nlocal] = (imageint) ubuf(buf[m++]).i; - v[nlocal][0] = buf[m++]; - v[nlocal][1] = buf[m++]; - v[nlocal][2] = buf[m++]; - - molecule[nlocal] = (tagint) ubuf(buf[m++]).i; - - q[nlocal] = buf[m++]; - mu[nlocal][0] = buf[m++]; - mu[nlocal][1] = buf[m++]; - mu[nlocal][2] = buf[m++]; - mu[nlocal][3] = buf[m++]; - area[nlocal] = buf[m++]; - ed[nlocal] = buf[m++]; - em[nlocal] = buf[m++]; - epsilon[nlocal] = buf[m++]; - q_real[nlocal] = buf[m++]; - curvature[nlocal] = buf[m++]; - - num_bond[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_bond[nlocal]; k++) { - bond_type[nlocal][k] = (int) ubuf(buf[m++]).i; - bond_atom[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_angle[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_angle[nlocal]; k++) { - angle_type[nlocal][k] = (int) ubuf(buf[m++]).i; - angle_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - angle_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_dihedral[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_dihedral[nlocal]; k++) { - dihedral_type[nlocal][k] = (int) ubuf(buf[m++]).i; - dihedral_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - dihedral_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - num_improper[nlocal] = (int) ubuf(buf[m++]).i; - for (k = 0; k < num_improper[nlocal]; k++) { - improper_type[nlocal][k] = (int) ubuf(buf[m++]).i; - improper_atom1[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom2[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom3[nlocal][k] = (tagint) ubuf(buf[m++]).i; - improper_atom4[nlocal][k] = (tagint) ubuf(buf[m++]).i; - } - - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - double **extra = atom->extra; - if (atom->nextra_store) { - int size = static_cast (buf[0]) - m; - for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; - } - - atom->nlocal++; - return m; -} - -/* ---------------------------------------------------------------------- - create one atom of itype at coord - set other values to defaults -------------------------------------------------------------------------- */ - -void AtomVecDielectric::create_atom(int itype, double *coord) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = 0; - type[nlocal] = itype; - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - mask[nlocal] = 1; - image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | - ((imageint) IMGMAX << IMGBITS) | IMGMAX; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - - q[nlocal] = 0.0; - mu[nlocal][0] = 0.0; - mu[nlocal][1] = 0.0; - mu[nlocal][2] = 1.0; - mu[nlocal][3] = 1.0; - area[nlocal] = 1.0; - ed[nlocal] = 0.0; - em[nlocal] = 1.0; - epsilon[nlocal] = 1.0; - q_real[nlocal] = 0.0; - curvature[nlocal] = 0.0; - - molecule[nlocal] = 0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - nspecial[nlocal][0] = nspecial[nlocal][1] = nspecial[nlocal][2] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack one line from Atoms section of data file - initialize other atom quantities -------------------------------------------------------------------------- */ - -void AtomVecDielectric::data_atom(double *coord, imageint imagetmp, char **values) -{ - int nlocal = atom->nlocal; - if (nlocal == nmax) grow(0); - - tag[nlocal] = ATOTAGINT(values[0]); - molecule[nlocal] = ATOTAGINT(values[1]); - type[nlocal] = atoi(values[2]); - if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) - error->one(FLERR,"Invalid atom type in Atoms section of data file"); - - q_real[nlocal] = atof(values[3]); - - x[nlocal][0] = coord[0]; - x[nlocal][1] = coord[1]; - x[nlocal][2] = coord[2]; - - mu[nlocal][0] = atof(values[7]); - mu[nlocal][1] = atof(values[8]); - mu[nlocal][2] = atof(values[9]); - mu[nlocal][3] = 1; - - area[nlocal] = atof(values[10]); - ed[nlocal] = atof(values[11]); - em[nlocal] = atof(values[12]); - epsilon[nlocal] = atof(values[13]); - curvature[nlocal] = atof(values[14]); - q[nlocal] = q_real[nlocal] / epsilon[nlocal]; - - image[nlocal] = imagetmp; - - mask[nlocal] = 1; - v[nlocal][0] = 0.0; - v[nlocal][1] = 0.0; - v[nlocal][2] = 0.0; - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - - atom->nlocal++; -} - -/* ---------------------------------------------------------------------- - unpack hybrid quantities from one line in Atoms section of data file - initialize other atom quantities for this sub-style -------------------------------------------------------------------------- */ - -int AtomVecDielectric::data_atom_hybrid(int nlocal, char **values) -{ - molecule[nlocal] = ATOTAGINT(values[0]); - q_real[nlocal] = atof(values[1]); - mu[nlocal][0] = atof(values[2]); - mu[nlocal][1] = atof(values[3]); - mu[nlocal][2] = atof(values[4]); - mu[nlocal][3] = 1; - area[nlocal] = atof(values[5]); - ed[nlocal] = atof(values[6]); - em[nlocal] = atof(values[7]); - epsilon[nlocal] = atof(values[8]); - curvature[nlocal] = atof(values[9]); - q[nlocal] = q_real[nlocal] / epsilon[nlocal]; - - num_bond[nlocal] = 0; - num_angle[nlocal] = 0; - num_dihedral[nlocal] = 0; - num_improper[nlocal] = 0; - - return 10; -} - -/* ---------------------------------------------------------------------- - pack atom info for data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDielectric::pack_data(double **buf) -{ - int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - buf[i][0] = ubuf(tag[i]).d; - buf[i][1] = ubuf(molecule[i]).d; - buf[i][2] = ubuf(type[i]).d; - buf[i][3] = q[i]; - buf[i][4] = x[i][0]; - buf[i][5] = x[i][1]; - buf[i][6] = x[i][2]; - buf[i][7] = mu[i][0]; - buf[i][8] = mu[i][1]; - buf[i][9] = mu[i][2]; - buf[i][10] = area[i]; - buf[i][11] = ed[i]; - buf[i][12] = em[i]; - buf[i][13] = epsilon[i]; - buf[i][14] = curvature[i]; - buf[i][15] = ubuf((image[i] & IMGMASK) - IMGMAX).d; - buf[i][16] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; - buf[i][17] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; - } -} - -/* ---------------------------------------------------------------------- - pack hybrid atom info for data file -------------------------------------------------------------------------- */ - -int AtomVecDielectric::pack_data_hybrid(int i, double *buf) -{ - buf[0] = ubuf(molecule[i]).d; - buf[1] = q[i]; - buf[2] = mu[i][0]; - buf[3] = mu[i][1]; - buf[4] = mu[i][2]; - buf[5] = area[i]; - buf[6] = ed[i]; - buf[7] = em[i]; - buf[8] = epsilon[i]; - buf[9] = q_real[i]; - buf[10] = curvature[i]; - return 11; -} - -/* ---------------------------------------------------------------------- - write atom info to data file including 3 image flags -------------------------------------------------------------------------- */ - -void AtomVecDielectric::write_data(FILE *fp, int n, double **buf) -{ - for (int i = 0; i < n; i++) - fprintf(fp,TAGINT_FORMAT " " TAGINT_FORMAT -// " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e " -// "%-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", - " %d %g %g %g %g %g %g " - "%g %g %g %g %g %g %d %d %d\n", - (tagint) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i, (int) ubuf(buf[i][2]).i, - buf[i][3],buf[i][4],buf[i][5], buf[i][6],buf[i][7],buf[i][8], - buf[i][9],buf[i][10],buf[i][11], buf[i][12], buf[i][13], buf[i][14], - (int) ubuf(buf[i][15]).i,(int) ubuf(buf[i][16]).i, - (int) ubuf(buf[i][17]).i); -} - -/* ---------------------------------------------------------------------- - write hybrid atom info to data file -------------------------------------------------------------------------- */ - -int AtomVecDielectric::write_data_hybrid(FILE *fp, double *buf) -{ - fprintf(fp, TAGINT_FORMAT - " %-1.16e %-1.16e %-1.16e %-1.16e %-1.16 %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e", - buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8], buf[9], buf[10]); - return 11; -} - -/* ---------------------------------------------------------------------- - return # of bytes of allocated memory -------------------------------------------------------------------------- */ - -bigint AtomVecDielectric::memory_usage() -{ - bigint bytes = AtomVecFull::memory_usage(); - - if (atom->memcheck("mu")) bytes += memory->usage(mu,nmax,4); - - if (atom->memcheck("area")) bytes += memory->usage(area,nmax); - if (atom->memcheck("ed")) bytes += memory->usage(ed,nmax); - if (atom->memcheck("em")) bytes += memory->usage(em,nmax); - if (atom->memcheck("epsilon")) bytes += memory->usage(epsilon,nmax); - if (atom->memcheck("q_real")) bytes += memory->usage(q_real,nmax); - if (atom->memcheck("curvature")) bytes += memory->usage(curvature,nmax); - - return bytes; -} diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.h b/src/USER-DIELECTRIC/atom_vec_dielectric.h index bb932daeb0..797e41f112 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.h +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.h @@ -20,54 +20,24 @@ AtomStyle(dielectric,AtomVecDielectric) #ifndef LMP_ATOM_VEC_DIELECTRIC_H #define LMP_ATOM_VEC_DIELECTRIC_H -#include "atom_vec_full.h" +#include "atom_vec.h" namespace LAMMPS_NS { -class AtomVecDielectric : public AtomVecFull { +class AtomVecDielectric : public AtomVec { public: AtomVecDielectric(class LAMMPS *); - ~AtomVecDielectric(); - void grow(int); - void grow_reset(); - void copy(int, int, int); - int pack_comm(int, int *, double *, int, int *); - int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_hybrid(int, int *, double *); - void unpack_comm(int, int, double *); - void unpack_comm_vel(int, int, double *); - int unpack_comm_hybrid(int, int, double *); - int pack_reverse(int, int, double *); - void unpack_reverse(int, int *, double *); - int pack_border(int, int *, double *, int, int *); - int pack_border_vel(int, int *, double *, int, int *); - int pack_border_hybrid(int, int *, double *); - void unpack_border(int, int, double *); - void unpack_border_vel(int, int, double *); - int unpack_border_hybrid(int, int, double *); - int pack_exchange(int, double *); - int unpack_exchange(double *); - int size_restart(); - int pack_restart(int, double *); - int unpack_restart(double *); - void create_atom(int, double *); - void data_atom(double *, imageint, char **); - int data_atom_hybrid(int, char **); - void pack_data(double **); - int pack_data_hybrid(int, double *); - void write_data(FILE *, int, double **); - int write_data_hybrid(FILE *, double *); - bigint memory_usage(); + void grow_pointers(); + void create_atom_post(int); + void data_atom_post(int); + void pack_data_post(int); - public: - double **mu; // normal vector at the patch - double *area; // patch area - double *em; // mean dielectric constant at the patch - double *ed; // difference in dielectric constants at the patch - double *epsilon; // dielectric at the patch and real charges - double *curvature; // curvature at the patch - double *q_real; // unscaled charge: q_real = value read in from data file + double **mu; + double *area,*ed,*em,*epsilon,*curvature,*q_unscaled; + + private: + }; } diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp index d606765a78..786ba5426a 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -21,21 +21,21 @@ Barros, Sinkovits, Luijten, J. Chem. Phys 2014, 140, 064903 ------------------------------------------------------------------------- */ -#include -#include #include "fix_polarize_bem_icc.h" -#include "atom_vec_dielectric.h" -#include "update.h" + #include "atom.h" +#include "atom_vec_dielectric.h" #include "comm.h" #include "domain.h" -#include "neighbor.h" +#include "error.h" #include "force.h" #include "group.h" #include "kspace.h" +#include "math_const.h" #include "memory.h" #include "modify.h" -#include "math_const.h" +#include "msm_dielectric.h" +#include "neighbor.h" #include "pair_coul_cut_dielectric.h" #include "pair_coul_long_dielectric.h" #include "pair_lj_cut_coul_cut_dielectric.h" @@ -45,7 +45,10 @@ #include "msm_dielectric.h" #include "random_park.h" #include "timer.h" -#include "error.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; using namespace FixConst; @@ -65,9 +68,9 @@ FixPolarizeBEMICC::FixPolarizeBEMICC(LAMMPS *lmp, int narg, char **arg) : // parse required arguments - nevery = force->inumeric(FLERR,arg[3]); + nevery = utils::inumeric(FLERR,arg[3],false,lmp); if (nevery < 0) error->all(FLERR,"Illegal fix polarize/bem/icc command"); - double tol = force->numeric(FLERR,arg[4]); + double tol = utils::numeric(FLERR,arg[4],false,lmp); tol_abs = tol_rel = tol; itr_max = 20; @@ -214,12 +217,12 @@ void FixPolarizeBEMICC::pre_force(int) void FixPolarizeBEMICC::compute_induced_charges() { double *q = atom->q; - double *q_real = avec->q_real; - double **norm = avec->mu; - double *area = avec->area; - double *ed = avec->ed; - double *em = avec->em; - double *epsilon = avec->epsilon; + double *q_real = atom->q_unscaled; + double **norm = atom->mu; + double *area = atom->area; + double *ed = atom->ed; + double *em = atom->em; + double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; double epsilon0 = force->dielectric; @@ -354,11 +357,11 @@ int FixPolarizeBEMICC::modify_param(int narg, char **arg) while (iarg < narg) { if (strcmp(arg[iarg],"itr_max") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); - itr_max = force->numeric(FLERR,arg[iarg+1]); + itr_max = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"omega") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); - omega = force->numeric(FLERR,arg[iarg+1]); + omega = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"kspace") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); @@ -371,12 +374,12 @@ int FixPolarizeBEMICC::modify_param(int narg, char **arg) double epsiloni=-1, areai=-1; double qreali=0; int set_charge=0; - double ediff = force->numeric(FLERR,arg[iarg+1]); - double emean = force->numeric(FLERR,arg[iarg+2]); - if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = force->numeric(FLERR,arg[iarg+3]); - if (strcmp(arg[iarg+4],"NULL") != 0) areai = force->numeric(FLERR,arg[iarg+4]); + double ediff = utils::numeric(FLERR,arg[iarg+1],false,lmp); + double emean = utils::numeric(FLERR,arg[iarg+2],false,lmp); + if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); + if (strcmp(arg[iarg+4],"NULL") != 0) areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); if (strcmp(arg[iarg+5],"NULL") != 0) { - qreali = force->numeric(FLERR,arg[iarg+5]); + qreali = utils::numeric(FLERR,arg[iarg+5],false,lmp); set_charge = 1; } set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, qreali); @@ -384,8 +387,8 @@ int FixPolarizeBEMICC::modify_param(int narg, char **arg) iarg += 6; } else if (strcmp(arg[iarg],"rand") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix_modify command"); - ave_charge = force->numeric(FLERR,arg[iarg+1]); - seed_charge = force->numeric(FLERR,arg[iarg+2]); + ave_charge = utils::numeric(FLERR,arg[iarg+1],false,lmp); + seed_charge = utils::numeric(FLERR,arg[iarg+2],false,lmp); randomized = 1; iarg += 3; } else error->all(FLERR,"Illegal fix_modify command"); @@ -419,11 +422,11 @@ void FixPolarizeBEMICC::unpack_forward_comm(int n, int first, double *buf) void FixPolarizeBEMICC::set_dielectric_params(double ediff, double emean, double epsiloni, double areai, int set_charge, double qreali) { - double *area = avec->area; - double *ed = avec->ed; - double *em = avec->em; - double *q_real = avec->q_real; - double *epsilon = avec->epsilon; + double *area = atom->area; + double *ed = atom->ed; + double *em = atom->em; + double *q_real = atom->q_unscaled; + double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; diff --git a/src/USER-DIELECTRIC/msm_dielectric.cpp b/src/USER-DIELECTRIC/msm_dielectric.cpp index 89308e5be6..b6290405c1 100644 --- a/src/USER-DIELECTRIC/msm_dielectric.cpp +++ b/src/USER-DIELECTRIC/msm_dielectric.cpp @@ -15,24 +15,22 @@ Contributing authors: Trung Nguyen (Northwestern) ------------------------------------------------------------------------- */ -#include -#include -#include -#include -#include #include "msm_dielectric.h" + #include "atom.h" #include "atom_vec_dielectric.h" #include "comm.h" -#include "gridcomm.h" -#include "neighbor.h" -#include "force.h" -#include "pair.h" #include "domain.h" -#include "memory.h" #include "error.h" - +#include "force.h" +#include "gridcomm.h" #include "math_const.h" +#include "memory.h" +#include "neighbor.h" +#include "pair.h" + +#include +#include using namespace LAMMPS_NS; using namespace MathConst; @@ -86,7 +84,7 @@ void MSMDielectric::compute(int eflag, int vflag) if (scalar_pressure_flag && vflag_either) { if (vflag_atom) error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' to obtain " - "per-atom virial with kspace_style MSMDielectric"); + "per-atom virial with kspace_style msm/dielectric"); // must switch on global energy computation if not already on @@ -109,16 +107,7 @@ void MSMDielectric::compute(int eflag, int vflag) // invoke allocate_peratom() if needed for first time - if (vflag_atom && !peratom_allocate_flag) { - allocate_peratom(); - cg_peratom_all->ghost_notify(); - cg_peratom_all->setup(); - for (int n=0; nghost_notify(); - cg_peratom[n]->setup(); - } - } + if (vflag_atom && !peratom_allocate_flag) allocate_peratom(); // convert atoms from box to lamda coords @@ -146,7 +135,8 @@ void MSMDielectric::compute(int eflag, int vflag) // to fully sum contribution in their 3d grid current_level = 0; - cg_all->reverse_comm(this,REVERSE_RHO); + gcall->reverse_comm_kspace(this,1,sizeof(double),REVERSE_RHO, + gcall_buf1,gcall_buf2,MPI_DOUBLE); // forward communicate charge density values to fill ghost grid points // compute direct sum interaction and then restrict to coarser grid @@ -154,23 +144,30 @@ void MSMDielectric::compute(int eflag, int vflag) for (int n=0; n<=levels-2; n++) { if (!active_flag[n]) continue; current_level = n; - cg[n]->forward_comm(this,FORWARD_RHO); - + gc[n]->forward_comm_kspace(this,1,sizeof(double),FORWARD_RHO, + gc_buf1[n],gc_buf2[n],MPI_DOUBLE); direct(n); restriction(n); } - // compute direct interation for top grid level for nonperiodic + // compute direct interation for top grid level for non-periodic // and for second from top grid level for periodic if (active_flag[levels-1]) { if (domain->nonperiodic) { current_level = levels-1; - cg[levels-1]->forward_comm(this,FORWARD_RHO); + gc[levels-1]-> + forward_comm_kspace(this,1,sizeof(double),FORWARD_RHO, + gc_buf1[levels-1],gc_buf2[levels-1],MPI_DOUBLE); direct_top(levels-1); - cg[levels-1]->reverse_comm(this,REVERSE_AD); + gc[levels-1]-> + reverse_comm_kspace(this,1,sizeof(double),REVERSE_AD, + gc_buf1[levels-1],gc_buf2[levels-1],MPI_DOUBLE); if (vflag_atom) - cg_peratom[levels-1]->reverse_comm(this,REVERSE_AD_PERATOM); + gc[levels-1]-> + reverse_comm_kspace(this,6,sizeof(double),REVERSE_AD_PERATOM, + gc_buf1[levels-1],gc_buf2[levels-1],MPI_DOUBLE); + } else { // Here using MPI_Allreduce is cheaper than using commgrid grid_swap_forward(levels-1,qgrid[levels-1]); @@ -178,7 +175,9 @@ void MSMDielectric::compute(int eflag, int vflag) grid_swap_reverse(levels-1,egrid[levels-1]); current_level = levels-1; if (vflag_atom) - cg_peratom[levels-1]->reverse_comm(this,REVERSE_AD_PERATOM); + gc[levels-1]-> + reverse_comm_kspace(this,6,sizeof(double),REVERSE_AD_PERATOM, + gc_buf1[levels-1],gc_buf2[levels-1],MPI_DOUBLE); } } @@ -190,24 +189,28 @@ void MSMDielectric::compute(int eflag, int vflag) prolongation(n); current_level = n; - cg[n]->reverse_comm(this,REVERSE_AD); + gc[n]->reverse_comm_kspace(this,1,sizeof(double),REVERSE_AD, + gc_buf1[n],gc_buf2[n],MPI_DOUBLE); // extra per-atom virial communication if (vflag_atom) - cg_peratom[n]->reverse_comm(this,REVERSE_AD_PERATOM); + gc[n]->reverse_comm_kspace(this,6,sizeof(double),REVERSE_AD_PERATOM, + gc_buf1[n],gc_buf2[n],MPI_DOUBLE); } // all procs communicate E-field values // to fill ghost cells surrounding their 3d bricks current_level = 0; - cg_all->forward_comm(this,FORWARD_AD); + gcall->forward_comm_kspace(this,1,sizeof(double),FORWARD_AD, + gcall_buf1,gcall_buf2,MPI_DOUBLE); // extra per-atom energy/virial communication if (vflag_atom) - cg_peratom_all->forward_comm(this,FORWARD_AD_PERATOM); + gcall->forward_comm_kspace(this,6,sizeof(double),FORWARD_AD_PERATOM, + gcall_buf1,gcall_buf2,MPI_DOUBLE); // calculate the force on my particles (interpolation) @@ -266,8 +269,7 @@ void MSMDielectric::compute(int eflag, int vflag) // convert atoms back from lamda to box coords - if (triclinic) - domain->lamda2x(atom->nlocal); + if (triclinic) domain->lamda2x(atom->nlocal); } /* ---------------------------------------------------------------------- @@ -276,8 +278,6 @@ void MSMDielectric::compute(int eflag, int vflag) void MSMDielectric::fieldforce() { - //fprintf(screen,"MSM interpolation\n\n"); - double ***egridn = egrid[0]; int i,l,m,n,nx,ny,nz,mx,my,mz; @@ -296,7 +296,7 @@ void MSMDielectric::fieldforce() double *q = atom->q; double **x = atom->x; double **f = atom->f; - double *eps = avec->epsilon; + double *eps = atom->epsilon; int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp index 3d76d475c1..2cb411e68f 100644 --- a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp @@ -74,7 +74,7 @@ void PairCoulCutDielectric::compute(int eflag, int vflag) double **x = atom->x; double **f = atom->f; double *q = atom->q; - double *q_real = avec->q_real; + double *q_real = avec->q_unscaled; double* eps = avec->epsilon; double** norm = avec->mu; double* curvature = avec->curvature; @@ -128,7 +128,7 @@ void PairCoulCutDielectric::compute(int eflag, int vflag) if (rsq < cutsq[itype][jtype] && rsq > EPSILON) { r2inv = 1.0/rsq; rinv = sqrt(r2inv); - efield_i = qqrd2e * scale[itype][jtype] * q[j]*rinv; + efield_i = scale[itype][jtype] * q[j]*rinv; forcecoul = qtmp*efield_i; fpair_i = factor_coul*etmp*forcecoul*r2inv; @@ -175,3 +175,27 @@ void PairCoulCutDielectric::init_style() neighbor->requests[irequest]->full = 1; } +/* ---------------------------------------------------------------------- */ + +double PairCoulCutDielectric::single(int i, int j, int itype, int jtype, + double rsq, + double factor_coul, double factor_lj, + double &fforce) +{ + double r2inv,forcecoul,phicoul,ei,ej; + double* eps = avec->epsilon; + + r2inv = 1.0/rsq; + forcecoul = force->qqrd2e * atom->q[i]*atom->q[j]*sqrt(r2inv)*eps[i]; + + double eng = 0.0; + if (eps[i] == 1) ei = 0; + else ei = eps[i]; + if (eps[j] == 1) ej = 0; + else ej = eps[j]; + phicoul = force->qqrd2e * atom->q[i]*atom->q[j]*sqrt(r2inv); + phicoul *= 0.5*(ei+ej); + eng += factor_coul*phicoul; + + return eng; +} \ No newline at end of file diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h index fee444536a..2abc6b906e 100644 --- a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h @@ -29,6 +29,7 @@ class PairCoulCutDielectric : public PairCoulCut { PairCoulCutDielectric(class LAMMPS *); virtual ~PairCoulCutDielectric(); virtual void compute(int, int); + virtual double single(int, int, int, int, double, double, double, double &); void init_style(); double** efield; diff --git a/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp index 6a87e39fe0..6b3a38e00f 100644 --- a/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp @@ -15,25 +15,22 @@ Contributing author: Trung Nguyen (Northwestern) ------------------------------------------------------------------------- */ -#include -#include -#include -#include #include "pair_coul_long_dielectric.h" + #include "atom.h" #include "atom_vec_dielectric.h" #include "comm.h" +#include "error.h" #include "force.h" #include "kspace.h" #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" -#include "update.h" -#include "integrate.h" -#include "respa.h" #include "math_const.h" #include "memory.h" -#include "error.h" + +#include +#include using namespace LAMMPS_NS; using namespace MathConst; @@ -87,10 +84,10 @@ void PairCoulLongDielectric::compute(int eflag, int vflag) double **x = atom->x; double **f = atom->f; double *q = atom->q; - double** norm = avec->mu; - double* curvature = avec->curvature; - double* area = avec->area; - double *eps = avec->epsilon; + double** norm = atom->mu; + double* curvature = atom->curvature; + double* area = atom->area; + double *eps = atom->epsilon; int *type = atom->type; int nlocal = atom->nlocal; double *special_coul = force->special_coul; diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp index 51be72acaa..56bdd579d9 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp @@ -15,21 +15,21 @@ Contributing author: Trung Nguyen (Northwestern) ------------------------------------------------------------------------- */ -#include -#include -#include -#include #include "pair_lj_cut_coul_cut_dielectric.h" + #include "atom.h" #include "atom_vec_dielectric.h" #include "comm.h" +#include "error.h" #include "force.h" #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" #include "math_const.h" #include "memory.h" -#include "error.h" + +#include +#include using namespace LAMMPS_NS; using namespace MathConst; @@ -78,11 +78,11 @@ void PairLJCutCoulCutDielectric::compute(int eflag, int vflag) double **x = atom->x; double **f = atom->f; double *q = atom->q; - double *q_real = avec->q_real; - double* eps = avec->epsilon; - double** norm = avec->mu; - double* curvature = avec->curvature; - double* area = avec->area; + double *q_real = atom->q_unscaled; + double* eps = atom->epsilon; + double** norm = atom->mu; + double* curvature = atom->curvature; + double* area = atom->area; int *type = atom->type; int nlocal = atom->nlocal; double *special_coul = force->special_coul; diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp index 5af71e3d33..613defa2f6 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp @@ -15,25 +15,25 @@ Contributing author: Trung Nguyen (Northwestern) ------------------------------------------------------------------------- */ -#include -#include -#include -#include #include "pair_lj_cut_coul_long_dielectric.h" + #include "atom.h" #include "atom_vec_dielectric.h" #include "comm.h" +#include "error.h" #include "force.h" -#include "kspace.h" -#include "update.h" #include "integrate.h" -#include "respa.h" +#include "kspace.h" #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" #include "math_const.h" #include "memory.h" -#include "error.h" +#include "respa.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; using namespace MathConst; @@ -95,10 +95,10 @@ void PairLJCutCoulLongDielectric::compute(int eflag, int vflag) double **x = atom->x; double **f = atom->f; double *q = atom->q; - double *eps = avec->epsilon; - double** norm = avec->mu; - double* curvature = avec->curvature; - double* area = avec->area; + double *eps = atom->epsilon; + double** norm = atom->mu; + double* curvature = atom->curvature; + double* area = atom->area; int *type = atom->type; int nlocal = atom->nlocal; double *special_coul = force->special_coul; diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp index 3aa55a1bce..c87c46ade6 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp @@ -15,25 +15,25 @@ Contributing author: Trung Nguyen (Northwestern) ------------------------------------------------------------------------- */ -#include -#include -#include -#include #include "pair_lj_cut_coul_msm_dielectric.h" + #include "atom.h" #include "atom_vec_dielectric.h" #include "comm.h" +#include "error.h" #include "force.h" #include "kspace.h" -#include "update.h" #include "integrate.h" -#include "respa.h" #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" #include "math_const.h" #include "memory.h" -#include "error.h" +#include "respa.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; using namespace MathConst; @@ -108,10 +108,10 @@ void PairLJCutCoulMSMDielectric::compute(int eflag, int vflag) double **x = atom->x; double **f = atom->f; double *q = atom->q; - double *eps = avec->epsilon; - double** norm = avec->mu; - double* curvature = avec->curvature; - double* area = avec->area; + double *eps = atom->epsilon; + double** norm = atom->mu; + double* curvature = atom->curvature; + double* area = atom->area; int *type = atom->type; int nlocal = atom->nlocal; double *special_coul = force->special_coul; diff --git a/src/USER-DIELECTRIC/pppm_dielectric.cpp b/src/USER-DIELECTRIC/pppm_dielectric.cpp index 084e0ab689..62779d79c4 100644 --- a/src/USER-DIELECTRIC/pppm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pppm_dielectric.cpp @@ -13,30 +13,29 @@ /* ---------------------------------------------------------------------- Contributing authors: Trung Nguyen (Northwestern) - point-dipoles by Stan Moore (SNL) ------------------------------------------------------------------------- */ -#include -#include -#include -#include -#include #include "pppm_dielectric.h" + +#include "angle.h" #include "atom.h" #include "atom_vec_dielectric.h" +#include "bond.h" #include "comm.h" -#include "gridcomm.h" -#include "neighbor.h" -#include "force.h" -#include "pair.h" #include "domain.h" -#include "fft3d_wrap.h" -#include "remap_wrap.h" -#include "memory.h" #include "error.h" - +#include "fft3d_wrap.h" +#include "force.h" +#include "gridcomm.h" #include "math_const.h" #include "math_special.h" +#include "memory.h" +#include "neighbor.h" +#include "pair.h" +#include "remap_wrap.h" + +#include +#include using namespace LAMMPS_NS; using namespace MathConst; @@ -44,6 +43,9 @@ using namespace MathSpecial; #define SMALL 0.00001 +enum{REVERSE_RHO}; +enum{FORWARD_IK,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_AD_PERATOM}; + #ifdef FFT_SINGLE #define ZEROF 0.0f #define ONEF 1.0f @@ -52,23 +54,12 @@ using namespace MathSpecial; #define ONEF 1.0 #endif -enum{REVERSE_RHO,REVERSE_MU}; -enum{FORWARD_IK,FORWARD_MU,FORWARD_AD,FORWARD_IK_PERATOM,FORWARD_MU_PERATOM,FORWARD_AD_PERATOM}; - /* ---------------------------------------------------------------------- */ -PPPMDielectric::PPPMDielectric(LAMMPS *lmp) : PPPM(lmp), - cg_mu(NULL), densityx_brick_dipole(NULL), densityy_brick_dipole(NULL), densityz_brick_dipole(NULL), - u_brick_dipole(NULL), ux_brick_dipole(NULL), uy_brick_dipole(NULL), uz_brick_dipole(NULL), - vdxx_brick_dipole(NULL), vdxy_brick_dipole(NULL), vdyy_brick_dipole(NULL), vdxz_brick_dipole(NULL), - vdyz_brick_dipole(NULL), vdzz_brick_dipole(NULL), work3(NULL), work4(NULL), - densityx_fft_dipole(NULL), densityy_fft_dipole(NULL), densityz_fft_dipole(NULL) +PPPMDielectric::PPPMDielectric(LAMMPS *lmp) : PPPM(lmp) { - dipoleflag = 0; // turned off for now, until dipole works group_group_enable = 0; - mu_flag = 0; - efield = NULL; phi = NULL; potflag = 0; @@ -85,44 +76,6 @@ PPPMDielectric::~PPPMDielectric() memory->destroy(phi); } -/* ---------------------------------------------------------------------- - called once before run -------------------------------------------------------------------------- */ - -void PPPMDielectric::init() -{ - PPPM::init(); - - if (mu_flag) musum_musq(); - - if (mu_flag) { - cg_mu->ghost_notify(); - cg_mu->setup(); - } -} - -/* ---------------------------------------------------------------------- - reset local grid arrays and communication stencils - called by fix balance b/c it changed sizes of processor sub-domains -------------------------------------------------------------------------- */ - -void PPPMDielectric::setup_grid() -{ - PPPM::setup_grid(); - - if (mu_flag) { - cg_mu->ghost_notify(); - if (overlap_allowed == 0 && cg_mu->ghost_overlap()) - error->all(FLERR,"PPPMDielectric grid stencil extends " - "beyond nearest neighbor processor"); - cg_mu->setup(); - } - - // pre-compute volume-dependent coeffs - - PPPM::setup(); -} - /* ---------------------------------------------------------------------- compute the PPPMDielectric long-range force, energy, virial ------------------------------------------------------------------------- */ @@ -134,29 +87,20 @@ void PPPMDielectric::compute(int eflag, int vflag) // set energy/virial flags // invoke allocate_peratom() if needed for first time - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; + ev_init(eflag,vflag); - if (potflag) evflag_atom = 1; - - if (evflag_atom && !peratom_allocate_flag) { - allocate_peratom(); - cg_peratom->ghost_notify(); - cg_peratom->setup(); - } + if (evflag_atom && !peratom_allocate_flag) allocate_peratom(); // if atom count has changed, update qsum and qsqsum if (atom->natoms != natoms_original) { qsum_qsq(); - musum_musq(); natoms_original = atom->natoms; } // return if there are no charges or dipoles - //if (qsqsum == 0.0 && musqsum == 0.0) return; + if (qsqsum == 0.0) return; // convert atoms from box to lamda coords @@ -184,21 +128,14 @@ void PPPMDielectric::compute(int eflag, int vflag) particle_map(); make_rho(); - if (mu_flag) - make_rho_dipole(); - // all procs communicate density values from their ghost cells // to fully sum contribution in their 3d bricks // remap from 3d decomposition to FFT decomposition - cg->reverse_comm(this,REVERSE_RHO); + gc->reverse_comm_kspace(this,1,sizeof(FFT_SCALAR),REVERSE_RHO, + gc_buf1,gc_buf2,MPI_FFT_SCALAR); brick2fft(); - if (mu_flag) { - cg_mu->reverse_comm(this,REVERSE_MU); - brick2fft_dipole(); - } - // compute potential gradient on my FFT grid and // portion of e_long on this proc's FFT grid // return gradients (electric fields) in 3d brick decomposition @@ -206,34 +143,31 @@ void PPPMDielectric::compute(int eflag, int vflag) poisson(); - if (mu_flag) - poisson_ik_dipole(); - // all procs communicate E-field values // to fill ghost cells surrounding their 3d bricks - if (differentiation_flag == 1) cg->forward_comm(this,FORWARD_AD); - else cg->forward_comm(this,FORWARD_IK); - - if (mu_flag) - cg_mu->forward_comm(this,FORWARD_MU); + if (differentiation_flag == 1) + gc->forward_comm_kspace(this,1,sizeof(FFT_SCALAR),FORWARD_AD, + gc_buf1,gc_buf2,MPI_FFT_SCALAR); + else + gc->forward_comm_kspace(this,3,sizeof(FFT_SCALAR),FORWARD_IK, + gc_buf1,gc_buf2,MPI_FFT_SCALAR); // extra per-atom energy/virial communication if (evflag_atom) { if (differentiation_flag == 1 && vflag_atom) - cg_peratom->forward_comm(this,FORWARD_AD_PERATOM); + gc->forward_comm_kspace(this,6,sizeof(FFT_SCALAR),FORWARD_AD_PERATOM, + gc_buf1,gc_buf2,MPI_FFT_SCALAR); else if (differentiation_flag == 0) - cg_peratom->forward_comm(this,FORWARD_IK_PERATOM); + gc->forward_comm_kspace(this,7,sizeof(FFT_SCALAR),FORWARD_IK_PERATOM, + gc_buf1,gc_buf2,MPI_FFT_SCALAR); } // calculate the force on my particles fieldforce(); - if (mu_flag) - fieldforce_ik_dipole(); - // extra per-atom energy/virial communication if (evflag_atom) fieldforce_peratom(); @@ -241,7 +175,6 @@ void PPPMDielectric::compute(int eflag, int vflag) // sum global energy across procs and add in volume-dependent term const double qscale = qqrd2e * scale; - const double g3 = g_ewald*g_ewald*g_ewald; if (eflag_global) { double energy_all; @@ -251,8 +184,6 @@ void PPPMDielectric::compute(int eflag, int vflag) energy *= 0.5*volume; energy -= g_ewald*qsqsum/MY_PIS + MY_PI2*qsum*qsum / (g_ewald*g_ewald*volume); - if (mu_flag) - energy -= musqsum*qqrd2e*2.0*g3/3.0/MY_PIS; energy *= qscale; } @@ -270,7 +201,6 @@ void PPPMDielectric::compute(int eflag, int vflag) if (evflag_atom) { double *q = atom->q; - double **mu = atom->mu; int nlocal = atom->nlocal; int ntotal = nlocal; if (tip4pflag) ntotal += atom->nghost; @@ -280,10 +210,6 @@ void PPPMDielectric::compute(int eflag, int vflag) eatom[i] *= 0.5; eatom[i] -= g_ewald*q[i]*q[i]/MY_PIS + MY_PI2*q[i]*qsum / (g_ewald*g_ewald*volume); - - if (mu_flag) - eatom[i] -= (mu[i][0]*mu[i][0] + mu[i][1]*mu[i][1] + mu[i][2]*mu[i][2])*qqrd2e*2.0*g3/3.0/MY_PIS; - eatom[i] *= qscale; } for (i = nlocal; i < ntotal; i++) eatom[i] *= 0.5*qscale; @@ -304,491 +230,6 @@ void PPPMDielectric::compute(int eflag, int vflag) if (triclinic) domain->lamda2x(atom->nlocal); } -/* ---------------------------------------------------------------------- - allocate memory that depends on # of K-vectors and order -------------------------------------------------------------------------- */ - -void PPPMDielectric::allocate() -{ - PPPM::allocate(); - - if (mu_flag) { - memory->create3d_offset(densityx_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:densityx_brick_dipole"); - memory->create3d_offset(densityy_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:densityy_brick_dipole"); - memory->create3d_offset(densityz_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:densityz_brick_dipole"); - - memory->create(densityx_fft_dipole,nfft_both,"pppm:densityy_fft_dipole"); - memory->create(densityy_fft_dipole,nfft_both,"pppm:densityy_fft_dipole"); - memory->create(densityz_fft_dipole,nfft_both,"pppm:densityz_fft_dipole"); - - memory->create(work3,2*nfft_both,"pppm:work3"); - memory->create(work4,2*nfft_both,"pppm:work4"); - - memory->create3d_offset(u_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:u_brick_dipole"); - - memory->create3d_offset(ux_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:ux_brick_dipole"); - memory->create3d_offset(uy_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:uy_brick_dipole"); - memory->create3d_offset(uz_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:uz_brick_dipole"); - - memory->create3d_offset(vdxx_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:vdxx_brick_dipole"); - memory->create3d_offset(vdxy_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:vdxy_brick_dipole"); - memory->create3d_offset(vdyy_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:vdyy_brick_dipole"); - memory->create3d_offset(vdxz_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:vdxz_brick_dipole"); - memory->create3d_offset(vdyz_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:vdyz_brick_dipole"); - memory->create3d_offset(vdzz_brick_dipole,nzlo_out,nzhi_out,nylo_out,nyhi_out, - nxlo_out,nxhi_out,"pppm:vdzz_brick_dipole"); - - int (*procneigh)[2] = comm->procneigh; - cg_mu = new GridComm(lmp,world,9,3, - nxlo_in,nxhi_in,nylo_in,nyhi_in,nzlo_in,nzhi_in, - nxlo_out,nxhi_out,nylo_out,nyhi_out,nzlo_out,nzhi_out, - procneigh[0][0],procneigh[0][1],procneigh[1][0], - procneigh[1][1],procneigh[2][0],procneigh[2][1]); - } -} - -/* ---------------------------------------------------------------------- - deallocate memory that depends on # of K-vectors and order -------------------------------------------------------------------------- */ - -void PPPMDielectric::deallocate() -{ - PPPM::deallocate(); - - if (mu_flag) { - memory->destroy3d_offset(densityx_brick_dipole,nzlo_out,nylo_out,nxlo_out); - memory->destroy3d_offset(densityy_brick_dipole,nzlo_out,nylo_out,nxlo_out); - memory->destroy3d_offset(densityz_brick_dipole,nzlo_out,nylo_out,nxlo_out); - - memory->destroy3d_offset(u_brick_dipole,nzlo_out,nylo_out,nxlo_out); - - memory->destroy3d_offset(ux_brick_dipole,nzlo_out,nylo_out,nxlo_out); - memory->destroy3d_offset(uy_brick_dipole,nzlo_out,nylo_out,nxlo_out); - memory->destroy3d_offset(uz_brick_dipole,nzlo_out,nylo_out,nxlo_out); - - memory->destroy3d_offset(vdxx_brick_dipole,nzlo_out,nylo_out,nxlo_out); - memory->destroy3d_offset(vdxy_brick_dipole,nzlo_out,nylo_out,nxlo_out); - memory->destroy3d_offset(vdyy_brick_dipole,nzlo_out,nylo_out,nxlo_out); - memory->destroy3d_offset(vdxz_brick_dipole,nzlo_out,nylo_out,nxlo_out); - memory->destroy3d_offset(vdyz_brick_dipole,nzlo_out,nylo_out,nxlo_out); - memory->destroy3d_offset(vdzz_brick_dipole,nzlo_out,nylo_out,nxlo_out); - - memory->destroy(densityx_fft_dipole); - memory->destroy(densityy_fft_dipole); - memory->destroy(densityz_fft_dipole); - - memory->destroy(work3); - memory->destroy(work4); - - delete cg_mu; - } -} - -/* ---------------------------------------------------------------------- - create discretized "density" on section of global grid due to my particles - density(x,y,z) = charge "density" at grid points of my 3d brick - (nxlo:nxhi,nylo:nyhi,nzlo:nzhi) is extent of my brick (including ghosts) - in global grid -------------------------------------------------------------------------- */ - -void PPPMDielectric::make_rho_dipole() -{ - int l,m,n,nx,ny,nz,mx,my,mz; - FFT_SCALAR dx,dy,dz; - FFT_SCALAR x0,y0,z0; - FFT_SCALAR x1,y1,z1; - FFT_SCALAR x2,y2,z2; - - // clear 3d density array - - memset(&(densityx_brick_dipole[nzlo_out][nylo_out][nxlo_out]),0, - ngrid*sizeof(FFT_SCALAR)); - memset(&(densityy_brick_dipole[nzlo_out][nylo_out][nxlo_out]),0, - ngrid*sizeof(FFT_SCALAR)); - memset(&(densityz_brick_dipole[nzlo_out][nylo_out][nxlo_out]),0, - ngrid*sizeof(FFT_SCALAR)); - - // loop over my charges, add their contribution to nearby grid points - // (nx,ny,nz) = global coords of grid pt to "lower left" of charge - // (dx,dy,dz) = distance to "lower left" grid pt - // (mx,my,mz) = global coords of moving stencil pt - - double **mu = atom->mu; - double **x = atom->x; - int nlocal = atom->nlocal; - - for (int i = 0; i < nlocal; i++) { - - nx = part2grid[i][0]; - ny = part2grid[i][1]; - nz = part2grid[i][2]; - dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; - dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; - dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; - - compute_rho1d(dx,dy,dz); - - z0 = delvolinv * mu[i][0]; - z1 = delvolinv * mu[i][1]; - z2 = delvolinv * mu[i][2]; - for (n = nlower; n <= nupper; n++) { - mz = n+nz; - y0 = z0*rho1d[2][n]; - y1 = z1*rho1d[2][n]; - y2 = z2*rho1d[2][n]; - for (m = nlower; m <= nupper; m++) { - my = m+ny; - x0 = y0*rho1d[1][m]; - x1 = y1*rho1d[1][m]; - x2 = y2*rho1d[1][m]; - for (l = nlower; l <= nupper; l++) { - mx = l+nx; - densityx_brick_dipole[mz][my][mx] += x0*rho1d[0][l]; - densityy_brick_dipole[mz][my][mx] += x1*rho1d[0][l]; - densityz_brick_dipole[mz][my][mx] += x2*rho1d[0][l]; - } - } - } - } -} - -/* ---------------------------------------------------------------------- - remap density from 3d brick decomposition to FFT decomposition -------------------------------------------------------------------------- */ - -void PPPMDielectric::brick2fft_dipole() -{ - int n,ix,iy,iz; - - // copy grabs inner portion of density from 3d brick - // remap could be done as pre-stage of FFT, - // but this works optimally on only double values, not complex values - - n = 0; - for (iz = nzlo_in; iz <= nzhi_in; iz++) - for (iy = nylo_in; iy <= nyhi_in; iy++) - for (ix = nxlo_in; ix <= nxhi_in; ix++) { - densityx_fft_dipole[n] = densityx_brick_dipole[iz][iy][ix]; - densityy_fft_dipole[n] = densityy_brick_dipole[iz][iy][ix]; - densityz_fft_dipole[n] = densityz_brick_dipole[iz][iy][ix]; - n++; - } - - remap->perform(densityx_fft_dipole,densityx_fft_dipole,work1); - remap->perform(densityy_fft_dipole,densityy_fft_dipole,work1); - remap->perform(densityz_fft_dipole,densityz_fft_dipole,work1); -} - -/* ---------------------------------------------------------------------- - FFT-based Poisson solver for ik -------------------------------------------------------------------------- */ - -void PPPMDielectric::poisson_ik_dipole() -{ - int i,j,k,n,ii; - double eng; - double wreal,wimg; - - // transform dipole density (r -> k) - - n = 0; - for (i = 0; i < nfft; i++) { - work1[n] = densityx_fft_dipole[i]; - work1[n+1] = ZEROF; - work2[n] = densityy_fft_dipole[i]; - work2[n+1] = ZEROF; - work3[n] = densityz_fft_dipole[i]; - work3[n+1] = ZEROF; - n += 2; - } - - fft1->compute(work1,work1,1); - fft1->compute(work2,work2,1); - fft1->compute(work3,work3,1); - - // global energy and virial contribution - - double scaleinv = 1.0/(nx_pppm*ny_pppm*nz_pppm); - double s2 = scaleinv*scaleinv; - - if (eflag_global || vflag_global) { - if (vflag_global) { - n = 0; - ii = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - wreal = (work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); - wimg = (work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); - eng = s2 * greensfn[ii] * (wreal*wreal + wimg*wimg); - //eng = s2 * greensfn[ii] * (wreal+wimg)*(wreal+wimg); - for (int jj = 0; jj < 6; jj++) virial[jj] += eng*vg[ii][jj]; - if (eflag_global) energy += eng; - ii++; - n += 2; - } - } else { - n = 0; - ii = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - wreal = (work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); - wimg = (work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); - energy += - //s2 * greensfn[ii] * (wreal+wimg)*(wreal+wimg); - s2 * greensfn[ii] * (wreal*wreal + wimg*wimg); - ii++; - n += 2; - } - } - } - - // scale by 1/total-grid-pts to get rho(k) - // multiply by Green's function to get V(k) - - n = 0; - for (i = 0; i < nfft; i++) { - work1[n] *= scaleinv * greensfn[i]; - work1[n+1] *= scaleinv * greensfn[i]; - work2[n] *= scaleinv * greensfn[i]; - work2[n+1] *= scaleinv * greensfn[i]; - work3[n] *= scaleinv * greensfn[i]; - work3[n+1] *= scaleinv * greensfn[i]; - n += 2; - } - - // triclinic system - - /*if (triclinic) { - poisson_ik_triclinic(); - return; - }*/ - - // compute electric potential - // FFT leaves data in 3d brick decomposition - - n = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - work4[n] = work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]; - work4[n+1] = work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]; - n += 2; - } - - fft2->compute(work4,work4,-1); - - n = 0; - for (k = nzlo_in; k <= nzhi_in; k++) - for (j = nylo_in; j <= nyhi_in; j++) - for (i = nxlo_in; i <= nxhi_in; i++) { - u_brick_dipole[k][j][i] = work4[n]; - n += 2; - } - - // Ex - - n = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - work4[n] = fkx[i]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); - work4[n+1] = fkx[i]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); - n += 2; - } - - fft2->compute(work4,work4,-1); - - n = 0; - for (k = nzlo_in; k <= nzhi_in; k++) - for (j = nylo_in; j <= nyhi_in; j++) - for (i = nxlo_in; i <= nxhi_in; i++) { - ux_brick_dipole[k][j][i] = work4[n]; - n += 2; - } - - // Ey - - n = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - work4[n] = fky[j]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); - work4[n+1] = fky[j]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); - n += 2; - } - - fft2->compute(work4,work4,-1); - - n = 0; - for (k = nzlo_in; k <= nzhi_in; k++) - for (j = nylo_in; j <= nyhi_in; j++) - for (i = nxlo_in; i <= nxhi_in; i++) { - uy_brick_dipole[k][j][i] = work4[n]; - n += 2; - } - - // Ez - - n = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - work4[n] = fkz[k]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); - work4[n+1] = fkz[k]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); - n += 2; - } - - fft2->compute(work4,work4,-1); - - n = 0; - for (k = nzlo_in; k <= nzhi_in; k++) - for (j = nylo_in; j <= nyhi_in; j++) - for (i = nxlo_in; i <= nxhi_in; i++) { - uz_brick_dipole[k][j][i] = work4[n]; - n += 2; - } - - // Vxx - - n = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - work4[n] = fkx[i]*fkx[i]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); - work4[n+1] = -fkx[i]*fkx[i]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); - n += 2; - } - - fft2->compute(work4,work4,-1); - - n = 0; - for (k = nzlo_in; k <= nzhi_in; k++) - for (j = nylo_in; j <= nyhi_in; j++) - for (i = nxlo_in; i <= nxhi_in; i++) { - vdxx_brick_dipole[k][j][i] = work4[n]; - n += 2; - } - - // Vyy - - n = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - work4[n] = fky[j]*fky[j]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); - work4[n+1] = -fky[j]*fky[j]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); - n += 2; - } - - fft2->compute(work4,work4,-1); - - n = 0; - for (k = nzlo_in; k <= nzhi_in; k++) - for (j = nylo_in; j <= nyhi_in; j++) - for (i = nxlo_in; i <= nxhi_in; i++) { - vdyy_brick_dipole[k][j][i] = work4[n]; - n += 2; - } - - // Vzz - - n = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - work4[n] = fkz[k]*fkz[k]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); - work4[n+1] = -fkz[k]*fkz[k]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); - n += 2; - } - - fft2->compute(work4,work4,-1); - - n = 0; - for (k = nzlo_in; k <= nzhi_in; k++) - for (j = nylo_in; j <= nyhi_in; j++) - for (i = nxlo_in; i <= nxhi_in; i++) { - vdzz_brick_dipole[k][j][i] = work4[n]; - n += 2; - } - - // Vxy - - n = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - work4[n] = fkx[i]*fky[j]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); - work4[n+1] = -fkx[i]*fky[j]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); - n += 2; - } - - fft2->compute(work4,work4,-1); - - n = 0; - for (k = nzlo_in; k <= nzhi_in; k++) - for (j = nylo_in; j <= nyhi_in; j++) - for (i = nxlo_in; i <= nxhi_in; i++) { - vdxy_brick_dipole[k][j][i] = work4[n]; - n += 2; - } - - // Vxz - - n = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - work4[n] = fkx[i]*fkz[k]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); - work4[n+1] = -fkx[i]*fkz[k]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); - n += 2; - } - - fft2->compute(work4,work4,-1); - - n = 0; - for (k = nzlo_in; k <= nzhi_in; k++) - for (j = nylo_in; j <= nyhi_in; j++) - for (i = nxlo_in; i <= nxhi_in; i++) { - vdxz_brick_dipole[k][j][i] = work4[n]; - n += 2; - } - - // Vyz - - n = 0; - for (k = nzlo_fft; k <= nzhi_fft; k++) - for (j = nylo_fft; j <= nyhi_fft; j++) - for (i = nxlo_fft; i <= nxhi_fft; i++) { - work4[n] = fky[j]*fkz[k]*(work1[n+1]*fkx[i] + work2[n+1]*fky[j] + work3[n+1]*fkz[k]); - work4[n+1] = -fky[j]*fkz[k]*(work1[n]*fkx[i] + work2[n]*fky[j] + work3[n]*fkz[k]); - n += 2; - } - - fft2->compute(work4,work4,-1); - - n = 0; - for (k = nzlo_in; k <= nzhi_in; k++) - for (j = nylo_in; j <= nyhi_in; j++) - for (i = nxlo_in; i <= nxhi_in; i++) { - vdyz_brick_dipole[k][j][i] = work4[n]; - n += 2; - } -} - /* ---------------------------------------------------------------------- interpolate from grid to get electric field & force on my particles for ik ------------------------------------------------------------------------- */ @@ -808,7 +249,7 @@ void PPPMDielectric::fieldforce_ik() double *q = atom->q; double **x = atom->x; double **f = atom->f; - double *eps = avec->epsilon; + double *eps = atom->epsilon; int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { @@ -849,91 +290,13 @@ void PPPMDielectric::fieldforce_ik() efield[i][1] = efactor*eky; efield[i][2] = efactor*ekz; - const double qfactor = qqrd2e * scale * q[i] * eps[i]; + const double qfactor = qqrd2e * efactor * q[i]; f[i][0] += qfactor*ekx; f[i][1] += qfactor*eky; if (slabflag != 2) f[i][2] += qfactor*ekz; } } - -/* ---------------------------------------------------------------------- - interpolate from grid to get electric field & force on my particles for ik -------------------------------------------------------------------------- */ - -void PPPMDielectric::fieldforce_ik_dipole() -{ - int i,l,m,n,nx,ny,nz,mx,my,mz; - FFT_SCALAR dx,dy,dz,u; - FFT_SCALAR x0,y0,z0; - FFT_SCALAR ex,ey,ez; - FFT_SCALAR vxx,vyy,vzz,vxy,vxz,vyz; - - // loop over my charges, interpolate electric field from nearby grid points - // (nx,ny,nz) = global coords of grid pt to "lower left" of charge - // (dx,dy,dz) = distance to "lower left" grid pt - // (mx,my,mz) = global coords of moving stencil pt - - - double **mu = atom->mu; - double **x = atom->x; - double **f = atom->f; - double **t = atom->torque; - - int nlocal = atom->nlocal; - - for (i = 0; i < nlocal; i++) { - nx = part2grid[i][0]; - ny = part2grid[i][1]; - nz = part2grid[i][2]; - dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; - dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; - dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; - - compute_rho1d(dx,dy,dz); - - u = ex = ey = ez = ZEROF; - vxx = vyy = vzz = vxy = vxz = vyz = ZEROF; - for (n = nlower; n <= nupper; n++) { - mz = n+nz; - z0 = rho1d[2][n]; - for (m = nlower; m <= nupper; m++) { - my = m+ny; - y0 = z0*rho1d[1][m]; - for (l = nlower; l <= nupper; l++) { - mx = l+nx; - x0 = y0*rho1d[0][l]; - u += x0*u_brick_dipole[mz][my][mx]; - ex -= x0*ux_brick_dipole[mz][my][mx]; - ey -= x0*uy_brick_dipole[mz][my][mx]; - ez -= x0*uz_brick_dipole[mz][my][mx]; - vxx -= x0*vdxx_brick_dipole[mz][my][mx]; - vyy -= x0*vdyy_brick_dipole[mz][my][mx]; - vzz -= x0*vdzz_brick_dipole[mz][my][mx]; - vxy -= x0*vdxy_brick_dipole[mz][my][mx]; - vxz -= x0*vdxz_brick_dipole[mz][my][mx]; - vyz -= x0*vdyz_brick_dipole[mz][my][mx]; - } - } - } - - // electrical potential due to dipoles - - if (potflag) phi[i] = u; - - // convert E-field to torque - - const double mufactor = qqrd2e * scale; - f[i][0] += mufactor*(vxx*mu[i][0] + vxy*mu[i][1] + vxz*mu[i][2]); - f[i][1] += mufactor*(vxy*mu[i][0] + vyy*mu[i][1] + vyz*mu[i][2]); - f[i][2] += mufactor*(vxz*mu[i][0] + vyz*mu[i][1] + vzz*mu[i][2]); - - t[i][0] += mufactor*(mu[i][1]*ez - mu[i][2]*ey); - t[i][1] += mufactor*(mu[i][2]*ex - mu[i][0]*ez); - t[i][2] += mufactor*(mu[i][0]*ey - mu[i][1]*ex); - } -} - /* ---------------------------------------------------------------------- interpolate from grid to get electric field & force on my particles for ad ------------------------------------------------------------------------- */ @@ -966,7 +329,7 @@ void PPPMDielectric::fieldforce_ad() double *q = atom->q; double **x = atom->x; double **f = atom->f; - double *eps = avec->epsilon; + double *eps = atom->epsilon; int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { @@ -1036,210 +399,6 @@ void PPPMDielectric::fieldforce_ad() } } -/* ---------------------------------------------------------------------- - pack own values to buf to send to another proc -------------------------------------------------------------------------- */ - -void PPPMDielectric::pack_forward(int flag, FFT_SCALAR *buf, int nlist, int *list) -{ - int n = 0; - - if (flag == FORWARD_IK) { - FFT_SCALAR *xsrc = &vdx_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *ysrc = &vdy_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *zsrc = &vdz_brick[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) { - buf[n++] = xsrc[list[i]]; - buf[n++] = ysrc[list[i]]; - buf[n++] = zsrc[list[i]]; - } - } else if (flag == FORWARD_MU) { - FFT_SCALAR *src_ux = &ux_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *src_uy = &uy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *src_uz = &uz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *src_vxx = &vdxx_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *src_vyy = &vdyy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *src_vzz = &vdzz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *src_vxy = &vdxy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *src_vxz = &vdxz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *src_vyz = &vdyz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) { - buf[n++] = src_ux[list[i]]; - buf[n++] = src_uy[list[i]]; - buf[n++] = src_uz[list[i]]; - buf[n++] = src_vxx[list[i]]; - buf[n++] = src_vyy[list[i]]; - buf[n++] = src_vzz[list[i]]; - buf[n++] = src_vxy[list[i]]; - buf[n++] = src_vxz[list[i]]; - buf[n++] = src_vyz[list[i]]; - } - } else if (flag == FORWARD_AD) { - FFT_SCALAR *src = &u_brick[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) - buf[i] = src[list[i]]; - } else if (flag == FORWARD_IK_PERATOM) { - FFT_SCALAR *esrc = &u_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v0src = &v0_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v1src = &v1_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v2src = &v2_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v3src = &v3_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v4src = &v4_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v5src = &v5_brick[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) { - if (eflag_atom) buf[n++] = esrc[list[i]]; - if (vflag_atom) { - buf[n++] = v0src[list[i]]; - buf[n++] = v1src[list[i]]; - buf[n++] = v2src[list[i]]; - buf[n++] = v3src[list[i]]; - buf[n++] = v4src[list[i]]; - buf[n++] = v5src[list[i]]; - } - } - } else if (flag == FORWARD_AD_PERATOM) { - FFT_SCALAR *v0src = &v0_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v1src = &v1_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v2src = &v2_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v3src = &v3_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v4src = &v4_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v5src = &v5_brick[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) { - buf[n++] = v0src[list[i]]; - buf[n++] = v1src[list[i]]; - buf[n++] = v2src[list[i]]; - buf[n++] = v3src[list[i]]; - buf[n++] = v4src[list[i]]; - buf[n++] = v5src[list[i]]; - } - } -} - -/* ---------------------------------------------------------------------- - unpack another proc's own values from buf and set own ghost values -------------------------------------------------------------------------- */ - -void PPPMDielectric::unpack_forward(int flag, FFT_SCALAR *buf, int nlist, int *list) -{ - int n = 0; - - if (flag == FORWARD_IK) { - FFT_SCALAR *xdest = &vdx_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *ydest = &vdy_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *zdest = &vdz_brick[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) { - xdest[list[i]] = buf[n++]; - ydest[list[i]] = buf[n++]; - zdest[list[i]] = buf[n++]; - } - } else if (flag == FORWARD_MU) { - FFT_SCALAR *dest_ux = &ux_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *dest_uy = &uy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *dest_uz = &uz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *dest_vxx = &vdxx_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *dest_vyy = &vdyy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *dest_vzz = &vdzz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *dest_vxy = &vdxy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *dest_vxz = &vdxz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *dest_vyz = &vdyz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) { - dest_ux[list[i]] = buf[n++]; - dest_uy[list[i]] = buf[n++]; - dest_uz[list[i]] = buf[n++]; - dest_vxx[list[i]] = buf[n++]; - dest_vyy[list[i]] = buf[n++]; - dest_vzz[list[i]] = buf[n++]; - dest_vxy[list[i]] = buf[n++]; - dest_vxz[list[i]] = buf[n++]; - dest_vyz[list[i]] = buf[n++]; - } - } else if (flag == FORWARD_AD) { - FFT_SCALAR *dest = &u_brick[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) - dest[list[i]] = buf[i]; - } else if (flag == FORWARD_IK_PERATOM) { - FFT_SCALAR *esrc = &u_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v0src = &v0_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v1src = &v1_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v2src = &v2_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v3src = &v3_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v4src = &v4_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v5src = &v5_brick[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) { - if (eflag_atom) esrc[list[i]] = buf[n++]; - if (vflag_atom) { - v0src[list[i]] = buf[n++]; - v1src[list[i]] = buf[n++]; - v2src[list[i]] = buf[n++]; - v3src[list[i]] = buf[n++]; - v4src[list[i]] = buf[n++]; - v5src[list[i]] = buf[n++]; - } - } - } else if (flag == FORWARD_AD_PERATOM) { - FFT_SCALAR *v0src = &v0_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v1src = &v1_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v2src = &v2_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v3src = &v3_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v4src = &v4_brick[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *v5src = &v5_brick[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) { - v0src[list[i]] = buf[n++]; - v1src[list[i]] = buf[n++]; - v2src[list[i]] = buf[n++]; - v3src[list[i]] = buf[n++]; - v4src[list[i]] = buf[n++]; - v5src[list[i]] = buf[n++]; - } - } -} - -/* ---------------------------------------------------------------------- - pack ghost values into buf to send to another proc -------------------------------------------------------------------------- */ - -void PPPMDielectric::pack_reverse(int flag, FFT_SCALAR *buf, int nlist, int *list) -{ - int n = 0; - if (flag == REVERSE_RHO) { - FFT_SCALAR *src = &density_brick[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) - buf[n++] = src[list[i]]; - } else if (flag == REVERSE_MU) { - FFT_SCALAR *src_mu0 = &densityx_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *src_mu1 = &densityy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *src_mu2 = &densityz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) { - buf[n++] = src_mu0[list[i]]; - buf[n++] = src_mu1[list[i]]; - buf[n++] = src_mu2[list[i]]; - } - } -} - -/* ---------------------------------------------------------------------- - unpack another proc's ghost values from buf and add to own values -------------------------------------------------------------------------- */ - -void PPPMDielectric::unpack_reverse(int flag, FFT_SCALAR *buf, int nlist, int *list) -{ - int n = 0; - if (flag == REVERSE_RHO) { - FFT_SCALAR *dest = &density_brick[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) - dest[list[i]] += buf[n++]; - } else if (flag == REVERSE_MU) { - FFT_SCALAR *dest_mu0 = &densityx_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *dest_mu1 = &densityy_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - FFT_SCALAR *dest_mu2 = &densityz_brick_dipole[nzlo_out][nylo_out][nxlo_out]; - for (int i = 0; i < nlist; i++) { - dest_mu0[list[i]] += buf[n++]; - dest_mu1[list[i]] += buf[n++]; - dest_mu2[list[i]] += buf[n++]; - } - } -} - /* ---------------------------------------------------------------------- Slab-geometry correction term to dampen inter-slab interactions between periodically repeating slabs. Yields good approximation to 2D Ewald if @@ -1254,18 +413,14 @@ void PPPMDielectric::slabcorr() double *q = atom->q; double **x = atom->x; - double *eps = avec->epsilon; + double *eps = atom->epsilon; + double zprd = domain->zprd; int nlocal = atom->nlocal; double dipole = 0.0; for (int i = 0; i < nlocal; i++) dipole += q[i]*x[i][2]; - if (mu_flag) { - double **mu = atom->mu; - for (int i = 0; i < nlocal; i++) dipole += mu[i][2]; - } - // sum local contributions to get global dipole moment double dipole_all; @@ -1277,10 +432,6 @@ void PPPMDielectric::slabcorr() double dipole_r2 = 0.0; if (eflag_atom || fabs(qsum) > SMALL) { - if (mu_flag) - error->all(FLERR,"Cannot (yet) use kspace slab correction with " - "long-range dipoles and non-neutral systems or per-atom energy"); - for (int i = 0; i < nlocal; i++) dipole_r2 += q[i]*x[i][2]*x[i][2]; @@ -1317,17 +468,6 @@ void PPPMDielectric::slabcorr() f[i][2] += ffact * eps[i]*q[i]*(dipole_all - qsum*x[i][2]); efield[i][2] += ffact * eps[i]*(dipole_all - qsum*x[i][2]); } - - // add on torque corrections - - if (mu_flag && atom->torque) { - double **mu = atom->mu; - double **torque = atom->torque; - for (int i = 0; i < nlocal; i++) { - torque[i][0] += ffact * dipole_all * mu[i][1]; - torque[i][1] += -ffact * dipole_all * mu[i][0]; - } - } } /* ---------------------------------------------------------------------- @@ -1338,7 +478,7 @@ void PPPMDielectric::slabcorr() void PPPMDielectric::qsum_qsq() { const double * const q = atom->q; - const double * const eps = avec->epsilon; + const double * const eps = atom->epsilon; const int nlocal = atom->nlocal; double qsum_local(0.0), qsqsum_local(0.0); @@ -1356,84 +496,3 @@ void PPPMDielectric::qsum_qsq() q2 = qsqsum * force->qqrd2e; } - -/* ---------------------------------------------------------------------- - memory usage of local arrays -------------------------------------------------------------------------- */ - -double PPPMDielectric::memory_usage() -{ - double bytes = nmax*3 * sizeof(double); - int nbrick = (nxhi_out-nxlo_out+1) * (nyhi_out-nylo_out+1) * - (nzhi_out-nzlo_out+1); - if (differentiation_flag == 1) { - bytes += 2 * nbrick * sizeof(FFT_SCALAR); - } else { - bytes += 4 * nbrick * sizeof(FFT_SCALAR); - } - if (triclinic) bytes += 3 * nfft_both * sizeof(double); - bytes += 6 * nfft_both * sizeof(double); - bytes += nfft_both * sizeof(double); - bytes += nfft_both*5 * sizeof(FFT_SCALAR); - - if (mu_flag) { - bytes += 3 * nbrick * sizeof(FFT_SCALAR); - //work? - } - - if (peratom_allocate_flag) - bytes += 6 * nbrick * sizeof(FFT_SCALAR); - - if (group_allocate_flag) { - bytes += 2 * nbrick * sizeof(FFT_SCALAR); - bytes += 2 * nfft_both * sizeof(FFT_SCALAR);; - } - - if (cg) bytes += cg->memory_usage(); - - if (mu_flag) - bytes += cg_mu->memory_usage(); - - return bytes; -} - - -/* ---------------------------------------------------------------------- - compute qsum,qsqsum,q2 and give error/warning if not charge neutral - called initially, when particle count changes, when charges are changed -------------------------------------------------------------------------- */ - -void PPPMDielectric::musum_musq() -{ - double** mu = atom->mu; - const int nlocal = atom->nlocal; - double musum_local(0.0), musqsum_local(0.0); - - for (int i = 0; i < nlocal; i++) { - musum_local += mu[i][0] + mu[i][1] + mu[i][2]; - musqsum_local += mu[i][0]*mu[i][0] + mu[i][1]*mu[i][1] + mu[i][2]*mu[i][2]; - } - - MPI_Allreduce(&musum_local,&musum,1,MPI_DOUBLE,MPI_SUM,world); - MPI_Allreduce(&musqsum_local,&musqsum,1,MPI_DOUBLE,MPI_SUM,world); - - /* - if ((qsqsum == 0.0) && (comm->me == 0) && warn_nocharge) { - error->warning(FLERR,"Using kspace solver on system with no charge"); - warn_nocharge = 0; - }*/ - - mu2 = musqsum * force->qqrd2e; - - // not yet sure of the correction needed for non-neutral systems - // so issue warning or error - /* - if (fabs(qsum) > SMALL) { - char str[128]; - sprintf(str,"System is not charge neutral, net charge = %g",qsum); - if (!warn_nonneutral) error->all(FLERR,str); - if (warn_nonneutral == 1 && comm->me == 0) error->warning(FLERR,str); - warn_nonneutral = 2; - }*/ -} - diff --git a/src/USER-DIELECTRIC/pppm_dielectric.h b/src/USER-DIELECTRIC/pppm_dielectric.h index e30d03cd9b..b7803011f8 100644 --- a/src/USER-DIELECTRIC/pppm_dielectric.h +++ b/src/USER-DIELECTRIC/pppm_dielectric.h @@ -28,10 +28,7 @@ class PPPMDielectric : public PPPM { public: PPPMDielectric(class LAMMPS *); virtual ~PPPMDielectric(); - virtual void init(); - void setup_grid(); virtual void compute(int, int); - virtual double memory_usage(); double** efield; double* phi; @@ -40,40 +37,11 @@ class PPPMDielectric : public PPPM { void qsum_qsq(); protected: - FFT_SCALAR ***densityx_brick_dipole,***densityy_brick_dipole,***densityz_brick_dipole; - FFT_SCALAR ***vdxx_brick_dipole,***vdyy_brick_dipole,***vdzz_brick_dipole; - FFT_SCALAR ***vdxy_brick_dipole,***vdxz_brick_dipole,***vdyz_brick_dipole; - FFT_SCALAR ***u_brick_dipole; - FFT_SCALAR ***ux_brick_dipole,***uy_brick_dipole,***uz_brick_dipole; - FFT_SCALAR *densityx_fft_dipole,*densityy_fft_dipole,*densityz_fft_dipole; - FFT_SCALAR *work3,*work4; - - class GridComm *cg_mu; - - virtual void allocate(); - virtual void deallocate(); void slabcorr(); void fieldforce_ik(); void fieldforce_ad(); - // grid communication - - virtual void pack_forward(int, FFT_SCALAR *, int, int *); - virtual void unpack_forward(int, FFT_SCALAR *, int, int *); - virtual void pack_reverse(int, FFT_SCALAR *, int, int *); - virtual void unpack_reverse(int, FFT_SCALAR *, int, int *); - - // dipole - - int mu_flag; - double musqsum,musum,mu2; - void make_rho_dipole(); - void brick2fft_dipole(); - void poisson_ik_dipole(); - void fieldforce_ik_dipole(); - void musum_musq(); - class AtomVecDielectric* avec; }; diff --git a/src/atom.cpp b/src/atom.cpp index ecb82993ce..63e90692e0 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -197,6 +197,10 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) rho = drho = esph = desph = cv = nullptr; vest = nullptr; + // USER-DIELECTRIC package + + area = ed = em = epsilon = curvature = q_unscaled = nullptr; + // end of customization section // -------------------------------------------------------------------- @@ -509,6 +513,15 @@ void Atom::peratom_create() add_peratom("eff_plastic_strain_rate",&eff_plastic_strain_rate,DOUBLE,0); add_peratom("damage",&damage,DOUBLE,0); + // USER-DIELECTRIC package + + add_peratom("area",&area,DOUBLE,0); + add_peratom("ed",&ed,DOUBLE,0); + add_peratom("em",&em,DOUBLE,0); + add_peratom("epsilon",&epsilon,DOUBLE,0); + add_peratom("curvature",&curvature,DOUBLE,0); + add_peratom("q_unscaled",&curvature,DOUBLE,0); + // end of customization section // -------------------------------------------------------------------- } diff --git a/src/atom.h b/src/atom.h index bc69d3b27a..bd1594480c 100644 --- a/src/atom.h +++ b/src/atom.h @@ -157,6 +157,10 @@ class Atom : protected Pointers { double *rho,*drho,*esph,*desph,*cv; double **vest; + // USER-DIELECTRIC package + + double *area,*ed,*em,*epsilon,*curvature,*q_unscaled; + // end of customization section // -------------------------------------------------------------------- From 14f0c215ebd552f248406b55af96f31de8462784 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 28 May 2021 14:09:32 -0400 Subject: [PATCH 03/80] make console detection smarter and don't use a pager at all with OpenMPI --- src/lammps.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/lammps.cpp b/src/lammps.cpp index a218b9e08a..131d2e66f6 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -55,6 +55,10 @@ #include #include +#if !defined(_WIN32) +#include // for isatty() +#endif + #include "lmpinstalledpkgs.h" #include "lmpgitversion.h" @@ -1114,12 +1118,24 @@ void _noopt LAMMPS::help() FILE *fp = screen; const char *pager = nullptr; - // if output is "stdout", use a pipe to a pager for paged output. + // if output is a console, use a pipe to a pager for paged output. // this will avoid the most important help text to rush past the // user. scrollback buffers are often not large enough. this is most // beneficial to windows users, who are not used to command line. - if (fp == stdout) { +#if defined(_WIN32) + int use_pager = _isatty(fileno(fp)); +#else + int use_pager = isatty(fileno(fp)); +#endif + + // cannot use this with OpenMPI since its console is non-functional + +#if defined(OPEN_MPI) + use_pager = 0; +#endif + + if (use_pager) { pager = getenv("PAGER"); if (pager == nullptr) pager = "more"; #if defined(_WIN32) @@ -1130,7 +1146,7 @@ void _noopt LAMMPS::help() // reset to original state, if pipe command failed if (fp == nullptr) { - fp = stdout; + fp = screen; pager = nullptr; } } From e248faa9bdf46da124866192e968f09aca08937b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 28 May 2021 14:09:41 -0400 Subject: [PATCH 04/80] silence compiler warnings --- src/neighbor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 9d94265002..5b4b1c4923 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -1793,7 +1793,7 @@ int Neighbor::choose_stencil(NeighRequest *rq) // convert newton request to newtflag = on or off - int newtflag; + int newtflag = 1; if (rq->newton == 0 && newton_pair) newtflag = 1; else if (rq->newton == 0 && !newton_pair) newtflag = 0; else if (rq->newton == 1) newtflag = 1; From 342c84aba46d2483e8216a077f91485d9c595b8a Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 28 May 2021 15:14:56 -0500 Subject: [PATCH 05/80] Updated AtomVecDielectric to support atom properties like full (molecule, bonds, angles, dihedrals, special) --- src/USER-DIELECTRIC/atom_vec_dielectric.cpp | 99 ++++++++++++++----- src/USER-DIELECTRIC/atom_vec_dielectric.h | 11 ++- .../pair_coul_cut_dielectric.cpp | 22 ++--- .../pair_lj_cut_coul_cut_dielectric.cpp | 2 +- .../pair_lj_cut_coul_long_dielectric.cpp | 2 +- src/USER-DIELECTRIC/pppm_dielectric.cpp | 3 - src/atom.cpp | 2 +- 7 files changed, 99 insertions(+), 42 deletions(-) diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp index 1c2a99eb19..10876459fd 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp @@ -11,16 +11,8 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include -#include #include "atom_vec_dielectric.h" #include "atom.h" -#include "comm.h" -#include "domain.h" -#include "modify.h" -#include "fix.h" -#include "memory.h" -#include "error.h" using namespace LAMMPS_NS; @@ -28,30 +20,67 @@ using namespace LAMMPS_NS; AtomVecDielectric::AtomVecDielectric(LAMMPS *lmp) : AtomVec(lmp) { - molecular = Atom::ATOMIC; + molecular = Atom::MOLECULAR; + bonds_allow = angles_allow = dihedrals_allow = impropers_allow = 1; mass_type = PER_TYPE; - - atom->q_flag = atom->mu_flag = 1; + atom->molecule_flag = atom->q_flag = atom->mu_flag = 1; + // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings // order of fields in a string does not matter // except: fields_data_atom & fields_data_vel must match data file - fields_grow = (char *) "q mu3 area ed em epsilon curvature"; - fields_copy = (char *) "q mu3 area ed em epsilon curvature"; - fields_comm = (char *) "q mu3 area ed em epsilon curvature"; - fields_comm_vel = (char *) "q mu3 area ed em epsilon curvature"; + fields_grow = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special " + "mu3 area ed em epsilon curvature q_unscaled"; + fields_copy = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special " + "mu3 area ed em epsilon curvature q_unscaled"; + fields_comm = (char *) ""; + fields_comm_vel = (char *) ""; fields_reverse = (char *) ""; - fields_border = (char *) "q mu3 area ed em epsilon curvature"; - fields_border_vel = (char *) "q mu3 area ed em epsilon curvature"; - fields_exchange = (char *) "q mu3 area ed em epsilon curvature"; - fields_restart = (char * ) "q mu3 area ed em epsilon curvature"; - fields_create = (char *) "q mu3 area ed em epsilon curvature"; - fields_data_atom = (char *) "id molecule type q x mu3 area ed em epsilon curvature"; + fields_border = (char *) "q molecule mu3 area ed em epsilon curvature"; + fields_border_vel = (char *) "q molecule mu3 area ed em epsilon curvature"; + fields_exchange = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "nspecial special " + "mu3 area ed em epsilon curvature q_unscaled"; + fields_restart = (char *) + "q molecule num_bond bond_type bond_atom " + "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " + "num_dihedral dihedral_type dihedral_atom1 dihedral_atom2 " + "dihedral_atom3 dihedral_atom4 " + "num_improper improper_type improper_atom1 improper_atom2 " + "improper_atom3 improper_atom4 " + "mu3 area ed em epsilon curvature q_unscaled"; + fields_create = (char *) + "q molecule num_bond num_angle num_dihedral num_improper nspecial " + "mu3 area ed em epsilon curvature q_unscaled"; + fields_data_atom = (char *) "id molecule type q x " + "mu3 area ed em epsilon curvature"; fields_data_vel = (char *) "id v"; setup_fields(); + + bond_per_atom = angle_per_atom = dihedral_per_atom = improper_per_atom = 0; } /* ---------------------------------------------------------------------- @@ -61,6 +90,16 @@ AtomVecDielectric::AtomVecDielectric(LAMMPS *lmp) : AtomVec(lmp) void AtomVecDielectric::grow_pointers() { + num_bond = atom->num_bond; + bond_type = atom->bond_type; + num_angle = atom->num_angle; + angle_type = atom->angle_type; + num_dihedral = atom->num_dihedral; + dihedral_type = atom->dihedral_type; + num_improper = atom->num_improper; + improper_type = atom->improper_type; + nspecial = atom->nspecial; + mu = atom->mu; area = atom->area; ed = atom->ed; @@ -88,6 +127,14 @@ void AtomVecDielectric::create_atom_post(int ilocal) void AtomVecDielectric::data_atom_post(int ilocal) { + num_bond[ilocal] = 0; + num_angle[ilocal] = 0; + num_dihedral[ilocal] = 0; + num_improper[ilocal] = 0; + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; + double* q = atom->q; q_unscaled[ilocal] = q[ilocal]; q[ilocal] /= epsilon[ilocal]; @@ -103,6 +150,14 @@ void AtomVecDielectric::pack_data_post(int ilocal) q_unscaled[ilocal] = q[ilocal]/epsilon[ilocal]; } +/* ---------------------------------------------------------------------- + initialize other atom quantities after AtomVec::unpack_restart() +------------------------------------------------------------------------- */ - +void AtomVecDielectric::unpack_restart_init(int ilocal) +{ + nspecial[ilocal][0] = 0; + nspecial[ilocal][1] = 0; + nspecial[ilocal][2] = 0; +} diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.h b/src/USER-DIELECTRIC/atom_vec_dielectric.h index 797e41f112..6c933c5949 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.h +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.h @@ -32,12 +32,17 @@ class AtomVecDielectric : public AtomVec { void create_atom_post(int); void data_atom_post(int); void pack_data_post(int); + void unpack_restart_init(int); + + private: + int *num_bond,*num_angle,*num_dihedral,*num_improper; + int **bond_type,**angle_type,**dihedral_type,**improper_type; + int **nspecial; + + int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; double **mu; double *area,*ed,*em,*epsilon,*curvature,*q_unscaled; - - private: - }; } diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp index 2cb411e68f..724fac2fac 100644 --- a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp @@ -15,21 +15,21 @@ Contributing author: Trung Nguyen (Northwestern) ------------------------------------------------------------------------- */ -#include -#include -#include -#include #include "pair_coul_cut_dielectric.h" + #include "atom.h" #include "atom_vec_dielectric.h" #include "comm.h" +#include "error.h" #include "force.h" #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" #include "memory.h" #include "math_const.h" -#include "error.h" + +#include +#include using namespace LAMMPS_NS; using namespace MathConst; @@ -74,11 +74,11 @@ void PairCoulCutDielectric::compute(int eflag, int vflag) double **x = atom->x; double **f = atom->f; double *q = atom->q; - double *q_real = avec->q_unscaled; - double* eps = avec->epsilon; - double** norm = avec->mu; - double* curvature = avec->curvature; - double* area = avec->area; + double *q_real = atom->q_unscaled; + double* eps = atom->epsilon; + double** norm = atom->mu; + double* curvature = atom->curvature; + double* area = atom->area; int *type = atom->type; int nlocal = atom->nlocal; double *special_coul = force->special_coul; @@ -183,7 +183,7 @@ double PairCoulCutDielectric::single(int i, int j, int itype, int jtype, double &fforce) { double r2inv,forcecoul,phicoul,ei,ej; - double* eps = avec->epsilon; + double* eps = atom->epsilon; r2inv = 1.0/rsq; forcecoul = force->qqrd2e * atom->q[i]*atom->q[j]*sqrt(r2inv)*eps[i]; diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp index 56bdd579d9..8a60ccd31b 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp @@ -208,7 +208,7 @@ double PairLJCutCoulCutDielectric::single(int i, int j, int itype, int jtype, double &fforce) { double r2inv,r6inv,forcecoul,forcelj,phicoul,ei,ej,philj; - double* eps = avec->epsilon; + double* eps = atom->epsilon; r2inv = 1.0/rsq; if (rsq < cut_coulsq[itype][jtype]) diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp index 613defa2f6..4967358aa4 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp @@ -277,7 +277,7 @@ double PairLJCutCoulLongDielectric::single(int i, int j, int itype, int jtype, double r2inv,r6inv,r,grij,expm2,t,erfc,ei,ej,prefactor; double fraction,table,forcecoul,forcelj,phicoul,philj; int itable; - double *eps = avec->epsilon; + double *eps = atom->epsilon; r2inv = 1.0/rsq; if (rsq < cut_coulsq) { diff --git a/src/USER-DIELECTRIC/pppm_dielectric.cpp b/src/USER-DIELECTRIC/pppm_dielectric.cpp index 62779d79c4..d9c957aaa3 100644 --- a/src/USER-DIELECTRIC/pppm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pppm_dielectric.cpp @@ -482,9 +482,6 @@ void PPPMDielectric::qsum_qsq() const int nlocal = atom->nlocal; double qsum_local(0.0), qsqsum_local(0.0); -#if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(+:qsum_local,qsqsum_local) -#endif for (int i = 0; i < nlocal; i++) { double qtmp = eps[i]*q[i]; qsum_local += qtmp; diff --git a/src/atom.cpp b/src/atom.cpp index 63e90692e0..75181abbd7 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -520,7 +520,7 @@ void Atom::peratom_create() add_peratom("em",&em,DOUBLE,0); add_peratom("epsilon",&epsilon,DOUBLE,0); add_peratom("curvature",&curvature,DOUBLE,0); - add_peratom("q_unscaled",&curvature,DOUBLE,0); + add_peratom("q_unscaled",&q_unscaled,DOUBLE,0); // end of customization section // -------------------------------------------------------------------- From 1fd6014eca44598848f63c75ba6b5c1daaa869a4 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 28 May 2021 15:38:02 -0500 Subject: [PATCH 06/80] Updated fix polarize/bem/gmres and fix polarize/functional --- .../fix_polarize_bem_gmres.cpp | 81 ++++++++++--------- .../fix_polarize_functional.cpp | 79 +++++++++--------- 2 files changed, 82 insertions(+), 78 deletions(-) diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp index 60c0056672..9f0d16db82 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -40,21 +40,20 @@ LC: QA297.8.K45. ------------------------------------------------------------------------- */ -#include -#include #include "fix_polarize_bem_gmres.h" -#include "atom_vec_dielectric.h" -#include "update.h" + #include "atom.h" +#include "atom_vec_dielectric.h" #include "comm.h" #include "domain.h" #include "neighbor.h" +#include "error.h" #include "force.h" #include "group.h" #include "kspace.h" +#include "math_const.h" #include "memory.h" #include "modify.h" -#include "math_const.h" #include "pair_coul_cut_dielectric.h" #include "pair_coul_long_dielectric.h" #include "pair_lj_cut_coul_cut_dielectric.h" @@ -64,7 +63,10 @@ #include "msm_dielectric.h" #include "random_park.h" #include "timer.h" -#include "error.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; using namespace FixConst; @@ -85,9 +87,9 @@ FixPolarizeBEMGMRES::FixPolarizeBEMGMRES(LAMMPS *lmp, int narg, char **arg) : // parse required arguments - nevery = force->inumeric(FLERR,arg[3]); + nevery = utils::numeric(FLERR,arg[3],false,lmp); if (nevery < 0) error->all(FLERR,"Illegal fix polarize/bem/gmres command"); - double tol = force->numeric(FLERR,arg[4]); + double tol = utils::numeric(FLERR,arg[4],false,lmp); tol_abs = tol_rel = tol; itr_max = 20; @@ -149,7 +151,6 @@ int FixPolarizeBEMGMRES::setmask() { int mask = 0; mask |= PRE_FORCE; - mask |= THERMO_ENERGY; return mask; } @@ -307,12 +308,12 @@ void FixPolarizeBEMGMRES::pre_force(int) void FixPolarizeBEMGMRES::compute_induced_charges() { double *q = atom->q; - double *q_real = avec->q_real; - double **norm = avec->mu; - double *area = avec->area; - double *ed = avec->ed; - double *em = avec->em; - double *epsilon = avec->epsilon; + double *q_real = atom->q_unscaled; + double **norm = atom->mu; + double *area = atom->area; + double *ed = atom->ed; + double *em = atom->em; + double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; double epsilon0 = force->dielectric; @@ -602,11 +603,11 @@ void FixPolarizeBEMGMRES::apply_operator(double* w, double* Aw, int n) { int i; double *q = atom->q; - double **norm = avec->mu; - double *area = avec->area; - double *ed = avec->ed; - double *em = avec->em; - double *epsilon = avec->epsilon; + double **norm = atom->mu; + double *area = atom->area; + double *ed = atom->ed; + double *em = atom->em; + double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; double epsilon0 = force->dielectric; @@ -672,12 +673,12 @@ void FixPolarizeBEMGMRES::update_residual(double* w, double* r, int n) { int i; double *q = atom->q; - double *q_real = avec->q_real; - double **norm = avec->mu; - double *area = avec->area; - double *ed = avec->ed; - double *em = avec->em; - double *epsilon = avec->epsilon; + double *q_real = atom->q_unscaled; + double **norm = atom->mu; + double *area = atom->area; + double *ed = atom->ed; + double *em = atom->em; + double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; double epsilon0 = force->dielectric; @@ -814,11 +815,11 @@ int FixPolarizeBEMGMRES::modify_param(int narg, char **arg) while (iarg < narg) { if (strcmp(arg[iarg],"itr_max") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); - itr_max = force->numeric(FLERR,arg[iarg+1]); + itr_max = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"mr") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); - mr = force->numeric(FLERR,arg[iarg+1]); + mr = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"kspace") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); @@ -831,12 +832,12 @@ int FixPolarizeBEMGMRES::modify_param(int narg, char **arg) double epsiloni=-1, areai=-1; double qreali=0; int set_charge=0; - double ediff = force->numeric(FLERR,arg[iarg+1]); - double emean = force->numeric(FLERR,arg[iarg+2]); - if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = force->numeric(FLERR,arg[iarg+3]); - if (strcmp(arg[iarg+4],"NULL") != 0) areai = force->numeric(FLERR,arg[iarg+4]); + double ediff = utils::numeric(FLERR,arg[iarg+1],false,lmp); + double emean = utils::numeric(FLERR,arg[iarg+2],false,lmp); + if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); + if (strcmp(arg[iarg+4],"NULL") != 0) areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); if (strcmp(arg[iarg+5],"NULL") != 0) { - qreali = force->numeric(FLERR,arg[iarg+5]); + qreali = utils::numeric(FLERR,arg[iarg+5],false,lmp); set_charge = 1; } set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, qreali); @@ -844,8 +845,8 @@ int FixPolarizeBEMGMRES::modify_param(int narg, char **arg) iarg += 6; } else if (strcmp(arg[iarg],"rand") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix_modify command"); - ave_charge = force->numeric(FLERR,arg[iarg+1]); - seed_charge = force->numeric(FLERR,arg[iarg+2]); + ave_charge = utils::numeric(FLERR,arg[iarg+1],false,lmp); + seed_charge = utils::numeric(FLERR,arg[iarg+2],false,lmp); randomized = 1; iarg += 3; } else error->all(FLERR,"Illegal fix_modify command"); @@ -939,11 +940,11 @@ double FixPolarizeBEMGMRES::compute_vector(int n) void FixPolarizeBEMGMRES::set_dielectric_params(double ediff, double emean, double epsiloni, double areai, int set_charge, double qreali) { - double *area = avec->area; - double *ed = avec->ed; - double *em = avec->em; - double *q_real = avec->q_real; - double *epsilon = avec->epsilon; + double *area = atom->area; + double *ed = atom->ed; + double *em = atom->em; + double *q_real = atom->q_unscaled; + double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index e50f239e07..811cd38be7 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -26,36 +26,39 @@ Reference: Jadhao, Solis, Olvera de la Cruz, J. Chem. Phys. 138, 054119, 2013 ------------------------------------------------------------------------- */ -#include -#include #include "fix_polarize_functional.h" -#include "atom_vec_dielectric.h" -#include "update.h" + #include "atom.h" +#include "atom_vec_dielectric.h" + + #include "comm.h" #include "compute.h" #include "domain.h" -#include "neighbor.h" +#include "error.h" #include "force.h" #include "group.h" -#include "pair.h" +#include "kspace.h" +#include "math_const.h" +#include "math_extra.h" +#include "memory.h" +#include "modify.h" +#include "msm_dielectric.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" #include "pair_coul_cut_dielectric.h" #include "pair_coul_long_dielectric.h" #include "pair_lj_cut_coul_cut_dielectric.h" #include "pair_lj_cut_coul_long_dielectric.h" #include "pair_lj_cut_coul_msm_dielectric.h" #include "pppm_dielectric.h" -#include "msm_dielectric.h" -#include "kspace.h" -#include "memory.h" -#include "math_const.h" -#include "math_extra.h" -#include "modify.h" -#include "neigh_list.h" -#include "neigh_request.h" #include "random_park.h" #include "timer.h" -#include "error.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; using namespace FixConst; @@ -392,8 +395,8 @@ void FixPolarizeFunctional::update_induced_charges() void FixPolarizeFunctional::charge_rescaled(int scaled2real) { double* q = atom->q; - double* q_real = avec->q_real; - double* epsilon = avec->epsilon; + double* q_real = atom->q_unscaled; + double* epsilon = atom->epsilon; int nlocal = atom->nlocal; if (scaled2real) { @@ -479,12 +482,12 @@ int FixPolarizeFunctional::modify_param(int narg, char **arg) double epsiloni=-1, areai=-1; double qreali=0; int set_charge=0; - double ediff = force->numeric(FLERR,arg[iarg+1]); - double emean = force->numeric(FLERR,arg[iarg+2]); - if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = force->numeric(FLERR,arg[iarg+3]); - if (strcmp(arg[iarg+4],"NULL") != 0) areai = force->numeric(FLERR,arg[iarg+4]); + double ediff = utils::numeric(FLERR,arg[iarg+1],false,lmp); + double emean = utils::numeric(FLERR,arg[iarg+2],false,lmp); + if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); + if (strcmp(arg[iarg+4],"NULL") != 0) areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); if (strcmp(arg[iarg+5],"NULL") != 0) { - qreali = force->numeric(FLERR,arg[iarg+5]); + qreali = utils::numeric(FLERR,arg[iarg+5],false,lmp); set_charge = 1; } set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, qreali); @@ -601,11 +604,11 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() tagint* tag = atom->tag; int nlocal = atom->nlocal; double **x = atom->x; - double *area = avec->area; - double *curvature = avec->curvature; - double **norm = avec->mu; - double *ed = avec->ed; - double *em = avec->em; + double *area = atom->area; + double *curvature = atom->curvature; + double **norm = atom->mu; + double *ed = atom->ed; + double *em = atom->em; // invoke full neighbor list @@ -815,12 +818,12 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() tagint *tag = atom->tag; int nlocal = atom->nlocal; double **x = atom->x; - double *q = avec->q_real; - double *epsilon = avec->epsilon; - double *area = avec->area; - double **norm = avec->mu; - double *ed = avec->ed; - double *em = avec->em; + double *q = atom->q_unscaled; + double *epsilon = atom->epsilon; + double *area = atom->area; + double **norm = atom->mu; + double *ed = atom->ed; + double *em = atom->em; // invoke full neighbor list @@ -1017,11 +1020,11 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() void FixPolarizeFunctional::set_dielectric_params(double ediff, double emean, double epsiloni, double areai, int set_charge, double qreali) { - double *area = avec->area; - double *ed = avec->ed; - double *em = avec->em; - double *q_real = avec->q_real; - double *epsilon = avec->epsilon; + double *area = atom->area; + double *ed = atom->ed; + double *em = atom->em; + double *q_real = atom->q_unscaled; + double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; From 127627a5f7ceaa3400f082bd8fd06ec4c531f415 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 28 May 2021 15:42:03 -0500 Subject: [PATCH 07/80] Updated Install.sh --- src/USER-DIELECTRIC/Install.sh | 3 +- src/USER-DIELECTRIC/fix_qeq_dielectric.cpp | 1281 ------------------ src/USER-DIELECTRIC/fix_qeq_dielectric.h | 153 --- src/USER-DIELECTRIC/pppm_disp_dielectric.cpp | 820 ----------- src/USER-DIELECTRIC/pppm_disp_dielectric.h | 62 - 5 files changed, 1 insertion(+), 2318 deletions(-) delete mode 100644 src/USER-DIELECTRIC/fix_qeq_dielectric.cpp delete mode 100644 src/USER-DIELECTRIC/fix_qeq_dielectric.h delete mode 100644 src/USER-DIELECTRIC/pppm_disp_dielectric.cpp delete mode 100644 src/USER-DIELECTRIC/pppm_disp_dielectric.h diff --git a/src/USER-DIELECTRIC/Install.sh b/src/USER-DIELECTRIC/Install.sh index 986e20e806..a1240ecd6a 100644 --- a/src/USER-DIELECTRIC/Install.sh +++ b/src/USER-DIELECTRIC/Install.sh @@ -50,7 +50,6 @@ action pair_coul_cut_dielectric.cpp action pair_coul_cut_dielectric.h action pppm_dielectric.cpp action pppm_dielectric.h -action pppm_disp_dielectric.cpp pppm_disp.cpp -action pppm_disp_dielectric.h pppm_disp.h action msm_dielectric.cpp action msm_dielectric.h + diff --git a/src/USER-DIELECTRIC/fix_qeq_dielectric.cpp b/src/USER-DIELECTRIC/fix_qeq_dielectric.cpp deleted file mode 100644 index 0489351ed6..0000000000 --- a/src/USER-DIELECTRIC/fix_qeq_dielectric.cpp +++ /dev/null @@ -1,1281 +0,0 @@ -/* ---------------------------------------------------------------------- - 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 authors: - full-matrix: Honghao Li (Northwestern University) - neighbor list: Trung Nguyen (Northwestern University) - Ref.: Jadhao, Solis, Olvera de la Cruz, J. Chem. Phys. 138, 054119, 2013 -------------------------------------------------------------------------- */ - -#include -#include -#include -#include -#include -#include -#include "fix_qeq_dielectric.h" -#include "atom.h" -#include "atom_vec_dielectric.h" -#include "comm.h" -#include "domain.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" -#include "update.h" -#include "force.h" -#include "kspace.h" -#include "group.h" -#include "pair.h" -#include "respa.h" -#include "math_const.h" -#include "math_extra.h" -#include "memory.h" -#include "citeme.h" -#include "error.h" -#include - -using namespace LAMMPS_NS; -using namespace FixConst; -using namespace MathConst; -using namespace MathExtra; - -#define _POLARIZE_DEBUG - -/* ---------------------------------------------------------------------- */ - -FixQEqDielectric::FixQEqDielectric(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg) -{ - if (narg != 3) error->all(FLERR,"Illegal fix qeq/dielectric command"); - - avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"fix qeq/dielectric requires atom style dielectric"); - - comm_forward = 1; - - // register with Atom class - grow_arrays(atom->nmax); - atom->add_callback(0); - - // kspace info -// ewaldDielectric = NULL; - - tags_interface = NULL; - tags_ions = NULL; - - // interface terms - Rww = NULL; - inverse_matrix = NULL; - G1ww = NULL; - G2ww = NULL; - G3ww = NULL; - ndotGww = NULL; - gradG1ww = NULL; - - qiRqwVector = NULL; - G1qq_real = NULL; - G1qw_real = NULL; - gradG1wq_real = NULL; - sum2G2wq = NULL; - - sum1G2qw = NULL; - sum1G3qw = NULL; - sum1G1qw_epsilon = NULL; - sum2ndotGwq_epsilon = NULL; - - q_induced_charges = NULL; - - full = 1; - includingG3ww = 1; -} - -/* ---------------------------------------------------------------------- */ - -FixQEqDielectric::~FixQEqDielectric() -{ - // unregister callbacks to this fix from Atom class - - if (copymode) return; - - atom->delete_callback(id,0); - -// if (ewaldDielectric) delete ewaldDielectric; -// ewaldDielectric = NULL; - - memory->destroy(tags_interface); - memory->destroy(tags_ions); - - memory->destroy(inverse_matrix); - memory->destroy(Rww); - memory->destroy(G1ww); - memory->destroy(G2ww); - memory->destroy(G3ww); - memory->destroy(ndotGww); - memory->destroy3d_offset(gradG1ww,0); - - memory->destroy(qiRqwVector); - memory->destroy(sum2G2wq); - memory->destroy(G1qq_real); - memory->destroy(G1qw_real); - memory->destroy3d_offset(gradG1wq_real,0); - - memory->destroy(sum1G2qw); - memory->destroy(sum1G3qw); - memory->destroy(sum1G1qw_epsilon); - memory->destroy(sum2ndotGwq_epsilon); - - memory->destroy(q_induced_charges); - -} - -/* ---------------------------------------------------------------------- */ - -int FixQEqDielectric::setmask() -{ - int mask = 0; - mask |= PRE_FORCE; - mask |= PRE_FORCE_RESPA; - mask |= MIN_PRE_FORCE; - return mask; -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::init() -{ - if (atom->map_style == 0) - error->all(FLERR,"Fix qeq/dielectric requires an atom map, see atom_modify"); - - ngroup = group->count(igroup); - if (ngroup == 0) error->all(FLERR,"Fix qeq/dielectric group has no atoms"); - - if (comm->nprocs > 1) error->all(FLERR,"Fix qeq/dielectric works with 1 MPI for now"); - - // need a full neighbor list w/ Newton off and ghost neighbors - // built whenever re-neighboring occurs - - int irequest = neighbor->request(this,instance_me); - neighbor->requests[irequest]->pair = 0; - neighbor->requests[irequest]->fix = 1; - neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->full = 1; - neighbor->requests[irequest]->occasional = 0; - - if (strstr(update->integrate_style,"respa")) - nlevels_respa = ((Respa *) update->integrate)->nlevels; - - // TODO: some data needed later, some just temp should be defined and release in setup_pre_force. - // initial interfaces terms - n_induced_charges = ngroup; - n_ions = atom->nlocal - n_induced_charges; - if (force->kspace) g_ewald = force->kspace->g_ewald; - else g_ewald = 0.01; - - // kspace -// int narg = 1; -// char *arg[10] = {"0.0000"}; // this does not matter, the accuracy_relative is manually changed to kspace accuracy_relative in constructor. -// ewaldDielectric = new EwaldDielectric(n_induced_charges, n_ions, lmp, narg, arg); - // tags, after ewaldDielectric created, tags will be transfer to that class too. - memory->create(tags_interface, n_induced_charges, "fix:tags_interface"); - memory->create(tags_ions, n_ions, "fix:tags_ions"); - - // initialize all data - // interface terms, all matrix of M*M - memory->create(inverse_matrix, n_induced_charges, n_induced_charges, "fix:inverse_matrix"); - memory->create(Rww, n_induced_charges, n_induced_charges, "fix:Rww"); - memory->create(G1ww, n_induced_charges, n_induced_charges, "fix:G1ww"); - memory->create(ndotGww, n_induced_charges, n_induced_charges, "fix:ndotGww"); - memory->create(G2ww, n_induced_charges, n_induced_charges, "fix:G2ww"); - memory->create(G3ww, n_induced_charges, n_induced_charges, "fix:G3ww"); - memory->create3d_offset(gradG1ww,0,n_induced_charges,n_induced_charges,3,"fix:gradG1ww"); - - // each step, qw, qq terms, temp data - memory->create(qiRqwVector, n_induced_charges, "fix:qiRqwVector"); - memory->create(sum2G2wq, n_induced_charges, "fix:sum2G2wq"); - memory->create(G1qq_real, n_ions, n_ions, "fix:G1qq_real"); - memory->create(G1qw_real, n_ions, n_induced_charges, "fix:G1qw_real"); - memory->create3d_offset(gradG1wq_real,0,n_induced_charges,n_ions,3,"fix:gradG1wq_real"); - // array of M - memory->create(sum1G2qw, n_induced_charges, "fix:sum1G2qw"); - memory->create(sum1G3qw, n_induced_charges, "fix:sum1G3qw"); - memory->create(sum1G1qw_epsilon, n_induced_charges, "fix:sum1G1qw_epsilon"); - memory->create(sum2ndotGwq_epsilon, n_induced_charges, "fix:sum2ndotGwq_epsilon"); - - memory->create(q_induced_charges, n_induced_charges, "fix:q_induced_charges"); - - setup_tags(); -// print_all_properties(); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::init_list(int id, NeighList *ptr) -{ - list = ptr; -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::setup_pre_force(int vflag) -{ -// printf("========= calculate structure factors and kspace terms ==========\n"); - // calculate structure factor and kspace terms first - // TODO this step seems not necessary, check it later - // since the 3-loop calculate explicit kspace term G(sk, sm), so the structure factor stuff is not necessary -// ewaldDielectric->calculate_structure_factors(); -// ewaldDielectric->calculate_kspace_terms(); - - printf("==== Start setup_pre_force in fix_qeq_dielectric ======\n"); - clock_t t = clock(); - #ifdef _OPENMP - double startTime = omp_get_wtime(); - #endif - - if (full) calculate_Rww_full(); - else calculate_Rww_cutoff(); - - // calculate inverse matrix (Rww + Rww^T)^(-1), - printf("==== Calculate the inverse of matrix Rww ======\n"); - calculate_inverse_matrix(Rww, inverse_matrix, n_induced_charges); - - pre_force(vflag); - - printf("==== End setup_pre_force in fix_qeq_dielectric ======\n"); - -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::calculate_Rww_full() -{ - int *mask = atom->mask; - int *type = atom->type; - int nlocal = atom->nlocal; - double **x = atom->x; - double *area = avec->area; - double *curvature = avec->curvature; - double **norm = avec->mu; - double *ed = avec->ed; - double *em = avec->em; - - // calculate interface term Rww and the inverse matrix (Rww + Rww^T)^(-1); - - #pragma omp parallel - { - - // calculate G1ww, gradG1ww, ndotG1ww - // =========== Loop over all nlocal ===============, we need all pair G^Kspace(i, j) - #pragma omp for - for (int k = 0; k < n_induced_charges; ++k) { - // nk: all nlocal index in atom[] starts with n---, k is the index of all the matrix - int nk = get_index_interface(k); - double xtmp = x[nk][0]; - double ytmp = x[nk][1]; - double ztmp = x[nk][2]; - - for (int l = 0; l < n_induced_charges; ++l) { - int nl = get_index_interface(l); - - // ik = il, dr = 0, different equation - if (nk == nl) { - G1ww[k][l] = calculate_greens_ewald_self_vertex(area[nk]); - ndotGww[k][l] = calculate_ndotgreens_ewald_self_vertex(area[nk], curvature[nk]) / (4*MY_PI); - continue; - } else { - // k != l - double delx = xtmp - x[nl][0]; - double dely = ytmp - x[nl][1]; - double delz = ztmp - x[nl][2]; - - domain->minimum_image(delx,dely,delz); - - G1ww[k][l] = calculate_greens_ewald(delx, dely, delz); - // gradG1ww is vector, directly change it in the function - calculate_grad_greens_ewald(gradG1ww[k][l], delx, dely, delz); - // use mu to store the normal vector of interface vertex - ndotGww[k][l] = MathExtra::dot3(norm[nk], gradG1ww[k][l]) / (4*MY_PI); - } - } - } - - // calculate G2ww - #pragma omp for - for (int k = 0; k < n_induced_charges; ++k) { - for (int l = 0; l < n_induced_charges; ++l) { - double temp = 0; - for (int m = 0; m < n_induced_charges; ++m) { - int nm = get_index_interface(m); - temp += G1ww[k][m] * ndotGww[m][l] * area[nm] * ed[nm]; - } - G2ww[k][l] = temp; - } - } - - // calculate G3ww and Rww - #pragma omp for - for (int k = 0; k < n_induced_charges; ++k) { - int nk = get_index_interface(k); - for (int l = 0; l < n_induced_charges; ++l) { - int nl = get_index_interface(l); - double temp = 0; - for (int m = 0; m < n_induced_charges; ++m) { - int nm = get_index_interface(m); - temp += (ndotGww[m][k]) * G2ww[m][l] * area[nm] * ed[nm]; - } - G3ww[k][l] = temp; - double a1 = em[nk] * (em[nl] - 1.0); - double a2 = 1.0 - em[nk] - em[nl]; - // The first term (w/ G1ww) contributes the most to Rww - // the second term (w/ G2ww) includes certain correction - // the third term (w/ G3ww) corresponds to a minor contribution - Rww[k][l] = a1 * G1ww[k][l] + a2 * G2ww[k][l] + G3ww[k][l]; - } - } - } // end of the whole parallel region - - #ifdef _POLARIZE_DEBUG - if (comm->me == 0) { - FILE* fp = fopen("Rww-qeq-full.txt", "w"); - for (int i = 0; i < n_induced_charges; i++) - fprintf(fp, "%d %g\n", i, Rww[i][i]); - fclose(fp); - } - #endif -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::calculate_Rww_cutoff() -{ - int *mask = atom->mask; - int *type = atom->type; - int nlocal = atom->nlocal; - double **x = atom->x; - double *area = avec->area; - double *curvature = avec->curvature; - double **norm = avec->mu; - double *ed = avec->ed; - double *em = avec->em; - - // invoke full neighbor list (will copy or build if necessary) - - int inum,jnum,*ilist,*jlist,*numneigh,**firstneigh; - - inum = list->inum; // number of entries in the neighbor list - ilist = list->ilist; // ilist[ii] gives the atom index of the entry ii in the list - numneigh = list->numneigh; // numneigh[i] gives the number of neighbors of local atom i - firstneigh = list->firstneigh; // firstneigh[i] gives the pointer to the neighbors of i - - // calculate G1ww, gradG1ww, ndotG1ww - - for (int ii = 0; ii < inum; ii++) { - int i = ilist[ii]; - if (mask[i] & groupbit) { - // interface particles - int mi = get_matrix_index_from_local_index(i); - double xtmp = x[i][0]; - double ytmp = x[i][1]; - double ztmp = x[i][2]; - jlist = firstneigh[i]; - jnum = numneigh[i]; - - for (int kk = 0; kk < jnum; kk++) { - int k = jlist[kk] & NEIGHMASK; - if (mask[k] & groupbit) { - // interface particles - double delx = xtmp - x[k][0]; - double dely = ytmp - x[k][1]; - double delz = ztmp - x[k][2]; - domain->minimum_image(delx,dely,delz); - int mk = get_matrix_index_from_local_index(k); - - G1ww[mi][mk] = calculate_greens_ewald(delx, dely, delz); - // gradG1ww is vector, directly change it in the function - calculate_grad_greens_ewald(gradG1ww[mi][mk], delx, dely, delz); - // use mu to store the normal vector of interface vertex - ndotGww[mi][mk] = MathExtra::dot3(norm[i], gradG1ww[mi][mk]) / (4*MY_PI); - } - } - - // special treatment for the diagonal terms because in the above loop there is no mk == mi - - G1ww[mi][mi] = calculate_greens_ewald_self_vertex(area[i]); - ndotGww[mi][mi] = calculate_ndotgreens_ewald_self_vertex(area[i], curvature[i]) / (4*MY_PI); - } - } - - // calculate G2ww - - for (int ii = 0; ii < inum; ii++) { - int i = ilist[ii]; - if (mask[i] & groupbit) { - // interface particles - int mi = get_matrix_index_from_local_index(i); - jlist = firstneigh[i]; - jnum = numneigh[i]; - - for (int kk = 0; kk < jnum; kk++) { - int k = jlist[kk] & NEIGHMASK; - - if (mask[k] & groupbit) { - // interface particles - int mk = get_matrix_index_from_local_index(k); - double temp = 0; - for (int ll = 0; ll < jnum; ll++) { - int l = jlist[ll] & NEIGHMASK; - if (mask[l] & groupbit) { - // interface particles - int ml = get_matrix_index_from_local_index(l); - temp += G1ww[mi][ml] * ndotGww[ml][mk] * area[l] * ed[l]; - } - } - G2ww[mi][mk] = temp; - } - } - - // including the diagonal term - double temp = 0; - for (int kk = 0; kk < jnum; kk++) { - int k = jlist[kk] & NEIGHMASK; - if (mask[k] & groupbit) { - // interface particles - int mk = get_matrix_index_from_local_index(k); - temp += G1ww[mi][mk] * ndotGww[mk][mi] * area[k] * ed[k]; - } - } - G2ww[mi][mi] = temp; - } - } - - // calculate G3ww and Rww -/* - // G3ww is implemented as in _exact(), but can be optionally excluded - for (int k = 0; k < n_induced_charges; ++k) { - int nk = get_index_interface(k); - for (int l = 0; l < n_induced_charges; ++l) { - int nl = get_index_interface(l); - double a1 = em[nk] * (em[nl] - 1.0); - double a2 = 1.0 - em[nk] - em[nl]; - // The first term (w/ G1ww) contributes the most to Rww - // the second term (w/ G2ww) includes certain correction - Rww[k][l] = a1 * G1ww[k][l] + a2 * G2ww[k][l]; - - // the third term (w/ G3ww) corresponds to a minor contribution - if (includingG3ww) { - double temp = 0; - for (int m = 0; m < n_induced_charges; ++m) { - int nm = get_index_interface(m); - temp += (ndotGww[m][k]) * G2ww[m][l] * area[nm] * ed[nm]; - } - G3ww[k][l] = temp; - Rww[k][l] += G3ww[k][l]; - } - } - } -*/ - - for (int ii = 0; ii < inum; ii++) { - int i = ilist[ii]; - if (mask[i] & groupbit) { - // interface particles - int mi = get_matrix_index_from_local_index(i); - jlist = firstneigh[i]; - jnum = numneigh[i]; - - for (int kk = 0; kk < jnum; kk++) { - int k = jlist[kk] & NEIGHMASK; - - if (mask[k] & groupbit) { - // interface particles - int mk = get_matrix_index_from_local_index(k); - - double a1 = em[mi] * (em[mk] - 1.0); - double a2 = 1.0 - em[mi] - em[mk]; - // The first term (w/ G1ww) contributes the most to Rww - // the second term (w/ G2ww) includes certain correction - Rww[mi][mk] = a1 * G1ww[mi][mk] + a2 * G2ww[mi][mk]; - - if (includingG3ww) { - double temp = 0; - for (int ll = 0; ll < jnum; ll++) { - int l = jlist[ll] & NEIGHMASK; - if (mask[l] & groupbit) { - // interface particles - int ml = get_matrix_index_from_local_index(l); - temp += (ndotGww[ml][mi]) * G2ww[ml][mk] * area[l] * ed[l]; - } - } - G3ww[mi][mk] = temp; - Rww[mi][mk] += G3ww[mi][mk]; - } - } - } - - if (includingG3ww) { - double temp = 0; - for (int ll = 0; ll < jnum; ll++) { - int l = jlist[ll] & NEIGHMASK; - if (mask[l] & groupbit) { - // interface particles - int ml = get_matrix_index_from_local_index(l); - temp += (ndotGww[ml][mi]) * G2ww[ml][mi] * area[l] * ed[l]; - } - } - G3ww[mi][mi] = temp; - Rww[mi][mi] += G3ww[mi][mi]; - } - - // including the diagonal term - double a1 = em[i] * (em[i] - 1.0); - double a2 = 1.0 - em[i] - em[i]; - // The first term (w/ G1ww) contributes the most to Rww - // the second term (w/ G2ww) includes certain correction - Rww[mi][mi] = a1 * G1ww[mi][mi] + a2 * G2ww[mi][mi]; - if (includingG3ww) Rww[mi][mi] += G3ww[mi][mi]; - } - } - - #ifdef _POLARIZE_DEBUG - if (comm->me == 0) { - FILE* fp = fopen("Rww-qeq-cutoff.txt", "w"); - for (int i = 0; i < n_induced_charges; i++) - fprintf(fp, "%d %g\n", i, Rww[i][i]); - fclose(fp); - } - #endif -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::setup_pre_force_respa(int vflag, int ilevel) -{ - if (ilevel < nlevels_respa-1) return; - setup_pre_force(vflag); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::min_setup_pre_force(int vflag) -{ - setup_pre_force(vflag); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::pre_force(int vflag) -{ -// setup_tags_local(); - - // very important! change all ions q to real q to calculate the structure factor, - // later will change to scaled q to calculate force. - change_all_ions_q_to_real_q(); - - // calculate structure factor and kspace terms first -// ewaldDielectric->calculate_structure_factors(); -// ewaldDielectric->calculate_kspace_terms(); - - // main calculation - if (full) calculate_qiRqw_full(); - else calculate_qiRqw_cutoff(); - - // compute induced charges - compute_induced_charges(); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::calculate_qiRqw_full() -{ - int *mask = atom->mask; - int *type = atom->type; - int nlocal = atom->nlocal; - double **x = atom->x; - double *q = avec->q_real; - double *epsilon = avec->epsilon; - double *area = avec->area; - double **norm = avec->mu; - double *ed = avec->ed; - double *em = avec->em; - - // compute Green's functions - // compute qRqw - - #pragma omp parallel - { - - // calculate G1, gradient G1 - #pragma omp for - for (int i = 0; i < n_ions; i++) { - int ni = get_index_ions(i); - double xtmp = x[ni][0]; - double ytmp = x[ni][1]; - double ztmp = x[ni][2]; - - for (int k = 0; k < n_induced_charges; ++k) { - int nk = get_index_interface(k); - double delx = xtmp - x[nk][0]; - double dely = ytmp - x[nk][1]; - double delz = ztmp - x[nk][2]; - domain->minimum_image(delx,dely,delz); - double r = sqrt(delx * delx + dely * dely + delz * delz); - G1qw_real[i][k] = greens_real(r); - } - } - - // the following loop need the above results, - #pragma omp for - for (int k = 0; k < n_induced_charges; ++k) { - int nk = get_index_interface(k); - double xtmp = x[nk][0]; - double ytmp = x[nk][1]; - double ztmp = x[nk][2]; - double tempndotG[3] = {0.0, 0.0, 0.0}; - double temp_sum1 = 0; - for (int i = 0; i < n_ions; i++) { - int ni = get_index_ions(i); - // posvecqw[i][k] - double delx = x[ni][0] - xtmp; - double dely = x[ni][1] - ytmp; - double delz = x[ni][2] - ztmp; - domain->minimum_image(delx,dely,delz); - calculate_grad_greens_real(gradG1wq_real[k][i], delx, dely, delz); - MathExtra::scale3(-1.0, gradG1wq_real[k][i]); - - tempndotG[0] += gradG1wq_real[k][i][0] * (q[ni] / epsilon[ni]); - tempndotG[1] += gradG1wq_real[k][i][1] * (q[ni] / epsilon[ni]); - tempndotG[2] += gradG1wq_real[k][i][2] * (q[ni] / epsilon[ni]); - temp_sum1 += G1qw_real[i][k] * q[ni] / epsilon[ni]; - } - sum1G1qw_epsilon[k] = temp_sum1; // + ewaldDielectric->sum1G1qw_k_epsilon[k]; -// double temp_sum2 = 0; -// for (int ic = 0; ic < 3; ++ic) { -// temp_sum2 += norm[nk][ic] * (tempndotG[ic] + ewaldDielectric->sum2gradG1wq_k_epsilon[k][ic]); -// temp_sum2 += norm[nk][ic] * (tempndotG[ic]); -// } - double temp_sum2 = MathExtra::dot3(norm[nk], tempndotG); - sum2ndotGwq_epsilon[k] = temp_sum2; - } - - // calculate G2, gradient G2 - #pragma omp for nowait - for (int k = 0; k < n_induced_charges; ++k) { - double tempwq = 0; - for (int m = 0; m < n_induced_charges; ++m) { - int nm = get_index_interface(m); - tempwq += G1ww[k][m] * (sum2ndotGwq_epsilon[m]) * area[nm] * ed[nm]; - } - sum2G2wq[k] = tempwq; - } - - #pragma omp for - for (int k = 0; k < n_induced_charges; ++k) { - double temp = 0; - for (int m = 0; m < n_induced_charges; ++m) { - int nm = get_index_interface(m); - temp += sum1G1qw_epsilon[m] * (ndotGww[m][k]) * area[nm] * ed[nm]; - } - sum1G2qw[k] = temp; - } - - // calculate G3, gradient G3 - #pragma omp for - for (int k = 0; k < n_induced_charges; ++k) { - int nk = get_index_interface(k); - - double qiRwwVectorTemp1 = 0; - for (int i = 0; i < n_ions; ++i) { - int ni = get_index_ions(i); - qiRwwVectorTemp1 += q[ni] * (1.0 - em[nk] / epsilon[ni]) * G1qw_real[i][k]; - } -// qiRwwVectorTemp1 += ewaldDielectric->sum1G1qw_k[k] - em[nk] * ewaldDielectric->sum1G1qw_k_epsilon[k]; - - double temp = 0; - for (int m = 0; m < n_induced_charges; ++m) { - int nm = get_index_interface(m); - temp += sum2ndotGwq_epsilon[m] * G2ww[m][k] * area[nm] * ed[nm]; - } - sum1G3qw[k] = temp; - - // qiRwwVectorTemp2 is a significant contribution, of which sum2G2wq is significant - double qiRwwVectorTemp2 = (1.0 - 2.0 * em[nk]) * sum2G2wq[k] + sum1G2qw[k] + 2.0 * sum1G3qw[k]; - qiRqwVector[k] = qiRwwVectorTemp1 + qiRwwVectorTemp2; - } - - } // end of parallel region -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::calculate_qiRqw_cutoff() -{ - int ii, i, mi, k, kk, mk, jnum; - double xtmp, ytmp, ztmp, delx, dely, delz, r; - int *mask = atom->mask; - int *type = atom->type; - int nlocal = atom->nlocal; - double **x = atom->x; - double *q = avec->q_real; - double *epsilon = avec->epsilon; - double *area = avec->area; - double **norm = avec->mu; - double *ed = avec->ed; - double *em = avec->em; - - // invoke full neighbor list (will copy or build if necessary) - - int inum,*ilist,*jlist,*numneigh,**firstneigh; - - inum = list->inum; // number of entries in the neighbor list - ilist = list->ilist; // ilist[ii] gives the atom index of the entry ii in the list - numneigh = list->numneigh; // numneigh[i] gives the number of neighbors of local atom i - firstneigh = list->firstneigh; // firstneigh[i] gives the pointer to the neighbors of i - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - if (!(mask[i] & groupbit)) { - // ion particles - mi = get_matrix_index_from_local_index(i); - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - jlist = firstneigh[i]; - jnum = numneigh[i]; - - for (kk = 0; kk < jnum; kk++) { - k = jlist[kk] & NEIGHMASK; - if (mask[k] & groupbit) { - // interface particles - delx = xtmp - x[k][0]; - dely = ytmp - x[k][1]; - delz = ztmp - x[k][2]; - domain->minimum_image(delx,dely,delz); - r = sqrt(delx * delx + dely * dely + delz * delz); - mk = get_matrix_index_from_local_index(k); - G1qw_real[mi][mk] = greens_real(r); - } - } - } - } - - // the following loop need the above results, - for (kk = 0; kk < inum; kk++) { - k = ilist[kk]; // k is local index - if (mask[k] & groupbit) { - // interface particles - mk = get_matrix_index_from_local_index(k); - xtmp = x[k][0]; - ytmp = x[k][1]; - ztmp = x[k][2]; - jlist = firstneigh[k]; - jnum = numneigh[k]; - - double tempndotG[3] = {0.0, 0.0, 0.0}; - double temp_sum1 = 0; - for (ii = 0; ii < jnum; ii++) { - i = jlist[ii] & NEIGHMASK; - if (!(mask[i] & groupbit)) { - // ions particles - delx = x[i][0] - xtmp; - dely = x[i][1] - ytmp; - delz = x[i][2] - ztmp; - domain->minimum_image(delx,dely,delz); - - mi = get_matrix_index_from_local_index(i); - calculate_grad_greens_real(gradG1wq_real[mk][mi], delx, dely, delz); - MathExtra::scale3(-1.0, gradG1wq_real[mk][mi]); - - tempndotG[0] += gradG1wq_real[mk][mi][0] * (q[i] / epsilon[i]); - tempndotG[1] += gradG1wq_real[mk][mi][1] * (q[i] / epsilon[i]); - tempndotG[2] += gradG1wq_real[mk][mi][2] * (q[i] / epsilon[i]); - temp_sum1 += G1qw_real[mi][mk] * q[i] / epsilon[i]; - } - } - sum1G1qw_epsilon[mk] = temp_sum1;// + ewaldDielectric->sum1G1qw_k_epsilon[mk]; -// double temp_sum2 = 0; -// for (int ic = 0; ic < 3; ++ic) { -// temp_sum2 += norm[k][ic] * (tempndotG[ic] + ewaldDielectric->sum2gradG1wq_k_epsilon[mk][ic]); -// temp_sum2 += norm[k][ic] * (tempndotG[ic]); -// } - double temp_sum2 = MathExtra::dot3(norm[k], tempndotG); - sum2ndotGwq_epsilon[mk] = temp_sum2; - } - } - - // calculate G2, gradient G2 - for (kk = 0; kk < inum; kk++) { - k = ilist[kk]; // k is local index - if (mask[k] & groupbit) { - // interface particles - mk = get_matrix_index_from_local_index(k); - jlist = firstneigh[k]; - jnum = numneigh[k]; - - double tempwq = 0; - double temp = 0; - for (ii = 0; ii < jnum; ii++) { - i = jlist[ii] & NEIGHMASK; - if (mask[i] & groupbit) { - // interface particles - mi = get_matrix_index_from_local_index(i); - tempwq += G1ww[mk][mi] * (sum2ndotGwq_epsilon[mi]) * area[i] * ed[i]; - temp += sum1G1qw_epsilon[mi] * (ndotGww[mi][mk]) * area[i] * ed[i]; - } - } - - // add the corresponding self terms - tempwq += G1ww[mk][mk] * (sum2ndotGwq_epsilon[mk]) * area[k] * ed[k]; - temp += sum1G1qw_epsilon[mk] * (ndotGww[mk][mk]) * area[k] * ed[k]; - - sum2G2wq[mk] = tempwq; - sum1G2qw[mk] = temp; - } - } - - // calculate G3, gradient G3 - for (kk = 0; kk < inum; kk++) { - k = ilist[kk]; // k is local index - if (mask[k] & groupbit) { - // interface particles - mk = get_matrix_index_from_local_index(k); - - // qiRwwVectorTemp2 is a significant contribution, of which sum2G2wq is significant - double qiRwwVectorTemp1 = 0; - double qiRwwVectorTemp2 = (1.0 - 2.0 * em[k]) * sum2G2wq[mk]; - - if (includingG3ww) { - jlist = firstneigh[k]; - jnum = numneigh[k]; - double temp = 0; - for (ii = 0; ii < jnum; ii++) { - i = jlist[ii] & NEIGHMASK; - if (mask[i] & groupbit) { - // interface particles - mi = get_matrix_index_from_local_index(i); - temp += sum2ndotGwq_epsilon[mi] * G2ww[mi][mk] * area[i] * ed[i]; - } else { - // ions particles - mi = get_matrix_index_from_local_index(i); - qiRwwVectorTemp1 += q[i] * (1.0 - em[k] / epsilon[i]) * G1qw_real[mi][mk]; - } - } - // qiRwwVectorTemp1 += ewaldDielectric->sum1G1qw_k[mk] - em[k] * ewaldDielectric->sum1G1qw_k_epsilon[mk]; - - // add the corresponding self term - temp += sum2ndotGwq_epsilon[mk] * G2ww[mk][mk] * area[k] * ed[k]; - sum1G3qw[mk] = temp; - - qiRwwVectorTemp2 += sum1G2qw[mk] + 2.0 * sum1G3qw[mk]; - } - -// double qiRwwVectorTemp2 = (1.0 - 2.0 * em[k]) * sum2G2wq[mk] + + sum1G2qw[mk] + 2.0 * sum1G3qw[mk]; - qiRqwVector[mk] = qiRwwVectorTemp1 + qiRwwVectorTemp2; - } - } - #ifdef _POLARIZE_DEBUG - if (comm->me == 0) { - FILE* fp = fopen("qRqw-qeq.txt", "w"); - for (int i = 0; i < n_induced_charges; i++) - fprintf(fp, "%d %g\n", i, qiRqwVector[i]); - fclose(fp); - } - #endif -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::pre_force_respa(int vflag, int ilevel, int iloop) -{ - if (ilevel == nlevels_respa-1) pre_force(vflag); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::min_pre_force(int vflag) -{ - pre_force(vflag); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::compute_induced_charges() -{ - // inverse_matrix * qRqw, notice the w = - inverse_matrix * qRqw, do not forget the minus sign. - calculate_matrix_multiply_vector(inverse_matrix, qiRqwVector, - q_induced_charges, n_induced_charges); - - // map q induced charges back into atom, from global id tag = k to nlocal index of nk. - for (int k = 0; k < n_induced_charges; ++k) { - int nk = get_index_interface(k); - atom->q[nk] = -q_induced_charges[k] / (4*MY_PI); - } - - // important! change to scaled q to calculate force. - change_all_ions_q_to_scaled_q(); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::change_all_ions_q_to_real_q() -{ - for (int i = 0; i < n_ions; ++i) { - int ni = get_index_ions(i); - atom->q[ni] = avec->q_real[ni]; - } - // communicate the induced charges - // for single MPI, this updates the ghost atoms' charges - comm->forward_comm_fix(this); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::change_all_ions_q_to_scaled_q() -{ - for (int i = 0; i < n_ions; ++i) { - int ni = get_index_ions(i); - atom->q[ni] = avec->q_real[ni] / avec->epsilon[ni]; - } - // communicate the induced charges - // for single MPI, this updates the ghost atoms' charges - comm->forward_comm_fix(this); -} - -/* ---------------------------------------------------------------------- */ - -int FixQEqDielectric::modify_param(int narg, char **arg) -{ - int iarg = 0; - while (iarg < narg) { - if (strcmp(arg[iarg],"full") == 0) { - if (strcmp(arg[iarg+1],"yes") == 0) full = 1; - else if (strcmp(arg[iarg+1],"no") == 0) full = 0; - else error->all(FLERR,"Illegal fix_modify command for fix qeq/dielectric"); - iarg += 2; - } else if (strcmp(arg[iarg],"dielectrics") == 0) { - if (iarg+5 > narg) error->all(FLERR,"Illegal fix_modify command"); - double epsiloni=-1, areai=-1; - double ediff = force->numeric(FLERR,arg[iarg+1]); - double emean = force->numeric(FLERR,arg[iarg+2]); - if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = force->numeric(FLERR,arg[iarg+3]); - if (strcmp(arg[iarg+4],"NULL") != 0) areai = force->numeric(FLERR,arg[iarg+4]); - - set_dielectric_params(ediff, emean, epsiloni, areai); - - iarg += 5; - } else error->all(FLERR,"Illegal fix_modify command"); - } - - return iarg; -} - -/* ---------------------------------------------------------------------- */ - -int FixQEqDielectric::pack_forward_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) -{ - int m; - for (m = 0; m < n; m++) buf[m] = atom->q[list[m]]; - return n; -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::unpack_forward_comm(int n, int first, double *buf) -{ - int i, m; - for (m = 0, i = first; m < n; m++, i++) atom->q[i] = buf[m]; -} - -/* ---------------------------------------------------------------------- - memory usage of local atom-based arrays -------------------------------------------------------------------------- */ - -double FixQEqDielectric::memory_usage() -{ - double bytes = 0; - - return bytes; -} - -/* ---------------------------------------------------------------------- - allocate fictitious charge arrays -------------------------------------------------------------------------- */ - -void FixQEqDielectric::grow_arrays(int nmax) -{ - -} - -/* ---------------------------------------------------------------------- - copy values within fictitious charge arrays -------------------------------------------------------------------------- */ - -void FixQEqDielectric::copy_arrays(int i, int j, int delflag) -{ - -} - -/* ---------------------------------------------------------------------- - set dielectric params for the atom in the group -------------------------------------------------------------------------- */ - -void FixQEqDielectric::set_dielectric_params(double ediff, double emean, - double epsiloni, double areai) -{ - int i; - double *area = avec->area; - double *ed = avec->ed; - double *em = avec->em; - double *epsilon = avec->epsilon; - int *mask = atom->mask; - int nlocal = atom->nlocal; - - for (i = 0; i < nlocal; i++) { - if (mask[i] & groupbit) { - ed[i] = ediff; - em[i] = emean; - if (areai > 0) area[i] = areai; - if (epsiloni > 0) epsilon[i] = epsiloni; - } - } -} - -/* ---------------------------------------------------------------------- - setup mapping from tags to indices in matrices/vectors -------------------------------------------------------------------------- */ -void FixQEqDielectric::setup_tags() -{ - // This function should not be put into init(), because the indices would change, so put it in pre_force_setup(). - // TODO: this function should be called each time the local index changes. -// if (atom->nlocal != atom->natoms) -// error->all(FLERR, "Single MPI only"); - - //TODO: suppose there are only 2 types of atoms, one for interface and one for ions. - - tagint* tag = atom->tag; - int* mask = atom->mask; - int nlocal = atom->nlocal; - - int i_interface = 0; - int i_ions = 0; - int t; - for (int i = 0; i < nlocal; ++i) { - // interface atoms - if (mask[i] & groupbit) { - t = tag[i]; - tags_interface[i_interface] = t; - if (t >= matrix_index_from_global_id.size()) - matrix_index_from_global_id.resize(t + 1); - matrix_index_from_global_id[t] = i_interface; - i_interface++; - } else { - // ions atoms - t = tag[i]; - tags_ions[i_ions] = t; - if (t >= matrix_index_from_global_id.size()) - matrix_index_from_global_id.resize(t + 1); - matrix_index_from_global_id[t] = i_ions; - i_ions++; - } - } - -// assert(i_interface == n_induced_charges); -// assert(i_ions == n_ions); - - // ewald calculations need the information of all tags -// ewaldDielectric->tags_interface = tags_interface; -// ewaldDielectric->tags_ions = tags_ions; -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::print_all_properties() -{ - // set epsilon_ions, em, ed, and q of interfaces - double *q_real = avec->q_real; - double *q = atom->q; - double *epsilon = avec->epsilon; - double *area = avec->area; - double *curvature = avec->curvature; - double **norm = avec->mu; - double *ed = avec->ed; - double *em = avec->em; - // debug file - FILE *debugFile = fopen("_debug.log", "w"); - fprintf(debugFile, "============ Ions Info =============\n"); - for (int i = 0; i < n_ions; ++i) { - int ni = get_index_ions(i); - fprintf(debugFile, "id: %d, local index: %d, real q: %f, rescaled q: %f, epsilon: %f\n", - atom->tag[ni], ni, q_real[ni], atom->q[ni], epsilon[ni]); - } - fprintf(debugFile, "============ Interface Info =============\n"); - for (int k = 0; k < n_induced_charges; ++k) { - int nk = get_index_interface(k); - fprintf(debugFile, "id: %d, local index: %d, xyz: %f %f %f, q: %f, scaled q: %f, area: %f, " - "curvature: %f, em: %f, ed: %f, norm: %f %f %f\n", - atom->tag[nk], nk, atom->x[nk][0], atom->x[nk][1], atom->x[nk][2], - q_real[nk], atom->q[nk], area[nk], curvature[nk], em[nk], ed[nk], - norm[nk][0], norm[nk][1], norm[nk][2]); - } - fclose(debugFile); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::setup_tags_local() -{ - // TODO: this function should be called each time the local index changes. - //TODO: suppose there are only 2 types of atoms, one for interface and one for ions. - tags_interface_local.clear(); - tags_ions_local.clear(); - int i_interface = 0; - int i_ions = 0; - for (int i = 0; i < atom->nlocal; ++i) { - // interface atoms - if ((atom->mask[i] & groupbit)) { - tags_interface_local.push_back(atom->tag[i]); - i_interface++; - } else { - // ions atoms - tags_ions_local.push_back(atom->tag[i]); - i_ions++; - } - } - n_induced_charges_local = i_interface; - n_ions_local = i_ions; - - // ewald calculations need the information of all tags -// ewaldDielectric->tags_interface_local = &tags_interface_local; -// ewaldDielectric->tags_ions_local = &tags_ions_local; -} - -/* ---------------------------------------------------------------------- - real Green's function ------------------------------------------------------------------------- */ - -double FixQEqDielectric::greens_real(double r) -{ - return erfc(g_ewald * r) / r; -} - -/* ---------------------------------------------------------------------- */ - -double FixQEqDielectric::grad_greens_real_factor(double r) -{ - double alpharij = g_ewald * r; - double factor = erfc(alpharij) + 2.0 * alpharij / MY_PIS * exp(-(alpharij * alpharij)); - double r3 = r*r*r; - return factor * (-1.0 / r3); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::calculate_grad_greens_real(double *vec, double dx, double dy, double dz) -{ - double r = sqrt(dx * dx + dy * dy + dz * dz); - double real = grad_greens_real_factor(r); - vec[0] = real * dx; - vec[1] = real * dy; - vec[2] = real * dz; -} - -/* ---------------------------------------------------------------------- */ - -double FixQEqDielectric::calculate_greens_ewald(double dx, double dy, double dz) -{ - double r = sqrt(dx * dx + dy * dy + dz * dz); - return greens_real(r);// + calculate_greens_ewald_reciprocal(dx, dy, dz); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::calculate_grad_greens_ewald(double *vec, double dx, double dy, double dz) - { - // real part of grad greens, must be first, because the vec is reset - calculate_grad_greens_real(vec, dx, dy, dz); - // kspace part, must be 2nd, because the vec is self additive. -// calculate_grad_greens_ewald_reciprocal(vec, dx, dy, dz); -} - -/* ---------------------------------------------------------------------- - given the matrix Rww, calculate inverse matrix (Rww + Rww^T)^(-1), ------------------------------------------------------------------------- */ - -void FixQEqDielectric::calculate_inverse_matrix(double **Rww, double **inverse_matrix, int M) -{ - // convel rt into gsmatrix - gsl_matrix *matrixRww = gsl_matrix_alloc(M, M); - for (int k = 0; k < M; ++k) { - for (int l = 0; l < M; ++l) { - gsl_matrix_set(matrixRww, k, l, Rww[k][l]); - } - } - - // QT: = Rww + Rww ^ T Matrix - gsl_matrix *QT = gsl_matrix_alloc(M, M); - gsl_matrix_transpose_memcpy(QT, matrixRww); - gsl_matrix_add(QT, matrixRww); - - - int sign; - gsl_permutation *p = gsl_permutation_alloc(M); - gsl_linalg_LU_decomp(QT, p, &sign); - gsl_linalg_LU_invert(QT, p, matrixRww); // here matrixRww to store inverse_matrix - - // convert back - for (int k = 0; k < M; ++k) { - for (int l = 0; l < M; ++l) { - inverse_matrix[k][l] = gsl_matrix_get(matrixRww, k, l); - } - } - - gsl_matrix_free(QT); - gsl_permutation_free(p); - gsl_matrix_free(matrixRww); -} - -/* ---------------------------------------------------------------------- */ - -void FixQEqDielectric::calculate_matrix_multiply_vector(double **matrix, - double *in_vec, double *out_vec, int M) -{ - #pragma parallel omp for - for (int k = 0; k < M; ++k) { - double temp = 0.0; - for (int l = 0; l < M; ++l) { - temp += matrix[k][l] * in_vec[l]; - } - out_vec[k] = temp; - } -} - -/* ---------------------------------------------------------------------- */ - -double FixQEqDielectric::calculate_greens_ewald_self_vertex(double area) -{ - // this term is very important, cannot be set to zero. see .pptx - double corr = 2.0 * MY_PIS / sqrt(area); - double self_energy = -2.0 * g_ewald / MY_PIS; - return corr + self_energy;// + calculate_greens_ewald_reciprocal(0, 0, 0); -} - -/* ---------------------------------------------------------------------- */ - -double FixQEqDielectric::calculate_ndotgreens_ewald_self_vertex(double area, double curvature) -{ - // this term is important, cannot be set to zero. see .pptx - // curvature = 1 / R, minus if norm is inverse of R to center. - // Honghao Li's result, the same with Erik's paper, J Chem Phys 140 064903 (2014) - return curvature * MY_PIS / sqrt(area); -} - diff --git a/src/USER-DIELECTRIC/fix_qeq_dielectric.h b/src/USER-DIELECTRIC/fix_qeq_dielectric.h deleted file mode 100644 index ae573bac55..0000000000 --- a/src/USER-DIELECTRIC/fix_qeq_dielectric.h +++ /dev/null @@ -1,153 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: -------------------------------------------------------------------------- */ - -#ifdef FIX_CLASS - -FixStyle(qeq/dielectric,FixQEqDielectric) - -#else - -#ifndef LMP_FIX_QEQ_DIELECTRIC_H -#define LMP_FIX_QEQ_DIELECTRIC_H - -#include -#include "atom.h" -#include "fix.h" -//#include "ewald_dielectric.h" - -namespace LAMMPS_NS { - -class FixQEqDielectric : public Fix { - public: - FixQEqDielectric(class LAMMPS *, int, char **); - ~FixQEqDielectric(); - int setmask(); - void init(); - void init_list(int,class NeighList *); - void setup_pre_force(int); - void pre_force(int); - int modify_param(int, char**); - - void setup_pre_force_respa(int, int); - void pre_force_respa(int, int, int); - void min_setup_pre_force(int); - void min_pre_force(int); - - int pack_forward_comm(int, int *, double *, int, int *); - void unpack_forward_comm(int, int, double *); - void grow_arrays(int); - void copy_arrays(int, int, int); - double memory_usage(); - - void calculate_Rww_full(); - void calculate_Rww_cutoff(); - - void calculate_qiRqw_full(); - void calculate_qiRqw_cutoff(); - - void compute_induced_charges(); - void set_dielectric_params(double, double, double, double); - - protected: - class AtomVecDielectric* avec; - - int nevery; - int nlevels_respa; - class NeighList *list; - - bigint ngroup; - int full; - int includingG3ww; - - // Ewald-related functions and data structures -// class EwaldDielectric *ewaldDielectric; - - // interface term, ww - // matrix M*M - double **inverse_matrix; - double **G1ww, **ndotGww, **G2ww, **G3ww, **Rww; - double ***gradG1ww; //matrix of vectors M*M*3 - double *q_induced_charges; - - // qw, qq ion-interface terms - double *qiRqwVector; - double **G1qq_real, **G1qw_real; - double ***gradG1wq_real; //matrix of vectors M*M*3 - double *sum2G2wq; - // temp data for each steps - double *sum1G2qw; - double *sum1G3qw; - double *sum1G1qw_epsilon; - double *sum2ndotGwq_epsilon; - - double greens_real(double); - double grad_greens_real_factor(double); - void calculate_grad_greens_real(double *, double, double, double); - double calculate_greens_ewald(double, double, double); - void calculate_grad_greens_ewald(double *, double, double, double); - void calculate_inverse_matrix(double **, double **, int); - void calculate_matrix_multiply_vector(double **, double *, double *, int); - double calculate_greens_ewald_self_vertex(double); - double calculate_ndotgreens_ewald_self_vertex(double, double); - double g_ewald; - - private: - // to store the global id (tag) of different particles. - int n_induced_charges, n_ions; - int *tags_interface, *tags_ions; - void setup_tags(); - inline int get_index_interface(int num) { - int id = tags_interface[num]; // id = fixed global id - return atom->map(id); - }; - inline int get_index_ions(int num) { - int id = tags_ions[num]; // id = fixed global id - return atom->map(id); - }; - void change_all_ions_q_to_real_q(); - void change_all_ions_q_to_scaled_q(); - - int n_induced_charges_local, n_ions_local; - std::vector tags_interface_local, tags_ions_local; - std::vector matrix_index_from_local_index; - std::vector matrix_index_from_global_id; - void setup_tags_local(); - inline int get_index_interface_local(int num) { - int id = tags_interface_local[num]; // id = fixed global id - return atom->map(id); - }; - inline int get_index_ions_local(int num) { - int id = tags_ions_local[num]; // id = fixed global id - return atom->map(id); - }; - - inline int get_matrix_index_from_local_index(int k) { - // for atom with local index k, what is the index in matrix (Rww + RwwT)^-1 for the whole system. - // notice this local index include ghost index too! - int id = atom->tag[k]; // id = fixed global id - return matrix_index_from_global_id[id]; - } - - // read all em, ed, norm of interface, and epsilon of ions - void print_all_properties(); - -}; - -} - -#endif -#endif diff --git a/src/USER-DIELECTRIC/pppm_disp_dielectric.cpp b/src/USER-DIELECTRIC/pppm_disp_dielectric.cpp deleted file mode 100644 index 8493428aa1..0000000000 --- a/src/USER-DIELECTRIC/pppm_disp_dielectric.cpp +++ /dev/null @@ -1,820 +0,0 @@ -/* ---------------------------------------------------------------------- - 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 authors: Trung Nguyen (Northwestern) -------------------------------------------------------------------------- */ - -#include -#include -#include -#include -#include -#include "pppm_disp_dielectric.h" -#include "math_const.h" -#include "atom.h" -#include "atom_vec_dielectric.h" -#include "comm.h" -#include "gridcomm.h" -#include "neighbor.h" -#include "force.h" -#include "pair.h" -#include "bond.h" -#include "angle.h" -#include "domain.h" -#include "fft3d_wrap.h" -#include "remap_wrap.h" -#include "memory.h" -#include "error.h" - -using namespace LAMMPS_NS; -using namespace MathConst; - -#define MAXORDER 7 -#define OFFSET 16384 -#define SMALL 0.00001 -#define LARGE 10000.0 -#define EPS_HOC 1.0e-7 - -enum{REVERSE_RHO, REVERSE_RHO_G, REVERSE_RHO_A, REVERSE_RHO_NONE}; -enum{FORWARD_IK, FORWARD_AD, FORWARD_IK_PERATOM, FORWARD_AD_PERATOM, - FORWARD_IK_G, FORWARD_AD_G, FORWARD_IK_PERATOM_G, FORWARD_AD_PERATOM_G, - FORWARD_IK_A, FORWARD_AD_A, FORWARD_IK_PERATOM_A, FORWARD_AD_PERATOM_A, - FORWARD_IK_NONE, FORWARD_AD_NONE, FORWARD_IK_PERATOM_NONE, FORWARD_AD_PERATOM_NONE}; - -#ifdef FFT_SINGLE -#define ZEROF 0.0f -#define ONEF 1.0f -#else -#define ZEROF 0.0 -#define ONEF 1.0 -#endif - -/* ---------------------------------------------------------------------- */ - -PPPMDispDielectric::PPPMDispDielectric(LAMMPS *lmp) : PPPMDisp(lmp) -{ - dipoleflag = 0; // turned off for now, until dipole works - group_group_enable = 0; - - mu_flag = 0; - - efield = NULL; - phi = NULL; - potflag = 0; - - avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"pppm/dielectric requires atom style dielectric"); -} - -/* ---------------------------------------------------------------------- */ - -PPPMDispDielectric::~PPPMDispDielectric() -{ - memory->destroy(efield); - memory->destroy(phi); -} - -/* ---------------------------------------------------------------------- - compute the PPPM long-range force, energy, virial -------------------------------------------------------------------------- */ - -void PPPMDispDielectric::compute(int eflag, int vflag) -{ - - int i; - // convert atoms from box to lamda coords - - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = evflag_atom = eflag_global = vflag_global = - eflag_atom = vflag_atom = 0; - - if (potflag) evflag_atom = 1; - - if (evflag_atom && !peratom_allocate_flag) { - allocate_peratom(); - if (function[0]) { - cg_peratom->ghost_notify(); - cg_peratom->setup(); - } - if (function[1] + function[2] + function[3]) { - cg_peratom_6->ghost_notify(); - cg_peratom_6->setup(); - } - peratom_allocate_flag = 1; - } - - if (triclinic == 0) boxlo = domain->boxlo; - else { - boxlo = domain->boxlo_lamda; - domain->x2lamda(atom->nlocal); - } - // extend size of per-atom arrays if necessary - - if (atom->nmax > nmax) { - - if (function[0]) { - memory->destroy(part2grid); - memory->destroy(efield); - memory->destroy(phi); - } - if (function[1] + function[2] + function[3]) memory->destroy(part2grid_6); - nmax = atom->nmax; - if (function[0]) { - memory->create(part2grid,nmax,3,"pppm/disp:part2grid"); - memory->create(efield,nmax,3,"pppm/disp:efield"); - memory->create(phi,nmax,"pppm/disp:phi"); - } - if (function[1] + function[2] + function[3]) - memory->create(part2grid_6,nmax,3,"pppm/disp:part2grid_6"); - } - - energy = 0.0; - energy_1 = 0.0; - energy_6 = 0.0; - if (vflag) for (i = 0; i < 6; i++) virial_6[i] = virial_1[i] = 0.0; - - // find grid points for all my particles - // distribute partcles' charges/dispersion coefficients on the grid - // communication between processors and remapping two fft - // Solution of poissons equation in k-space and backtransformation - // communication between processors - // calculation of forces - - if (function[0]) { - - //perfrom calculations for coulomb interactions only - - particle_map_c(delxinv, delyinv, delzinv, shift, part2grid, nupper, nlower, - nxlo_out, nylo_out, nzlo_out, nxhi_out, nyhi_out, nzhi_out); - - make_rho_c(); - - cg->reverse_comm(this,REVERSE_RHO); - - brick2fft(nxlo_in, nylo_in, nzlo_in, nxhi_in, nyhi_in, nzhi_in, - density_brick, density_fft, work1,remap); - - if (differentiation_flag == 1) { - - poisson_ad(work1, work2, density_fft, fft1, fft2, - nx_pppm, ny_pppm, nz_pppm, nfft, - nxlo_fft, nylo_fft, nzlo_fft, nxhi_fft, nyhi_fft, nzhi_fft, - nxlo_in, nylo_in, nzlo_in, nxhi_in, nyhi_in, nzhi_in, - energy_1, greensfn, - virial_1, vg,vg2, - u_brick, v0_brick, v1_brick, v2_brick, v3_brick, v4_brick, v5_brick); - - cg->forward_comm(this,FORWARD_AD); - - fieldforce_c_ad(); - - if (vflag_atom) cg_peratom->forward_comm(this, FORWARD_AD_PERATOM); - - } else { - poisson_ik(work1, work2, density_fft, fft1, fft2, - nx_pppm, ny_pppm, nz_pppm, nfft, - nxlo_fft, nylo_fft, nzlo_fft, nxhi_fft, nyhi_fft, nzhi_fft, - nxlo_in, nylo_in, nzlo_in, nxhi_in, nyhi_in, nzhi_in, - energy_1, greensfn, - fkx, fky, fkz,fkx2, fky2, fkz2, - vdx_brick, vdy_brick, vdz_brick, virial_1, vg,vg2, - u_brick, v0_brick, v1_brick, v2_brick, v3_brick, v4_brick, v5_brick); - - cg->forward_comm(this, FORWARD_IK); - - fieldforce_c_ik(); - - if (evflag_atom) cg_peratom->forward_comm(this, FORWARD_IK_PERATOM); - } - if (evflag_atom) fieldforce_c_peratom(); - } - - if (function[1]) { - //perfrom calculations for geometric mixing - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, part2grid_6, nupper_6, nlower_6, - nxlo_out_6, nylo_out_6, nzlo_out_6, nxhi_out_6, nyhi_out_6, nzhi_out_6); - make_rho_g(); - - - cg_6->reverse_comm(this, REVERSE_RHO_G); - - brick2fft(nxlo_in_6, nylo_in_6, nzlo_in_6, nxhi_in_6, nyhi_in_6, nzhi_in_6, - density_brick_g, density_fft_g, work1_6,remap_6); - - if (differentiation_flag == 1) { - - poisson_ad(work1_6, work2_6, density_fft_g, fft1_6, fft2_6, - nx_pppm_6, ny_pppm_6, nz_pppm_6, nfft_6, - nxlo_fft_6, nylo_fft_6, nzlo_fft_6, nxhi_fft_6, nyhi_fft_6, nzhi_fft_6, - nxlo_in_6, nylo_in_6, nzlo_in_6, nxhi_in_6, nyhi_in_6, nzhi_in_6, - energy_6, greensfn_6, - virial_6, vg_6, vg2_6, - u_brick_g, v0_brick_g, v1_brick_g, v2_brick_g, v3_brick_g, v4_brick_g, v5_brick_g); - - cg_6->forward_comm(this,FORWARD_AD_G); - - fieldforce_g_ad(); - - if (vflag_atom) cg_peratom_6->forward_comm(this,FORWARD_AD_PERATOM_G); - - } else { - poisson_ik(work1_6, work2_6, density_fft_g, fft1_6, fft2_6, - nx_pppm_6, ny_pppm_6, nz_pppm_6, nfft_6, - nxlo_fft_6, nylo_fft_6, nzlo_fft_6, nxhi_fft_6, nyhi_fft_6, nzhi_fft_6, - nxlo_in_6, nylo_in_6, nzlo_in_6, nxhi_in_6, nyhi_in_6, nzhi_in_6, - energy_6, greensfn_6, - fkx_6, fky_6, fkz_6,fkx2_6, fky2_6, fkz2_6, - vdx_brick_g, vdy_brick_g, vdz_brick_g, virial_6, vg_6, vg2_6, - u_brick_g, v0_brick_g, v1_brick_g, v2_brick_g, v3_brick_g, v4_brick_g, v5_brick_g); - - cg_6->forward_comm(this,FORWARD_IK_G); - - fieldforce_g_ik(); - - - if (evflag_atom) cg_peratom_6->forward_comm(this, FORWARD_IK_PERATOM_G); - } - if (evflag_atom) fieldforce_g_peratom(); - } - - if (function[2]) { - //perform calculations for arithmetic mixing - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, part2grid_6, nupper_6, nlower_6, - nxlo_out_6, nylo_out_6, nzlo_out_6, nxhi_out_6, nyhi_out_6, nzhi_out_6); - make_rho_a(); - - cg_6->reverse_comm(this, REVERSE_RHO_A); - - brick2fft_a(); - - if ( differentiation_flag == 1) { - - poisson_ad(work1_6, work2_6, density_fft_a3, fft1_6, fft2_6, - nx_pppm_6, ny_pppm_6, nz_pppm_6, nfft_6, - nxlo_fft_6, nylo_fft_6, nzlo_fft_6, nxhi_fft_6, nyhi_fft_6, nzhi_fft_6, - nxlo_in_6, nylo_in_6, nzlo_in_6, nxhi_in_6, nyhi_in_6, nzhi_in_6, - energy_6, greensfn_6, - virial_6, vg_6, vg2_6, - u_brick_a3, v0_brick_a3, v1_brick_a3, v2_brick_a3, v3_brick_a3, v4_brick_a3, v5_brick_a3); - poisson_2s_ad(density_fft_a0, density_fft_a6, - u_brick_a0, v0_brick_a0, v1_brick_a0, v2_brick_a0, v3_brick_a0, v4_brick_a0, v5_brick_a0, - u_brick_a6, v0_brick_a6, v1_brick_a6, v2_brick_a6, v3_brick_a6, v4_brick_a6, v5_brick_a6); - poisson_2s_ad(density_fft_a1, density_fft_a5, - u_brick_a1, v0_brick_a1, v1_brick_a1, v2_brick_a1, v3_brick_a1, v4_brick_a1, v5_brick_a1, - u_brick_a5, v0_brick_a5, v1_brick_a5, v2_brick_a5, v3_brick_a5, v4_brick_a5, v5_brick_a5); - poisson_2s_ad(density_fft_a2, density_fft_a4, - u_brick_a2, v0_brick_a2, v1_brick_a2, v2_brick_a2, v3_brick_a2, v4_brick_a2, v5_brick_a2, - u_brick_a4, v0_brick_a4, v1_brick_a4, v2_brick_a4, v3_brick_a4, v4_brick_a4, v5_brick_a4); - - cg_6->forward_comm(this, FORWARD_AD_A); - - fieldforce_a_ad(); - - if (evflag_atom) cg_peratom_6->forward_comm(this, FORWARD_AD_PERATOM_A); - - } else { - - poisson_ik(work1_6, work2_6, density_fft_a3, fft1_6, fft2_6, - nx_pppm_6, ny_pppm_6, nz_pppm_6, nfft_6, - nxlo_fft_6, nylo_fft_6, nzlo_fft_6, nxhi_fft_6, nyhi_fft_6, nzhi_fft_6, - nxlo_in_6, nylo_in_6, nzlo_in_6, nxhi_in_6, nyhi_in_6, nzhi_in_6, - energy_6, greensfn_6, - fkx_6, fky_6, fkz_6,fkx2_6, fky2_6, fkz2_6, - vdx_brick_a3, vdy_brick_a3, vdz_brick_a3, virial_6, vg_6, vg2_6, - u_brick_a3, v0_brick_a3, v1_brick_a3, v2_brick_a3, v3_brick_a3, v4_brick_a3, v5_brick_a3); - poisson_2s_ik(density_fft_a0, density_fft_a6, - vdx_brick_a0, vdy_brick_a0, vdz_brick_a0, - vdx_brick_a6, vdy_brick_a6, vdz_brick_a6, - u_brick_a0, v0_brick_a0, v1_brick_a0, v2_brick_a0, v3_brick_a0, v4_brick_a0, v5_brick_a0, - u_brick_a6, v0_brick_a6, v1_brick_a6, v2_brick_a6, v3_brick_a6, v4_brick_a6, v5_brick_a6); - poisson_2s_ik(density_fft_a1, density_fft_a5, - vdx_brick_a1, vdy_brick_a1, vdz_brick_a1, - vdx_brick_a5, vdy_brick_a5, vdz_brick_a5, - u_brick_a1, v0_brick_a1, v1_brick_a1, v2_brick_a1, v3_brick_a1, v4_brick_a1, v5_brick_a1, - u_brick_a5, v0_brick_a5, v1_brick_a5, v2_brick_a5, v3_brick_a5, v4_brick_a5, v5_brick_a5); - poisson_2s_ik(density_fft_a2, density_fft_a4, - vdx_brick_a2, vdy_brick_a2, vdz_brick_a2, - vdx_brick_a4, vdy_brick_a4, vdz_brick_a4, - u_brick_a2, v0_brick_a2, v1_brick_a2, v2_brick_a2, v3_brick_a2, v4_brick_a2, v5_brick_a2, - u_brick_a4, v0_brick_a4, v1_brick_a4, v2_brick_a4, v3_brick_a4, v4_brick_a4, v5_brick_a4); - - cg_6->forward_comm(this, FORWARD_IK_A); - - fieldforce_a_ik(); - - if (evflag_atom) cg_peratom_6->forward_comm(this, FORWARD_IK_PERATOM_A); - } - if (evflag_atom) fieldforce_a_peratom(); - } - - if (function[3]) { - //perfrom calculations if no mixing rule applies - particle_map(delxinv_6, delyinv_6, delzinv_6, shift_6, part2grid_6, nupper_6, nlower_6, - nxlo_out_6, nylo_out_6, nzlo_out_6, nxhi_out_6, nyhi_out_6, nzhi_out_6); - - make_rho_none(); - - cg_6->reverse_comm(this, REVERSE_RHO_NONE); - - brick2fft_none(); - - if (differentiation_flag == 1) { - - int n = 0; - for (int k = 0; kforward_comm(this,FORWARD_AD_NONE); - - fieldforce_none_ad(); - - if (vflag_atom) cg_peratom_6->forward_comm(this,FORWARD_AD_PERATOM_NONE); - - } else { - int n = 0; - for (int k = 0; kforward_comm(this,FORWARD_IK_NONE); - - fieldforce_none_ik(); - - if (evflag_atom) - cg_peratom_6->forward_comm(this, FORWARD_IK_PERATOM_NONE); - } - if (evflag_atom) fieldforce_none_peratom(); - } - - // update qsum and qsqsum, if atom count has changed and energy needed - - if ((eflag_global || eflag_atom) && atom->natoms != natoms_original) { - qsum_qsq(); - natoms_original = atom->natoms; - } - - // sum energy across procs and add in volume-dependent term - - const double qscale = force->qqrd2e * scale; - if (eflag_global) { - double energy_all; - MPI_Allreduce(&energy_1,&energy_all,1,MPI_DOUBLE,MPI_SUM,world); - energy_1 = energy_all; - MPI_Allreduce(&energy_6,&energy_all,1,MPI_DOUBLE,MPI_SUM,world); - energy_6 = energy_all; - - energy_1 *= 0.5*volume; - energy_6 *= 0.5*volume; - - energy_1 -= g_ewald*qsqsum/MY_PIS + - MY_PI2*qsum*qsum / (g_ewald*g_ewald*volume); - energy_6 += - MY_PI*MY_PIS/(6*volume)*pow(g_ewald_6,3)*csumij + - 1.0/12.0*pow(g_ewald_6,6)*csum; - energy_1 *= qscale; - } - - // sum virial across procs - - if (vflag_global) { - double virial_all[6]; - MPI_Allreduce(virial_1,virial_all,6,MPI_DOUBLE,MPI_SUM,world); - for (i = 0; i < 6; i++) virial[i] = 0.5*qscale*volume*virial_all[i]; - MPI_Allreduce(virial_6,virial_all,6,MPI_DOUBLE,MPI_SUM,world); - for (i = 0; i < 6; i++) virial[i] += 0.5*volume*virial_all[i]; - if (function[1]+function[2]+function[3]){ - double a = MY_PI*MY_PIS/(6*volume)*pow(g_ewald_6,3)*csumij; - virial[0] -= a; - virial[1] -= a; - virial[2] -= a; - } - } - - if (eflag_atom) { - if (function[0]) { - double *q = atom->q; - for (i = 0; i < atom->nlocal; i++) { - eatom[i] -= qscale*g_ewald*q[i]*q[i]/MY_PIS + qscale*MY_PI2*q[i]*qsum / (g_ewald*g_ewald*volume); //coulomb self energy correction - } - } - if (function[1] + function[2] + function[3]) { - int tmp; - for (i = 0; i < atom->nlocal; i++) { - tmp = atom->type[i]; - eatom[i] += - MY_PI*MY_PIS/(6*volume)*pow(g_ewald_6,3)*csumi[tmp] + - 1.0/12.0*pow(g_ewald_6,6)*cii[tmp]; - } - } - } - - if (vflag_atom) { - if (function[1] + function[2] + function[3]) { - int tmp; - for (i = 0; i < atom->nlocal; i++) { - tmp = atom->type[i]; - for (int n = 0; n < 3; n++) vatom[i][n] -= MY_PI*MY_PIS/(6*volume)*pow(g_ewald_6,3)*csumi[tmp]; //dispersion self virial correction - } - } - } - - - // 2d slab correction - - if (slabflag) slabcorr(eflag); - if (function[0]) energy += energy_1; - if (function[1] + function[2] + function[3]) energy += energy_6; - - // convert atoms back from lamda to box coords - - if (triclinic) domain->lamda2x(atom->nlocal); -} - -/* ---------------------------------------------------------------------- - interpolate from grid to get electric field & force on my particles - for ik scheme -------------------------------------------------------------------------- */ - -void PPPMDispDielectric::fieldforce_c_ik() -{ - int i,l,m,n,nx,ny,nz,mx,my,mz; - FFT_SCALAR dx,dy,dz,x0,y0,z0; - FFT_SCALAR ekx,eky,ekz,u; - - // loop over my charges, interpolate electric field from nearby grid points - // (nx,ny,nz) = global coords of grid pt to "lower left" of charge - // (dx,dy,dz) = distance to "lower left" grid pt - // (mx,my,mz) = global coords of moving stencil pt - // ek = 3 components of E-field on particle - - double *q = atom->q; - double **x = atom->x; - double **f = atom->f; - double *eps = avec->epsilon; - int nlocal = atom->nlocal; - - for (i = 0; i < nlocal; i++) { - nx = part2grid[i][0]; - ny = part2grid[i][1]; - nz = part2grid[i][2]; - dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; - dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; - dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; - - compute_rho1d(dx,dy,dz, order, rho_coeff, rho1d); - - u = ekx = eky = ekz = ZEROF; - for (n = nlower; n <= nupper; n++) { - mz = n+nz; - z0 = rho1d[2][n]; - for (m = nlower; m <= nupper; m++) { - my = m+ny; - y0 = z0*rho1d[1][m]; - for (l = nlower; l <= nupper; l++) { - mx = l+nx; - x0 = y0*rho1d[0][l]; - if (potflag) u += x0*u_brick[mz][my][mx]; - ekx -= x0*vdx_brick[mz][my][mx]; - eky -= x0*vdy_brick[mz][my][mx]; - ekz -= x0*vdz_brick[mz][my][mx]; - } - } - } - - // electrostatic potential - - if (potflag) phi[i] = u; - - // convert E-field to force - - const double efactor = scale * eps[i]; - efield[i][0] = efactor*ekx; - efield[i][1] = efactor*eky; - efield[i][2] = efactor*ekz; - - // convert E-field to force - - const double qfactor = force->qqrd2e * scale * q[i]; - f[i][0] += qfactor*ekx; - f[i][1] += qfactor*eky; - if (slabflag != 2) f[i][2] += qfactor*ekz; - } -} -/* ---------------------------------------------------------------------- - interpolate from grid to get electric field & force on my particles - for ad scheme -------------------------------------------------------------------------- */ - -void PPPMDispDielectric::fieldforce_c_ad() -{ - int i,l,m,n,nx,ny,nz,mx,my,mz; - FFT_SCALAR dx,dy,dz; - FFT_SCALAR ekx,eky,ekz,u; - double s1,s2,s3; - double sf = 0.0; - - double *prd; - - if (triclinic == 0) prd = domain->prd; - else prd = domain->prd_lamda; - - double xprd = prd[0]; - double yprd = prd[1]; - double zprd = prd[2]; - double zprd_slab = zprd*slab_volfactor; - - double hx_inv = nx_pppm/xprd; - double hy_inv = ny_pppm/yprd; - double hz_inv = nz_pppm/zprd_slab; - - // loop over my charges, interpolate electric field from nearby grid points - // (nx,ny,nz) = global coords of grid pt to "lower left" of charge - // (dx,dy,dz) = distance to "lower left" grid pt - // (mx,my,mz) = global coords of moving stencil pt - // ek = 3 components of E-field on particle - - double *q = atom->q; - double **x = atom->x; - double **f = atom->f; - double *eps = avec->epsilon; - int nlocal = atom->nlocal; - - for (i = 0; i < nlocal; i++) { - nx = part2grid[i][0]; - ny = part2grid[i][1]; - nz = part2grid[i][2]; - dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; - dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; - dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; - - compute_rho1d(dx,dy,dz, order, rho_coeff, rho1d); - compute_drho1d(dx,dy,dz, order, drho_coeff, drho1d); - - u = ekx = eky = ekz = ZEROF; - for (n = nlower; n <= nupper; n++) { - mz = n+nz; - for (m = nlower; m <= nupper; m++) { - my = m+ny; - for (l = nlower; l <= nupper; l++) { - mx = l+nx; - u += rho1d[0][l]*rho1d[1][m]*rho1d[2][n]*u_brick[mz][my][mx]; - ekx += drho1d[0][l]*rho1d[1][m]*rho1d[2][n]*u_brick[mz][my][mx]; - eky += rho1d[0][l]*drho1d[1][m]*rho1d[2][n]*u_brick[mz][my][mx]; - ekz += rho1d[0][l]*rho1d[1][m]*drho1d[2][n]*u_brick[mz][my][mx]; - } - } - } - ekx *= hx_inv; - eky *= hy_inv; - ekz *= hz_inv; - - // electrical potential - - if (potflag) phi[i] = u; - - // convert E-field to force and substract self forces - const double qfactor = qqrd2e * scale; - double qtmp = eps[i]*q[i]; - - s1 = x[i][0]*hx_inv; - s2 = x[i][1]*hy_inv; - s3 = x[i][2]*hz_inv; - sf = sf_coeff[0]*sin(2*MY_PI*s1); - sf += sf_coeff[1]*sin(4*MY_PI*s1); - sf *= 2*q[i]*q[i]; - f[i][0] += qfactor*(ekx*q[i] - sf); - - sf = sf_coeff[2]*sin(2*MY_PI*s2); - sf += sf_coeff[3]*sin(4*MY_PI*s2); - sf *= 2*q[i]*q[i]; - f[i][1] += qfactor*(eky*q[i] - sf); - - sf = sf_coeff[4]*sin(2*MY_PI*s3); - sf += sf_coeff[5]*sin(4*MY_PI*s3); - sf *= 2*q[i]*q[i]; - if (slabflag != 2) f[i][2] += qfactor*(ekz*q[i] - sf); - } -} - -/* ---------------------------------------------------------------------- - interpolate from grid to get electric field & force on my particles -------------------------------------------------------------------------- */ - -void PPPMDispDielectric::fieldforce_c_peratom() -{ - int i,l,m,n,nx,ny,nz,mx,my,mz; - FFT_SCALAR dx,dy,dz,x0,y0,z0; - FFT_SCALAR u_pa,v0,v1,v2,v3,v4,v5; - - // loop over my charges, interpolate electric field from nearby grid points - // (nx,ny,nz) = global coords of grid pt to "lower left" of charge - // (dx,dy,dz) = distance to "lower left" grid pt - // (mx,my,mz) = global coords of moving stencil pt - // ek = 3 components of E-field on particle - - double *q = atom->q; - double **x = atom->x; - - int nlocal = atom->nlocal; - - for (i = 0; i < nlocal; i++) { - nx = part2grid[i][0]; - ny = part2grid[i][1]; - nz = part2grid[i][2]; - dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv; - dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv; - dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv; - - compute_rho1d(dx,dy,dz, order, rho_coeff, rho1d); - - u_pa = v0 = v1 = v2 = v3 = v4 = v5 = ZEROF; - for (n = nlower; n <= nupper; n++) { - mz = n+nz; - z0 = rho1d[2][n]; - for (m = nlower; m <= nupper; m++) { - my = m+ny; - y0 = z0*rho1d[1][m]; - for (l = nlower; l <= nupper; l++) { - mx = l+nx; - x0 = y0*rho1d[0][l]; - if (eflag_atom) u_pa += x0*u_brick[mz][my][mx]; - if (vflag_atom) { - v0 += x0*v0_brick[mz][my][mx]; - v1 += x0*v1_brick[mz][my][mx]; - v2 += x0*v2_brick[mz][my][mx]; - v3 += x0*v3_brick[mz][my][mx]; - v4 += x0*v4_brick[mz][my][mx]; - v5 += x0*v5_brick[mz][my][mx]; - } - } - } - } - - // electrostatic potential - - phi[i] = u_pa; - - // convert E-field to force - - const double qfactor = 0.5*force->qqrd2e * scale * q[i]; - - if (eflag_atom) eatom[i] += u_pa*qfactor; - if (vflag_atom) { - vatom[i][0] += v0*qfactor; - vatom[i][1] += v1*qfactor; - vatom[i][2] += v2*qfactor; - vatom[i][3] += v3*qfactor; - vatom[i][4] += v4*qfactor; - vatom[i][5] += v5*qfactor; - } - } -} - -/* ---------------------------------------------------------------------- - Slab-geometry correction term to dampen inter-slab interactions between - periodically repeating slabs. Yields good approximation to 2D Ewald if - adequate empty space is left between repeating slabs (J. Chem. Phys. - 111, 3155). Slabs defined here to be parallel to the xy plane. Also - extended to non-neutral systems (J. Chem. Phys. 131, 094107). -------------------------------------------------------------------------- */ - -void PPPMDispDielectric::slabcorr(int eflag) -{ - // compute local contribution to global dipole moment - - double *q = atom->q; - double **x = atom->x; - double *eps = avec->epsilon; - double zprd = domain->zprd; - int nlocal = atom->nlocal; - - double dipole = 0.0; - for (int i = 0; i < nlocal; i++) dipole += q[i]*x[i][2]; - - if (mu_flag) { - double **mu = atom->mu; - for (int i = 0; i < nlocal; i++) dipole += mu[i][2]; - } - - // sum local contributions to get global dipole moment - - double dipole_all; - MPI_Allreduce(&dipole,&dipole_all,1,MPI_DOUBLE,MPI_SUM,world); - - // need to make non-neutral systems and/or - // per-atom energy translationally invariant - - double dipole_r2 = 0.0; - if (eflag_atom || fabs(qsum) > SMALL) { - - if (mu_flag) - error->all(FLERR,"Cannot (yet) use kspace slab correction with " - "long-range dipoles and non-neutral systems or per-atom energy"); - - for (int i = 0; i < nlocal; i++) - dipole_r2 += q[i]*x[i][2]*x[i][2]; - - // sum local contributions - - double tmp; - MPI_Allreduce(&dipole_r2,&tmp,1,MPI_DOUBLE,MPI_SUM,world); - dipole_r2 = tmp; - } - - // compute corrections - - const double e_slabcorr = MY_2PI*(dipole_all*dipole_all - - qsum*dipole_r2 - qsum*qsum*zprd*zprd/12.0)/volume; - const double qscale = qqrd2e * scale; - - if (eflag_global) energy += qscale * e_slabcorr; - - // per-atom energy - - if (eflag_atom) { - double efact = qscale * MY_2PI/volume; - for (int i = 0; i < nlocal; i++) - eatom[i] += efact * eps[i]*q[i]*(x[i][2]*dipole_all - 0.5*(dipole_r2 + - qsum*x[i][2]*x[i][2]) - qsum*zprd*zprd/12.0); - } - - // add on force corrections - - double ffact = qscale * (-4.0*MY_PI/volume); - double **f = atom->f; - - for (int i = 0; i < nlocal; i++) { - f[i][2] += ffact * eps[i]*q[i]*(dipole_all - qsum*x[i][2]); - efield[i][2] += ffact * eps[i]*(dipole_all - qsum*x[i][2]); - } - - // add on torque corrections - - if (mu_flag && atom->torque) { - double **mu = atom->mu; - double **torque = atom->torque; - for (int i = 0; i < nlocal; i++) { - torque[i][0] += ffact * dipole_all * mu[i][1]; - torque[i][1] += -ffact * dipole_all * mu[i][0]; - } - } -} - -/* ---------------------------------------------------------------------- - memory usage of local arrays -------------------------------------------------------------------------- */ - -double PPPMDispDielectric::memory_usage() -{ - double bytes = PPPMDisp::memory_usage(); - bytes += nmax*3 * sizeof(double); - bytes += nmax * sizeof(double); - return bytes; -} - -/* ---------------------------------------------------------------------- - compute qsum,qsqsum,q2 and give error/warning if not charge neutral - called initially, when particle count changes, when charges are changed -------------------------------------------------------------------------- */ - -void PPPMDispDielectric::qsum_qsq() -{ - const double * const q = atom->q; - const double * const eps = avec->epsilon; - const int nlocal = atom->nlocal; - double qsum_local(0.0), qsqsum_local(0.0); - -#if defined(_OPENMP) -#pragma omp parallel for default(none) reduction(+:qsum_local,qsqsum_local) -#endif - for (int i = 0; i < nlocal; i++) { - double qtmp = eps[i]*q[i]; - qsum_local += qtmp; - qsqsum_local += qtmp*qtmp; - } - - MPI_Allreduce(&qsum_local,&qsum,1,MPI_DOUBLE,MPI_SUM,world); - MPI_Allreduce(&qsqsum_local,&qsqsum,1,MPI_DOUBLE,MPI_SUM,world); - - q2 = qsqsum * force->qqrd2e; -} diff --git a/src/USER-DIELECTRIC/pppm_disp_dielectric.h b/src/USER-DIELECTRIC/pppm_disp_dielectric.h deleted file mode 100644 index eef0fa7e94..0000000000 --- a/src/USER-DIELECTRIC/pppm_disp_dielectric.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -#ifdef KSPACE_CLASS - -KSpaceStyle(pppm/disp/dielectric,PPPMDispDielectric) - -#else - -#ifndef LMP_PPPM_DISP_DIELECTRIC_H -#define LMP_PPPM_DISP_DIELECTRIC_H - -#include "pppm_disp.h" - -namespace LAMMPS_NS { - -class PPPMDispDielectric : public PPPMDisp { - public: - PPPMDispDielectric(class LAMMPS *); - virtual ~PPPMDispDielectric(); - virtual double memory_usage(); - virtual void compute(int, int); - void qsum_qsq(); - void slabcorr(int); - - double** efield; - double* phi; - int potflag; // 1/0 if per-atom electrostatic potential phi is needed - - protected: - virtual void fieldforce_c_ik(); - virtual void fieldforce_c_ad(); - virtual void fieldforce_c_peratom(); - - class AtomVecDielectric* avec; - int mu_flag; -}; - -} - -#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. - -*/ From 30e18a1b769dafa0a4d774717b2611bc0e505f16 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 28 May 2021 16:06:36 -0500 Subject: [PATCH 08/80] Added compute efield/atom and citation for the fixes polarize* --- examples/USER/dielectric/README | 4 +- src/USER-DIELECTRIC/compute_efield_atom.cpp | 232 ++++++++++++++++++ src/USER-DIELECTRIC/compute_efield_atom.h | 74 ++++++ .../fix_polarize_bem_gmres.cpp | 17 +- src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 19 +- .../fix_polarize_functional.cpp | 19 +- 6 files changed, 355 insertions(+), 10 deletions(-) create mode 100644 src/USER-DIELECTRIC/compute_efield_atom.cpp create mode 100644 src/USER-DIELECTRIC/compute_efield_atom.h diff --git a/examples/USER/dielectric/README b/examples/USER/dielectric/README index ac415190ec..4d12416988 100644 --- a/examples/USER/dielectric/README +++ b/examples/USER/dielectric/README @@ -1,4 +1,6 @@ -This folder contains some example data and input scripts for the USER-DIELECTRIC package. +This folder contains some example data and input scripts for the USER-DIELECTRIC package. Please refer to the following reference for more details: + +Nguyen TD, Li H, Bagchi D, Solis FJ, Olvera de la Cruz, Incorporating surface polarization effects into large-scale coarse-grained molecular dynamics simulation, Computer Physics Communications 2019, 241, 80--91. - data.minimal : two point opposite charges facing a flat interface - data.plane : two point opposite charges facing a larger flat interface diff --git a/src/USER-DIELECTRIC/compute_efield_atom.cpp b/src/USER-DIELECTRIC/compute_efield_atom.cpp new file mode 100644 index 0000000000..bd7809c12f --- /dev/null +++ b/src/USER-DIELECTRIC/compute_efield_atom.cpp @@ -0,0 +1,232 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +#include "compute_efield_atom.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "kspace.h" +#include "pair_coul_cut_dielectric.h" +#include "pair_coul_long_dielectric.h" +#include "pair_lj_cut_coul_cut_dielectric.h" +#include "pair_lj_cut_coul_long_dielectric.h" +#include "pair_lj_cut_coul_msm_dielectric.h" +#include "pppm_dielectric.h" +#include "memory.h" +#include "msm_dielectric.h" +#include "update.h" + +using namespace LAMMPS_NS; + +enum{NOBIAS,BIAS}; + +/* ---------------------------------------------------------------------- */ + +ComputeEfieldAtom::ComputeEfieldAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), efield(NULL) +{ + if (narg < 3) error->all(FLERR,"Illegal compute efield/atom command"); + + peratom_flag = 1; + size_peratom_cols = 3; + timeflag = 1; + comm_reverse = 3; + + pairflag = 0; + kspaceflag = 0; + + if (narg == 3) { + pairflag = 1; + kspaceflag = 1; + } else { + int iarg = 3; + while (iarg < narg) { + if (strcmp(arg[iarg],"pair") == 0) pairflag = 1; + else if (strcmp(arg[iarg],"kspace") == 0) kspaceflag = 1; + else error->all(FLERR,"Illegal compute efield/atom command"); + iarg++; + } + } + + nmax = 0; + + comm_reverse = 1; +} + +/* ---------------------------------------------------------------------- */ + +ComputeEfieldAtom::~ComputeEfieldAtom() +{ + memory->destroy(efield); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeEfieldAtom::init() +{ + if (!atom->q_flag) error->all(FLERR,"compute efield/atom requires atom attribute q"); + if (!force->kspace) kspaceflag = 0; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeEfieldAtom::setup() +{ + if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric") == 0) + efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulMSMDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/msm/dielectric") == 0) + efield_pair = ((PairLJCutCoulMSMDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric") == 0) + efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"coul/long/dielectric") == 0) + efield_pair = ((PairCoulLongDielectric*)force->pair)->efield; + else if (strcmp(force->pair_style,"coul/cut/dielectric") == 0) + efield_pair = ((PairCoulCutDielectric*)force->pair)->efield; + else error->all(FLERR,"Compute efield/atom not supported by pair style"); + + if (force->kspace) { + if (strcmp(force->kspace_style,"pppm/dielectric") == 0) + efield_kspace = ((PPPMDielectric*)force->kspace)->efield; + else if (strcmp(force->kspace_style,"msm/dielectric") == 0) + efield_kspace = ((MSMDielectric*)force->kspace)->efield; + else error->all(FLERR,"Compute efield/atom not supported by kspace style"); + kspaceflag = 1; + } + + if (!efield_pair && !efield_kspace) + error->all(FLERR, "Compute efield/atom does not access to efield"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeEfieldAtom::compute_peratom() +{ + int i,j; + double onemass; + + invoked_peratom = update->ntimestep; + if (update->vflag_atom != invoked_peratom) + error->all(FLERR,"Per-atom virial was not tallied on needed timestep"); + + // grow local stress array if necessary + // needs to be atom->nmax in length + + if (atom->nmax > nmax) { + memory->destroy(efield); + nmax = atom->nmax; + memory->create(efield,nmax,3,"stress/atom:efield"); + array_atom = efield; + } + + // npair includes ghosts if either newton flag is set + // b/c some bonds/dihedrals call pair::ev_tally with pairwise info + // nbond includes ghosts if newton_bond is set + // ntotal includes ghosts if either newton flag is set + // KSpace includes ghosts if tip4pflag is set + + double** f = atom->f; + double* q = atom->q; + int nlocal = atom->nlocal; + int npair = nlocal; + int ntotal = nlocal; + int nkspace = nlocal; + if (force->newton) npair += atom->nghost; + if (force->newton) ntotal += atom->nghost; + if (force->kspace && force->kspace->tip4pflag) nkspace += atom->nghost; + + // clear local stress array + + for (i = 0; i < ntotal; i++) + for (j = 0; j < 3; j++) + efield[i][j] = 0.0; + + // add in per-atom contributions from each force + + if (pairflag && force->pair) { + for (i = 0; i < npair; i++) + for (j = 0; j < 3; j++) { + if (q[i] != 0) efield[i][j] += efield_pair[i][j]; //f[i][j]/q[i]; + } + } + + if (kspaceflag && force->kspace) { + for (i = 0; i < nkspace; i++) + for (j = 0; j < 3; j++) + efield[i][j] += efield_kspace[i][j]; + } + + // communicate ghost efield between neighbor procs + + if (force->newton || (force->kspace && force->kspace->tip4pflag)) + comm->reverse_comm_compute(this); + + // zero efield of atoms not in group + // only do this after comm since ghost contributions must be included + + int *mask = atom->mask; + + for (i = 0; i < nlocal; i++) + if (!(mask[i] & groupbit)) { + efield[i][0] = 0.0; + efield[i][1] = 0.0; + efield[i][2] = 0.0; + } +} + + +/* ---------------------------------------------------------------------- */ + +int ComputeEfieldAtom::pack_reverse_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = efield[i][0]; + buf[m++] = efield[i][1]; + buf[m++] = efield[i][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeEfieldAtom::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + efield[j][0] += buf[m++]; + efield[j][1] += buf[m++]; + efield[j][2] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeEfieldAtom::memory_usage() +{ + double bytes = nmax*3 * sizeof(double); + return bytes; +} diff --git a/src/USER-DIELECTRIC/compute_efield_atom.h b/src/USER-DIELECTRIC/compute_efield_atom.h new file mode 100644 index 0000000000..f749add133 --- /dev/null +++ b/src/USER-DIELECTRIC/compute_efield_atom.h @@ -0,0 +1,74 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS + +ComputeStyle(efield/atom,ComputeEfieldAtom) + +#else + +#ifndef LMP_COMPUTE_EFIELD_ATOM_H +#define LMP_COMPUTE_EFIELD_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeEfieldAtom : public Compute { + public: + ComputeEfieldAtom(class LAMMPS *, int, char **); + ~ComputeEfieldAtom(); + void init(); + void setup(); + void compute_peratom(); + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + double memory_usage(); + + private: + int pairflag; + int kspaceflag; + double **efield_pair, **efield_kspace; + + int nmax; + double **efield; +}; + +} + +#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: Could not find compute stress/atom temperature ID + +Self-explanatory. + +E: Compute stress/atom temperature ID does not compute temperature + +The specified compute must compute temperature. + +E: Per-atom virial was not tallied on needed timestep + +You are using a thermo keyword that requires potentials to have +tallied the virial, but they didn't on this timestep. See the +variable doc page for ideas on how to make this work. + +*/ diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp index 9f0d16db82..8793810a13 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -44,9 +44,8 @@ #include "atom.h" #include "atom_vec_dielectric.h" +#include "citeme.h" #include "comm.h" -#include "domain.h" -#include "neighbor.h" #include "error.h" #include "force.h" #include "group.h" @@ -74,12 +73,26 @@ using namespace MathConst; //#define _POLARIZE_DEBUG +static const char cite_user_dielectric_package[] = + "USER-DIELECTRIC package:\n\n" + "@Article{TrungCPC19,\n" + " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi, Francisco J. Solis, Monica Olvera de la Cruz,\n" + " title = {Incorporating surface polarization effects into large-scale coarse-grained Molecular Dynamics simulation},\n" + " journal = {Comp.~Phys.~Comm.},\n" + " year = 2019,\n" + " volume = 241,\n" + " pages = {80--91}\n" + "}\n\n" + ; + /* ---------------------------------------------------------------------- */ FixPolarizeBEMGMRES::FixPolarizeBEMGMRES(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), q_backup(NULL), c(NULL), g(NULL), h(NULL), r(NULL), s(NULL), v(NULL), y(NULL) { + if (lmp->citeme) lmp->citeme->add(cite_user_dielectric_package); + if (narg < 5) error->all(FLERR,"Illegal fix polarize/bem/gmres command"); avec = (AtomVecDielectric *) atom->style_match("dielectric"); diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp index 786ba5426a..95e2093aec 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -25,24 +25,21 @@ #include "atom.h" #include "atom_vec_dielectric.h" +#include "citeme.h" #include "comm.h" -#include "domain.h" #include "error.h" #include "force.h" #include "group.h" #include "kspace.h" #include "math_const.h" #include "memory.h" -#include "modify.h" #include "msm_dielectric.h" -#include "neighbor.h" #include "pair_coul_cut_dielectric.h" #include "pair_coul_long_dielectric.h" #include "pair_lj_cut_coul_cut_dielectric.h" #include "pair_lj_cut_coul_long_dielectric.h" #include "pair_lj_cut_coul_msm_dielectric.h" #include "pppm_dielectric.h" -#include "msm_dielectric.h" #include "random_park.h" #include "timer.h" #include "update.h" @@ -56,11 +53,25 @@ using namespace MathConst; //#define _POLARIZE_DEBUG +static const char cite_user_dielectric_package[] = + "USER-DIELECTRIC package:\n\n" + "@Article{TrungCPC19,\n" + " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi, Francisco J. Solis, Monica Olvera de la Cruz,\n" + " title = {Incorporating surface polarization effects into large-scale coarse-grained Molecular Dynamics simulation},\n" + " journal = {Comp.~Phys.~Comm.},\n" + " year = 2019,\n" + " volume = 241,\n" + " pages = {80--91}\n" + "}\n\n" + ; + /* ---------------------------------------------------------------------- */ FixPolarizeBEMICC::FixPolarizeBEMICC(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { + if (lmp->citeme) lmp->citeme->add(cite_user_dielectric_package); + if (narg < 5) error->all(FLERR,"Illegal fix polarize/bem/icc command"); avec = (AtomVecDielectric *) atom->style_match("dielectric"); diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index 811cd38be7..b1b897fa4c 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -30,10 +30,8 @@ #include "atom.h" #include "atom_vec_dielectric.h" - - +#include "citeme.h" #include "comm.h" -#include "compute.h" #include "domain.h" #include "error.h" #include "force.h" @@ -68,13 +66,28 @@ using namespace MathConst; enum {REAL2SCALED=0,SCALED2REAL=1}; #define EPSILON 1e-6 + //#define _POLARIZE_DEBUG +static const char cite_user_dielectric_package[] = + "USER-DIELECTRIC package:\n\n" + "@Article{TrungCPC19,\n" + " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi, Francisco J. Solis, Monica Olvera de la Cruz,\n" + " title = {Incorporating surface polarization effects into large-scale coarse-grained Molecular Dynamics simulation},\n" + " journal = {Comp.~Phys.~Comm.},\n" + " year = 2019,\n" + " volume = 241,\n" + " pages = {80--91}\n" + "}\n\n" + ; + /* ---------------------------------------------------------------------- */ FixPolarizeFunctional::FixPolarizeFunctional(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { + if (lmp->citeme) lmp->citeme->add(cite_user_dielectric_package); + if (narg != 3) error->all(FLERR,"Illegal fix polarize/functional command"); avec = (AtomVecDielectric *) atom->style_match("dielectric"); From 7a52cfcc01b5e4cdcbab91971689846d42e56795 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 28 May 2021 16:27:03 -0500 Subject: [PATCH 09/80] Added a doc page for the fix polarize/* --- doc/src/fix_polarize.rst | 86 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 doc/src/fix_polarize.rst diff --git a/doc/src/fix_polarize.rst b/doc/src/fix_polarize.rst new file mode 100644 index 0000000000..66bafb94f9 --- /dev/null +++ b/doc/src/fix_polarize.rst @@ -0,0 +1,86 @@ +.. index:: fix polarize/bem/icc +.. index:: fix polarize/bem/gmres +.. index:: fix polarize/functional + +fix polarize command +=================== + +Syntax +"""""" + +.. parsed-literal:: + + fix ID group-ID polarize nevery tolerance ... + +* ID, group-ID are documented in :doc:`fix ` command +* polarize/bem/icc, polarize/bem/gmres, or polarize/functional = style name of this fix command +* Nevery = this fixed is invoked every this many timesteps +* tolerance = the tolerance for the iterative solver to stop + + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix 1 all polarize/bem/icc 1 0.0001 + fix 2 all polarize/bem/gmres 5 0.0001 + fix 3 all polarize/bem/functional 1 0.0001 + +Description +""""""""""" + +The three fix polarize in the USER-DIELECTRIC package compute the induced charges +at the interface between two impermeable media with different dielectric +constants. + +There are some example scripts for using this package with LAMMPS in the +examples/USER/dielectric directory. + +---------- + +The charges of the atoms in the specified group will be computed by the solver. +fix polarize bem/icc computes the induced charges at the boundary elements +(i.e. interface vertices) using the successive overrelaxation as described +in (Tyagi). fix polarize bem/gmres computes the induced charges at +the interface vertices using the successive overrelaxation +as described in (Barros). + +Restart, fix_modify, output, run start/stop, minimize info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +The :doc:`fix_modify ` + +This fix computes a global scalar which can be accessed by various +:doc:`output commands `. The scalar is the Colvars +energy mentioned above. The scalar value calculated by this fix is +"extensive". + +Restrictions +"""""""""""" + +This fix is part of the USER-DIELECTRIC package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package +` doc page for more info. + +There can only be one colvars fix active at a time. Since the interface +communicates only the minimum amount of information and colvars module +itself can handle an arbitrary number of collective variables, this is +not a limitation of functionality. + +Related commands +"""""""""""""""" + +:doc:`fix smd `, :doc:`fix spring `, + +Default +""""""" + +None. + +---------- + +.. _NguyenTD: + +**(NguyenTD)** Nguyen, Li, Bagchi, Solis, Olvera de la Cruz, Mol. Phys., DOI:10.1016/j.cpc.2019.03.006 + From be6be2fc0716276f7c2baa703f32e6bc77637edb Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 30 May 2021 10:29:28 -0500 Subject: [PATCH 10/80] Fixed a bug with AtomVecDielectric for pack fields_border --- src/USER-DIELECTRIC/atom_vec_dielectric.cpp | 28 ++++++++------------- src/USER-DIELECTRIC/atom_vec_dielectric.h | 1 - 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp index 10876459fd..e229f594f8 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp @@ -39,7 +39,7 @@ AtomVecDielectric::AtomVecDielectric(LAMMPS *lmp) : AtomVec(lmp) "num_improper improper_type improper_atom1 improper_atom2 " "improper_atom3 improper_atom4 " "nspecial special " - "mu3 area ed em epsilon curvature q_unscaled"; + "mu area ed em epsilon curvature q_unscaled"; fields_copy = (char *) "q molecule num_bond bond_type bond_atom " "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " @@ -48,12 +48,12 @@ AtomVecDielectric::AtomVecDielectric(LAMMPS *lmp) : AtomVec(lmp) "num_improper improper_type improper_atom1 improper_atom2 " "improper_atom3 improper_atom4 " "nspecial special " - "mu3 area ed em epsilon curvature q_unscaled"; - fields_comm = (char *) ""; + "mu area ed em epsilon curvature q_unscaled"; + fields_comm = (char *) "q mu area ed em epsilon curvature q_unscaled"; fields_comm_vel = (char *) ""; fields_reverse = (char *) ""; - fields_border = (char *) "q molecule mu3 area ed em epsilon curvature"; - fields_border_vel = (char *) "q molecule mu3 area ed em epsilon curvature"; + fields_border = (char *) "q molecule mu area ed em epsilon curvature q_unscaled"; + fields_border_vel = (char *) "q molecule mu area ed em epsilon curvature q_unscaled"; fields_exchange = (char *) "q molecule num_bond bond_type bond_atom " "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " @@ -62,7 +62,7 @@ AtomVecDielectric::AtomVecDielectric(LAMMPS *lmp) : AtomVec(lmp) "num_improper improper_type improper_atom1 improper_atom2 " "improper_atom3 improper_atom4 " "nspecial special " - "mu3 area ed em epsilon curvature q_unscaled"; + "mu area ed em epsilon curvature q_unscaled"; fields_restart = (char *) "q molecule num_bond bond_type bond_atom " "num_angle angle_type angle_atom1 angle_atom2 angle_atom3 " @@ -70,10 +70,10 @@ AtomVecDielectric::AtomVecDielectric(LAMMPS *lmp) : AtomVec(lmp) "dihedral_atom3 dihedral_atom4 " "num_improper improper_type improper_atom1 improper_atom2 " "improper_atom3 improper_atom4 " - "mu3 area ed em epsilon curvature q_unscaled"; + "mu area ed em epsilon curvature q_unscaled"; fields_create = (char *) "q molecule num_bond num_angle num_dihedral num_improper nspecial " - "mu3 area ed em epsilon curvature q_unscaled"; + "mu area ed em epsilon curvature q_unscaled"; fields_data_atom = (char *) "id molecule type q x " "mu3 area ed em epsilon curvature"; fields_data_vel = (char *) "id v"; @@ -138,16 +138,10 @@ void AtomVecDielectric::data_atom_post(int ilocal) double* q = atom->q; q_unscaled[ilocal] = q[ilocal]; q[ilocal] /= epsilon[ilocal]; -} -/* ---------------------------------------------------------------------- - unmodify values packed by AtomVec::pack_data() -------------------------------------------------------------------------- */ - -void AtomVecDielectric::pack_data_post(int ilocal) -{ - double* q = atom->q; - q_unscaled[ilocal] = q[ilocal]/epsilon[ilocal]; + double *mu_one = mu[ilocal]; + mu_one[3] = + sqrt(mu_one[0]*mu_one[0] + mu_one[1]*mu_one[1] + mu_one[2]*mu_one[2]); } /* ---------------------------------------------------------------------- diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.h b/src/USER-DIELECTRIC/atom_vec_dielectric.h index 6c933c5949..9767a63ca6 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.h +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.h @@ -31,7 +31,6 @@ class AtomVecDielectric : public AtomVec { void grow_pointers(); void create_atom_post(int); void data_atom_post(int); - void pack_data_post(int); void unpack_restart_init(int); private: From 458af788e166557b3a571a5ee4fbe30629ebd0c5 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Sun, 30 May 2021 11:33:06 -0500 Subject: [PATCH 11/80] Minor edits and cleanup --- src/USER-DIELECTRIC/compute_efield_atom.cpp | 12 +++--- .../fix_polarize_bem_gmres.cpp | 42 +++++++++---------- src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 22 ++++++---- .../fix_polarize_functional.cpp | 23 ++++++---- 4 files changed, 53 insertions(+), 46 deletions(-) diff --git a/src/USER-DIELECTRIC/compute_efield_atom.cpp b/src/USER-DIELECTRIC/compute_efield_atom.cpp index bd7809c12f..43dd589e08 100644 --- a/src/USER-DIELECTRIC/compute_efield_atom.cpp +++ b/src/USER-DIELECTRIC/compute_efield_atom.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author: Trung Nguyen (Northwestern) +------------------------------------------------------------------------- */ + #include "compute_efield_atom.h" #include "atom.h" @@ -18,20 +22,18 @@ #include "error.h" #include "force.h" #include "kspace.h" +#include "memory.h" +#include "msm_dielectric.h" #include "pair_coul_cut_dielectric.h" #include "pair_coul_long_dielectric.h" #include "pair_lj_cut_coul_cut_dielectric.h" #include "pair_lj_cut_coul_long_dielectric.h" #include "pair_lj_cut_coul_msm_dielectric.h" #include "pppm_dielectric.h" -#include "memory.h" -#include "msm_dielectric.h" #include "update.h" using namespace LAMMPS_NS; -enum{NOBIAS,BIAS}; - /* ---------------------------------------------------------------------- */ ComputeEfieldAtom::ComputeEfieldAtom(LAMMPS *lmp, int narg, char **arg) : @@ -161,7 +163,7 @@ void ComputeEfieldAtom::compute_peratom() if (pairflag && force->pair) { for (i = 0; i < npair; i++) for (j = 0; j < 3; j++) { - if (q[i] != 0) efield[i][j] += efield_pair[i][j]; //f[i][j]/q[i]; + if (q[i] != 0) efield[i][j] += efield_pair[i][j]; } } diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp index 8793810a13..f37626fc4e 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -12,32 +12,26 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Boundary element method for the Poisson equation for surface induced charges - using GMRES + Contributing authors: + Trung Nguyen and Monica Olvera de la Cruz (Northwestern) + + Implement a boundary element solver for surface induced charges + using the GMRES algorithm Reference: Barros, Sinkovits, Luijten, J. Chem. Phys 2014, 140, 064903 - Contributing author: Trung Nguyen (Northwestern) - GMRES solver: - Original C version by Lili Ju. - C++ version by John Burkardt. - Adapted to the version where A is an operator and (b-Ax) is computed directly - by Trung Nguyen. + GMRES solver: Original C version by Lili Ju, C++ version by John Burkardt. + The version adapted here is implemented where A is an operator acting on x, + and the residual (b-Ax) is computed directly. - Richard Barrett, Michael Berry, Tony Chan, James Demmel, - June Donato, Jack Dongarra, Victor Eijkhout, Roidan Pozo, - Charles Romine, Henk van der Vorst, - Templates for the Solution of Linear Systems: - Building Blocks for Iterative Methods, - SIAM, 1994, - ISBN: 0898714710, - LC: QA297.8.T45. + References: + 1) R. Barrett, M. Berry, T. Chan, J. Demmel, J. Donato, J. Dongarra, + V. Eijkhout, R. Pozo, C. Romine, H. van der Vorst, + Templates for the Solution of Linear Systems: Building Blocks for + Iterative Methods, SIAM, 1994, ISBN: 0898714710, LC: QA297.8.T45. - Tim Kelley, - Iterative Methods for Linear and Nonlinear Equations, - SIAM, 2004, - ISBN: 0898713528, - LC: QA297.8.K45. + 2) T. Kelley, Iterative Methods for Linear and Nonlinear Equations, + SIAM, 2004, ISBN: 0898713528, LC: QA297.8.K45. ------------------------------------------------------------------------- */ #include "fix_polarize_bem_gmres.h" @@ -76,8 +70,10 @@ using namespace MathConst; static const char cite_user_dielectric_package[] = "USER-DIELECTRIC package:\n\n" "@Article{TrungCPC19,\n" - " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi, Francisco J. Solis, Monica Olvera de la Cruz,\n" - " title = {Incorporating surface polarization effects into large-scale coarse-grained Molecular Dynamics simulation},\n" + " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi," + " Francisco J. Solis, Monica Olvera de la Cruz,\n" + " title = {Incorporating surface polarization effects into large-scale" + " coarse-grained Molecular Dynamics simulation},\n" " journal = {Comp.~Phys.~Comm.},\n" " year = 2019,\n" " volume = 241,\n" diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp index 95e2093aec..6e4dc43559 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -12,13 +12,15 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - An iterative solver for surface induced charges computation (ICC) - using Richarson iteration - - Contributing author: Trung Nguyen (Northwestern) + Contributing authors: + Trung Nguyen and Monica Olvera de la Cruz (Northwestern) References: - Tyagi, Suzen, Sega, Barbosa, Kantorovich, Holm, J. Chem. Phys. 2010, 132, 154112 - Barros, Sinkovits, Luijten, J. Chem. Phys 2014, 140, 064903 + 1) Tyagi, Suzen, Sega, Barbosa, Kantorovich, Holm, J. Chem. Phys. 2010, + 132, 154112 + 2) Barros, Sinkovits, Luijten, J. Chem. Phys 2014, 140, 064903 + + Implement a boundary-element solver for image charge computation (ICC) + using successive overrelaxation ------------------------------------------------------------------------- */ #include "fix_polarize_bem_icc.h" @@ -56,8 +58,10 @@ using namespace MathConst; static const char cite_user_dielectric_package[] = "USER-DIELECTRIC package:\n\n" "@Article{TrungCPC19,\n" - " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi, Francisco J. Solis, Monica Olvera de la Cruz,\n" - " title = {Incorporating surface polarization effects into large-scale coarse-grained Molecular Dynamics simulation},\n" + " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi," + " Francisco J. Solis, Monica Olvera de la Cruz,\n" + " title = {Incorporating surface polarization effects into large-scale" + " coarse-grained Molecular Dynamics simulation},\n" " journal = {Comp.~Phys.~Comm.},\n" " year = 2019,\n" " volume = 241,\n" @@ -461,4 +465,4 @@ double FixPolarizeBEMICC::compute_vector(int n) { if (n == 0) return iterations; else if (n == 1) return rho; -} \ No newline at end of file +} diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index b1b897fa4c..7254ab8d3b 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -12,12 +12,15 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Solve for induced charges on fixed sharp interfaces via optimizing the functional - developed by Jadhao et al. with respect to the induced charges themselves. - The linear equations to be solved for w are: - (Rww + Rww^T) w = q Rwq - At the beginning of the run, (Rww + Rww^T)^(-1) is computed; - at every time step, the vector (q Rwq) is computed and w is computed via + Contributing authors: + Trung Nguyen and Monica Olvera de la Cruz (Northwestern) + based on the original implementation by Honghao Li (Northwestern) + Reference: + Jadhao, Solis, Olvera de la Cruz, J. Chem. Phys. 138, 054119, 2013 + + Solve the following eq. for induced charges on fixed sharp interfaces: + (Rww + Rww^T) w = q Rwq + at every time step, the vector (q Rwq) is computed, and so w = [Rww + Rww^T)^(-1)] (q Rwq) NOTE: Oct 7, 2019: switch from matrix inversion to a conjugate gradient solver @@ -72,8 +75,10 @@ enum {REAL2SCALED=0,SCALED2REAL=1}; static const char cite_user_dielectric_package[] = "USER-DIELECTRIC package:\n\n" "@Article{TrungCPC19,\n" - " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi, Francisco J. Solis, Monica Olvera de la Cruz,\n" - " title = {Incorporating surface polarization effects into large-scale coarse-grained Molecular Dynamics simulation},\n" + " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi," + " Francisco J. Solis, Monica Olvera de la Cruz,\n" + " title = {Incorporating surface polarization effects into large-scale" + " coarse-grained Molecular Dynamics simulation},\n" " journal = {Comp.~Phys.~Comm.},\n" " year = 2019,\n" " volume = 241,\n" @@ -881,7 +886,7 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() } } - MPI_Allreduce(buffer1[0],G1qw_real[0],num_ions*num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&buffer1[0][0],&G1qw_real[0][0],num_ions*num_induced_charges,MPI_DOUBLE,MPI_SUM,world); // the following loop need the above results: gradG1wq_real // calculate sum1G1qw_epsilon and sum2ndotGwq_epsilon From 4736d15b7cf87a44197cc2a2db4d9896f675c7dd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 31 May 2021 11:40:15 -0400 Subject: [PATCH 12/80] replace outdated email address --- src/USER-DIFFRACTION/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-DIFFRACTION/README b/src/USER-DIFFRACTION/README index 2f146c4c94..fb36011960 100644 --- a/src/USER-DIFFRACTION/README +++ b/src/USER-DIFFRACTION/README @@ -49,7 +49,7 @@ examples/USER/diffraction. AUTHOR INFORMATION: The person who created this package is Shawn P. Coleman -(shawn.p.coleman8.ctr at mail.mil) while at the University of +(scolema3 at gmail.com) while at the University of Arkansas. Contact him directly if you have questions. Co-Author: Douglas Spearot (University of Arkansas) From 185664824e31ec6475d0431a8e8c3d64cd10d667 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 31 May 2021 12:01:05 -0400 Subject: [PATCH 13/80] address LGTM issues --- tools/coding_standard/homepage.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/coding_standard/homepage.py b/tools/coding_standard/homepage.py index 299729f15d..444befec36 100644 --- a/tools/coding_standard/homepage.py +++ b/tools/coding_standard/homepage.py @@ -34,7 +34,7 @@ patterns: """ def check_homepage(f): - pattern = re.compile(r'.*lammps.sandia.gov.*') + pattern = re.compile(r'.*lammps.sandia.gov.*') # lgtm [py/incomplete-hostname-regexp] lineno = 1 errors = set() @@ -48,7 +48,7 @@ def check_homepage(f): def check_file(path): if path.find('homepage.py') >= 0: return { 'homepage_errors' : '' } encoding = 'UTF-8' - whitespace_errors = set() + homepage_errors = set() try: with open(path, 'r') as f: homepage_errors = check_homepage(f) From fde2295685dc613bdc06fc055f962bd0befaaa9e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 15 May 2021 23:35:14 -0400 Subject: [PATCH 14/80] add comments to suppress useless warnings from LGTM --- python/install.py | 4 ++-- python/lammps/__init__.py | 12 ++++++------ python/lammps/core.py | 20 ++++++++++---------- python/lammps/numpy_wrapper.py | 2 +- unittest/force-styles/check_tests.py | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/python/install.py b/python/install.py index 10bd4f6de1..a3668754d9 100644 --- a/python/install.py +++ b/python/install.py @@ -123,7 +123,7 @@ try: sys.argv = ["setup.py","install"] # as if had run "python setup.py install" setup_kwargs['data_files']=[(os.path.join(get_python_lib(), 'lammps'), [args.lib])] setup(**setup_kwargs) -except: +except: # lgtm [py/catch-base-exception] tryuser=True print ("Installation into global site-packages folder failed.\nTrying user folder %s now." % site.USER_SITE) @@ -132,5 +132,5 @@ if tryuser: sys.argv = ["setup.py","install","--user"] # as if had run "python setup.py install --user" setup_kwargs['data_files']=[(os.path.join(site.USER_SITE, 'lammps'), [args.lib])] setup(**setup_kwargs) - except: + except: # lgtm [py/catch-base-exception] print("Installation into user site package folder failed.") diff --git a/python/lammps/__init__.py b/python/lammps/__init__.py index a51e0db207..9381d6b80c 100644 --- a/python/lammps/__init__.py +++ b/python/lammps/__init__.py @@ -8,10 +8,10 @@ LAMMPS module global members: result of :py:func:`lammps.version`. """ -from .constants import * -from .core import * -from .data import * -from .pylammps import * +from .constants import * # lgtm [py/polluting-import] +from .core import * # lgtm [py/polluting-import] +from .data import * # lgtm [py/polluting-import] +from .pylammps import * # lgtm [py/polluting-import] # convert installed module string version to numeric version def get_version_number(): @@ -28,7 +28,7 @@ def get_version_number(): from importlib.metadata import version try: vstring = version('lammps') - except: + except: # lgtm [py/catch-base-exception] # nothing to do, ignore pass @@ -36,7 +36,7 @@ def get_version_number(): from pkg_resources import get_distribution try: vstring = get_distribution('lammps').version - except: + except: # lgtm [py/catch-base-exception] # nothing to do, ignore pass diff --git a/python/lammps/core.py b/python/lammps/core.py index 800a1eab29..e31c6505e3 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -18,12 +18,12 @@ from __future__ import print_function import os import sys -from ctypes import * +from ctypes import * # lgtm [py/polluting-import] from os.path import dirname,abspath,join from inspect import getsourcefile -from .constants import * -from .data import * +from .constants import * # lgtm [py/polluting-import] +from .data import * # lgtm [py/polluting-import] # ------------------------------------------------------------------------- @@ -100,7 +100,7 @@ class lammps(object): try: if ptr: self.lib = CDLL("",RTLD_GLOBAL) - except: + except: # lgtm [py/catch-base-exception] self.lib = None # load liblammps.so unless name is given @@ -307,7 +307,7 @@ class lammps(object): from mpi4py import __version__ as mpi4py_version # tested to work with mpi4py versions 2 and 3 self.has_mpi4py = mpi4py_version.split('.')[0] in ['2','3'] - except: + except: # lgtm [py/catch-base-exception] # ignore failing import pass @@ -1352,7 +1352,7 @@ class lammps(object): id_lmp = (self.c_tagint*n)() try: id_lmp[:] = id[0:n] - except: + except: # lgtm [py/catch-base-exception] return 0 else: id_lmp = None @@ -1360,21 +1360,21 @@ class lammps(object): type_lmp = (c_int*n)() try: type_lmp[:] = type[0:n] - except: + except: # lgtm [py/catch-base-exception] return 0 three_n = 3*n x_lmp = (c_double*three_n)() try: x_lmp[:] = x[0:three_n] - except: + except: # lgtm [py/catch-base-exception] return 0 if v: v_lmp = (c_double*(three_n))() try: v_lmp[:] = v[0:three_n] - except: + except: # lgtm [py/catch-base-exception] return 0 else: v_lmp = None @@ -1383,7 +1383,7 @@ class lammps(object): img_lmp = (self.c_imageint*n)() try: img_lmp[:] = image[0:n] - except: + except: # lgtm [py/catch-base-exception] return 0 else: img_lmp = None diff --git a/python/lammps/numpy_wrapper.py b/python/lammps/numpy_wrapper.py index 399affa51a..20fdf4cc68 100644 --- a/python/lammps/numpy_wrapper.py +++ b/python/lammps/numpy_wrapper.py @@ -20,7 +20,7 @@ import warnings from ctypes import POINTER, c_double, c_int, c_int32, c_int64, cast -from .constants import * +from .constants import * # lgtm [py/polluting-import] from .data import NeighList diff --git a/unittest/force-styles/check_tests.py b/unittest/force-styles/check_tests.py index a0934eabe8..cca1b9f84d 100755 --- a/unittest/force-styles/check_tests.py +++ b/unittest/force-styles/check_tests.py @@ -31,7 +31,7 @@ if not tests_dir: try: src_dir = os.path.abspath(os.path.expanduser(src_dir)) tests_dir = os.path.abspath(os.path.expanduser(tests_dir)) -except: +except: # lgtm [py/catch-base-exception] parser.print_help() sys.exit(1) From 1b8825a377a65319b0be1697003006ba43f781af Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 31 May 2021 18:23:37 -0400 Subject: [PATCH 15/80] expand LGTM exposure of LAMMPS styles --- .lgtm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.lgtm.yml b/.lgtm.yml index 2f2a31f292..e5a62fd04b 100644 --- a/.lgtm.yml +++ b/.lgtm.yml @@ -4,7 +4,7 @@ extraction: command: - "mkdir build" - "cd build" - - "cmake -G Ninja -C ../cmake/presets/minimal.cmake ../cmake" + - "cmake -G Ninja -C ../cmake/presets/most.cmake ../cmake" index: build_command: - "cd build" From c12f7e226b27dd2974f97d690d387f7e51705333 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 1 Jun 2021 11:22:14 -0500 Subject: [PATCH 16/80] More cleanup to fix polarize*, access to the per-atom variables from the Atom class, and updates to doc pages --- doc/src/fix_polarize_bem_gmres.rst | 104 ++++++++++++++++ doc/src/fix_polarize_bem_icc.rst | 103 ++++++++++++++++ ...larize.rst => fix_polarize_functional.rst} | 24 ++-- examples/USER/dielectric/in.confined | 2 +- examples/USER/dielectric/in.nopbc | 4 +- examples/USER/dielectric/in.pbc | 2 +- src/USER-DIELECTRIC/atom_vec_dielectric.cpp | 66 ++++++++++ .../fix_polarize_bem_gmres.cpp | 23 ++-- src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 8 +- .../fix_polarize_functional.cpp | 114 +++++++++++------- src/USER-DIELECTRIC/fix_polarize_functional.h | 11 +- src/atom.cpp | 16 +++ 12 files changed, 400 insertions(+), 77 deletions(-) create mode 100644 doc/src/fix_polarize_bem_gmres.rst create mode 100644 doc/src/fix_polarize_bem_icc.rst rename doc/src/{fix_polarize.rst => fix_polarize_functional.rst} (65%) diff --git a/doc/src/fix_polarize_bem_gmres.rst b/doc/src/fix_polarize_bem_gmres.rst new file mode 100644 index 0000000000..c410b33f6a --- /dev/null +++ b/doc/src/fix_polarize_bem_gmres.rst @@ -0,0 +1,104 @@ +.. index:: fix polarize/bem/gmres + +fix polarize/bem/gmres command +=================== + +Syntax +"""""" + +.. parsed-literal:: + + fix ID group-ID polarize/bem/gmres nevery tolerance ... + +* ID, group-ID are documented in :doc:`fix ` command +* polarize/bem/gmres = style name of this fix command +* Nevery = this fixed is invoked every this many timesteps +* tolerance = the tolerance for the iterative solver to stop + + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix 2 all polarize/bem/gmres 5 0.0001 + +Description +""""""""""" + +The fix polarize/bem/gmres computes the induced charges +at the interface between two impermeable media with +different dielectric constants. + +There are some example scripts for using this fix +with LAMMPS in the examples/USER/dielectric directory. + +---------- + +The induced charges of the atoms in the specified group, which are +the vertices on the interface, are computed using the equation: + +..math:: + + \sigma_b(\mathbf{s}) = \dfrac{1 - \bar{\epsilon}}{\bar{\epsilon}} + \sigma_f(\mathbf{s}) - \epsilon_0 \dfrac{\Delta \epsilon}{\bar{\epsilon}} + \mathbf{E}(\mathbf{s}) \cdot \mathbf{n}(\mathbf{s}) + +* :math:`\sigma_b` is the induced charge density at the interface vertex +:math:`\mathbf{s}`. +* :math:`\bar{\epsilon}` is the mean dielectric constant at the interface vertex: +:math:`\bar{\epsilon} = (\epsilon_1 + \epsilon_2)/2`. +* :math:`\Delta \epsilon` is the dielectric constant difference at the interface vertex: +:math:`\Delta \epsilon = \epsilon_1 - \epsilon_2` +* :math:`\sigma_f` is the free charge density at the interface vertex +* :math:`\mathbf{E}(\mathbf{s})` is the electrical field at the vertex +* :math:`\mathbf{n}(\mathbf{s})` is the unit normal vector at the vertex +pointing from medium with :math:`\epsilon_2` to that with :math:`\epsilon_1` + + +The fix polarize/bem/gmres employs the Generalized Minimum Residual (GMRES) +as described in :ref:`(Barros) ` to solve for :math:`\sigma_b`. + +Restart, fix_modify, output, run start/stop, minimize info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +The :doc:`fix_modify ` + +This fix computes a global scalar which can be accessed by various +:doc:`output commands `. The scalar is the Colvars +energy mentioned above. The scalar value calculated by this fix is +"extensive". + +Restrictions +"""""""""""" + +This fix is part of the USER-DIELECTRIC package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package +` doc page for more info. + +There can only be one colvars fix active at a time. Since the interface +communicates only the minimum amount of information and colvars module +itself can handle an arbitrary number of collective variables, this is +not a limitation of functionality. + +Related commands +"""""""""""""""" + +:doc:`fix polarize/bem/icc `, :doc:`fix polarize/functional ` + +Default +""""""" + +None. + +---------- + +.. _Barros: + +**(Barros)** Barros, Sinkovits, Luijten, J. Chem. Phys, 140, 064903 (2014) + + +.. _NguyenTD: + +**(NguyenTD)** Nguyen, Li, Bagchi, Solis, Olvera de la Cruz, Comput Phys Commun 241, 80-19 (2019) + diff --git a/doc/src/fix_polarize_bem_icc.rst b/doc/src/fix_polarize_bem_icc.rst new file mode 100644 index 0000000000..130b99fd41 --- /dev/null +++ b/doc/src/fix_polarize_bem_icc.rst @@ -0,0 +1,103 @@ +.. index:: fix polarize/bem/icc + +fix polarize/bem/icc command +=================== + +Syntax +"""""" + +.. parsed-literal:: + + fix ID group-ID polarize nevery tolerance ... + +* ID, group-ID are documented in :doc:`fix ` command +* polarize/bem/icc = style name of this fix command +* Nevery = this fixed is invoked every this many timesteps +* tolerance = the tolerance for the iterative solver to stop + + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix 1 interface polarize/bem/icc 1 0.0001 + +Description +""""""""""" + +The fix polarize/bem/icc computes the induced charges +at the interface between two impermeable media with +different dielectric constants. + +There are some example scripts for using this fix +with LAMMPS in the examples/USER/dielectric directory. + +---------- + +The induced charges of the atoms in the specified group, which are +the vertices on the interface, are computed using the equation: + +..math:: + + \sigma_b(\mathbf{s}) = \dfrac{1 - \bar{\epsilon}}{\bar{\epsilon}} + \sigma_f(\mathbf{s}) - \epsilon_0 \dfrac{\Delta \epsilon}{\bar{\epsilon}} + \mathbf{E}(\mathbf{s}) \cdot \mathbf{n}(\mathbf{s}) + +* :math:`\sigma_b` is the induced charge density at the interface vertex +:math:`\mathbf{s}`. +* :math:`\bar{\epsilon}` is the mean dielectric constant at the interface vertex: +:math:`\bar{\epsilon} = (\epsilon_1 + \epsilon_2)/2`. +* :math:`\Delta \epsilon` is the dielectric constant difference at the interface vertex: +:math:`\Delta \epsilon = \epsilon_1 - \epsilon_2` +* :math:`\sigma_f` is the free charge density at the interface vertex +* :math:`\mathbf{E}(\mathbf{s})` is the electrical field at the vertex +* :math:`\mathbf{n}(\mathbf{s})` is the unit normal vector at the vertex +pointing from medium with :math:`\epsilon_2` to that with :math:`\epsilon_1` + + +The fix polarize/bem/icc employs the successive overrelaxation algorithm +as described in :ref:`(Tyagi) ` to solve for :math:`\sigma_b`. + +Restart, fix_modify, output, run start/stop, minimize info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +The :doc:`fix_modify ` + +This fix computes a global scalar which can be accessed by various +:doc:`output commands `. The scalar is the Colvars +energy mentioned above. The scalar value calculated by this fix is +"extensive". + +Restrictions +"""""""""""" + +This fix is part of the USER-DIELECTRIC package. It is only enabled if +LAMMPS was built with that package. See the :doc:`Build package +` doc page for more info. + +There can only be one colvars fix active at a time. Since the interface +communicates only the minimum amount of information and colvars module +itself can handle an arbitrary number of collective variables, this is +not a limitation of functionality. + +Related commands +"""""""""""""""" + +:doc:`fix polarize/bem/icc `, :doc:`fix polarize/functional ` + +Default +""""""" + +None. + +---------- + +.. _Tyagi: + +**(Tyagi)** Tyagi, Suzen, Sega, Barbosa, Kantorovich, Holm, J Chem Phys, 132, 154112 (2010) + +.. _NguyenTD: + +**(NguyenTD)** Nguyen, Li, Bagchi, Solis, Olvera de la Cruz, Comput Phys Commun 241, 80-19 (2019) + diff --git a/doc/src/fix_polarize.rst b/doc/src/fix_polarize_functional.rst similarity index 65% rename from doc/src/fix_polarize.rst rename to doc/src/fix_polarize_functional.rst index 66bafb94f9..20005c8e8e 100644 --- a/doc/src/fix_polarize.rst +++ b/doc/src/fix_polarize_functional.rst @@ -1,8 +1,6 @@ -.. index:: fix polarize/bem/icc -.. index:: fix polarize/bem/gmres .. index:: fix polarize/functional -fix polarize command +fix polarize/functional command =================== Syntax @@ -13,7 +11,7 @@ Syntax fix ID group-ID polarize nevery tolerance ... * ID, group-ID are documented in :doc:`fix ` command -* polarize/bem/icc, polarize/bem/gmres, or polarize/functional = style name of this fix command +* polarize/functional = style name of this fix command * Nevery = this fixed is invoked every this many timesteps * tolerance = the tolerance for the iterative solver to stop @@ -23,9 +21,7 @@ Examples .. code-block:: LAMMPS - fix 1 all polarize/bem/icc 1 0.0001 - fix 2 all polarize/bem/gmres 5 0.0001 - fix 3 all polarize/bem/functional 1 0.0001 + fix 3 all polarize/functional 1 0.001 Description """"""""""" @@ -39,12 +35,6 @@ examples/USER/dielectric directory. ---------- -The charges of the atoms in the specified group will be computed by the solver. -fix polarize bem/icc computes the induced charges at the boundary elements -(i.e. interface vertices) using the successive overrelaxation as described -in (Tyagi). fix polarize bem/gmres computes the induced charges at -the interface vertices using the successive overrelaxation -as described in (Barros). Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -71,7 +61,7 @@ not a limitation of functionality. Related commands """""""""""""""" -:doc:`fix smd `, :doc:`fix spring `, +:doc:`fix polarize/bem/icc `, :doc:`fix polarize/functional ` Default """"""" @@ -80,7 +70,11 @@ None. ---------- +.. _Jadhao: + +**(Jadhao)** Jadhao, Solis, Olvera de la Cruz, J Chem Phys, 138, 054119 (2013) + .. _NguyenTD: -**(NguyenTD)** Nguyen, Li, Bagchi, Solis, Olvera de la Cruz, Mol. Phys., DOI:10.1016/j.cpc.2019.03.006 +**(NguyenTD)** Nguyen, Li, Bagchi, Solis, Olvera de la Cruz, Comput Phys Commun 241, 80-19 (2019) diff --git a/examples/USER/dielectric/in.confined b/examples/USER/dielectric/in.confined index c6508cfe08..ce3f3c02ff 100644 --- a/examples/USER/dielectric/in.confined +++ b/examples/USER/dielectric/in.confined @@ -63,7 +63,7 @@ elif "${method} == icc"& "fix 3 interface polarize/bem/icc 1 1.0e-4 itr_max 50" & "fix_modify 3 itr_max 50 dielectrics ${ed} ${em} ${epsilon} ${area} NULL" & elif "${method} == dof" & - "fix 3 interface polarize/functional" & + "fix 3 interface polarize/functional 1 0.001" & "fix_modify 3 dielectrics ${ed} ${em} ${epsilon} ${area} NULL" & else & "print 'Unsupported polarization solver' " diff --git a/examples/USER/dielectric/in.nopbc b/examples/USER/dielectric/in.nopbc index bb7b506c90..cf669fb686 100644 --- a/examples/USER/dielectric/in.nopbc +++ b/examples/USER/dielectric/in.nopbc @@ -35,9 +35,9 @@ fix 1 ions nve if "${method} == gmres" then & "fix 3 interface polarize/bem/gmres 1 1.0e-4" & elif "${method} == icc"& - "fix 3 interface polarize/bem/icc 1 1.0e-4 itr_max 50" & + "fix 3 interface polarize/bem/icc 1 1.0e-4" & elif "${method} == dof" & - "fix 3 interface polarize/functional" & + "fix 3 interface polarize/functional 1 1.0e-4" & else & "print 'Unsupported method for polarization' " diff --git a/examples/USER/dielectric/in.pbc b/examples/USER/dielectric/in.pbc index 41226602fc..da5c35f477 100644 --- a/examples/USER/dielectric/in.pbc +++ b/examples/USER/dielectric/in.pbc @@ -40,7 +40,7 @@ if "${method} == gmres" then & elif "${method} == icc"& "fix 3 interface polarize/bem/icc 1 1.0e-4 itr_max 50" & elif "${method} == dof" & - "fix 3 interface polarize/functional" & + "fix 3 interface polarize/functional 1 0.0001" & else & "print 'Unsupported method for polarization' " diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp index e229f594f8..7dd3af2e3a 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp @@ -155,3 +155,69 @@ void AtomVecDielectric::unpack_restart_init(int ilocal) nspecial[ilocal][2] = 0; } +/* ---------------------------------------------------------------------- + assign an index to named atom property and return index + return -1 if name is unknown to this atom style +------------------------------------------------------------------------- */ + +int AtomVecDielectric::property_atom(char *name) +{ + if (strcmp(name,"area") == 0) return 0; + if (strcmp(name,"ed") == 0) return 1; + if (strcmp(name,"em") == 0) return 2; + if (strcmp(name,"epsilon") == 0) return 3; + if (strcmp(name,"curvature") == 0) return 4; + if (strcmp(name,"q_unscaled") == 0) return 5; + return -1; +} + +/* ---------------------------------------------------------------------- + pack per-atom data into buf for ComputePropertyAtom + index maps to data specific to this atom style +------------------------------------------------------------------------- */ + +void AtomVecDielectric::pack_property_atom(int index, double *buf, + int nvalues, int groupbit) +{ + int *mask = atom->mask; + int nlocal = atom->nlocal; + int n = 0; + + if (index == 0) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = area[i]; + else buf[n] = 0.0; + n += nvalues; + } + } else if (index == 1) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = ed[i]; + else buf[n] = 0.0; + n += nvalues; + } + } else if (index == 2) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = em[i]; + else buf[n] = 0.0; + n += nvalues; + } + } else if (index == 3) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = epsilon[i]; + else buf[n] = 0.0; + n += nvalues; + } + } else if (index == 4) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = curvature[i]; + else buf[n] = 0.0; + n += nvalues; + } + } else if (index == 5) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = q_unscaled[i]; + else buf[n] = 0.0; + n += nvalues; + } + } +} diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp index f37626fc4e..05b5cf8a83 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -453,7 +453,8 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) // the inner loop k = 1..(n-1) // build up the k-th Krylov space, - // actually build the Q_k matrix of size n by k, whose the columns are k vectors v(1)...v(k) + // actually build the Q_k matrix of size n by k, + // whose the columns are k vectors v(1)...v(k) // remember that v[0] is computed from the updated residual as above for (k = 1; k <= mr; k++) { @@ -503,7 +504,8 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) } // if k is not the first iteration, - // find the vector y that minimizes the norm of the residual using the least square method + // find the vector y that minimizes the norm of the residual + // using the least square method if (k > 1) { @@ -547,7 +549,8 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) #ifdef _POLARIZE_DEBUG if (comm->me == 0) { char message[256]; - sprintf(message, "itr = %d: k = %d, norm(r) = %g norm(b) = %g", itr, k, rho, normb); + sprintf(message, "itr = %d: k = %d, norm(r) = %g norm(b) = %g", + itr, k, rho, normb); error->warning(FLERR, message); } #endif @@ -586,7 +589,8 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) #ifdef _POLARIZE_DEBUG if (comm->me == 0) { char message[256]; - sprintf(message, "itr = %d: norm(r) = %g norm(b) = %g", itr, rho, normb); + sprintf(message, "itr = %d: norm(r) = %g norm(b) = %g", + itr, rho, normb); error->warning(FLERR, message); } #endif @@ -739,7 +743,8 @@ void FixPolarizeBEMGMRES::update_residual(double* w, double* r, int n) } double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / epsilon[i]; double sigma_f = q_real[i] / area[i]; - buffer[idx] = (1 - em[i]) * sigma_f - em[i] * w[idx] - epsilon0 * ed[i] * dot / (4*MY_PI); + buffer[idx] = (1 - em[i]) * sigma_f - em[i] * w[idx] - + epsilon0 * ed[i] * dot / (4*MY_PI); } MPI_Allreduce(buffer,r,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); @@ -843,8 +848,10 @@ int FixPolarizeBEMGMRES::modify_param(int narg, char **arg) int set_charge=0; double ediff = utils::numeric(FLERR,arg[iarg+1],false,lmp); double emean = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); - if (strcmp(arg[iarg+4],"NULL") != 0) areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); + if (strcmp(arg[iarg+3],"NULL") != 0) + epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); + if (strcmp(arg[iarg+4],"NULL") != 0) + areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); if (strcmp(arg[iarg+5],"NULL") != 0) { qreali = utils::numeric(FLERR,arg[iarg+5],false,lmp); set_charge = 1; @@ -896,7 +903,7 @@ void FixPolarizeBEMGMRES::set_arrays(int i) /* ---------------------------------------------------------------------- */ int FixPolarizeBEMGMRES::pack_forward_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) + int pbc_flag, int *pbc) { int m; for (m = 0; m < n; m++) buf[m] = atom->q[list[m]]; diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp index 6e4dc43559..f5da42c6f8 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -391,8 +391,10 @@ int FixPolarizeBEMICC::modify_param(int narg, char **arg) int set_charge=0; double ediff = utils::numeric(FLERR,arg[iarg+1],false,lmp); double emean = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); - if (strcmp(arg[iarg+4],"NULL") != 0) areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); + if (strcmp(arg[iarg+3],"NULL") != 0) + epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); + if (strcmp(arg[iarg+4],"NULL") != 0) + areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); if (strcmp(arg[iarg+5],"NULL") != 0) { qreali = utils::numeric(FLERR,arg[iarg+5],false,lmp); set_charge = 1; @@ -465,4 +467,4 @@ double FixPolarizeBEMICC::compute_vector(int n) { if (n == 0) return iterations; else if (n == 1) return rho; -} +} \ No newline at end of file diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index 7254ab8d3b..8c2a7946ff 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -22,11 +22,7 @@ (Rww + Rww^T) w = q Rwq at every time step, the vector (q Rwq) is computed, and so w = [Rww + Rww^T)^(-1)] (q Rwq) - NOTE: Oct 7, 2019: switch from matrix inversion to a conjugate gradient solver - - Contributing author: Trung Nguyen (Northwestern) - based on the full-matrix implementation by Honghao Li (Northwestern University) - Reference: Jadhao, Solis, Olvera de la Cruz, J. Chem. Phys. 138, 054119, 2013 + NOTE: Oct 7, 2019: switch to using a conjugate gradient solver ------------------------------------------------------------------------- */ #include "fix_polarize_functional.h" @@ -93,11 +89,17 @@ FixPolarizeFunctional::FixPolarizeFunctional(LAMMPS *lmp, int narg, char **arg) { if (lmp->citeme) lmp->citeme->add(cite_user_dielectric_package); - if (narg != 3) error->all(FLERR,"Illegal fix polarize/functional command"); + if (narg < 4) error->all(FLERR,"Illegal fix polarize/functional command"); avec = (AtomVecDielectric *) atom->style_match("dielectric"); if (!avec) error->all(FLERR,"Fix polarize/functional requires atom style dielectric"); + nevery = utils::inumeric(FLERR,arg[3],false,lmp); + if (nevery < 0) error->all(FLERR,"Illegal fix polarize/functional command"); + + tolerance = EPSILON; + if (narg == 5) tolerance = utils::numeric(FLERR,arg[4],false,lmp); + comm_forward = 1; nmax = 0; allocated = 0; @@ -362,6 +364,9 @@ void FixPolarizeFunctional::setup_pre_force(int vflag) void FixPolarizeFunctional::pre_force(int) { + if (nevery == 0) return; + if (update->ntimestep % nevery) return; + // solve for the induced charges update_induced_charges(); @@ -631,14 +636,14 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() // invoke full neighbor list int inum,jnum,*ilist,*jlist,*numneigh,**firstneigh; - inum = list->inum; // number of entries in the neighbor list - ilist = list->ilist; // ilist[ii] gives the atom index of the entry ii in the list - numneigh = list->numneigh; // numneigh[i] gives the number of neighbors of local atom i - firstneigh = list->firstneigh; // firstneigh[i] gives the pointer to the neighbors of i + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; // calculate G1ww, gradG1ww, ndotG1ww // fill up buffer1 with local G1ww and buffer2 with local ndotGww - // seperate into two loops to let the compiler optimize / or later vectorization + // seperate into two loops to let the compiler optimize/or later vectorization for (int i = 0; i < num_induced_charges; i++) for (int j = 0; j < num_induced_charges; j++) buffer1[i][j] = 0; @@ -660,6 +665,7 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() for (int kk = 0; kk < jnum; kk++) { int k = jlist[kk] & NEIGHMASK; if (mask[k] & groupbit) { + // interface particles: k can be ghost atoms double delx = xtmp - x[k][0]; double dely = ytmp - x[k][1]; @@ -667,28 +673,31 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() domain->minimum_image(delx,dely,delz); int mk = tag2mat[tag[k]]; - //G1ww[mi][mk] = calculate_greens_ewald(delx, dely, delz); + // G1ww[mi][mk] = calculate_greens_ewald(delx, dely, delz); buffer1[mi][mk] = calculate_greens_ewald(delx, dely, delz); + // gradG1ww is vector, directly change it in the function double gradG1ww[3]; - //calculate_grad_greens_ewald(gradG1ww[mi][mk], delx, dely, delz); calculate_grad_greens_ewald(gradG1ww, delx, dely, delz); + // use mu to store the normal vector of interface vertex - //ndotGww[mi][mk] = MathExtra::dot3(norm[i], gradG1ww[mi][mk]) / (4*MY_PI); buffer2[mi][mk] = MathExtra::dot3(norm[i], gradG1ww) / (4*MY_PI); } } - // special treatment for the diagonal terms, even though in the above loop there is mk == mi - //G1ww[mi][mi] = calculate_greens_ewald_self_vertex(area[i]); + // special treatment for the diagonal terms, + // even though in the above loop there is mk == mi + buffer1[mi][mi] = calculate_greens_ewald_self_vertex(area[i]); - //ndotGww[mi][mi] = calculate_ndotgreens_ewald_self_vertex(area[i], curvature[i]) / (4*MY_PI); - buffer2[mi][mi] = calculate_ndotgreens_ewald_self_vertex(area[i], curvature[i]) / (4*MY_PI); + buffer2[mi][mi] = calculate_ndotgreens_ewald_self_vertex(area[i], curvature[i]) / + (4*MY_PI); } } - MPI_Allreduce(buffer1[0],G1ww[0],num_induced_charges*num_induced_charges,MPI_DOUBLE,MPI_SUM,world); - MPI_Allreduce(buffer2[0],ndotGww[0],num_induced_charges*num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(buffer1[0],G1ww[0],num_induced_charges*num_induced_charges, + MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(buffer2[0],ndotGww[0],num_induced_charges*num_induced_charges, + MPI_DOUBLE,MPI_SUM,world); // calculate G2ww // fill up buffer1 with local G2ww @@ -738,10 +747,12 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() } } - MPI_Allreduce(buffer1[0],G2ww[0],num_induced_charges*num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(buffer1[0],G2ww[0],num_induced_charges*num_induced_charges, + MPI_DOUBLE,MPI_SUM,world); // calculate G3ww and Rww - // G3ww is implemented as in _exact(), but can be optionally excluded due to its minor contribution + // G3ww is implemented as in _exact(), but can be optionally excluded + // due to its minor contribution // fill up buffer1 with local G3ww for (int i = 0; i < num_induced_charges; i++) @@ -759,13 +770,17 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() int k = jlist[kk] & NEIGHMASK; if (mask[k] & groupbit) { + // interface particles: k can be ghost atoms + int mk = tag2mat[tag[k]]; double a1 = em[i] * (em[k] - 1.0); double a2 = 1.0 - em[i] - em[k]; + // The first term (w/ G1ww) contributes the most to Rww // the second term (w/ G2ww) includes certain correction + //Rww[mi][mk] = a1 * G1ww[mi][mk] + a2 * G2ww[mi][mk]; buffer1[mi][mk] = a1 * G1ww[mi][mk] + a2 * G2ww[mi][mk]; @@ -804,9 +819,11 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() // including the diagonal term double a1 = em[i] * (em[i] - 1.0); double a2 = 1.0 - em[i] - em[i]; + // The first term (w/ G1ww) contributes the most to Rww // the second term (w/ G2ww) includes certain correction //Rww[mi][mi] = a1 * G1ww[mi][mi] + a2 * G2ww[mi][mi]; + buffer1[mi][mi] = a1 * G1ww[mi][mi] + a2 * G2ww[mi][mi]; } } @@ -846,10 +863,10 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() // invoke full neighbor list int inum,*ilist,*jlist,*numneigh,**firstneigh; - inum = list->inum; // number of entries in the neighbor list - ilist = list->ilist; // ilist[ii] gives the atom index of the entry ii in the list - numneigh = list->numneigh; // numneigh[i] gives the number of neighbors of local atom i - firstneigh = list->firstneigh; // firstneigh[i] gives the pointer to the neighbors of i + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; // calculate G1qw_real // fill up buffer1 with local G1qw_real @@ -886,7 +903,8 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() } } - MPI_Allreduce(&buffer1[0][0],&G1qw_real[0][0],num_ions*num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&buffer1[0][0],&G1qw_real[0][0],num_ions*num_induced_charges, + MPI_DOUBLE,MPI_SUM,world); // the following loop need the above results: gradG1wq_real // calculate sum1G1qw_epsilon and sum2ndotGwq_epsilon @@ -917,7 +935,8 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() delz = x[i][2] - ztmp; domain->minimum_image(delx,dely,delz); - int mi = tag2mat_ions[tag[i]]; //ion_idx[i]; //get_matrix_index_from_local_index(i); + int mi = tag2mat_ions[tag[i]]; //ion_idx[i]; + //calculate_grad_greens_real(gradG1wq_real[mk][mi], delx, dely, delz); double gradG1wq[3]; calculate_grad_greens_real(gradG1wq, delx, dely, delz); @@ -929,8 +948,10 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() temp_sum1 += G1qw_real[mi][mk] * q[i] / epsilon[i]; } } + //sum1G1qw_epsilon[mk] = temp_sum1;// + ewaldDielectric->sum1G1qw_k_epsilon[mk]; rhs1[mk] = temp_sum1; + //sum2ndotGwq_epsilon[mk] = MathExtra::dot3(norm[k], tempndotG); rhs2[mk] = MathExtra::dot3(norm[k], tempndotG); } @@ -1007,14 +1028,16 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() qiRwwVectorTemp1 += q[i] * (1.0 - em[k] / epsilon[i]) * G1qw_real[mi][mk]; } } - // qiRwwVectorTemp1 += ewaldDielectric->sum1G1qw_k[mk] - em[k] * ewaldDielectric->sum1G1qw_k_epsilon[mk]; // add the diagonal term + sum1G3qw += sum2ndotGwq_epsilon[mk] * G2ww[mk][mk] * area[k] * ed[k]; // qiRwwVectorTemp2 is a significant contribution, of which sum2G2wq is significant - double qiRwwVectorTemp2 = (1.0 - 2.0 * em[k]) * sum2G2wq[mk] + sum1G2qw[mk] + 2.0 * sum1G3qw; -// qiRqwVector[mk] = qiRwwVectorTemp1 + qiRwwVectorTemp2; + double qiRwwVectorTemp2 = (1.0 - 2.0 * em[k]) * sum2G2wq[mk] + + sum1G2qw[mk] + 2.0 * sum1G3qw; + + // qiRqwVector[mk] = qiRwwVectorTemp1 + qiRwwVectorTemp2; rhs1[mk] = qiRwwVectorTemp1 + qiRwwVectorTemp2; } } @@ -1071,14 +1094,16 @@ double FixPolarizeFunctional::greens_real(double r) double FixPolarizeFunctional::grad_greens_real_factor(double r) { double alpharij = g_ewald * r; - double factor = erfc(alpharij) + 2.0 * alpharij / MY_PIS * exp(-(alpharij * alpharij)); + double factor = erfc(alpharij) + 2.0 * alpharij / MY_PIS * + exp(-(alpharij * alpharij)); double r3 = r*r*r; return (factor * (-1.0 / r3)); } /* ---------------------------------------------------------------------- */ -void FixPolarizeFunctional::calculate_grad_greens_real(double *vec, double dx, double dy, double dz) +void FixPolarizeFunctional::calculate_grad_greens_real(double *vec, + double dx, double dy, double dz) { double r = sqrt(dx * dx + dy * dy + dz * dz); double real = grad_greens_real_factor(r); @@ -1089,7 +1114,8 @@ void FixPolarizeFunctional::calculate_grad_greens_real(double *vec, double dx, d /* ---------------------------------------------------------------------- */ -double FixPolarizeFunctional::calculate_greens_ewald(double dx, double dy, double dz) +double FixPolarizeFunctional::calculate_greens_ewald(double dx, double dy, + double dz) { // excluding the reciprocal term double r = sqrt(dx * dx + dy * dy + dz * dz); @@ -1098,8 +1124,9 @@ double FixPolarizeFunctional::calculate_greens_ewald(double dx, double dy, doubl /* ---------------------------------------------------------------------- */ -void FixPolarizeFunctional::calculate_grad_greens_ewald(double *vec, double dx, double dy, double dz) - { +void FixPolarizeFunctional::calculate_grad_greens_ewald(double *vec, + double dx, double dy, double dz) +{ // real part of grad greens, excluding the reciprocal term calculate_grad_greens_real(vec, dx, dy, dz); } @@ -1131,11 +1158,12 @@ double FixPolarizeFunctional::calculate_greens_ewald_self_vertex(double area) /* ---------------------------------------------------------------------- */ -double FixPolarizeFunctional::calculate_ndotgreens_ewald_self_vertex(double area, double curvature) +double FixPolarizeFunctional::calculate_ndotgreens_ewald_self_vertex(double area, + double curvature) { - // this term is important, cannot be set to zero. see .pptx + // this term is important, cannot be set to zero // curvature = 1 / R, minus if norm is inverse of R to center. - // Honghao Li's result, the same with Erik's paper, J Chem Phys 140 064903 (2014) + return curvature * MY_PIS / sqrt(area); } @@ -1179,9 +1207,10 @@ void FixPolarizeFunctional::cg_solver(double** A, double* b, double* x, int N) for (int i = 0; i < N; i++) { x[i] = x[i] + alpha*cg_p[i]; cg_r[i] = cg_r[i] - alpha*cg_Ap[i]; - } + } + double rsq_new = inner_product(cg_r, cg_r, N); - if (rsq_new < EPSILON) break; + if (rsq_new < tolerance) break; // beta = rsq_new / rsq double beta = rsq_new / rsq; @@ -1189,5 +1218,4 @@ void FixPolarizeFunctional::cg_solver(double** A, double* b, double* x, int N) cg_p[i] = cg_r[i] + beta*cg_p[i]; rsq = rsq_new; } - -} +} \ No newline at end of file diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.h b/src/USER-DIELECTRIC/fix_polarize_functional.h index 4fe021e760..444ed63f40 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.h +++ b/src/USER-DIELECTRIC/fix_polarize_functional.h @@ -64,10 +64,10 @@ class FixPolarizeFunctional : public Fix { int* induced_charge_idx; // return the index of the atoms in the induced charge arrays int num_induced_charges; // total number of induced charges double* induced_charges; // values of induced charges - int* tag2mat_ions; // tag2mat_ions[atom->tag[i]] returns the index of the atoms in the ion arrays from atom tags - int* mat2tag_ions; // mat2tag_ions[idx] returns the atom tag of the ion idx in the ion arrays - int* ion_idx; // return the index of the atoms in the ion arrays - int num_ions; // total number of ions + int* tag2mat_ions; // tag2mat_ions[atom->tag[i]] returns the index of the atoms in the ion arrays from atom tags + int* mat2tag_ions; // mat2tag_ions[idx] returns the atom tag of the ion idx in the ion arrays + int* ion_idx; // return the index of the atoms in the ion arrays + int num_ions; // total number of ions double* rhs1; double* rhs2; double** buffer1; @@ -85,6 +85,7 @@ class FixPolarizeFunctional : public Fix { void calculate_qiRqw_cutoff(); // qw, qq ion-interface terms + double *qiRqwVector; double **G1qw_real; double *sum2G2wq; @@ -93,10 +94,12 @@ class FixPolarizeFunctional : public Fix { double *sum2ndotGwq_epsilon; // conjugate gradient solver + double *cg_r; double *cg_p; double *cg_Ap; double **cg_A; + double tolerance; void calculate_matrix_multiply_vector(double **, double *, double *, int); double inner_product(double*, double*, int); diff --git a/src/atom.cpp b/src/atom.cpp index 75181abbd7..f6c7e53975 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -2661,6 +2661,14 @@ void *Atom::extract(const char *name) if (strcmp(name,"dpdTheta") == 0) return (void *) dpdTheta; if (strcmp(name,"edpd_temp") == 0) return (void *) edpd_temp; + // USER-DIELECTRIC + if (strcmp(name,"area") == 0) return (void *) area; + if (strcmp(name,"ed") == 0) return (void *) ed; + if (strcmp(name,"em") == 0) return (void *) em; + if (strcmp(name,"epsilon") == 0) return (void *) epsilon; + if (strcmp(name,"curvature") == 0) return (void *) curvature; + if (strcmp(name,"q_unscaled") == 0) return (void *) q_unscaled; + // end of customization section // -------------------------------------------------------------------- @@ -2744,6 +2752,14 @@ int Atom::extract_datatype(const char *name) if (strcmp(name,"dpdTheta") == 0) return LAMMPS_DOUBLE; if (strcmp(name,"edpd_temp") == 0) return LAMMPS_DOUBLE; + // USER-DIELECTRIC + if (strcmp(name,"area") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"ed") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"em") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"epsilon") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"curvature") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"q_unscaled") == 0) return LAMMPS_DOUBLE; + // end of customization section // -------------------------------------------------------------------- From 49536ce02c5e8e563cf79597ef2aeb39d51b972b Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 1 Jun 2021 15:15:11 -0400 Subject: [PATCH 17/80] Make compliance.py Python 3 compatible --- examples/ELASTIC/compliance.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/examples/ELASTIC/compliance.py b/examples/ELASTIC/compliance.py index 6ef35be553..47f680abb4 100755 --- a/examples/ELASTIC/compliance.py +++ b/examples/ELASTIC/compliance.py @@ -1,13 +1,14 @@ #!/usr/bin/env python # This file reads in the file log.lammps generated by the script ELASTIC/in.elastic -# It prints out the 6x6 tensor of elastic constants Cij +# It prints out the 6x6 tensor of elastic constants Cij # followed by the 6x6 tensor of compliance constants Sij # It uses the same conventions as described in: -# Sprik, Impey and Klein PRB (1984). +# Sprik, Impey and Klein PRB (1984). # The units of Cij are whatever was used in log.lammps (usually GPa) # The units of Sij are the inverse of that (usually 1/GPa) +from __future__ import print_function from numpy import zeros from numpy.linalg import inv @@ -44,9 +45,8 @@ cindices[20] = (4,5) # open logfile -logfile = open("log.lammps",'r') - -txt = logfile.read() +with open("log.lammps",'r') as logfile: + txt = logfile.read() # search for 21 elastic constants @@ -56,7 +56,7 @@ s2 = 0 for ival in range(nvals): s1 = txt.find(valstr,s2) if (s1 == -1): - print "Failed to find elastic constants in log file" + print("Failed to find elastic constants in log file") exit(1) s1 += 1 s2 = txt.find("\n",s1) @@ -67,18 +67,18 @@ for ival in range(nvals): c[i1,i2] = float(words[valpos]) c[i2,i1] = c[i1,i2] -print "C tensor [GPa]" +print("C tensor [GPa]") for i in range(6): for j in range(6): - print "%10.8g " % c[i][j], - print - + print("%10.8g " % c[i][j], end="") + print() + # apply factor of 2 to columns of off-diagonal elements for i in range(6): for j in range(3,6): c[i][j] *= 2.0 - + s = inv(c) # apply factor of 1/2 to columns of off-diagonal elements @@ -86,10 +86,9 @@ s = inv(c) for i in range(6): for j in range(3,6): s[i][j] *= 0.5 - -print "S tensor [1/GPa]" + +print("S tensor [1/GPa]") for i in range(6): for j in range(6): - print "%10.8g " % s[i][j], - print - + print("%10.8g " % s[i][j], end="") + print() From 20ffacaf702b896edc50ceba597a7a91a099081c Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 1 Jun 2021 15:30:28 -0400 Subject: [PATCH 18/80] Add exception type --- python/lammps/__init__.py | 8 ++++---- python/lammps/core.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/python/lammps/__init__.py b/python/lammps/__init__.py index a51e0db207..816a9c626c 100644 --- a/python/lammps/__init__.py +++ b/python/lammps/__init__.py @@ -25,18 +25,18 @@ def get_version_number(): vstring = None if version_info.major == 3 and version_info.minor >= 8: - from importlib.metadata import version + from importlib.metadata import version, PackageNotFoundError try: vstring = version('lammps') - except: + except PackageNotFoundError: # nothing to do, ignore pass else: - from pkg_resources import get_distribution + from pkg_resources import get_distribution, DistributionNotFound try: vstring = get_distribution('lammps').version - except: + except DistributionNotFound: # nothing to do, ignore pass diff --git a/python/lammps/core.py b/python/lammps/core.py index 800a1eab29..9941b41bed 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -100,7 +100,7 @@ class lammps(object): try: if ptr: self.lib = CDLL("",RTLD_GLOBAL) - except: + except OSError: self.lib = None # load liblammps.so unless name is given @@ -307,7 +307,7 @@ class lammps(object): from mpi4py import __version__ as mpi4py_version # tested to work with mpi4py versions 2 and 3 self.has_mpi4py = mpi4py_version.split('.')[0] in ['2','3'] - except: + except ImportError: # ignore failing import pass From 0d0c0ab13617823fe3d7fe8d55224a7ede6c405e Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 1 Jun 2021 15:31:00 -0400 Subject: [PATCH 19/80] Move import to get_ctypes_int() function --- python/lammps/constants.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/python/lammps/constants.py b/python/lammps/constants.py index f21bb69732..a50d58b28f 100644 --- a/python/lammps/constants.py +++ b/python/lammps/constants.py @@ -11,8 +11,6 @@ # See the README file in the top-level LAMMPS directory. # ------------------------------------------------------------------------- -from ctypes import c_int, c_int32, c_int64 - # various symbolic constants to be used # in certain calls to select data formats LAMMPS_AUTODETECT = None @@ -42,6 +40,7 @@ LMP_VAR_ATOM = 1 # ------------------------------------------------------------------------- def get_ctypes_int(size): + from ctypes import c_int, c_int32, c_int64 if size == 4: return c_int32 elif size == 8: From 62675e6e2b123bbfedef1a50ec904884997e57eb Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 1 Jun 2021 16:57:19 -0400 Subject: [PATCH 20/80] Minor fixes in pizza tools --- python/examples/pizza/dump.py | 14 +++++++------- python/examples/pizza/gl.py | 6 +++--- python/examples/pizza/gnu.py | 12 ++++++------ python/examples/pizza/pdbfile.py | 12 ++++++------ python/examples/pizza/vizinfo.py | 10 +++++----- python/examples/pizza/vmd.py | 13 ++++++------- 6 files changed, 33 insertions(+), 34 deletions(-) diff --git a/python/examples/pizza/dump.py b/python/examples/pizza/dump.py index 14645ac1f3..443ced1949 100644 --- a/python/examples/pizza/dump.py +++ b/python/examples/pizza/dump.py @@ -275,7 +275,7 @@ class dump: print("no column assignments made") elif len(self.names): print("assigned columns:",self.names2str()) - elif self.snaps[0].atoms == None: + elif self.snaps[0].atoms is None: print("no column assignments made") elif len(self.snaps[0].atoms[0]) == 5: self.map(1,"id",2,"type",3,"x",4,"y",5,"z") @@ -969,12 +969,12 @@ class dump: xhi = yhi = zhi = None for snap in self.snaps: if not snap.tselect: continue - if xlo == None or snap.xlo < xlo: xlo = snap.xlo - if xhi == None or snap.xhi > xhi: xhi = snap.xhi - if ylo == None or snap.ylo < ylo: ylo = snap.ylo - if yhi == None or snap.yhi > yhi: yhi = snap.yhi - if zlo == None or snap.zlo < zlo: zlo = snap.zlo - if zhi == None or snap.zhi > zhi: zhi = snap.zhi + if xlo is None or snap.xlo < xlo: xlo = snap.xlo + if xhi is None or snap.xhi > xhi: xhi = snap.xhi + if ylo is None or snap.ylo < ylo: ylo = snap.ylo + if yhi is None or snap.yhi > yhi: yhi = snap.yhi + if zlo is None or snap.zlo < zlo: zlo = snap.zlo + if zhi is None or snap.zhi > zhi: zhi = snap.zhi return [xlo,ylo,zlo,xhi,yhi,zhi] # -------------------------------------------------------------------- diff --git a/python/examples/pizza/gl.py b/python/examples/pizza/gl.py index 908db67052..d4b4f313c3 100644 --- a/python/examples/pizza/gl.py +++ b/python/examples/pizza/gl.py @@ -851,7 +851,7 @@ class gl: ncolor = self.vizinfo.ntcolor for tri in self.tridraw: itype = int(tri[1]) - if itype > ncolor: raise StandardError("tri type too big") + if itype > ncolor: raise Exception("tri type too big") red,green,blue = self.vizinfo.tcolor[itype] glMaterialfv(GL_FRONT_AND_BACK,GL_EMISSION,[red,green,blue,1.0]); glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,self.shiny); @@ -909,7 +909,7 @@ class gl: ymin >= ylo and ymax <= yhi and zmin >= zlo and zmax <= zhi: if bond[10] > bound: continue itype = int(bond[1]) - if itype > ncolor: raise StandardError("bond type too big") + if itype > ncolor: raise Exception("bond type too big") red,green,blue = self.vizinfo.bcolor[itype] rad = self.vizinfo.brad[itype] glPushMatrix() @@ -941,7 +941,7 @@ class gl: ymin >= ylo and ymax <= yhi and \ zmin >= zlo and zmax <= zhi: itype = int(tri[1]) - if itype > ncolor: raise StandardError("tri type too big") + if itype > ncolor: raise Exception("tri type too big") red,green,blue = self.vizinfo.tcolor[itype] glMaterialfv(GL_FRONT_AND_BACK,GL_EMISSION, [red,green,blue,1.0]); diff --git a/python/examples/pizza/gnu.py b/python/examples/pizza/gnu.py index 7d796d5586..1336e180e0 100644 --- a/python/examples/pizza/gnu.py +++ b/python/examples/pizza/gnu.py @@ -87,12 +87,12 @@ g.curve(N,'r') set color of curve N # Imports and external programs -import types, os +import os try: from DEFAULTS import PIZZA_GNUPLOT -except: PIZZA_GNUPLOT = "gnuplot -p" +except ImportError: PIZZA_GNUPLOT = "gnuplot -p" try: from DEFAULTS import PIZZA_GNUTERM -except: PIZZA_GNUTERM = "x11" +except ImportError: PIZZA_GNUTERM = "x11" # Class definition @@ -122,7 +122,7 @@ class gnu: def enter(self): while 1: - command = raw_input("gnuplot> ") + command = input("gnuplot> ") if command == "quit" or command == "exit": return self.__call__(command) @@ -136,7 +136,7 @@ class gnu: self.export(file,linear,vectors[0]) self.figures[self.current-1].ncurves = 1 else: - if len(vectors) % 2: raise StandardError("vectors must come in pairs") + if len(vectors) % 2: raise Exception("vectors must come in pairs") for i in range(0,len(vectors),2): file = self.file + ".%d.%d" % (self.current,i/2+1) self.export(file,vectors[i],vectors[i+1]) @@ -170,7 +170,7 @@ class gnu: def export(self,filename,*vectors): n = len(vectors[0]) for vector in vectors: - if len(vector) != n: raise StandardError("vectors must be same length") + if len(vector) != n: raise Exception("vectors must be same length") f = open(filename,'w') nvec = len(vectors) for i in range(n): diff --git a/python/examples/pizza/pdbfile.py b/python/examples/pizza/pdbfile.py index 51c8860424..64e77db75f 100644 --- a/python/examples/pizza/pdbfile.py +++ b/python/examples/pizza/pdbfile.py @@ -68,7 +68,7 @@ index,time,flag = p.iterator(1) # Imports and external programs -import sys, types, glob, urllib +import sys, glob, urllib PY3 = sys.version_info[0] == 3 if PY3: @@ -93,7 +93,7 @@ class pdbfile: elif len(args) == 2: filestr = args[0] self.data = args[1] - else: raise StandardError("invalid args for pdb()") + else: raise Exception("invalid args for pdb()") # flist = full list of all PDB input file names # append .pdb if needed @@ -104,17 +104,17 @@ class pdbfile: for file in list: if '*' in file: flist += glob.glob(file) else: flist.append(file) - for i in xrange(len(flist)): + for i in range(len(flist)): if flist[i][-4:] != ".pdb": flist[i] += ".pdb" if len(flist) == 0: - raise StandardError("no PDB file specified") + raise Exception("no PDB file specified") self.files = flist else: self.files = [] if len(self.files) > 1 and self.data: - raise StandardError("cannot use multiple PDB files with data object") + raise Exception("cannot use multiple PDB files with data object") if len(self.files) == 0 and not self.data: - raise StandardError("no input PDB file(s)") + raise Exception("no input PDB file(s)") # grab PDB file from http://rcsb.org if not a local file diff --git a/python/examples/pizza/vizinfo.py b/python/examples/pizza/vizinfo.py index acc421a1a6..ebf490584e 100644 --- a/python/examples/pizza/vizinfo.py +++ b/python/examples/pizza/vizinfo.py @@ -79,7 +79,7 @@ class vizinfo: # if list of types has a 0, increment each type value if 0 in ids: - for i in xrange(len(ids)): ids[i] += 1 + for i in range(len(ids)): ids[i] += 1 # extend storage list if necessary # extend other arrays for same "which" so that gl::make_atom_calllist @@ -109,7 +109,7 @@ class vizinfo: ntypes = len(ids) nrgbs = len(rgbs) - for i in xrange(ntypes): + for i in range(ntypes): id = ids[i] if rgbs[0] == "loop": @@ -157,7 +157,7 @@ class vizinfo: # if list of types has a 0, increment each type value if 0 in ids: - for i in xrange(len(ids)): ids[i] += 1 + for i in range(len(ids)): ids[i] += 1 # extend storage list if necessary # extend other arrays for same "which" so that gl::make_atom_calllist @@ -220,7 +220,7 @@ class vizinfo: # if list of types has a 0, increment each type value if 0 in ids: - for i in xrange(len(ids)): ids[i] += 1 + for i in range(len(ids)): ids[i] += 1 # extend storage list if necessary # extend other arrays for same "which" so that gl::make_atom_calllist @@ -234,7 +234,7 @@ class vizinfo: # if list lengths match, set directly, else set types to 1st fill value if len(fills) == len(ids): - for i in xrange(len(ids)): self.tfill[ids[i]] = int(fills[i]) + for i in range(len(ids)): self.tfill[ids[i]] = int(fills[i]) else: for id in ids: self.tfill[id] = int(fills[0]) diff --git a/python/examples/pizza/vmd.py b/python/examples/pizza/vmd.py index fb5095617a..72da0f1a1d 100644 --- a/python/examples/pizza/vmd.py +++ b/python/examples/pizza/vmd.py @@ -45,17 +45,16 @@ v.debug([True|False]) display generated VMD script commands? # Imports and external programs -import types, os -import numpy +import os try: from DEFAULTS import PIZZA_VMDNAME -except: PIZZA_VMDNAME = "vmd" +except ImportError: PIZZA_VMDNAME = "vmd" try: from DEFAULTS import PIZZA_VMDDIR -except: PIZZA_VMDDIR = "/usr/local/lib/vmd" +except ImportError: PIZZA_VMDDIR = "/usr/local/lib/vmd" try: from DEFAULTS import PIZZA_VMDDEV -except: PIZZA_VMDDEV = "win" +except ImportError: PIZZA_VMDDEV = "win" try: from DEFAULTS import PIZZA_VMDARCH -except: PIZZA_VMDARCH = "LINUXAMD64" +except ImportError: PIZZA_VMDARCH = "LINUXAMD64" # try these settings for a Mac #PIZZA_VMDNAME = "vmd" @@ -64,7 +63,7 @@ except: PIZZA_VMDARCH = "LINUXAMD64" #PIZZA_VMDARCH = "MACOSXX86" try: import pexpect -except: +except ImportError: print("pexpect from http://pypi.python.org/pypi/pexpect", \ "is required for vmd tool") raise From 313389c0adb876c65023db290f86e518f58ea5d4 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 1 Jun 2021 16:57:37 -0400 Subject: [PATCH 21/80] Correct title in gnuplot graph --- python/examples/plot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/examples/plot.py b/python/examples/plot.py index c67509f650..e831535e2c 100755 --- a/python/examples/plot.py +++ b/python/examples/plot.py @@ -57,7 +57,7 @@ if me == 0: gn = gnu() gn.plot(xaxis,yaxis) gn.xrange(0,nsteps) - gn.title(compute,"Timestep","Temperature") + gn.title(compute.replace('_', ' '),"Timestep","Temperature") # run nfreq steps at a time w/out pre/post, query compute, refresh plot From 6c86abc3b3395fa4a3b2cab124c50581650fb8b7 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 1 Jun 2021 16:59:00 -0400 Subject: [PATCH 22/80] Use default matplotlib engine and use pause for animation --- python/examples/matplotlib_plot.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/python/examples/matplotlib_plot.py b/python/examples/matplotlib_plot.py index d4e304aa19..af0a452130 100755 --- a/python/examples/matplotlib_plot.py +++ b/python/examples/matplotlib_plot.py @@ -13,8 +13,6 @@ from __future__ import print_function import sys sys.path.append("./pizza") -import matplotlib -matplotlib.use('tkagg') import matplotlib.pyplot as plt # parse command line @@ -79,7 +77,8 @@ while ntimestep < nsteps: ax = plt.gca() ax.relim() ax.autoscale_view(True, True, True) - fig.canvas.draw() + plt.pause(0.001) + lmp.command("run 0 pre no post yes") From faccf52922c811904d174bcd4f6a46d18c4e745b Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 1 Jun 2021 16:31:13 -0500 Subject: [PATCH 23/80] Updated dielectric/omp pair styles --- src/USER-DIELECTRIC/msm_dielectric.cpp | 6 ++-- .../pair_coul_cut_dielectric.cpp | 9 ++--- .../pair_coul_long_dielectric.cpp | 2 +- .../pair_lj_cut_coul_cut_dielectric.cpp | 8 ++--- .../pair_lj_cut_coul_cut_dielectric_omp.cpp | 18 +++++----- .../pair_lj_cut_coul_long_dielectric.cpp | 16 ++++----- .../pair_lj_cut_coul_long_dielectric_omp.cpp | 33 +++++++------------ .../pair_lj_cut_coul_msm_dielectric.cpp | 13 ++++---- src/USER-DIELECTRIC/pppm_dielectric.cpp | 8 ++--- 9 files changed, 49 insertions(+), 64 deletions(-) diff --git a/src/USER-DIELECTRIC/msm_dielectric.cpp b/src/USER-DIELECTRIC/msm_dielectric.cpp index b6290405c1..6626f196e1 100644 --- a/src/USER-DIELECTRIC/msm_dielectric.cpp +++ b/src/USER-DIELECTRIC/msm_dielectric.cpp @@ -41,8 +41,8 @@ enum{FORWARD_RHO,FORWARD_AD,FORWARD_AD_PERATOM}; MSMDielectric::MSMDielectric(LAMMPS *lmp) : MSM(lmp) { - efield = NULL; - phi = NULL; + efield = nullptr; + phi = nullptr; } /* ---------------------------------------------------------------------- @@ -64,7 +64,7 @@ void MSMDielectric::init() MSM::init(); avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"pppm/dielectric requires atom style dielectric"); + if (!avec) error->all(FLERR,"msm/dielectric requires atom style dielectric"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp index 724fac2fac..b65b38f80e 100644 --- a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp @@ -40,7 +40,7 @@ using namespace MathConst; PairCoulCutDielectric::PairCoulCutDielectric(LAMMPS *lmp) : PairCoulCut(lmp) { - efield = NULL; + efield = nullptr; nmax = 0; } @@ -104,6 +104,7 @@ void PairCoulCutDielectric::compute(int eflag, int vflag) jnum = numneigh[i]; // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + double curvature_threshold = sqrt(area[i]); if (curvature[i] < curvature_threshold) { double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; @@ -178,9 +179,9 @@ void PairCoulCutDielectric::init_style() /* ---------------------------------------------------------------------- */ double PairCoulCutDielectric::single(int i, int j, int itype, int jtype, - double rsq, - double factor_coul, double factor_lj, - double &fforce) + double rsq, + double factor_coul, double factor_lj, + double &fforce) { double r2inv,forcecoul,phicoul,ei,ej; double* eps = atom->epsilon; diff --git a/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp index 6b3a38e00f..2da13b7343 100644 --- a/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp @@ -47,7 +47,7 @@ using namespace MathConst; PairCoulLongDielectric::PairCoulLongDielectric(LAMMPS *lmp) : PairCoulLong(lmp) { - efield = NULL; + efield = nullptr; nmax = 0; } diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp index 8a60ccd31b..a66406d4f5 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp @@ -29,7 +29,6 @@ #include "memory.h" #include -#include using namespace LAMMPS_NS; using namespace MathConst; @@ -38,10 +37,11 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -PairLJCutCoulCutDielectric::PairLJCutCoulCutDielectric(LAMMPS *lmp) : PairLJCutCoulCut(lmp) +PairLJCutCoulCutDielectric::PairLJCutCoulCutDielectric(LAMMPS *lmp) : + PairLJCutCoulCut(lmp) { - efield = NULL; - epot = NULL; + efield = nullptr; + epot = nullptr; nmax = 0; } diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp index 6056c37cb8..c95312c105 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp @@ -15,13 +15,9 @@ Contributing author: Trung Nguyen (Northwestern) ------------------------------------------------------------------------- */ -#include -#include -#include -#include #include "pair_lj_cut_coul_cut_dielectric_omp.h" + #include "atom.h" -#include "atom_vec_dielectric.h" #include "comm.h" #include "force.h" #include "neighbor.h" @@ -31,6 +27,8 @@ #include "memory.h" #include "error.h" +#include + using namespace LAMMPS_NS; using namespace MathConst; @@ -79,7 +77,7 @@ void PairLJCutCoulCutDielectricOMP::compute(int eflag, int vflag) loop_setup_thr(ifrom, ito, tid, inum, nthreads); ThrData *thr = fix->get_thr(tid); thr->timer(Timer::START); - ev_setup_thr(eflag, vflag, nall, eatom, vatom, thr); + ev_setup_thr(eflag, vflag, nall, eatom, vatom, nullptr, thr); if (evflag) { if (eflag) { @@ -116,10 +114,10 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData * const t const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0]; dbl3_t * _noalias const f = (dbl3_t *) thr->get_f()[0]; const double * _noalias const q = atom->q; - const double * _noalias const eps = avec->epsilon; - const dbl3_t * _noalias const norm = (dbl3_t *) avec->mu[0]; - const double * _noalias const curvature = avec->curvature; - const double * _noalias const area = avec->area; + const double * _noalias const eps = atom->epsilon; + const dbl3_t * _noalias const norm = (dbl3_t *) atom->mu[0]; + const double * _noalias const curvature = atom->curvature; + const double * _noalias const area = atom->area; const int * _noalias const type = atom->type; const int nlocal = atom->nlocal; const double * _noalias const special_coul = force->special_coul; diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp index 4967358aa4..7a14de640c 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp @@ -22,18 +22,14 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "integrate.h" #include "kspace.h" #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" #include "math_const.h" #include "memory.h" -#include "respa.h" -#include "update.h" #include -#include using namespace LAMMPS_NS; using namespace MathConst; @@ -50,12 +46,13 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -PairLJCutCoulLongDielectric::PairLJCutCoulLongDielectric(LAMMPS *lmp) : PairLJCutCoulLong(lmp) +PairLJCutCoulLongDielectric::PairLJCutCoulLongDielectric(LAMMPS *lmp) : + PairLJCutCoulLong(lmp) { respa_enable = 0; - cut_respa = NULL; - efield = NULL; - epot = NULL; + cut_respa = nullptr; + efield = nullptr; + epot = nullptr; nmax = 0; } @@ -124,7 +121,8 @@ void PairLJCutCoulLongDielectric::compute(int eflag, int vflag) jlist = firstneigh[i]; jnum = numneigh[i]; - // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al. + double curvature_threshold = sqrt(area[i]); if (curvature[i] < curvature_threshold) { double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp index 952df57533..935991bbe1 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp @@ -15,26 +15,18 @@ Contributing author: Trung Nguyen (Northwestern) ------------------------------------------------------------------------- */ -#include -#include -#include -#include #include "pair_lj_cut_coul_long_dielectric_omp.h" + #include "atom.h" -#include "atom_vec_dielectric.h" #include "comm.h" #include "force.h" -#include "kspace.h" -#include "update.h" -#include "integrate.h" -#include "respa.h" -#include "neighbor.h" #include "neigh_list.h" -#include "neigh_request.h" #include "math_const.h" #include "memory.h" -#include "error.h" +#include + +#include "omp_compat.h" using namespace LAMMPS_NS; using namespace MathConst; @@ -46,8 +38,6 @@ using namespace MathConst; #define A4 -1.453152027 #define A5 1.061405429 -#define EPSILON 1e-6 - /* ---------------------------------------------------------------------- */ PairLJCutCoulLongDielectricOMP::PairLJCutCoulLongDielectricOMP(LAMMPS *lmp) : @@ -58,7 +48,7 @@ PairLJCutCoulLongDielectricOMP::PairLJCutCoulLongDielectricOMP(LAMMPS *lmp) : /* ---------------------------------------------------------------------- */ PairLJCutCoulLongDielectricOMP::~PairLJCutCoulLongDielectricOMP() -{ +{ } /* ---------------------------------------------------------------------- */ @@ -90,7 +80,7 @@ void PairLJCutCoulLongDielectricOMP::compute(int eflag, int vflag) loop_setup_thr(ifrom, ito, tid, inum, nthreads); ThrData *thr = fix->get_thr(tid); thr->timer(Timer::START); - ev_setup_thr(eflag, vflag, nall, eatom, vatom, thr); + ev_setup_thr(eflag, vflag, nall, eatom, vatom, nullptr, thr); if (evflag) { if (eflag) { @@ -127,10 +117,10 @@ void PairLJCutCoulLongDielectricOMP::eval(int iifrom, int iito, ThrData * const const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0]; dbl3_t * _noalias const f = (dbl3_t *) thr->get_f()[0]; const double * _noalias const q = atom->q; - const double * _noalias const eps = avec->epsilon; - const dbl3_t * _noalias const norm = (dbl3_t *) avec->mu[0]; - const double * _noalias const curvature = avec->curvature; - const double * _noalias const area = avec->area; + const double * _noalias const eps = atom->epsilon; + const dbl3_t * _noalias const norm = (dbl3_t *) atom->mu[0]; + const double * _noalias const curvature = atom->curvature; + const double * _noalias const area = atom->area; const int * _noalias const type = atom->type; const int nlocal = atom->nlocal; const double * _noalias const special_coul = force->special_coul; @@ -159,7 +149,8 @@ void PairLJCutCoulLongDielectricOMP::eval(int iifrom, int iito, ThrData * const fxtmp=fytmp=fztmp=0.0; extmp=eytmp=eztmp=0.0; - // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al + // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al. + double curvature_threshold = sqrt(area[i]); if (curvature[i] < curvature_threshold) { double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp index c87c46ade6..ce89d718a8 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp @@ -29,11 +29,8 @@ #include "neigh_request.h" #include "math_const.h" #include "memory.h" -#include "respa.h" -#include "update.h" #include -#include using namespace LAMMPS_NS; using namespace MathConst; @@ -42,16 +39,17 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -PairLJCutCoulMSMDielectric::PairLJCutCoulMSMDielectric(LAMMPS *lmp) : PairLJCutCoulLong(lmp) +PairLJCutCoulMSMDielectric::PairLJCutCoulMSMDielectric(LAMMPS *lmp) : + PairLJCutCoulLong(lmp) { ewaldflag = pppmflag = 0; msmflag = 1; respa_enable = 0; - cut_respa = NULL; + cut_respa = nullptr; nmax = 0; - ftmp = NULL; - efield = NULL; + ftmp = nullptr; + efield = nullptr; } /* ---------------------------------------------------------------------- */ @@ -220,6 +218,7 @@ void PairLJCutCoulMSMDielectric::compute(int eflag, int vflag) f[j][2] -= delz*fpair_j; } } else { + // separate LJ and Coulombic forces fpair = (factor_lj*forcelj) * r2inv; diff --git a/src/USER-DIELECTRIC/pppm_dielectric.cpp b/src/USER-DIELECTRIC/pppm_dielectric.cpp index d9c957aaa3..ea62618efd 100644 --- a/src/USER-DIELECTRIC/pppm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pppm_dielectric.cpp @@ -17,10 +17,8 @@ #include "pppm_dielectric.h" -#include "angle.h" #include "atom.h" #include "atom_vec_dielectric.h" -#include "bond.h" #include "comm.h" #include "domain.h" #include "error.h" @@ -35,7 +33,7 @@ #include "remap_wrap.h" #include -#include +//#include using namespace LAMMPS_NS; using namespace MathConst; @@ -60,8 +58,8 @@ PPPMDielectric::PPPMDielectric(LAMMPS *lmp) : PPPM(lmp) { group_group_enable = 0; - efield = NULL; - phi = NULL; + efield = nullptr; + phi = nullptr; potflag = 0; avec = (AtomVecDielectric *) atom->style_match("dielectric"); From 232ae5e8568a413cc7f3524ca718d0d5b72c7914 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 1 Jun 2021 17:36:45 -0400 Subject: [PATCH 24/80] Fix typo in core.py --- python/lammps/core.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/python/lammps/core.py b/python/lammps/core.py index 9941b41bed..13743a16ff 100644 --- a/python/lammps/core.py +++ b/python/lammps/core.py @@ -312,8 +312,7 @@ class lammps(object): pass # if no ptr provided, create an instance of LAMMPS - # don't know how to pass an MPI communicator from PyPar - # but we can pass an MPI communicator from mpi4py v2.0.0 and later + # we can pass an MPI communicator from mpi4py v2.0.0 and later # no_mpi call lets LAMMPS use MPI_COMM_WORLD # cargs = array of C strings from args # if ptr, then are embedding Python in LAMMPS input script @@ -1134,10 +1133,10 @@ class lammps(object): with ExceptionCheck(self): if dtype == 0: data = ((count*natoms)*c_int)() - self.lib.lammps_gather_atoms(self.lmp,name,type,count,data) + self.lib.lammps_gather_atoms(self.lmp,name,dtype,count,data) elif dtype == 1: data = ((count*natoms)*c_double)() - self.lib.lammps_gather_atoms(self.lmp,name,type,count,data) + self.lib.lammps_gather_atoms(self.lmp,name,dtype,count,data) else: return None return data @@ -1150,10 +1149,10 @@ class lammps(object): with ExceptionCheck(self): if dtype == 0: data = ((count*natoms)*c_int)() - self.lib.lammps_gather_atoms_concat(self.lmp,name,type,count,data) + self.lib.lammps_gather_atoms_concat(self.lmp,name,dtype,count,data) elif dtype == 1: data = ((count*natoms)*c_double)() - self.lib.lammps_gather_atoms_concat(self.lmp,name,type,count,data) + self.lib.lammps_gather_atoms_concat(self.lmp,name,dtype,count,data) else: return None return data From 400b55e6d54fa1a1e96d9e1f615e82510fceeb02 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 1 Jun 2021 17:51:06 -0400 Subject: [PATCH 25/80] Remove mentions of Pypar --- python/README | 25 +++++++++++++------------ python/examples/.gitignore | 1 + python/examples/matplotlib_plot.py | 17 +++++++---------- python/examples/simple.py | 10 +--------- 4 files changed, 22 insertions(+), 31 deletions(-) create mode 100644 python/examples/.gitignore diff --git a/python/README b/python/README index 204ca2c28d..0757a84cd6 100644 --- a/python/README +++ b/python/README @@ -38,13 +38,14 @@ Once you have successfully wrapped LAMMPS, you can run the Python scripts in the examples sub-directory: trivial.py read/run a LAMMPS input script thru Python -demo.py invoke various LAMMPS library interface routines -simple.py parallel example, mimicing examples/COUPLE/simple/simple.cpp +demo.py invoke various LAMMPS library interface routines +simple.py parallel example, mimicing examples/COUPLE/simple/simple.cpp split.py parallel example mc.py Monte Carlo energy relaxation wrapper on LAMMPS -gui.py GUI go/stop/temperature-slider to control LAMMPS -plot.py real-time temperature plot with GnuPlot via Pizza.py -viz_tool.py real-time viz via some viz package +gui.py GUI go/stop/temperature-slider to control LAMMPS +plot.py real-time temperature plot with GnuPlot via Pizza.py +matplotlib_plot.py real-time temperature plot with Matplotlib via Pizza.py +viz_tool.py real-time viz via some viz package vizplotgui_tool.py combination of viz.py and plot.py and gui.py For the viz_tool.py and vizplotgui_tool.py commands, replace "tool" @@ -100,24 +101,24 @@ split.py in.simple # can run in parallel (see below) gui.py in.gui 100 plot.py in.plot 10 1000 thermo_temp +matplotlib_plot.py in.plot 10 1000 thermo_temp viz_tool.py in.viz 100 5000 vizplotgui_tool.py in.viz 100 thermo_temp To run LAMMPS in parallel from Python, so something like this: -% mpirun -np 4 simple.py in.simple -% mpirun -np 4 python split.py in.simple +% mpirun -np P simple.py in.simple +% mpirun -np P python split.py in.simple If you run simple.py as-is, this will invoke P instances of a one-processor run, where both Python and LAMMPS will run on single processors. Each running job will read the same input file, and write to same log.lammps file, which isn't too useful. -However, if you have either the Pypar or mpi4py packages installed in -your Python, and uncomment the Pypar or mpi4py code in simple.py, then -the above commands will invoke 1 instance of a P-processor run. Both -Python and LAMMPS will run on P processors. The job will read the -input file and write a single log.lammps file. +However, if you have the mpi4py Python package installed and uncomment mpi4py +code in simple.py, then the above commands will invoke 1 instance of a +P-processor run. Both Python and LAMMPS will run on P processors. The job will +read the input file and write a single log.lammps file. The split.py script can also be run in parallel. It uses mpi4py version 2.0.0 (or later), which makes it possible to pass a diff --git a/python/examples/.gitignore b/python/examples/.gitignore new file mode 100644 index 0000000000..ee4173f0a4 --- /dev/null +++ b/python/examples/.gitignore @@ -0,0 +1 @@ +/tmp* diff --git a/python/examples/matplotlib_plot.py b/python/examples/matplotlib_plot.py index af0a452130..972a035b4f 100755 --- a/python/examples/matplotlib_plot.py +++ b/python/examples/matplotlib_plot.py @@ -28,10 +28,10 @@ nsteps = int(sys.argv[3]) compute = sys.argv[4] me = 0 -# uncomment if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() +# uncomment this if running in parallel via mpi4py +#from mpi4py import MPI +#me = MPI.COMM_WORLD.Get_rank() +#nprocs = MPI.COMM_WORLD.Get_size() from lammps import lammps lmp = lammps() @@ -82,11 +82,8 @@ while ntimestep < nsteps: lmp.command("run 0 pre no post yes") -# uncomment if running in parallel via Pypar +# uncomment if running in parallel via mpi4py #print("Proc %d out of %d procs has" % (me,nprocs), lmp) -#pypar.finalize() -if sys.version_info[0] == 3: - input("Press Enter to exit...") -else: - raw_input("Press Enter to exit...") +if me == 0: + input("Press Enter to exit...") diff --git a/python/examples/simple.py b/python/examples/simple.py index 9f85d8b4df..861a208895 100755 --- a/python/examples/simple.py +++ b/python/examples/simple.py @@ -9,7 +9,7 @@ # Parallel syntax: mpirun -np 4 simple.py in.lammps # in.lammps = LAMMPS input script -# also need to uncomment either Pypar or mpi4py sections below +# also need to uncomment mpi4py sections below from __future__ import print_function import sys @@ -27,11 +27,6 @@ infile = sys.argv[1] me = 0 -# uncomment this if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() - # uncomment this if running in parallel via mpi4py #from mpi4py import MPI #me = MPI.COMM_WORLD.Get_rank() @@ -133,8 +128,5 @@ lmp.reset_box([0,0,0],[10,10,8],0,0,0) boxlo,boxhi,xy,yz,xz,periodicity,box_change = lmp.extract_box() if me == 0: print("Box info",boxlo,boxhi,xy,yz,xz,periodicity,box_change) -# uncomment if running in parallel via Pypar -#print("Proc %d out of %d procs has" % (me,nprocs), lmp) - # uncomment if running in parallel via mpi4py #print("Proc %d out of %d procs has" % (me,nprocs), lmp) From f2974d3b1b4236a92bb8ee9a01998eb9e201c79d Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Tue, 1 Jun 2021 16:54:47 -0500 Subject: [PATCH 26/80] More cleanup to fix polarize* --- .../fix_polarize_bem_gmres.cpp | 16 ++--- src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 6 +- .../fix_polarize_functional.cpp | 62 +++++++++---------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp index 05b5cf8a83..ba8de73295 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -106,20 +106,20 @@ FixPolarizeBEMGMRES::FixPolarizeBEMGMRES(LAMMPS *lmp, int narg, char **arg) : randomized = 0; ave_charge = 0; - efield_pair = NULL; - efield_kspace = NULL; + efield_pair = nullptr; + efield_kspace = nullptr; comm_forward = 1; nmax = 0; allocated = 0; kspaceflag = 0; - induced_charge_idx = NULL; - induced_charges = NULL; - rhs = NULL; - buffer = NULL; - tag2mat = NULL; - mat2tag = NULL; + induced_charge_idx = nullptr; + induced_charges = nullptr; + rhs = nullptr; + buffer = nullptr; + tag2mat = nullptr; + mat2tag = nullptr; // set flags for arrays to clear in force_clear() diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp index f5da42c6f8..99b5b7757d 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -43,7 +43,7 @@ #include "pair_lj_cut_coul_msm_dielectric.h" #include "pppm_dielectric.h" #include "random_park.h" -#include "timer.h" +//#include "timer.h" #include "update.h" #include @@ -93,8 +93,8 @@ FixPolarizeBEMICC::FixPolarizeBEMICC(LAMMPS *lmp, int narg, char **arg) : randomized = 0; ave_charge = 0; - efield_pair = NULL; - efield_kspace = NULL; + efield_pair = nullptr; + efield_kspace = nullptr; comm_forward = 1; kspaceflag = 0; diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index 8c2a7946ff..74313cae3f 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -104,18 +104,18 @@ FixPolarizeFunctional::FixPolarizeFunctional(LAMMPS *lmp, int narg, char **arg) nmax = 0; allocated = 0; - induced_charge_idx = NULL; - induced_charges = NULL; - tag2mat = NULL; - mat2tag = NULL; - tag2mat_ions = NULL; - mat2tag_ions = NULL; - ion_idx = NULL; + induced_charge_idx = nullptr; + induced_charges = nullptr; + tag2mat = nullptr; + mat2tag = nullptr; + tag2mat_ions = nullptr; + mat2tag_ions = nullptr; + ion_idx = nullptr; - rhs1 = NULL; - rhs2 = NULL; - buffer1 = NULL; - buffer2 = NULL; + rhs1 = nullptr; + rhs2 = nullptr; + buffer1 = nullptr; + buffer2 = nullptr; // set flags for arrays to clear in force_clear() @@ -123,28 +123,28 @@ FixPolarizeFunctional::FixPolarizeFunctional(LAMMPS *lmp, int narg, char **arg) if (atom->torque_flag) torqueflag = 1; if (atom->avec->forceclearflag) extraflag = 1; - Rww = NULL; - inverse_matrix = NULL; - G1ww = NULL; - G2ww = NULL; - G3ww = NULL; - ndotGww = NULL; + Rww = nullptr; + inverse_matrix = nullptr; + G1ww = nullptr; + G2ww = nullptr; + G3ww = nullptr; + ndotGww = nullptr; - qiRqwVector = NULL; - G1qw_real = NULL; - sum2G2wq = NULL; + qiRqwVector = nullptr; + G1qw_real = nullptr; + sum2G2wq = nullptr; - sum1G2qw = NULL; - sum1G1qw_epsilon = NULL; - sum2ndotGwq_epsilon = NULL; + sum1G2qw = nullptr; + sum1G1qw_epsilon = nullptr; + sum2ndotGwq_epsilon = nullptr; - efield_pair = NULL; - efield_kspace = NULL; + efield_pair = nullptr; + efield_kspace = nullptr; includingG3ww = 1; - cg_r = cg_p = cg_Ap = NULL; - cg_A = NULL; + cg_r = cg_p = cg_Ap = nullptr; + cg_A = nullptr; grow_arrays(atom->nmax); atom->add_callback(0); // to ensure to work with atom->sort() @@ -192,7 +192,7 @@ void FixPolarizeFunctional::init() int nlocal = atom->nlocal; tagint max_tag; tagint itmp; - int *ncount = NULL; + int *ncount = nullptr; // induced charge arrays setup @@ -507,9 +507,9 @@ int FixPolarizeFunctional::modify_param(int narg, char **arg) int set_charge=0; double ediff = utils::numeric(FLERR,arg[iarg+1],false,lmp); double emean = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (strcmp(arg[iarg+3],"NULL") != 0) epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); - if (strcmp(arg[iarg+4],"NULL") != 0) areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); - if (strcmp(arg[iarg+5],"NULL") != 0) { + if (strcmp(arg[iarg+3],"nullptr") != 0) epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); + if (strcmp(arg[iarg+4],"nullptr") != 0) areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); + if (strcmp(arg[iarg+5],"nullptr") != 0) { qreali = utils::numeric(FLERR,arg[iarg+5],false,lmp); set_charge = 1; } From 0aaad3923333c7c077e8fb7df9e5561c4916bd66 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Tue, 1 Jun 2021 18:10:47 -0400 Subject: [PATCH 27/80] Remove MPI comments in gui.py --- python/examples/gui.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/python/examples/gui.py b/python/examples/gui.py index ac96448b43..f1090b20d7 100755 --- a/python/examples/gui.py +++ b/python/examples/gui.py @@ -7,8 +7,7 @@ # in.lammps = LAMMPS input script # Nfreq = query GUI every this many steps -# IMPORTANT: this script cannot yet be run in parallel via Pypar, -# because I can't seem to do a MPI-style broadcast in Pypar +# IMPORTANT: this script cannot yet be run in parallel from __future__ import print_function import sys,time @@ -39,10 +38,6 @@ infile = sys.argv[1] nfreq = int(sys.argv[2]) me = 0 -# uncomment if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() from lammps import lammps lmp = lammps() @@ -110,7 +105,3 @@ while 1: if runflag: running = 1 else: running = 0 time.sleep(0.01) - -# uncomment if running in parallel via Pypar -#print("Proc %d out of %d procs has" % (me,nprocs), lmp) -#pypar.finalize() From d4a6c718a984e6f8f3bdf82b9a40ce202450f523 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 2 Jun 2021 09:22:36 -0500 Subject: [PATCH 28/80] Moved citation to a single place --- src/USER-DIELECTRIC/atom_vec_dielectric.cpp | 17 +++++++++++++++++ src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp | 17 ----------------- src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 17 ----------------- src/USER-DIELECTRIC/fix_polarize_functional.cpp | 17 ----------------- 4 files changed, 17 insertions(+), 51 deletions(-) diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp index 7dd3af2e3a..d038f2caa8 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp @@ -13,13 +13,30 @@ #include "atom_vec_dielectric.h" #include "atom.h" +#include "citeme.h" using namespace LAMMPS_NS; +static const char cite_user_dielectric_package[] = + "USER-DIELECTRIC package:\n\n" + "@Article{TrungCPC19,\n" + " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi," + " Francisco J. Solis, Monica Olvera de la Cruz,\n" + " title = {Incorporating surface polarization effects into large-scale" + " coarse-grained Molecular Dynamics simulation},\n" + " journal = {Comp.~Phys.~Comm.},\n" + " year = 2019,\n" + " volume = 241,\n" + " pages = {80--91}\n" + "}\n\n" + ; + /* ---------------------------------------------------------------------- */ AtomVecDielectric::AtomVecDielectric(LAMMPS *lmp) : AtomVec(lmp) { + if (lmp->citeme) lmp->citeme->add(cite_user_dielectric_package); + molecular = Atom::MOLECULAR; bonds_allow = angles_allow = dihedrals_allow = impropers_allow = 1; mass_type = PER_TYPE; diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp index ba8de73295..5030b5e1fa 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -38,7 +38,6 @@ #include "atom.h" #include "atom_vec_dielectric.h" -#include "citeme.h" #include "comm.h" #include "error.h" #include "force.h" @@ -67,28 +66,12 @@ using namespace MathConst; //#define _POLARIZE_DEBUG -static const char cite_user_dielectric_package[] = - "USER-DIELECTRIC package:\n\n" - "@Article{TrungCPC19,\n" - " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi," - " Francisco J. Solis, Monica Olvera de la Cruz,\n" - " title = {Incorporating surface polarization effects into large-scale" - " coarse-grained Molecular Dynamics simulation},\n" - " journal = {Comp.~Phys.~Comm.},\n" - " year = 2019,\n" - " volume = 241,\n" - " pages = {80--91}\n" - "}\n\n" - ; - /* ---------------------------------------------------------------------- */ FixPolarizeBEMGMRES::FixPolarizeBEMGMRES(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), q_backup(NULL), c(NULL), g(NULL), h(NULL), r(NULL), s(NULL), v(NULL), y(NULL) { - if (lmp->citeme) lmp->citeme->add(cite_user_dielectric_package); - if (narg < 5) error->all(FLERR,"Illegal fix polarize/bem/gmres command"); avec = (AtomVecDielectric *) atom->style_match("dielectric"); diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp index 99b5b7757d..003a08d069 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -27,7 +27,6 @@ #include "atom.h" #include "atom_vec_dielectric.h" -#include "citeme.h" #include "comm.h" #include "error.h" #include "force.h" @@ -55,27 +54,11 @@ using namespace MathConst; //#define _POLARIZE_DEBUG -static const char cite_user_dielectric_package[] = - "USER-DIELECTRIC package:\n\n" - "@Article{TrungCPC19,\n" - " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi," - " Francisco J. Solis, Monica Olvera de la Cruz,\n" - " title = {Incorporating surface polarization effects into large-scale" - " coarse-grained Molecular Dynamics simulation},\n" - " journal = {Comp.~Phys.~Comm.},\n" - " year = 2019,\n" - " volume = 241,\n" - " pages = {80--91}\n" - "}\n\n" - ; - /* ---------------------------------------------------------------------- */ FixPolarizeBEMICC::FixPolarizeBEMICC(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (lmp->citeme) lmp->citeme->add(cite_user_dielectric_package); - if (narg < 5) error->all(FLERR,"Illegal fix polarize/bem/icc command"); avec = (AtomVecDielectric *) atom->style_match("dielectric"); diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index 74313cae3f..fb2e78d990 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -29,7 +29,6 @@ #include "atom.h" #include "atom_vec_dielectric.h" -#include "citeme.h" #include "comm.h" #include "domain.h" #include "error.h" @@ -68,27 +67,11 @@ enum {REAL2SCALED=0,SCALED2REAL=1}; //#define _POLARIZE_DEBUG -static const char cite_user_dielectric_package[] = - "USER-DIELECTRIC package:\n\n" - "@Article{TrungCPC19,\n" - " author = {Trung Dac Nguyen, Honghao Li, Debarshee Bagchi," - " Francisco J. Solis, Monica Olvera de la Cruz,\n" - " title = {Incorporating surface polarization effects into large-scale" - " coarse-grained Molecular Dynamics simulation},\n" - " journal = {Comp.~Phys.~Comm.},\n" - " year = 2019,\n" - " volume = 241,\n" - " pages = {80--91}\n" - "}\n\n" - ; - /* ---------------------------------------------------------------------- */ FixPolarizeFunctional::FixPolarizeFunctional(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (lmp->citeme) lmp->citeme->add(cite_user_dielectric_package); - if (narg < 4) error->all(FLERR,"Illegal fix polarize/functional command"); avec = (AtomVecDielectric *) atom->style_match("dielectric"); From 5fe890679c19390bf34f60a51e6cef05bc20188d Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 2 Jun 2021 11:07:18 -0400 Subject: [PATCH 29/80] Remove pypar and non-functional commented code --- python/examples/plot.py | 11 +++++------ python/examples/viz_atomeye.py | 11 +++++------ python/examples/viz_gl.py | 11 +++++------ python/examples/viz_pymol.py | 11 +++++------ python/examples/viz_vmd.py | 11 +++++------ python/examples/vizplotgui_atomeye.py | 11 ----------- python/examples/vizplotgui_gl.py | 11 ----------- python/examples/vizplotgui_pymol.py | 11 ----------- python/examples/vizplotgui_vmd.py | 11 ----------- 9 files changed, 25 insertions(+), 74 deletions(-) diff --git a/python/examples/plot.py b/python/examples/plot.py index e831535e2c..6645a72404 100755 --- a/python/examples/plot.py +++ b/python/examples/plot.py @@ -28,10 +28,10 @@ nsteps = int(sys.argv[3]) compute = sys.argv[4] me = 0 -# uncomment if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() +# uncomment this if running in parallel via mpi4py +#from mpi4py import MPI +#me = MPI.COMM_WORLD.Get_rank() +#nprocs = MPI.COMM_WORLD.Get_size() from lammps import lammps lmp = lammps() @@ -71,6 +71,5 @@ while ntimestep < nsteps: lmp.command("run 0 pre no post yes") -# uncomment if running in parallel via Pypar +# uncomment if running in parallel via mpi4py #print("Proc %d out of %d procs has" % (me,nprocs), lmp) -#pypar.finalize() diff --git a/python/examples/viz_atomeye.py b/python/examples/viz_atomeye.py index d7f83f274d..c7c83e3d36 100755 --- a/python/examples/viz_atomeye.py +++ b/python/examples/viz_atomeye.py @@ -28,10 +28,10 @@ nfreq = int(sys.argv[2]) nsteps = int(sys.argv[3]) me = 0 -# uncomment if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() +# uncomment this if running in parallel via mpi4py +#from mpi4py import MPI +#me = MPI.COMM_WORLD.Get_rank() +#nprocs = MPI.COMM_WORLD.Get_size() from lammps import lammps lmp = lammps() @@ -68,6 +68,5 @@ while ntimestep < nsteps: lmp.command("run 0 pre no post yes") -# uncomment if running in parallel via Pypar +# uncomment if running in parallel via mpi4py #print("Proc %d out of %d procs has" % (me,nprocs), lmp) -#pypar.finalize() diff --git a/python/examples/viz_gl.py b/python/examples/viz_gl.py index 5878b68502..6266682b9c 100755 --- a/python/examples/viz_gl.py +++ b/python/examples/viz_gl.py @@ -24,10 +24,10 @@ nfreq = int(sys.argv[2]) nsteps = int(sys.argv[3]) me = 0 -# uncomment if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() +# uncomment this if running in parallel via mpi4py +#from mpi4py import MPI +#me = MPI.COMM_WORLD.Get_rank() +#nprocs = MPI.COMM_WORLD.Get_size() from lammps import lammps lmp = lammps() @@ -83,6 +83,5 @@ while ntimestep < nsteps: lmp.command("run 0 pre no post yes") -# uncomment if running in parallel via Pypar +# uncomment if running in parallel via mpi4py #print("Proc %d out of %d procs has" % (me,nprocs), lmp) -#pypar.finalize() diff --git a/python/examples/viz_pymol.py b/python/examples/viz_pymol.py index 0950b3668b..b5061d4c20 100755 --- a/python/examples/viz_pymol.py +++ b/python/examples/viz_pymol.py @@ -24,10 +24,10 @@ nfreq = int(sys.argv[2]) nsteps = int(sys.argv[3]) me = 0 -# uncomment if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() +# uncomment this if running in parallel via mpi4py +#from mpi4py import MPI +#me = MPI.COMM_WORLD.Get_rank() +#nprocs = MPI.COMM_WORLD.Get_size() from lammps import lammps lmp = lammps() @@ -78,6 +78,5 @@ while ntimestep < nsteps: lmp.command("run 0 pre no post yes") -# uncomment if running in parallel via Pypar +# uncomment if running in parallel via mpi4py #print("Proc %d out of %d procs has" % (me,nprocs), lmp) -#pypar.finalize() diff --git a/python/examples/viz_vmd.py b/python/examples/viz_vmd.py index f592857566..5c06697378 100755 --- a/python/examples/viz_vmd.py +++ b/python/examples/viz_vmd.py @@ -24,10 +24,10 @@ nfreq = int(sys.argv[2]) nsteps = int(sys.argv[3]) me = 0 -# uncomment if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() +# uncomment this if running in parallel via mpi4py +#from mpi4py import MPI +#me = MPI.COMM_WORLD.Get_rank() +#nprocs = MPI.COMM_WORLD.Get_size() from lammps import lammps lmp = lammps() @@ -87,6 +87,5 @@ if me == 0: #v.enter() #v.stop() -# uncomment if running in parallel via Pypar +# uncomment if running in parallel via mpi4py #print("Proc %d out of %d procs has" % (me,nprocs), lmp) -#pypar.finalize() diff --git a/python/examples/vizplotgui_atomeye.py b/python/examples/vizplotgui_atomeye.py index 8f5f4e3dff..f5b4481f60 100755 --- a/python/examples/vizplotgui_atomeye.py +++ b/python/examples/vizplotgui_atomeye.py @@ -9,9 +9,6 @@ # compute-ID = ID of compute that calculates temperature # (or any other scalar quantity) -# IMPORTANT: this script cannot yet be run in parallel via Pypar, -# because I can't seem to do a MPI-style broadcast in Pypar - from __future__ import print_function import sys,os,time sys.path.append("./pizza") @@ -59,10 +56,6 @@ nfreq = int(sys.argv[2]) compute = sys.argv[3] me = 0 -# uncomment if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() from lammps import lammps lmp = lammps() @@ -163,7 +156,3 @@ while 1: time.sleep(0.01) lmp.command("run 0 pre no post yes") - -# uncomment if running in parallel via Pypar -#print("Proc %d out of %d procs has" % (me,nprocs), lmp) -#pypar.finalize() diff --git a/python/examples/vizplotgui_gl.py b/python/examples/vizplotgui_gl.py index c4847667fd..e137a42e29 100755 --- a/python/examples/vizplotgui_gl.py +++ b/python/examples/vizplotgui_gl.py @@ -9,9 +9,6 @@ # compute-ID = ID of compute that calculates temperature # (or any other scalar quantity) -# IMPORTANT: this script cannot yet be run in parallel via Pypar, -# because I can't seem to do a MPI-style broadcast in Pypar - from __future__ import print_function import sys,time sys.path.append("./pizza") @@ -55,10 +52,6 @@ nfreq = int(sys.argv[2]) compute = sys.argv[3] me = 0 -# uncomment if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() from lammps import lammps lmp = lammps() @@ -176,7 +169,3 @@ while 1: time.sleep(0.01) lmp.command("run 0 pre no post yes") - -# uncomment if running in parallel via Pypar -#print("Proc %d out of %d procs has" % (me,nprocs), lmp) -#pypar.finalize() diff --git a/python/examples/vizplotgui_pymol.py b/python/examples/vizplotgui_pymol.py index 11be498741..543b707478 100755 --- a/python/examples/vizplotgui_pymol.py +++ b/python/examples/vizplotgui_pymol.py @@ -9,9 +9,6 @@ # compute-ID = ID of compute that calculates temperature # (or any other scalar quantity) -# IMPORTANT: this script cannot yet be run in parallel via Pypar, -# because I can't seem to do a MPI-style broadcast in Pypar - from __future__ import print_function import sys,time sys.path.append("./pizza") @@ -57,10 +54,6 @@ nfreq = int(sys.argv[2]) compute = sys.argv[3] me = 0 -# uncomment if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() from lammps import lammps lmp = lammps() @@ -172,7 +165,3 @@ while 1: time.sleep(0.01) lmp.command("run 0 pre no post yes") - -# uncomment if running in parallel via Pypar -#print("Proc %d out of %d procs has" % (me,nprocs), lmp) -#pypar.finalize() diff --git a/python/examples/vizplotgui_vmd.py b/python/examples/vizplotgui_vmd.py index 0003ebc929..10129c7285 100755 --- a/python/examples/vizplotgui_vmd.py +++ b/python/examples/vizplotgui_vmd.py @@ -9,9 +9,6 @@ # compute-ID = ID of compute that calculates temperature # (or any other scalar quantity) -# IMPORTANT: this script cannot yet be run in parallel via Pypar, -# because I can't seem to do a MPI-style broadcast in Pypar - from __future__ import print_function import sys,time sys.path.append("./pizza") @@ -56,10 +53,6 @@ nfreq = int(sys.argv[2]) compute = sys.argv[3] me = 0 -# uncomment if running in parallel via Pypar -#import pypar -#me = pypar.rank() -#nprocs = pypar.size() from lammps import lammps lmp = lammps() @@ -171,7 +164,3 @@ while 1: time.sleep(0.01) lmp.command("run 0 pre no post yes") - -# uncomment if running in parallel via Pypar -#print("Proc %d out of %d procs has" % (me,nprocs), lmp) -#pypar.finalize() From 3d991cda6f59c5400cf6a8b45a98ecc6b75966ed Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 2 Jun 2021 11:13:44 -0400 Subject: [PATCH 30/80] Remove pypar from docs --- doc/src/Python_install.rst | 8 -------- doc/utils/sphinx-config/false_positives.txt | 1 - 2 files changed, 9 deletions(-) diff --git a/doc/src/Python_install.rst b/doc/src/Python_install.rst index 134d3e22d2..6b224bbf40 100644 --- a/doc/src/Python_install.rst +++ b/doc/src/Python_install.rst @@ -377,14 +377,6 @@ make MPI calls directly from Python in your script, if you desire. We have tested this with `MPI for Python `_ (aka mpi4py) and you will find installation instruction for it below. -.. note:: - - Older LAMMPS versions were also tested with `PyPar `_ - but we can no longer test it, since it does not work with the Python - (3.x) versions on our test servers. Since there have been no updates - to PyPar visible in its repository since November 2016 we have to assume - it is no longer maintained. - Installation of mpi4py (version 3.0.3 as of Sep 2020) can be done as follows: diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 0367808002..b13e6b8252 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -2631,7 +2631,6 @@ PyLammps pymbar pymodule pymol -pypar pythonic pytorch pyy From 41d289e2b0810565893fc824f0b31822a2097844 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 2 Jun 2021 11:18:00 -0400 Subject: [PATCH 31/80] Keep Python 2 code path --- python/examples/matplotlib_plot.py | 5 ++++- python/examples/pizza/gnu.py | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/python/examples/matplotlib_plot.py b/python/examples/matplotlib_plot.py index 972a035b4f..b8bdc287d6 100755 --- a/python/examples/matplotlib_plot.py +++ b/python/examples/matplotlib_plot.py @@ -86,4 +86,7 @@ lmp.command("run 0 pre no post yes") #print("Proc %d out of %d procs has" % (me,nprocs), lmp) if me == 0: - input("Press Enter to exit...") + if sys.version_info[0] == 3: + input("Press Enter to exit...") + else: + raw_input("Press Enter to exit...") diff --git a/python/examples/pizza/gnu.py b/python/examples/pizza/gnu.py index 1336e180e0..26dc0a5d5a 100644 --- a/python/examples/pizza/gnu.py +++ b/python/examples/pizza/gnu.py @@ -88,6 +88,7 @@ g.curve(N,'r') set color of curve N # Imports and external programs import os +import sys try: from DEFAULTS import PIZZA_GNUPLOT except ImportError: PIZZA_GNUPLOT = "gnuplot -p" @@ -122,7 +123,10 @@ class gnu: def enter(self): while 1: - command = input("gnuplot> ") + if sys.version_info[0] == 3: + command = input("gnuplot> ") + else: + command = raw_input("gnuplot> ") if command == "quit" or command == "exit": return self.__call__(command) From 1ce50e0b1d2d6ca1ee33e56524bc091c1edf0289 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 2 Jun 2021 10:37:43 -0500 Subject: [PATCH 32/80] Minor updates to fix polarize/* --- .../fix_polarize_bem_gmres.cpp | 9 +++++---- src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 16 +++++++++------- .../fix_polarize_functional.cpp | 19 +++++++++++-------- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp index 5030b5e1fa..b23cd69757 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -930,19 +930,20 @@ double FixPolarizeBEMGMRES::compute_vector(int n) { if (n == 0) return iterations; else if (n == 1) return rho; + else return 0; } /* ---------------------------------------------------------------------- - set dielectric params for the atom in the group + set dielectric params for the atoms in the group ------------------------------------------------------------------------- */ void FixPolarizeBEMGMRES::set_dielectric_params(double ediff, double emean, - double epsiloni, double areai, int set_charge, double qreali) + double epsiloni, double areai, int set_charge, double qvalue) { double *area = atom->area; double *ed = atom->ed; double *em = atom->em; - double *q_real = atom->q_unscaled; + double *q_unscaled = atom->q_unscaled; double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -953,7 +954,7 @@ void FixPolarizeBEMGMRES::set_dielectric_params(double ediff, double emean, em[i] = emean; if (areai > 0) area[i] = areai; if (epsiloni > 0) epsilon[i] = epsiloni; - if (set_charge) q_real[i] = qreali; + if (set_charge) q_unscaled[i] = qvalue; } } } diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp index 003a08d069..97bbb5c95e 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -370,7 +370,7 @@ int FixPolarizeBEMICC::modify_param(int narg, char **arg) } else if (strcmp(arg[iarg],"dielectrics") == 0) { if (iarg+6 > narg) error->all(FLERR,"Illegal fix_modify command"); double epsiloni=-1, areai=-1; - double qreali=0; + double qunscaledi=0; int set_charge=0; double ediff = utils::numeric(FLERR,arg[iarg+1],false,lmp); double emean = utils::numeric(FLERR,arg[iarg+2],false,lmp); @@ -379,10 +379,11 @@ int FixPolarizeBEMICC::modify_param(int narg, char **arg) if (strcmp(arg[iarg+4],"NULL") != 0) areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); if (strcmp(arg[iarg+5],"NULL") != 0) { - qreali = utils::numeric(FLERR,arg[iarg+5],false,lmp); + qunscaledi = utils::numeric(FLERR,arg[iarg+5],false,lmp); set_charge = 1; } - set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, qreali); + set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, + qunscaledi); iarg += 6; } else if (strcmp(arg[iarg],"rand") == 0) { @@ -416,16 +417,16 @@ void FixPolarizeBEMICC::unpack_forward_comm(int n, int first, double *buf) } /* ---------------------------------------------------------------------- - set dielectric params for the atom in the group + set dielectric params for the atoms in the group ------------------------------------------------------------------------- */ void FixPolarizeBEMICC::set_dielectric_params(double ediff, double emean, - double epsiloni, double areai, int set_charge, double qreali) + double epsiloni, double areai, int set_charge, double qvalue) { double *area = atom->area; double *ed = atom->ed; double *em = atom->em; - double *q_real = atom->q_unscaled; + double *q_unscaled = atom->q_unscaled; double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -436,7 +437,7 @@ void FixPolarizeBEMICC::set_dielectric_params(double ediff, double emean, em[i] = emean; if (areai > 0) area[i] = areai; if (epsiloni > 0) epsilon[i] = epsiloni; - if (set_charge) q_real[i] = qreali; + if (set_charge) q_unscaled[i] = qvalue; } } } @@ -450,4 +451,5 @@ double FixPolarizeBEMICC::compute_vector(int n) { if (n == 0) return iterations; else if (n == 1) return rho; + else return 0; } \ No newline at end of file diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index fb2e78d990..3b4c3bad82 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -486,17 +486,20 @@ int FixPolarizeFunctional::modify_param(int narg, char **arg) } else if (strcmp(arg[iarg],"dielectrics") == 0) { if (iarg+6 > narg) error->all(FLERR,"Illegal fix_modify command"); double epsiloni=-1, areai=-1; - double qreali=0; + double q_unscaled=0; int set_charge=0; double ediff = utils::numeric(FLERR,arg[iarg+1],false,lmp); double emean = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (strcmp(arg[iarg+3],"nullptr") != 0) epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); - if (strcmp(arg[iarg+4],"nullptr") != 0) areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); + if (strcmp(arg[iarg+3],"nullptr") != 0) + epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); + if (strcmp(arg[iarg+4],"nullptr") != 0) + areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); if (strcmp(arg[iarg+5],"nullptr") != 0) { - qreali = utils::numeric(FLERR,arg[iarg+5],false,lmp); + q_unscaled = utils::numeric(FLERR,arg[iarg+5],false,lmp); set_charge = 1; } - set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, qreali); + set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, + q_unscaled); iarg += 6; } else error->all(FLERR,"Illegal fix_modify command"); @@ -1042,12 +1045,12 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() ------------------------------------------------------------------------- */ void FixPolarizeFunctional::set_dielectric_params(double ediff, double emean, - double epsiloni, double areai, int set_charge, double qreali) + double epsiloni, double areai, int set_charge, double qvalue) { double *area = atom->area; double *ed = atom->ed; double *em = atom->em; - double *q_real = atom->q_unscaled; + double *q_unscaled = atom->q_unscaled; double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; @@ -1058,7 +1061,7 @@ void FixPolarizeFunctional::set_dielectric_params(double ediff, double emean, em[i] = emean; if (areai > 0) area[i] = areai; if (epsiloni > 0) epsilon[i] = epsiloni; - if (set_charge) q_real[i] = qreali; + if (set_charge) q_unscaled[i] = qvalue; } } } From 3f1bbf7c7187ea9d002437490272fb3dd2fa4e82 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 2 Jun 2021 11:46:48 -0400 Subject: [PATCH 33/80] Add support for building wheels with pip --- python/.gitignore | 1 + python/setup.py | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/python/.gitignore b/python/.gitignore index 796b96d1c4..9c07c51c3c 100644 --- a/python/.gitignore +++ b/python/.gitignore @@ -1 +1,2 @@ /build +/*.egg-info diff --git a/python/setup.py b/python/setup.py index 2ccbb373e3..1ae423d59f 100644 --- a/python/setup.py +++ b/python/setup.py @@ -8,8 +8,14 @@ LAMMPS_PYTHON_DIR = os.path.dirname(os.path.realpath(__file__)) LAMMPS_DIR = os.path.dirname(LAMMPS_PYTHON_DIR) LAMMPS_SOURCE_DIR = os.path.join(LAMMPS_DIR, 'src') +if not os.path.exists(LAMMPS_SOURCE_DIR): + # allows installing and building wheel from current directory + LAMMPS_DIR = os.path.realpath(os.path.join(os.environ['PWD'], '..')) + LAMMPS_SOURCE_DIR = os.path.join(LAMMPS_DIR, 'src') + def get_lammps_version(): - with open(os.path.join(LAMMPS_SOURCE_DIR, 'version.h'), 'r') as f: + version_h_file = os.path.join(LAMMPS_SOURCE_DIR, 'version.h') + with open(version_h_file, 'r') as f: line = f.readline() start_pos = line.find('"')+1 end_pos = line.find('"', start_pos) From b9e9dda1ab0379a9dde1485daf7495eae152ff1d Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Wed, 2 Jun 2021 12:03:46 -0500 Subject: [PATCH 34/80] Updated example input scripts, data files and README --- examples/USER/dielectric/README | 55 +- examples/USER/dielectric/data.confined | 2 +- examples/USER/dielectric/data.cylinder | 3616 ------------------------ examples/USER/dielectric/data.minimal | 50 - examples/USER/dielectric/data.plane | 2019 ------------- examples/USER/dielectric/in.confined | 9 +- examples/USER/dielectric/in.minimal | 39 - examples/USER/dielectric/in.nopbc | 12 +- examples/USER/dielectric/in.pbc | 54 - 9 files changed, 39 insertions(+), 5817 deletions(-) delete mode 100644 examples/USER/dielectric/data.cylinder delete mode 100644 examples/USER/dielectric/data.minimal delete mode 100644 examples/USER/dielectric/data.plane delete mode 100644 examples/USER/dielectric/in.minimal delete mode 100644 examples/USER/dielectric/in.pbc diff --git a/examples/USER/dielectric/README b/examples/USER/dielectric/README index 4d12416988..6cbb1e204d 100644 --- a/examples/USER/dielectric/README +++ b/examples/USER/dielectric/README @@ -2,17 +2,11 @@ This folder contains some example data and input scripts for the USER-DIELECTRIC Nguyen TD, Li H, Bagchi D, Solis FJ, Olvera de la Cruz, Incorporating surface polarization effects into large-scale coarse-grained molecular dynamics simulation, Computer Physics Communications 2019, 241, 80--91. -- data.minimal : two point opposite charges facing a flat interface -- data.plane : two point opposite charges facing a larger flat interface -- data.confined : two point opposite charges confined between two interfaces (epsilon1=2/epsilon2=10/epsilon2=2) -- data.sphere : two point opposite charges outside a spherical interface (epsilon_in=1/epsilon2=10) -- data.cylinder : single point charge facing a cylindrical interface +- data.confined : two point opposite charges confined between two interfaces (epsilon1=2/epsilon2=10/epsilon2=2) +- data.sphere : two point opposite charges outside a spherical interface (epsilon_in=1/epsilon2=10) -- in.minimal : read in data.minimal -- in.nopbc : read in data.* files, using non-periodic boundary conditions, with a large cutoff - using "-v data data.foo" from the LAMMPS command line arguments -- in.pbc : read in data.* files using periodic boundary conditions - with a slab correction for kspace_style pppm and ewald; not required for msm +- in.confined : read in data.confined +- in.nopbc : read in data.* files, using non-periodic boundary conditions, with a large cutoff For "atom_style dielectric" the Atoms section in the data file contains 15 following columns: @@ -20,28 +14,31 @@ id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature where -id, mol, type, q, x, y and z are similar to those in atom_style full +* id, mol, type, q, x, y and z are similar to those in atom_style full -normx, normy and normz are the three components of the normal unit vector -of the interface at the patch (vertex). For real charges (ions), these 3 values -are irrelevant and can be anything (e.g. 0,0,1). +* normx, normy and normz are the three components of the normal unit vector + of the interface at the boundary element (also called vertex, or patch). + For real charges (ions), these 3 values are irrelevant, + and can be anything (e.g. 0,0,1). normx, normy, and normz can be + accessed through mux, muy and muz as if they were dipole components. -ed = dielectric difference at the vertex along the normal vector direction. -For example, if (normx,normy,normz) points from medium with epsilon_in to medium with epsilon_out, -then ed = epsilon_out - epsilon_in +* ed = dielectric difference at the vertex along the normal vector direction. + For example, if (normx,normy,normz) points from medium with epsilon_in + to medium with epsilon_out, then ed = epsilon_out - epsilon_in -em = (epsilon_out + epsilon_in)/2: the mean dielectric value - -epsilon = the local epsilon value at the vertex or at the ion. -For real charges, epsilon is the medium dielectric constant, q is the actual real charges. -For interface particles, if q is zero (zero surface charges), epsilon is set to be 1.0; -if q is nonzero (charged surfaces), epsilon is set to be em (the mean dielectric value above). - -area_per_patch: surface area of the patch. For real charges, this value is irrelevant, can be 1.0. - -curvature: surface curvature at the patch. -For example, for spherical interfaces, curvature = 1/spherical radius. -For planar interfaces, curvature = 0. +* em = (epsilon_out + epsilon_in)/2: the mean dielectric value +* epsilon = the local epsilon value at the vertex or at the ion. + For real charges, epsilon is the medium dielectric constant, + and q is the real (unscaled) charges. + For interface particles: + + if q is zero (zero surface charges), epsilon is set to be 1.0; + + if q is nonzero (charged surfaces), epsilon is set to be em + (the mean dielectric value above). +* area_per_patch: the surface area of the patch (element). + For real charges, this value is irrelevant, can be 1.0. +* curvature: surface mean curvature at the patch. + For example, for spherical interfaces, curvature = 1/spherical radius. + For planar interfaces, curvature = 0. diff --git a/examples/USER/dielectric/data.confined b/examples/USER/dielectric/data.confined index 0906c6cd82..52afc2cf62 100644 --- a/examples/USER/dielectric/data.confined +++ b/examples/USER/dielectric/data.confined @@ -1,4 +1,4 @@ -LAMMPS data file: using 2001 atoms for single point charge (no pbc), or 2002 atoms for two opposite charges (to have charge neutrality for pbc) +LAMMPS data file: two oppositely charged ions confined between two walls 4002 atoms 3 atom types diff --git a/examples/USER/dielectric/data.cylinder b/examples/USER/dielectric/data.cylinder deleted file mode 100644 index f398e5a666..0000000000 --- a/examples/USER/dielectric/data.cylinder +++ /dev/null @@ -1,3616 +0,0 @@ -LAMMPS data file: a cylindrical interface along z axis with radius R = 5.0, and an ion away from center line d = 7.0, epsilon in = 80, out = 5, normal vectors pointing outward -3601 atoms -2 atom types - -0 100.0 xlo xhi -0 100.0 ylo yhi -0 100.0 zlo zhi - -Masses - -1 1.0 -2 1.0 - -Atoms # dielectric: id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature - -1 1 1 0 55.0 50.0 0.0 1.0 0.0 0 0.872664625997 -75 42.5 42.5 0.2 -2 1 1 0 54.9240387651 50.8682408883 0.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3 1 1 0 54.6984631039 51.7101007166 0.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -4 1 1 0 54.3301270189 52.5 0.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -5 1 1 0 53.8302222156 53.2139380484 0.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -6 1 1 0 53.2139380484 53.8302222156 0.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -7 1 1 0 52.5 54.3301270189 0.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -8 1 1 0 51.7101007166 54.6984631039 0.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -9 1 1 0 50.8682408883 54.9240387651 0.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -10 1 1 0 50.0 55.0 0.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -11 1 1 0 49.1317591117 54.9240387651 0.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -12 1 1 0 48.2898992834 54.6984631039 0.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -13 1 1 0 47.5 54.3301270189 0.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -14 1 1 0 46.7860619516 53.8302222156 0.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -15 1 1 0 46.1697777844 53.2139380484 0.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -16 1 1 0 45.6698729811 52.5 0.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -17 1 1 0 45.3015368961 51.7101007166 0.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -18 1 1 0 45.0759612349 50.8682408883 0.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -19 1 1 0 45.0 50.0 0.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 -20 1 1 0 45.0759612349 49.1317591117 0.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -21 1 1 0 45.3015368961 48.2898992834 0.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -22 1 1 0 45.6698729811 47.5 0.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -23 1 1 0 46.1697777844 46.7860619516 0.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -24 1 1 0 46.7860619516 46.1697777844 0.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -25 1 1 0 47.5 45.6698729811 0.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -26 1 1 0 48.2898992834 45.3015368961 0.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -27 1 1 0 49.1317591117 45.0759612349 0.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -28 1 1 0 50.0 45.0 0.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -29 1 1 0 50.8682408883 45.0759612349 0.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -30 1 1 0 51.7101007166 45.3015368961 0.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -31 1 1 0 52.5 45.6698729811 0.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -32 1 1 0 53.2139380484 46.1697777844 0.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -33 1 1 0 53.8302222156 46.7860619516 0.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -34 1 1 0 54.3301270189 47.5 0.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -35 1 1 0 54.6984631039 48.2898992834 0.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -36 1 1 0 54.9240387651 49.1317591117 0.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -37 1 1 0 54.9809734905 50.4357787137 1.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -38 1 1 0 54.8296291314 51.2940952255 1.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -39 1 1 0 54.5315389352 52.1130913087 1.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -40 1 1 0 54.0957602214 52.8678821818 1.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -41 1 1 0 53.5355339059 53.5355339059 1.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -42 1 1 0 52.8678821818 54.0957602214 1.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -43 1 1 0 52.1130913087 54.5315389352 1.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -44 1 1 0 51.2940952255 54.8296291314 1.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -45 1 1 0 50.4357787137 54.9809734905 1.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -46 1 1 0 49.5642212863 54.9809734905 1.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -47 1 1 0 48.7059047745 54.8296291314 1.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -48 1 1 0 47.8869086913 54.5315389352 1.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -49 1 1 0 47.1321178182 54.0957602214 1.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -50 1 1 0 46.4644660941 53.5355339059 1.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -51 1 1 0 45.9042397786 52.8678821818 1.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -52 1 1 0 45.4684610648 52.1130913087 1.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -53 1 1 0 45.1703708686 51.2940952255 1.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -54 1 1 0 45.0190265095 50.4357787137 1.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -55 1 1 0 45.0190265095 49.5642212863 1.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -56 1 1 0 45.1703708686 48.7059047745 1.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -57 1 1 0 45.4684610648 47.8869086913 1.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -58 1 1 0 45.9042397786 47.1321178182 1.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -59 1 1 0 46.4644660941 46.4644660941 1.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -60 1 1 0 47.1321178182 45.9042397786 1.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -61 1 1 0 47.8869086913 45.4684610648 1.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -62 1 1 0 48.7059047745 45.1703708686 1.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -63 1 1 0 49.5642212863 45.0190265095 1.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -64 1 1 0 50.4357787137 45.0190265095 1.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -65 1 1 0 51.2940952255 45.1703708686 1.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -66 1 1 0 52.1130913087 45.4684610648 1.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -67 1 1 0 52.8678821818 45.9042397786 1.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -68 1 1 0 53.5355339059 46.4644660941 1.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -69 1 1 0 54.0957602214 47.1321178182 1.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -70 1 1 0 54.5315389352 47.8869086913 1.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -71 1 1 0 54.8296291314 48.7059047745 1.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -72 1 1 0 54.9809734905 49.5642212863 1.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -73 1 1 0 54.9240387651 50.8682408883 2.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -74 1 1 0 54.6984631039 51.7101007166 2.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -75 1 1 0 54.3301270189 52.5 2.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -76 1 1 0 53.8302222156 53.2139380484 2.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -77 1 1 0 53.2139380484 53.8302222156 2.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -78 1 1 0 52.5 54.3301270189 2.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -79 1 1 0 51.7101007166 54.6984631039 2.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -80 1 1 0 50.8682408883 54.9240387651 2.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -81 1 1 0 50.0 55.0 2.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -82 1 1 0 49.1317591117 54.9240387651 2.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -83 1 1 0 48.2898992834 54.6984631039 2.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -84 1 1 0 47.5 54.3301270189 2.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -85 1 1 0 46.7860619516 53.8302222156 2.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -86 1 1 0 46.1697777844 53.2139380484 2.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -87 1 1 0 45.6698729811 52.5 2.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -88 1 1 0 45.3015368961 51.7101007166 2.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -89 1 1 0 45.0759612349 50.8682408883 2.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -90 1 1 0 45.0 50.0 2.0 -1.0 5.66553889765e-16 0 0.872664625997 -75 42.5 42.5 0.2 -91 1 1 0 45.0759612349 49.1317591117 2.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -92 1 1 0 45.3015368961 48.2898992834 2.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -93 1 1 0 45.6698729811 47.5 2.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -94 1 1 0 46.1697777844 46.7860619516 2.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -95 1 1 0 46.7860619516 46.1697777844 2.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -96 1 1 0 47.5 45.6698729811 2.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -97 1 1 0 48.2898992834 45.3015368961 2.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -98 1 1 0 49.1317591117 45.0759612349 2.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -99 1 1 0 50.0 45.0 2.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -100 1 1 0 50.8682408883 45.0759612349 2.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -101 1 1 0 51.7101007166 45.3015368961 2.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -102 1 1 0 52.5 45.6698729811 2.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -103 1 1 0 53.2139380484 46.1697777844 2.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -104 1 1 0 53.8302222156 46.7860619516 2.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -105 1 1 0 54.3301270189 47.5 2.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -106 1 1 0 54.6984631039 48.2898992834 2.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -107 1 1 0 54.9240387651 49.1317591117 2.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -108 1 1 0 55.0 50.0 2.0 1.0 -2.44929359829e-16 0 0.872664625997 -75 42.5 42.5 0.2 -109 1 1 0 54.8296291314 51.2940952255 3.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -110 1 1 0 54.5315389352 52.1130913087 3.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -111 1 1 0 54.0957602214 52.8678821818 3.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -112 1 1 0 53.5355339059 53.5355339059 3.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -113 1 1 0 52.8678821818 54.0957602214 3.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -114 1 1 0 52.1130913087 54.5315389352 3.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -115 1 1 0 51.2940952255 54.8296291314 3.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -116 1 1 0 50.4357787137 54.9809734905 3.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -117 1 1 0 49.5642212863 54.9809734905 3.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -118 1 1 0 48.7059047745 54.8296291314 3.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -119 1 1 0 47.8869086913 54.5315389352 3.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -120 1 1 0 47.1321178182 54.0957602214 3.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -121 1 1 0 46.4644660941 53.5355339059 3.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -122 1 1 0 45.9042397786 52.8678821818 3.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -123 1 1 0 45.4684610648 52.1130913087 3.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -124 1 1 0 45.1703708686 51.2940952255 3.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -125 1 1 0 45.0190265095 50.4357787137 3.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -126 1 1 0 45.0190265095 49.5642212863 3.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -127 1 1 0 45.1703708686 48.7059047745 3.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -128 1 1 0 45.4684610648 47.8869086913 3.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -129 1 1 0 45.9042397786 47.1321178182 3.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -130 1 1 0 46.4644660941 46.4644660941 3.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -131 1 1 0 47.1321178182 45.9042397786 3.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -132 1 1 0 47.8869086913 45.4684610648 3.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -133 1 1 0 48.7059047745 45.1703708686 3.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -134 1 1 0 49.5642212863 45.0190265095 3.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -135 1 1 0 50.4357787137 45.0190265095 3.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -136 1 1 0 51.2940952255 45.1703708686 3.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -137 1 1 0 52.1130913087 45.4684610648 3.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -138 1 1 0 52.8678821818 45.9042397786 3.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -139 1 1 0 53.5355339059 46.4644660941 3.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -140 1 1 0 54.0957602214 47.1321178182 3.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -141 1 1 0 54.5315389352 47.8869086913 3.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -142 1 1 0 54.8296291314 48.7059047745 3.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -143 1 1 0 54.9809734905 49.5642212863 3.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -144 1 1 0 54.9809734905 50.4357787137 3.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -145 1 1 0 54.6984631039 51.7101007166 4.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -146 1 1 0 54.3301270189 52.5 4.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -147 1 1 0 53.8302222156 53.2139380484 4.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -148 1 1 0 53.2139380484 53.8302222156 4.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -149 1 1 0 52.5 54.3301270189 4.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -150 1 1 0 51.7101007166 54.6984631039 4.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -151 1 1 0 50.8682408883 54.9240387651 4.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -152 1 1 0 50.0 55.0 4.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -153 1 1 0 49.1317591117 54.9240387651 4.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -154 1 1 0 48.2898992834 54.6984631039 4.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -155 1 1 0 47.5 54.3301270189 4.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -156 1 1 0 46.7860619516 53.8302222156 4.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -157 1 1 0 46.1697777844 53.2139380484 4.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -158 1 1 0 45.6698729811 52.5 4.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -159 1 1 0 45.3015368961 51.7101007166 4.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -160 1 1 0 45.0759612349 50.8682408883 4.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -161 1 1 0 45.0 50.0 4.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 -162 1 1 0 45.0759612349 49.1317591117 4.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -163 1 1 0 45.3015368961 48.2898992834 4.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -164 1 1 0 45.6698729811 47.5 4.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -165 1 1 0 46.1697777844 46.7860619516 4.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -166 1 1 0 46.7860619516 46.1697777844 4.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -167 1 1 0 47.5 45.6698729811 4.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -168 1 1 0 48.2898992834 45.3015368961 4.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -169 1 1 0 49.1317591117 45.0759612349 4.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -170 1 1 0 50.0 45.0 4.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -171 1 1 0 50.8682408883 45.0759612349 4.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -172 1 1 0 51.7101007166 45.3015368961 4.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -173 1 1 0 52.5 45.6698729811 4.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -174 1 1 0 53.2139380484 46.1697777844 4.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -175 1 1 0 53.8302222156 46.7860619516 4.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -176 1 1 0 54.3301270189 47.5 4.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -177 1 1 0 54.6984631039 48.2898992834 4.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -178 1 1 0 54.9240387651 49.1317591117 4.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -179 1 1 0 55.0 50.0 4.0 1.0 -1.13310777953e-15 0 0.872664625997 -75 42.5 42.5 0.2 -180 1 1 0 54.9240387651 50.8682408883 4.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -181 1 1 0 54.5315389352 52.1130913087 5.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -182 1 1 0 54.0957602214 52.8678821818 5.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -183 1 1 0 53.5355339059 53.5355339059 5.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -184 1 1 0 52.8678821818 54.0957602214 5.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -185 1 1 0 52.1130913087 54.5315389352 5.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -186 1 1 0 51.2940952255 54.8296291314 5.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -187 1 1 0 50.4357787137 54.9809734905 5.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -188 1 1 0 49.5642212863 54.9809734905 5.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -189 1 1 0 48.7059047745 54.8296291314 5.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -190 1 1 0 47.8869086913 54.5315389352 5.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -191 1 1 0 47.1321178182 54.0957602214 5.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -192 1 1 0 46.4644660941 53.5355339059 5.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -193 1 1 0 45.9042397786 52.8678821818 5.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -194 1 1 0 45.4684610648 52.1130913087 5.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -195 1 1 0 45.1703708686 51.2940952255 5.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -196 1 1 0 45.0190265095 50.4357787137 5.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -197 1 1 0 45.0190265095 49.5642212863 5.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -198 1 1 0 45.1703708686 48.7059047745 5.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -199 1 1 0 45.4684610648 47.8869086913 5.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -200 1 1 0 45.9042397786 47.1321178182 5.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -201 1 1 0 46.4644660941 46.4644660941 5.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -202 1 1 0 47.1321178182 45.9042397786 5.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -203 1 1 0 47.8869086913 45.4684610648 5.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -204 1 1 0 48.7059047745 45.1703708686 5.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -205 1 1 0 49.5642212863 45.0190265095 5.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -206 1 1 0 50.4357787137 45.0190265095 5.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -207 1 1 0 51.2940952255 45.1703708686 5.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -208 1 1 0 52.1130913087 45.4684610648 5.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -209 1 1 0 52.8678821818 45.9042397786 5.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -210 1 1 0 53.5355339059 46.4644660941 5.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -211 1 1 0 54.0957602214 47.1321178182 5.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -212 1 1 0 54.5315389352 47.8869086913 5.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -213 1 1 0 54.8296291314 48.7059047745 5.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -214 1 1 0 54.9809734905 49.5642212863 5.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -215 1 1 0 54.9809734905 50.4357787137 5.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -216 1 1 0 54.8296291314 51.2940952255 5.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -217 1 1 0 54.3301270189 52.5 6.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -218 1 1 0 53.8302222156 53.2139380484 6.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -219 1 1 0 53.2139380484 53.8302222156 6.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -220 1 1 0 52.5 54.3301270189 6.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -221 1 1 0 51.7101007166 54.6984631039 6.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -222 1 1 0 50.8682408883 54.9240387651 6.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -223 1 1 0 50.0 55.0 6.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -224 1 1 0 49.1317591117 54.9240387651 6.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -225 1 1 0 48.2898992834 54.6984631039 6.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -226 1 1 0 47.5 54.3301270189 6.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -227 1 1 0 46.7860619516 53.8302222156 6.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -228 1 1 0 46.1697777844 53.2139380484 6.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -229 1 1 0 45.6698729811 52.5 6.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -230 1 1 0 45.3015368961 51.7101007166 6.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -231 1 1 0 45.0759612349 50.8682408883 6.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -232 1 1 0 45.0 50.0 6.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 -233 1 1 0 45.0759612349 49.1317591117 6.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -234 1 1 0 45.3015368961 48.2898992834 6.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -235 1 1 0 45.6698729811 47.5 6.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -236 1 1 0 46.1697777844 46.7860619516 6.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -237 1 1 0 46.7860619516 46.1697777844 6.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -238 1 1 0 47.5 45.6698729811 6.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -239 1 1 0 48.2898992834 45.3015368961 6.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -240 1 1 0 49.1317591117 45.0759612349 6.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -241 1 1 0 50.0 45.0 6.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -242 1 1 0 50.8682408883 45.0759612349 6.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -243 1 1 0 51.7101007166 45.3015368961 6.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -244 1 1 0 52.5 45.6698729811 6.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -245 1 1 0 53.2139380484 46.1697777844 6.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -246 1 1 0 53.8302222156 46.7860619516 6.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -247 1 1 0 54.3301270189 47.5 6.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -248 1 1 0 54.6984631039 48.2898992834 6.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -249 1 1 0 54.9240387651 49.1317591117 6.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -250 1 1 0 55.0 50.0 6.0 1.0 -2.44929359829e-16 0 0.872664625997 -75 42.5 42.5 0.2 -251 1 1 0 54.9240387651 50.8682408883 6.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -252 1 1 0 54.6984631039 51.7101007166 6.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -253 1 1 0 54.0957602214 52.8678821818 7.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -254 1 1 0 53.5355339059 53.5355339059 7.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -255 1 1 0 52.8678821818 54.0957602214 7.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -256 1 1 0 52.1130913087 54.5315389352 7.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -257 1 1 0 51.2940952255 54.8296291314 7.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -258 1 1 0 50.4357787137 54.9809734905 7.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -259 1 1 0 49.5642212863 54.9809734905 7.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -260 1 1 0 48.7059047745 54.8296291314 7.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -261 1 1 0 47.8869086913 54.5315389352 7.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -262 1 1 0 47.1321178182 54.0957602214 7.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -263 1 1 0 46.4644660941 53.5355339059 7.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -264 1 1 0 45.9042397786 52.8678821818 7.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -265 1 1 0 45.4684610648 52.1130913087 7.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -266 1 1 0 45.1703708686 51.2940952255 7.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -267 1 1 0 45.0190265095 50.4357787137 7.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -268 1 1 0 45.0190265095 49.5642212863 7.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -269 1 1 0 45.1703708686 48.7059047745 7.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -270 1 1 0 45.4684610648 47.8869086913 7.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -271 1 1 0 45.9042397786 47.1321178182 7.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -272 1 1 0 46.4644660941 46.4644660941 7.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -273 1 1 0 47.1321178182 45.9042397786 7.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -274 1 1 0 47.8869086913 45.4684610648 7.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -275 1 1 0 48.7059047745 45.1703708686 7.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -276 1 1 0 49.5642212863 45.0190265095 7.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -277 1 1 0 50.4357787137 45.0190265095 7.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -278 1 1 0 51.2940952255 45.1703708686 7.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -279 1 1 0 52.1130913087 45.4684610648 7.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -280 1 1 0 52.8678821818 45.9042397786 7.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -281 1 1 0 53.5355339059 46.4644660941 7.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -282 1 1 0 54.0957602214 47.1321178182 7.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -283 1 1 0 54.5315389352 47.8869086913 7.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -284 1 1 0 54.8296291314 48.7059047745 7.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -285 1 1 0 54.9809734905 49.5642212863 7.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -286 1 1 0 54.9809734905 50.4357787137 7.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -287 1 1 0 54.8296291314 51.2940952255 7.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -288 1 1 0 54.5315389352 52.1130913087 7.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -289 1 1 0 53.8302222156 53.2139380484 8.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -290 1 1 0 53.2139380484 53.8302222156 8.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -291 1 1 0 52.5 54.3301270189 8.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -292 1 1 0 51.7101007166 54.6984631039 8.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -293 1 1 0 50.8682408883 54.9240387651 8.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -294 1 1 0 50.0 55.0 8.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -295 1 1 0 49.1317591117 54.9240387651 8.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -296 1 1 0 48.2898992834 54.6984631039 8.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -297 1 1 0 47.5 54.3301270189 8.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -298 1 1 0 46.7860619516 53.8302222156 8.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -299 1 1 0 46.1697777844 53.2139380484 8.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -300 1 1 0 45.6698729811 52.5 8.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -301 1 1 0 45.3015368961 51.7101007166 8.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -302 1 1 0 45.0759612349 50.8682408883 8.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -303 1 1 0 45.0 50.0 8.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 -304 1 1 0 45.0759612349 49.1317591117 8.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -305 1 1 0 45.3015368961 48.2898992834 8.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -306 1 1 0 45.6698729811 47.5 8.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -307 1 1 0 46.1697777844 46.7860619516 8.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -308 1 1 0 46.7860619516 46.1697777844 8.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -309 1 1 0 47.5 45.6698729811 8.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -310 1 1 0 48.2898992834 45.3015368961 8.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -311 1 1 0 49.1317591117 45.0759612349 8.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -312 1 1 0 50.0 45.0 8.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -313 1 1 0 50.8682408883 45.0759612349 8.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -314 1 1 0 51.7101007166 45.3015368961 8.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -315 1 1 0 52.5 45.6698729811 8.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -316 1 1 0 53.2139380484 46.1697777844 8.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -317 1 1 0 53.8302222156 46.7860619516 8.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -318 1 1 0 54.3301270189 47.5 8.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -319 1 1 0 54.6984631039 48.2898992834 8.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -320 1 1 0 54.9240387651 49.1317591117 8.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -321 1 1 0 55.0 50.0 8.0 1.0 -2.44929359829e-16 0 0.872664625997 -75 42.5 42.5 0.2 -322 1 1 0 54.9240387651 50.8682408883 8.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -323 1 1 0 54.6984631039 51.7101007166 8.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -324 1 1 0 54.3301270189 52.5 8.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -325 1 1 0 53.5355339059 53.5355339059 9.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -326 1 1 0 52.8678821818 54.0957602214 9.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -327 1 1 0 52.1130913087 54.5315389352 9.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -328 1 1 0 51.2940952255 54.8296291314 9.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -329 1 1 0 50.4357787137 54.9809734905 9.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -330 1 1 0 49.5642212863 54.9809734905 9.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -331 1 1 0 48.7059047745 54.8296291314 9.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -332 1 1 0 47.8869086913 54.5315389352 9.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -333 1 1 0 47.1321178182 54.0957602214 9.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -334 1 1 0 46.4644660941 53.5355339059 9.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -335 1 1 0 45.9042397786 52.8678821818 9.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -336 1 1 0 45.4684610648 52.1130913087 9.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -337 1 1 0 45.1703708686 51.2940952255 9.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -338 1 1 0 45.0190265095 50.4357787137 9.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -339 1 1 0 45.0190265095 49.5642212863 9.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -340 1 1 0 45.1703708686 48.7059047745 9.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -341 1 1 0 45.4684610648 47.8869086913 9.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -342 1 1 0 45.9042397786 47.1321178182 9.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -343 1 1 0 46.4644660941 46.4644660941 9.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -344 1 1 0 47.1321178182 45.9042397786 9.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -345 1 1 0 47.8869086913 45.4684610648 9.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -346 1 1 0 48.7059047745 45.1703708686 9.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -347 1 1 0 49.5642212863 45.0190265095 9.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -348 1 1 0 50.4357787137 45.0190265095 9.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -349 1 1 0 51.2940952255 45.1703708686 9.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -350 1 1 0 52.1130913087 45.4684610648 9.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -351 1 1 0 52.8678821818 45.9042397786 9.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -352 1 1 0 53.5355339059 46.4644660941 9.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -353 1 1 0 54.0957602214 47.1321178182 9.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -354 1 1 0 54.5315389352 47.8869086913 9.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -355 1 1 0 54.8296291314 48.7059047745 9.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -356 1 1 0 54.9809734905 49.5642212863 9.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -357 1 1 0 54.9809734905 50.4357787137 9.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -358 1 1 0 54.8296291314 51.2940952255 9.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -359 1 1 0 54.5315389352 52.1130913087 9.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -360 1 1 0 54.0957602214 52.8678821818 9.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -361 1 1 0 53.2139380484 53.8302222156 10.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -362 1 1 0 52.5 54.3301270189 10.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -363 1 1 0 51.7101007166 54.6984631039 10.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -364 1 1 0 50.8682408883 54.9240387651 10.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -365 1 1 0 50.0 55.0 10.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -366 1 1 0 49.1317591117 54.9240387651 10.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -367 1 1 0 48.2898992834 54.6984631039 10.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -368 1 1 0 47.5 54.3301270189 10.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -369 1 1 0 46.7860619516 53.8302222156 10.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -370 1 1 0 46.1697777844 53.2139380484 10.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -371 1 1 0 45.6698729811 52.5 10.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -372 1 1 0 45.3015368961 51.7101007166 10.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -373 1 1 0 45.0759612349 50.8682408883 10.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -374 1 1 0 45.0 50.0 10.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 -375 1 1 0 45.0759612349 49.1317591117 10.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -376 1 1 0 45.3015368961 48.2898992834 10.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -377 1 1 0 45.6698729811 47.5 10.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -378 1 1 0 46.1697777844 46.7860619516 10.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -379 1 1 0 46.7860619516 46.1697777844 10.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -380 1 1 0 47.5 45.6698729811 10.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -381 1 1 0 48.2898992834 45.3015368961 10.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -382 1 1 0 49.1317591117 45.0759612349 10.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -383 1 1 0 50.0 45.0 10.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -384 1 1 0 50.8682408883 45.0759612349 10.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -385 1 1 0 51.7101007166 45.3015368961 10.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -386 1 1 0 52.5 45.6698729811 10.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -387 1 1 0 53.2139380484 46.1697777844 10.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -388 1 1 0 53.8302222156 46.7860619516 10.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -389 1 1 0 54.3301270189 47.5 10.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -390 1 1 0 54.6984631039 48.2898992834 10.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -391 1 1 0 54.9240387651 49.1317591117 10.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -392 1 1 0 55.0 50.0 10.0 1.0 -2.44929359829e-16 0 0.872664625997 -75 42.5 42.5 0.2 -393 1 1 0 54.9240387651 50.8682408883 10.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -394 1 1 0 54.6984631039 51.7101007166 10.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -395 1 1 0 54.3301270189 52.5 10.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -396 1 1 0 53.8302222156 53.2139380484 10.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -397 1 1 0 52.8678821818 54.0957602214 11.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -398 1 1 0 52.1130913087 54.5315389352 11.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -399 1 1 0 51.2940952255 54.8296291314 11.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -400 1 1 0 50.4357787137 54.9809734905 11.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -401 1 1 0 49.5642212863 54.9809734905 11.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -402 1 1 0 48.7059047745 54.8296291314 11.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -403 1 1 0 47.8869086913 54.5315389352 11.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -404 1 1 0 47.1321178182 54.0957602214 11.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -405 1 1 0 46.4644660941 53.5355339059 11.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -406 1 1 0 45.9042397786 52.8678821818 11.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -407 1 1 0 45.4684610648 52.1130913087 11.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -408 1 1 0 45.1703708686 51.2940952255 11.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -409 1 1 0 45.0190265095 50.4357787137 11.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -410 1 1 0 45.0190265095 49.5642212863 11.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -411 1 1 0 45.1703708686 48.7059047745 11.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -412 1 1 0 45.4684610648 47.8869086913 11.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -413 1 1 0 45.9042397786 47.1321178182 11.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -414 1 1 0 46.4644660941 46.4644660941 11.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -415 1 1 0 47.1321178182 45.9042397786 11.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -416 1 1 0 47.8869086913 45.4684610648 11.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -417 1 1 0 48.7059047745 45.1703708686 11.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -418 1 1 0 49.5642212863 45.0190265095 11.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -419 1 1 0 50.4357787137 45.0190265095 11.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -420 1 1 0 51.2940952255 45.1703708686 11.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -421 1 1 0 52.1130913087 45.4684610648 11.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -422 1 1 0 52.8678821818 45.9042397786 11.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -423 1 1 0 53.5355339059 46.4644660941 11.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -424 1 1 0 54.0957602214 47.1321178182 11.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -425 1 1 0 54.5315389352 47.8869086913 11.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -426 1 1 0 54.8296291314 48.7059047745 11.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -427 1 1 0 54.9809734905 49.5642212863 11.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -428 1 1 0 54.9809734905 50.4357787137 11.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -429 1 1 0 54.8296291314 51.2940952255 11.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -430 1 1 0 54.5315389352 52.1130913087 11.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -431 1 1 0 54.0957602214 52.8678821818 11.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -432 1 1 0 53.5355339059 53.5355339059 11.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -433 1 1 0 52.5 54.3301270189 12.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -434 1 1 0 51.7101007166 54.6984631039 12.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -435 1 1 0 50.8682408883 54.9240387651 12.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -436 1 1 0 50.0 55.0 12.0 6.12323399574e-17 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -437 1 1 0 49.1317591117 54.9240387651 12.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -438 1 1 0 48.2898992834 54.6984631039 12.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -439 1 1 0 47.5 54.3301270189 12.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -440 1 1 0 46.7860619516 53.8302222156 12.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -441 1 1 0 46.1697777844 53.2139380484 12.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -442 1 1 0 45.6698729811 52.5 12.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -443 1 1 0 45.3015368961 51.7101007166 12.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -444 1 1 0 45.0759612349 50.8682408883 12.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -445 1 1 0 45.0 50.0 12.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 -446 1 1 0 45.0759612349 49.1317591117 12.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -447 1 1 0 45.3015368961 48.2898992834 12.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -448 1 1 0 45.6698729811 47.5 12.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -449 1 1 0 46.1697777844 46.7860619516 12.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -450 1 1 0 46.7860619516 46.1697777844 12.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -451 1 1 0 47.5 45.6698729811 12.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -452 1 1 0 48.2898992834 45.3015368961 12.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -453 1 1 0 49.1317591117 45.0759612349 12.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -454 1 1 0 50.0 45.0 12.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -455 1 1 0 50.8682408883 45.0759612349 12.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -456 1 1 0 51.7101007166 45.3015368961 12.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -457 1 1 0 52.5 45.6698729811 12.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -458 1 1 0 53.2139380484 46.1697777844 12.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -459 1 1 0 53.8302222156 46.7860619516 12.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -460 1 1 0 54.3301270189 47.5 12.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -461 1 1 0 54.6984631039 48.2898992834 12.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -462 1 1 0 54.9240387651 49.1317591117 12.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -463 1 1 0 55.0 50.0 12.0 1.0 -2.44929359829e-16 0 0.872664625997 -75 42.5 42.5 0.2 -464 1 1 0 54.9240387651 50.8682408883 12.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -465 1 1 0 54.6984631039 51.7101007166 12.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -466 1 1 0 54.3301270189 52.5 12.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -467 1 1 0 53.8302222156 53.2139380484 12.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -468 1 1 0 53.2139380484 53.8302222156 12.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -469 1 1 0 52.1130913087 54.5315389352 13.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -470 1 1 0 51.2940952255 54.8296291314 13.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -471 1 1 0 50.4357787137 54.9809734905 13.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -472 1 1 0 49.5642212863 54.9809734905 13.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -473 1 1 0 48.7059047745 54.8296291314 13.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -474 1 1 0 47.8869086913 54.5315389352 13.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -475 1 1 0 47.1321178182 54.0957602214 13.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -476 1 1 0 46.4644660941 53.5355339059 13.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -477 1 1 0 45.9042397786 52.8678821818 13.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -478 1 1 0 45.4684610648 52.1130913087 13.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -479 1 1 0 45.1703708686 51.2940952255 13.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -480 1 1 0 45.0190265095 50.4357787137 13.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -481 1 1 0 45.0190265095 49.5642212863 13.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -482 1 1 0 45.1703708686 48.7059047745 13.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -483 1 1 0 45.4684610648 47.8869086913 13.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -484 1 1 0 45.9042397786 47.1321178182 13.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -485 1 1 0 46.4644660941 46.4644660941 13.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -486 1 1 0 47.1321178182 45.9042397786 13.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -487 1 1 0 47.8869086913 45.4684610648 13.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -488 1 1 0 48.7059047745 45.1703708686 13.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -489 1 1 0 49.5642212863 45.0190265095 13.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -490 1 1 0 50.4357787137 45.0190265095 13.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -491 1 1 0 51.2940952255 45.1703708686 13.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -492 1 1 0 52.1130913087 45.4684610648 13.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -493 1 1 0 52.8678821818 45.9042397786 13.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -494 1 1 0 53.5355339059 46.4644660941 13.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -495 1 1 0 54.0957602214 47.1321178182 13.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -496 1 1 0 54.5315389352 47.8869086913 13.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -497 1 1 0 54.8296291314 48.7059047745 13.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -498 1 1 0 54.9809734905 49.5642212863 13.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -499 1 1 0 54.9809734905 50.4357787137 13.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -500 1 1 0 54.8296291314 51.2940952255 13.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -501 1 1 0 54.5315389352 52.1130913087 13.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -502 1 1 0 54.0957602214 52.8678821818 13.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -503 1 1 0 53.5355339059 53.5355339059 13.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -504 1 1 0 52.8678821818 54.0957602214 13.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -505 1 1 0 51.7101007166 54.6984631039 14.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -506 1 1 0 50.8682408883 54.9240387651 14.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -507 1 1 0 50.0 55.0 14.0 2.83276944882e-16 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -508 1 1 0 49.1317591117 54.9240387651 14.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -509 1 1 0 48.2898992834 54.6984631039 14.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -510 1 1 0 47.5 54.3301270189 14.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -511 1 1 0 46.7860619516 53.8302222156 14.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -512 1 1 0 46.1697777844 53.2139380484 14.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -513 1 1 0 45.6698729811 52.5 14.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -514 1 1 0 45.3015368961 51.7101007166 14.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -515 1 1 0 45.0759612349 50.8682408883 14.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -516 1 1 0 45.0 50.0 14.0 -1.0 1.22464679915e-16 0 0.872664625997 -75 42.5 42.5 0.2 -517 1 1 0 45.0759612349 49.1317591117 14.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -518 1 1 0 45.3015368961 48.2898992834 14.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -519 1 1 0 45.6698729811 47.5 14.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -520 1 1 0 46.1697777844 46.7860619516 14.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -521 1 1 0 46.7860619516 46.1697777844 14.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -522 1 1 0 47.5 45.6698729811 14.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -523 1 1 0 48.2898992834 45.3015368961 14.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -524 1 1 0 49.1317591117 45.0759612349 14.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -525 1 1 0 50.0 45.0 14.0 -1.83697019872e-16 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -526 1 1 0 50.8682408883 45.0759612349 14.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -527 1 1 0 51.7101007166 45.3015368961 14.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -528 1 1 0 52.5 45.6698729811 14.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -529 1 1 0 53.2139380484 46.1697777844 14.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -530 1 1 0 53.8302222156 46.7860619516 14.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -531 1 1 0 54.3301270189 47.5 14.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -532 1 1 0 54.6984631039 48.2898992834 14.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -533 1 1 0 54.9240387651 49.1317591117 14.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -534 1 1 0 55.0 50.0 14.0 1.0 -1.13310777953e-15 0 0.872664625997 -75 42.5 42.5 0.2 -535 1 1 0 54.9240387651 50.8682408883 14.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -536 1 1 0 54.6984631039 51.7101007166 14.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -537 1 1 0 54.3301270189 52.5 14.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -538 1 1 0 53.8302222156 53.2139380484 14.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -539 1 1 0 53.2139380484 53.8302222156 14.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -540 1 1 0 52.5 54.3301270189 14.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -541 1 1 0 51.2940952255 54.8296291314 15.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -542 1 1 0 50.4357787137 54.9809734905 15.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -543 1 1 0 49.5642212863 54.9809734905 15.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -544 1 1 0 48.7059047745 54.8296291314 15.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -545 1 1 0 47.8869086913 54.5315389352 15.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -546 1 1 0 47.1321178182 54.0957602214 15.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -547 1 1 0 46.4644660941 53.5355339059 15.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -548 1 1 0 45.9042397786 52.8678821818 15.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -549 1 1 0 45.4684610648 52.1130913087 15.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -550 1 1 0 45.1703708686 51.2940952255 15.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -551 1 1 0 45.0190265095 50.4357787137 15.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -552 1 1 0 45.0190265095 49.5642212863 15.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -553 1 1 0 45.1703708686 48.7059047745 15.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -554 1 1 0 45.4684610648 47.8869086913 15.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -555 1 1 0 45.9042397786 47.1321178182 15.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -556 1 1 0 46.4644660941 46.4644660941 15.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -557 1 1 0 47.1321178182 45.9042397786 15.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -558 1 1 0 47.8869086913 45.4684610648 15.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -559 1 1 0 48.7059047745 45.1703708686 15.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -560 1 1 0 49.5642212863 45.0190265095 15.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -561 1 1 0 50.4357787137 45.0190265095 15.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -562 1 1 0 51.2940952255 45.1703708686 15.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -563 1 1 0 52.1130913087 45.4684610648 15.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -564 1 1 0 52.8678821818 45.9042397786 15.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -565 1 1 0 53.5355339059 46.4644660941 15.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -566 1 1 0 54.0957602214 47.1321178182 15.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -567 1 1 0 54.5315389352 47.8869086913 15.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -568 1 1 0 54.8296291314 48.7059047745 15.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -569 1 1 0 54.9809734905 49.5642212863 15.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -570 1 1 0 54.9809734905 50.4357787137 15.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -571 1 1 0 54.8296291314 51.2940952255 15.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -572 1 1 0 54.5315389352 52.1130913087 15.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -573 1 1 0 54.0957602214 52.8678821818 15.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -574 1 1 0 53.5355339059 53.5355339059 15.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -575 1 1 0 52.8678821818 54.0957602214 15.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -576 1 1 0 52.1130913087 54.5315389352 15.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -577 1 1 0 50.8682408883 54.9240387651 16.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -578 1 1 0 50.0 55.0 16.0 5.05321549807e-16 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -579 1 1 0 49.1317591117 54.9240387651 16.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -580 1 1 0 48.2898992834 54.6984631039 16.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -581 1 1 0 47.5 54.3301270189 16.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -582 1 1 0 46.7860619516 53.8302222156 16.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -583 1 1 0 46.1697777844 53.2139380484 16.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -584 1 1 0 45.6698729811 52.5 16.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -585 1 1 0 45.3015368961 51.7101007166 16.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -586 1 1 0 45.0759612349 50.8682408883 16.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -587 1 1 0 45.0 50.0 16.0 -1.0 5.66553889765e-16 0 0.872664625997 -75 42.5 42.5 0.2 -588 1 1 0 45.0759612349 49.1317591117 16.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -589 1 1 0 45.3015368961 48.2898992834 16.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -590 1 1 0 45.6698729811 47.5 16.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -591 1 1 0 46.1697777844 46.7860619516 16.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -592 1 1 0 46.7860619516 46.1697777844 16.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -593 1 1 0 47.5 45.6698729811 16.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -594 1 1 0 48.2898992834 45.3015368961 16.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -595 1 1 0 49.1317591117 45.0759612349 16.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -596 1 1 0 50.0 45.0 16.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -597 1 1 0 50.8682408883 45.0759612349 16.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -598 1 1 0 51.7101007166 45.3015368961 16.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -599 1 1 0 52.5 45.6698729811 16.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -600 1 1 0 53.2139380484 46.1697777844 16.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -601 1 1 0 53.8302222156 46.7860619516 16.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -602 1 1 0 54.3301270189 47.5 16.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -603 1 1 0 54.6984631039 48.2898992834 16.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -604 1 1 0 54.9240387651 49.1317591117 16.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -605 1 1 0 55.0 50.0 16.0 1.0 -1.13310777953e-15 0 0.872664625997 -75 42.5 42.5 0.2 -606 1 1 0 54.9240387651 50.8682408883 16.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -607 1 1 0 54.6984631039 51.7101007166 16.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -608 1 1 0 54.3301270189 52.5 16.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -609 1 1 0 53.8302222156 53.2139380484 16.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -610 1 1 0 53.2139380484 53.8302222156 16.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -611 1 1 0 52.5 54.3301270189 16.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -612 1 1 0 51.7101007166 54.6984631039 16.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -613 1 1 0 50.4357787137 54.9809734905 17.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -614 1 1 0 49.5642212863 54.9809734905 17.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -615 1 1 0 48.7059047745 54.8296291314 17.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -616 1 1 0 47.8869086913 54.5315389352 17.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -617 1 1 0 47.1321178182 54.0957602214 17.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -618 1 1 0 46.4644660941 53.5355339059 17.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -619 1 1 0 45.9042397786 52.8678821818 17.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -620 1 1 0 45.4684610648 52.1130913087 17.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -621 1 1 0 45.1703708686 51.2940952255 17.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -622 1 1 0 45.0190265095 50.4357787137 17.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -623 1 1 0 45.0190265095 49.5642212863 17.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -624 1 1 0 45.1703708686 48.7059047745 17.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -625 1 1 0 45.4684610648 47.8869086913 17.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -626 1 1 0 45.9042397786 47.1321178182 17.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -627 1 1 0 46.4644660941 46.4644660941 17.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -628 1 1 0 47.1321178182 45.9042397786 17.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -629 1 1 0 47.8869086913 45.4684610648 17.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -630 1 1 0 48.7059047745 45.1703708686 17.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -631 1 1 0 49.5642212863 45.0190265095 17.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -632 1 1 0 50.4357787137 45.0190265095 17.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -633 1 1 0 51.2940952255 45.1703708686 17.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -634 1 1 0 52.1130913087 45.4684610648 17.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -635 1 1 0 52.8678821818 45.9042397786 17.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -636 1 1 0 53.5355339059 46.4644660941 17.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -637 1 1 0 54.0957602214 47.1321178182 17.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -638 1 1 0 54.5315389352 47.8869086913 17.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -639 1 1 0 54.8296291314 48.7059047745 17.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -640 1 1 0 54.9809734905 49.5642212863 17.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -641 1 1 0 54.9809734905 50.4357787137 17.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -642 1 1 0 54.8296291314 51.2940952255 17.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -643 1 1 0 54.5315389352 52.1130913087 17.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -644 1 1 0 54.0957602214 52.8678821818 17.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -645 1 1 0 53.5355339059 53.5355339059 17.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -646 1 1 0 52.8678821818 54.0957602214 17.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -647 1 1 0 52.1130913087 54.5315389352 17.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -648 1 1 0 51.2940952255 54.8296291314 17.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -649 1 1 0 50.0 55.0 18.0 7.27366154732e-16 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -650 1 1 0 49.1317591117 54.9240387651 18.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -651 1 1 0 48.2898992834 54.6984631039 18.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -652 1 1 0 47.5 54.3301270189 18.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -653 1 1 0 46.7860619516 53.8302222156 18.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -654 1 1 0 46.1697777844 53.2139380484 18.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -655 1 1 0 45.6698729811 52.5 18.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -656 1 1 0 45.3015368961 51.7101007166 18.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -657 1 1 0 45.0759612349 50.8682408883 18.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -658 1 1 0 45.0 50.0 18.0 -1.0 1.01064309961e-15 0 0.872664625997 -75 42.5 42.5 0.2 -659 1 1 0 45.0759612349 49.1317591117 18.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -660 1 1 0 45.3015368961 48.2898992834 18.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -661 1 1 0 45.6698729811 47.5 18.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -662 1 1 0 46.1697777844 46.7860619516 18.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -663 1 1 0 46.7860619516 46.1697777844 18.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -664 1 1 0 47.5 45.6698729811 18.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -665 1 1 0 48.2898992834 45.3015368961 18.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -666 1 1 0 49.1317591117 45.0759612349 18.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -667 1 1 0 50.0 45.0 18.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -668 1 1 0 50.8682408883 45.0759612349 18.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -669 1 1 0 51.7101007166 45.3015368961 18.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -670 1 1 0 52.5 45.6698729811 18.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -671 1 1 0 53.2139380484 46.1697777844 18.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -672 1 1 0 53.8302222156 46.7860619516 18.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -673 1 1 0 54.3301270189 47.5 18.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -674 1 1 0 54.6984631039 48.2898992834 18.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -675 1 1 0 54.9240387651 49.1317591117 18.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -676 1 1 0 55.0 50.0 18.0 1.0 -1.13310777953e-15 0 0.872664625997 -75 42.5 42.5 0.2 -677 1 1 0 54.9240387651 50.8682408883 18.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -678 1 1 0 54.6984631039 51.7101007166 18.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -679 1 1 0 54.3301270189 52.5 18.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -680 1 1 0 53.8302222156 53.2139380484 18.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -681 1 1 0 53.2139380484 53.8302222156 18.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -682 1 1 0 52.5 54.3301270189 18.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -683 1 1 0 51.7101007166 54.6984631039 18.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -684 1 1 0 50.8682408883 54.9240387651 18.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -685 1 1 0 49.5642212863 54.9809734905 19.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -686 1 1 0 48.7059047745 54.8296291314 19.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -687 1 1 0 47.8869086913 54.5315389352 19.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -688 1 1 0 47.1321178182 54.0957602214 19.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -689 1 1 0 46.4644660941 53.5355339059 19.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -690 1 1 0 45.9042397786 52.8678821818 19.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -691 1 1 0 45.4684610648 52.1130913087 19.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -692 1 1 0 45.1703708686 51.2940952255 19.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -693 1 1 0 45.0190265095 50.4357787137 19.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -694 1 1 0 45.0190265095 49.5642212863 19.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -695 1 1 0 45.1703708686 48.7059047745 19.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -696 1 1 0 45.4684610648 47.8869086913 19.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -697 1 1 0 45.9042397786 47.1321178182 19.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -698 1 1 0 46.4644660941 46.4644660941 19.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -699 1 1 0 47.1321178182 45.9042397786 19.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -700 1 1 0 47.8869086913 45.4684610648 19.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -701 1 1 0 48.7059047745 45.1703708686 19.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -702 1 1 0 49.5642212863 45.0190265095 19.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -703 1 1 0 50.4357787137 45.0190265095 19.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -704 1 1 0 51.2940952255 45.1703708686 19.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -705 1 1 0 52.1130913087 45.4684610648 19.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -706 1 1 0 52.8678821818 45.9042397786 19.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -707 1 1 0 53.5355339059 46.4644660941 19.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -708 1 1 0 54.0957602214 47.1321178182 19.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -709 1 1 0 54.5315389352 47.8869086913 19.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -710 1 1 0 54.8296291314 48.7059047745 19.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -711 1 1 0 54.9809734905 49.5642212863 19.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -712 1 1 0 54.9809734905 50.4357787137 19.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -713 1 1 0 54.8296291314 51.2940952255 19.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -714 1 1 0 54.5315389352 52.1130913087 19.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -715 1 1 0 54.0957602214 52.8678821818 19.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -716 1 1 0 53.5355339059 53.5355339059 19.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -717 1 1 0 52.8678821818 54.0957602214 19.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -718 1 1 0 52.1130913087 54.5315389352 19.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -719 1 1 0 51.2940952255 54.8296291314 19.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -720 1 1 0 50.4357787137 54.9809734905 19.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -721 1 1 0 49.1317591117 54.9240387651 20.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -722 1 1 0 48.2898992834 54.6984631039 20.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -723 1 1 0 47.5 54.3301270189 20.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -724 1 1 0 46.7860619516 53.8302222156 20.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -725 1 1 0 46.1697777844 53.2139380484 20.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -726 1 1 0 45.6698729811 52.5 20.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -727 1 1 0 45.3015368961 51.7101007166 20.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -728 1 1 0 45.0759612349 50.8682408883 20.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -729 1 1 0 45.0 50.0 20.0 -1.0 1.01064309961e-15 0 0.872664625997 -75 42.5 42.5 0.2 -730 1 1 0 45.0759612349 49.1317591117 20.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -731 1 1 0 45.3015368961 48.2898992834 20.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -732 1 1 0 45.6698729811 47.5 20.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -733 1 1 0 46.1697777844 46.7860619516 20.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -734 1 1 0 46.7860619516 46.1697777844 20.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -735 1 1 0 47.5 45.6698729811 20.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -736 1 1 0 48.2898992834 45.3015368961 20.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -737 1 1 0 49.1317591117 45.0759612349 20.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -738 1 1 0 50.0 45.0 20.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -739 1 1 0 50.8682408883 45.0759612349 20.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -740 1 1 0 51.7101007166 45.3015368961 20.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -741 1 1 0 52.5 45.6698729811 20.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -742 1 1 0 53.2139380484 46.1697777844 20.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -743 1 1 0 53.8302222156 46.7860619516 20.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -744 1 1 0 54.3301270189 47.5 20.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -745 1 1 0 54.6984631039 48.2898992834 20.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -746 1 1 0 54.9240387651 49.1317591117 20.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -747 1 1 0 55.0 50.0 20.0 1.0 -1.13310777953e-15 0 0.872664625997 -75 42.5 42.5 0.2 -748 1 1 0 54.9240387651 50.8682408883 20.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -749 1 1 0 54.6984631039 51.7101007166 20.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -750 1 1 0 54.3301270189 52.5 20.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -751 1 1 0 53.8302222156 53.2139380484 20.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -752 1 1 0 53.2139380484 53.8302222156 20.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -753 1 1 0 52.5 54.3301270189 20.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -754 1 1 0 51.7101007166 54.6984631039 20.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -755 1 1 0 50.8682408883 54.9240387651 20.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -756 1 1 0 50.0 55.0 20.0 1.19434011949e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -757 1 1 0 48.7059047745 54.8296291314 21.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -758 1 1 0 47.8869086913 54.5315389352 21.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -759 1 1 0 47.1321178182 54.0957602214 21.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -760 1 1 0 46.4644660941 53.5355339059 21.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -761 1 1 0 45.9042397786 52.8678821818 21.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -762 1 1 0 45.4684610648 52.1130913087 21.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -763 1 1 0 45.1703708686 51.2940952255 21.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -764 1 1 0 45.0190265095 50.4357787137 21.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -765 1 1 0 45.0190265095 49.5642212863 21.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -766 1 1 0 45.1703708686 48.7059047745 21.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -767 1 1 0 45.4684610648 47.8869086913 21.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -768 1 1 0 45.9042397786 47.1321178182 21.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -769 1 1 0 46.4644660941 46.4644660941 21.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -770 1 1 0 47.1321178182 45.9042397786 21.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -771 1 1 0 47.8869086913 45.4684610648 21.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -772 1 1 0 48.7059047745 45.1703708686 21.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -773 1 1 0 49.5642212863 45.0190265095 21.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -774 1 1 0 50.4357787137 45.0190265095 21.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -775 1 1 0 51.2940952255 45.1703708686 21.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -776 1 1 0 52.1130913087 45.4684610648 21.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -777 1 1 0 52.8678821818 45.9042397786 21.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -778 1 1 0 53.5355339059 46.4644660941 21.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -779 1 1 0 54.0957602214 47.1321178182 21.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -780 1 1 0 54.5315389352 47.8869086913 21.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -781 1 1 0 54.8296291314 48.7059047745 21.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -782 1 1 0 54.9809734905 49.5642212863 21.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -783 1 1 0 54.9809734905 50.4357787137 21.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -784 1 1 0 54.8296291314 51.2940952255 21.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -785 1 1 0 54.5315389352 52.1130913087 21.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -786 1 1 0 54.0957602214 52.8678821818 21.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -787 1 1 0 53.5355339059 53.5355339059 21.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -788 1 1 0 52.8678821818 54.0957602214 21.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -789 1 1 0 52.1130913087 54.5315389352 21.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -790 1 1 0 51.2940952255 54.8296291314 21.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -791 1 1 0 50.4357787137 54.9809734905 21.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -792 1 1 0 49.5642212863 54.9809734905 21.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -793 1 1 0 48.2898992834 54.6984631039 22.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -794 1 1 0 47.5 54.3301270189 22.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -795 1 1 0 46.7860619516 53.8302222156 22.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -796 1 1 0 46.1697777844 53.2139380484 22.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -797 1 1 0 45.6698729811 52.5 22.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -798 1 1 0 45.3015368961 51.7101007166 22.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -799 1 1 0 45.0759612349 50.8682408883 22.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -800 1 1 0 45.0 50.0 22.0 -1.0 1.01064309961e-15 0 0.872664625997 -75 42.5 42.5 0.2 -801 1 1 0 45.0759612349 49.1317591117 22.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -802 1 1 0 45.3015368961 48.2898992834 22.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -803 1 1 0 45.6698729811 47.5 22.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -804 1 1 0 46.1697777844 46.7860619516 22.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -805 1 1 0 46.7860619516 46.1697777844 22.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -806 1 1 0 47.5 45.6698729811 22.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -807 1 1 0 48.2898992834 45.3015368961 22.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -808 1 1 0 49.1317591117 45.0759612349 22.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -809 1 1 0 50.0 45.0 22.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -810 1 1 0 50.8682408883 45.0759612349 22.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -811 1 1 0 51.7101007166 45.3015368961 22.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -812 1 1 0 52.5 45.6698729811 22.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -813 1 1 0 53.2139380484 46.1697777844 22.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -814 1 1 0 53.8302222156 46.7860619516 22.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -815 1 1 0 54.3301270189 47.5 22.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -816 1 1 0 54.6984631039 48.2898992834 22.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -817 1 1 0 54.9240387651 49.1317591117 22.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -818 1 1 0 55.0 50.0 22.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 -819 1 1 0 54.9240387651 50.8682408883 22.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -820 1 1 0 54.6984631039 51.7101007166 22.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -821 1 1 0 54.3301270189 52.5 22.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -822 1 1 0 53.8302222156 53.2139380484 22.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -823 1 1 0 53.2139380484 53.8302222156 22.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -824 1 1 0 52.5 54.3301270189 22.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -825 1 1 0 51.7101007166 54.6984631039 22.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -826 1 1 0 50.8682408883 54.9240387651 22.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -827 1 1 0 50.0 55.0 22.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -828 1 1 0 49.1317591117 54.9240387651 22.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -829 1 1 0 47.8869086913 54.5315389352 23.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -830 1 1 0 47.1321178182 54.0957602214 23.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -831 1 1 0 46.4644660941 53.5355339059 23.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -832 1 1 0 45.9042397786 52.8678821818 23.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -833 1 1 0 45.4684610648 52.1130913087 23.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -834 1 1 0 45.1703708686 51.2940952255 23.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -835 1 1 0 45.0190265095 50.4357787137 23.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -836 1 1 0 45.0190265095 49.5642212863 23.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -837 1 1 0 45.1703708686 48.7059047745 23.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -838 1 1 0 45.4684610648 47.8869086913 23.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -839 1 1 0 45.9042397786 47.1321178182 23.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -840 1 1 0 46.4644660941 46.4644660941 23.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -841 1 1 0 47.1321178182 45.9042397786 23.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -842 1 1 0 47.8869086913 45.4684610648 23.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -843 1 1 0 48.7059047745 45.1703708686 23.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -844 1 1 0 49.5642212863 45.0190265095 23.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -845 1 1 0 50.4357787137 45.0190265095 23.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -846 1 1 0 51.2940952255 45.1703708686 23.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -847 1 1 0 52.1130913087 45.4684610648 23.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -848 1 1 0 52.8678821818 45.9042397786 23.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -849 1 1 0 53.5355339059 46.4644660941 23.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -850 1 1 0 54.0957602214 47.1321178182 23.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -851 1 1 0 54.5315389352 47.8869086913 23.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -852 1 1 0 54.8296291314 48.7059047745 23.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -853 1 1 0 54.9809734905 49.5642212863 23.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -854 1 1 0 54.9809734905 50.4357787137 23.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -855 1 1 0 54.8296291314 51.2940952255 23.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -856 1 1 0 54.5315389352 52.1130913087 23.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -857 1 1 0 54.0957602214 52.8678821818 23.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -858 1 1 0 53.5355339059 53.5355339059 23.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -859 1 1 0 52.8678821818 54.0957602214 23.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -860 1 1 0 52.1130913087 54.5315389352 23.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -861 1 1 0 51.2940952255 54.8296291314 23.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -862 1 1 0 50.4357787137 54.9809734905 23.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -863 1 1 0 49.5642212863 54.9809734905 23.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -864 1 1 0 48.7059047745 54.8296291314 23.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -865 1 1 0 47.5 54.3301270189 24.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -866 1 1 0 46.7860619516 53.8302222156 24.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -867 1 1 0 46.1697777844 53.2139380484 24.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -868 1 1 0 45.6698729811 52.5 24.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -869 1 1 0 45.3015368961 51.7101007166 24.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -870 1 1 0 45.0759612349 50.8682408883 24.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -871 1 1 0 45.0 50.0 24.0 -1.0 1.01064309961e-15 0 0.872664625997 -75 42.5 42.5 0.2 -872 1 1 0 45.0759612349 49.1317591117 24.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -873 1 1 0 45.3015368961 48.2898992834 24.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -874 1 1 0 45.6698729811 47.5 24.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -875 1 1 0 46.1697777844 46.7860619516 24.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -876 1 1 0 46.7860619516 46.1697777844 24.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -877 1 1 0 47.5 45.6698729811 24.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -878 1 1 0 48.2898992834 45.3015368961 24.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -879 1 1 0 49.1317591117 45.0759612349 24.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -880 1 1 0 50.0 45.0 24.0 -1.07187543957e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -881 1 1 0 50.8682408883 45.0759612349 24.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -882 1 1 0 51.7101007166 45.3015368961 24.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -883 1 1 0 52.5 45.6698729811 24.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -884 1 1 0 53.2139380484 46.1697777844 24.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -885 1 1 0 53.8302222156 46.7860619516 24.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -886 1 1 0 54.3301270189 47.5 24.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -887 1 1 0 54.6984631039 48.2898992834 24.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -888 1 1 0 54.9240387651 49.1317591117 24.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -889 1 1 0 55.0 50.0 24.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 -890 1 1 0 54.9240387651 50.8682408883 24.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -891 1 1 0 54.6984631039 51.7101007166 24.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -892 1 1 0 54.3301270189 52.5 24.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -893 1 1 0 53.8302222156 53.2139380484 24.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -894 1 1 0 53.2139380484 53.8302222156 24.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -895 1 1 0 52.5 54.3301270189 24.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -896 1 1 0 51.7101007166 54.6984631039 24.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -897 1 1 0 50.8682408883 54.9240387651 24.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -898 1 1 0 50.0 55.0 24.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -899 1 1 0 49.1317591117 54.9240387651 24.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -900 1 1 0 48.2898992834 54.6984631039 24.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -901 1 1 0 47.1321178182 54.0957602214 25.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -902 1 1 0 46.4644660941 53.5355339059 25.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -903 1 1 0 45.9042397786 52.8678821818 25.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -904 1 1 0 45.4684610648 52.1130913087 25.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -905 1 1 0 45.1703708686 51.2940952255 25.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -906 1 1 0 45.0190265095 50.4357787137 25.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -907 1 1 0 45.0190265095 49.5642212863 25.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -908 1 1 0 45.1703708686 48.7059047745 25.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -909 1 1 0 45.4684610648 47.8869086913 25.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -910 1 1 0 45.9042397786 47.1321178182 25.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -911 1 1 0 46.4644660941 46.4644660941 25.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -912 1 1 0 47.1321178182 45.9042397786 25.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -913 1 1 0 47.8869086913 45.4684610648 25.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -914 1 1 0 48.7059047745 45.1703708686 25.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -915 1 1 0 49.5642212863 45.0190265095 25.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -916 1 1 0 50.4357787137 45.0190265095 25.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -917 1 1 0 51.2940952255 45.1703708686 25.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -918 1 1 0 52.1130913087 45.4684610648 25.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -919 1 1 0 52.8678821818 45.9042397786 25.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -920 1 1 0 53.5355339059 46.4644660941 25.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -921 1 1 0 54.0957602214 47.1321178182 25.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -922 1 1 0 54.5315389352 47.8869086913 25.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -923 1 1 0 54.8296291314 48.7059047745 25.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -924 1 1 0 54.9809734905 49.5642212863 25.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -925 1 1 0 54.9809734905 50.4357787137 25.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -926 1 1 0 54.8296291314 51.2940952255 25.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -927 1 1 0 54.5315389352 52.1130913087 25.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -928 1 1 0 54.0957602214 52.8678821818 25.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -929 1 1 0 53.5355339059 53.5355339059 25.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -930 1 1 0 52.8678821818 54.0957602214 25.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -931 1 1 0 52.1130913087 54.5315389352 25.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -932 1 1 0 51.2940952255 54.8296291314 25.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -933 1 1 0 50.4357787137 54.9809734905 25.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -934 1 1 0 49.5642212863 54.9809734905 25.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -935 1 1 0 48.7059047745 54.8296291314 25.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -936 1 1 0 47.8869086913 54.5315389352 25.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -937 1 1 0 46.7860619516 53.8302222156 26.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -938 1 1 0 46.1697777844 53.2139380484 26.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -939 1 1 0 45.6698729811 52.5 26.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -940 1 1 0 45.3015368961 51.7101007166 26.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -941 1 1 0 45.0759612349 50.8682408883 26.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -942 1 1 0 45.0 50.0 26.0 -1.0 1.45473230946e-15 0 0.872664625997 -75 42.5 42.5 0.2 -943 1 1 0 45.0759612349 49.1317591117 26.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -944 1 1 0 45.3015368961 48.2898992834 26.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -945 1 1 0 45.6698729811 47.5 26.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -946 1 1 0 46.1697777844 46.7860619516 26.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -947 1 1 0 46.7860619516 46.1697777844 26.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -948 1 1 0 47.5 45.6698729811 26.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -949 1 1 0 48.2898992834 45.3015368961 26.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -950 1 1 0 49.1317591117 45.0759612349 26.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -951 1 1 0 50.0 45.0 26.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -952 1 1 0 50.8682408883 45.0759612349 26.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -953 1 1 0 51.7101007166 45.3015368961 26.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -954 1 1 0 52.5 45.6698729811 26.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -955 1 1 0 53.2139380484 46.1697777844 26.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -956 1 1 0 53.8302222156 46.7860619516 26.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -957 1 1 0 54.3301270189 47.5 26.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -958 1 1 0 54.6984631039 48.2898992834 26.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -959 1 1 0 54.9240387651 49.1317591117 26.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -960 1 1 0 55.0 50.0 26.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 -961 1 1 0 54.9240387651 50.8682408883 26.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -962 1 1 0 54.6984631039 51.7101007166 26.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -963 1 1 0 54.3301270189 52.5 26.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -964 1 1 0 53.8302222156 53.2139380484 26.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -965 1 1 0 53.2139380484 53.8302222156 26.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -966 1 1 0 52.5 54.3301270189 26.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -967 1 1 0 51.7101007166 54.6984631039 26.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -968 1 1 0 50.8682408883 54.9240387651 26.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -969 1 1 0 50.0 55.0 26.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -970 1 1 0 49.1317591117 54.9240387651 26.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -971 1 1 0 48.2898992834 54.6984631039 26.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -972 1 1 0 47.5 54.3301270189 26.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -973 1 1 0 46.4644660941 53.5355339059 27.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -974 1 1 0 45.9042397786 52.8678821818 27.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -975 1 1 0 45.4684610648 52.1130913087 27.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -976 1 1 0 45.1703708686 51.2940952255 27.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -977 1 1 0 45.0190265095 50.4357787137 27.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -978 1 1 0 45.0190265095 49.5642212863 27.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -979 1 1 0 45.1703708686 48.7059047745 27.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -980 1 1 0 45.4684610648 47.8869086913 27.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -981 1 1 0 45.9042397786 47.1321178182 27.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -982 1 1 0 46.4644660941 46.4644660941 27.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -983 1 1 0 47.1321178182 45.9042397786 27.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -984 1 1 0 47.8869086913 45.4684610648 27.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -985 1 1 0 48.7059047745 45.1703708686 27.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -986 1 1 0 49.5642212863 45.0190265095 27.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -987 1 1 0 50.4357787137 45.0190265095 27.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -988 1 1 0 51.2940952255 45.1703708686 27.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -989 1 1 0 52.1130913087 45.4684610648 27.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -990 1 1 0 52.8678821818 45.9042397786 27.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -991 1 1 0 53.5355339059 46.4644660941 27.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -992 1 1 0 54.0957602214 47.1321178182 27.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -993 1 1 0 54.5315389352 47.8869086913 27.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -994 1 1 0 54.8296291314 48.7059047745 27.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -995 1 1 0 54.9809734905 49.5642212863 27.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -996 1 1 0 54.9809734905 50.4357787137 27.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -997 1 1 0 54.8296291314 51.2940952255 27.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -998 1 1 0 54.5315389352 52.1130913087 27.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -999 1 1 0 54.0957602214 52.8678821818 27.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1000 1 1 0 53.5355339059 53.5355339059 27.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1001 1 1 0 52.8678821818 54.0957602214 27.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1002 1 1 0 52.1130913087 54.5315389352 27.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1003 1 1 0 51.2940952255 54.8296291314 27.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1004 1 1 0 50.4357787137 54.9809734905 27.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1005 1 1 0 49.5642212863 54.9809734905 27.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1006 1 1 0 48.7059047745 54.8296291314 27.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1007 1 1 0 47.8869086913 54.5315389352 27.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1008 1 1 0 47.1321178182 54.0957602214 27.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1009 1 1 0 46.1697777844 53.2139380484 28.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1010 1 1 0 45.6698729811 52.5 28.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1011 1 1 0 45.3015368961 51.7101007166 28.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1012 1 1 0 45.0759612349 50.8682408883 28.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1013 1 1 0 45.0 50.0 28.0 -1.0 1.45473230946e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1014 1 1 0 45.0759612349 49.1317591117 28.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1015 1 1 0 45.3015368961 48.2898992834 28.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1016 1 1 0 45.6698729811 47.5 28.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1017 1 1 0 46.1697777844 46.7860619516 28.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1018 1 1 0 46.7860619516 46.1697777844 28.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1019 1 1 0 47.5 45.6698729811 28.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1020 1 1 0 48.2898992834 45.3015368961 28.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1021 1 1 0 49.1317591117 45.0759612349 28.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1022 1 1 0 50.0 45.0 28.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1023 1 1 0 50.8682408883 45.0759612349 28.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1024 1 1 0 51.7101007166 45.3015368961 28.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1025 1 1 0 52.5 45.6698729811 28.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1026 1 1 0 53.2139380484 46.1697777844 28.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1027 1 1 0 53.8302222156 46.7860619516 28.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1028 1 1 0 54.3301270189 47.5 28.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1029 1 1 0 54.6984631039 48.2898992834 28.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1030 1 1 0 54.9240387651 49.1317591117 28.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1031 1 1 0 55.0 50.0 28.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1032 1 1 0 54.9240387651 50.8682408883 28.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1033 1 1 0 54.6984631039 51.7101007166 28.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1034 1 1 0 54.3301270189 52.5 28.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1035 1 1 0 53.8302222156 53.2139380484 28.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1036 1 1 0 53.2139380484 53.8302222156 28.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1037 1 1 0 52.5 54.3301270189 28.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1038 1 1 0 51.7101007166 54.6984631039 28.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1039 1 1 0 50.8682408883 54.9240387651 28.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1040 1 1 0 50.0 55.0 28.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1041 1 1 0 49.1317591117 54.9240387651 28.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1042 1 1 0 48.2898992834 54.6984631039 28.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1043 1 1 0 47.5 54.3301270189 28.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1044 1 1 0 46.7860619516 53.8302222156 28.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1045 1 1 0 45.9042397786 52.8678821818 29.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1046 1 1 0 45.4684610648 52.1130913087 29.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1047 1 1 0 45.1703708686 51.2940952255 29.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1048 1 1 0 45.0190265095 50.4357787137 29.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1049 1 1 0 45.0190265095 49.5642212863 29.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1050 1 1 0 45.1703708686 48.7059047745 29.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1051 1 1 0 45.4684610648 47.8869086913 29.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1052 1 1 0 45.9042397786 47.1321178182 29.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1053 1 1 0 46.4644660941 46.4644660941 29.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1054 1 1 0 47.1321178182 45.9042397786 29.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1055 1 1 0 47.8869086913 45.4684610648 29.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1056 1 1 0 48.7059047745 45.1703708686 29.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1057 1 1 0 49.5642212863 45.0190265095 29.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1058 1 1 0 50.4357787137 45.0190265095 29.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1059 1 1 0 51.2940952255 45.1703708686 29.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1060 1 1 0 52.1130913087 45.4684610648 29.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1061 1 1 0 52.8678821818 45.9042397786 29.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1062 1 1 0 53.5355339059 46.4644660941 29.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1063 1 1 0 54.0957602214 47.1321178182 29.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1064 1 1 0 54.5315389352 47.8869086913 29.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1065 1 1 0 54.8296291314 48.7059047745 29.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1066 1 1 0 54.9809734905 49.5642212863 29.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1067 1 1 0 54.9809734905 50.4357787137 29.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1068 1 1 0 54.8296291314 51.2940952255 29.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1069 1 1 0 54.5315389352 52.1130913087 29.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1070 1 1 0 54.0957602214 52.8678821818 29.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1071 1 1 0 53.5355339059 53.5355339059 29.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1072 1 1 0 52.8678821818 54.0957602214 29.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1073 1 1 0 52.1130913087 54.5315389352 29.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1074 1 1 0 51.2940952255 54.8296291314 29.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1075 1 1 0 50.4357787137 54.9809734905 29.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1076 1 1 0 49.5642212863 54.9809734905 29.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1077 1 1 0 48.7059047745 54.8296291314 29.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1078 1 1 0 47.8869086913 54.5315389352 29.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1079 1 1 0 47.1321178182 54.0957602214 29.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1080 1 1 0 46.4644660941 53.5355339059 29.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1081 1 1 0 45.6698729811 52.5 30.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1082 1 1 0 45.3015368961 51.7101007166 30.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1083 1 1 0 45.0759612349 50.8682408883 30.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1084 1 1 0 45.0 50.0 30.0 -1.0 1.89882151931e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1085 1 1 0 45.0759612349 49.1317591117 30.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1086 1 1 0 45.3015368961 48.2898992834 30.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1087 1 1 0 45.6698729811 47.5 30.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1088 1 1 0 46.1697777844 46.7860619516 30.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1089 1 1 0 46.7860619516 46.1697777844 30.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1090 1 1 0 47.5 45.6698729811 30.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1091 1 1 0 48.2898992834 45.3015368961 30.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1092 1 1 0 49.1317591117 45.0759612349 30.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1093 1 1 0 50.0 45.0 30.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1094 1 1 0 50.8682408883 45.0759612349 30.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1095 1 1 0 51.7101007166 45.3015368961 30.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1096 1 1 0 52.5 45.6698729811 30.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1097 1 1 0 53.2139380484 46.1697777844 30.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1098 1 1 0 53.8302222156 46.7860619516 30.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1099 1 1 0 54.3301270189 47.5 30.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1100 1 1 0 54.6984631039 48.2898992834 30.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1101 1 1 0 54.9240387651 49.1317591117 30.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1102 1 1 0 55.0 50.0 30.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1103 1 1 0 54.9240387651 50.8682408883 30.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1104 1 1 0 54.6984631039 51.7101007166 30.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1105 1 1 0 54.3301270189 52.5 30.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1106 1 1 0 53.8302222156 53.2139380484 30.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1107 1 1 0 53.2139380484 53.8302222156 30.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1108 1 1 0 52.5 54.3301270189 30.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1109 1 1 0 51.7101007166 54.6984631039 30.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1110 1 1 0 50.8682408883 54.9240387651 30.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1111 1 1 0 50.0 55.0 30.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1112 1 1 0 49.1317591117 54.9240387651 30.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1113 1 1 0 48.2898992834 54.6984631039 30.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1114 1 1 0 47.5 54.3301270189 30.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1115 1 1 0 46.7860619516 53.8302222156 30.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1116 1 1 0 46.1697777844 53.2139380484 30.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1117 1 1 0 45.4684610648 52.1130913087 31.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1118 1 1 0 45.1703708686 51.2940952255 31.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1119 1 1 0 45.0190265095 50.4357787137 31.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1120 1 1 0 45.0190265095 49.5642212863 31.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1121 1 1 0 45.1703708686 48.7059047745 31.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1122 1 1 0 45.4684610648 47.8869086913 31.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1123 1 1 0 45.9042397786 47.1321178182 31.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1124 1 1 0 46.4644660941 46.4644660941 31.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1125 1 1 0 47.1321178182 45.9042397786 31.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1126 1 1 0 47.8869086913 45.4684610648 31.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1127 1 1 0 48.7059047745 45.1703708686 31.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1128 1 1 0 49.5642212863 45.0190265095 31.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1129 1 1 0 50.4357787137 45.0190265095 31.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1130 1 1 0 51.2940952255 45.1703708686 31.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1131 1 1 0 52.1130913087 45.4684610648 31.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1132 1 1 0 52.8678821818 45.9042397786 31.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1133 1 1 0 53.5355339059 46.4644660941 31.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1134 1 1 0 54.0957602214 47.1321178182 31.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1135 1 1 0 54.5315389352 47.8869086913 31.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1136 1 1 0 54.8296291314 48.7059047745 31.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1137 1 1 0 54.9809734905 49.5642212863 31.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1138 1 1 0 54.9809734905 50.4357787137 31.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1139 1 1 0 54.8296291314 51.2940952255 31.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1140 1 1 0 54.5315389352 52.1130913087 31.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1141 1 1 0 54.0957602214 52.8678821818 31.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1142 1 1 0 53.5355339059 53.5355339059 31.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1143 1 1 0 52.8678821818 54.0957602214 31.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1144 1 1 0 52.1130913087 54.5315389352 31.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1145 1 1 0 51.2940952255 54.8296291314 31.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1146 1 1 0 50.4357787137 54.9809734905 31.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1147 1 1 0 49.5642212863 54.9809734905 31.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1148 1 1 0 48.7059047745 54.8296291314 31.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1149 1 1 0 47.8869086913 54.5315389352 31.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1150 1 1 0 47.1321178182 54.0957602214 31.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1151 1 1 0 46.4644660941 53.5355339059 31.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1152 1 1 0 45.9042397786 52.8678821818 31.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1153 1 1 0 45.3015368961 51.7101007166 32.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1154 1 1 0 45.0759612349 50.8682408883 32.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1155 1 1 0 45.0 50.0 32.0 -1.0 1.89882151931e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1156 1 1 0 45.0759612349 49.1317591117 32.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1157 1 1 0 45.3015368961 48.2898992834 32.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1158 1 1 0 45.6698729811 47.5 32.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1159 1 1 0 46.1697777844 46.7860619516 32.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1160 1 1 0 46.7860619516 46.1697777844 32.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1161 1 1 0 47.5 45.6698729811 32.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1162 1 1 0 48.2898992834 45.3015368961 32.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1163 1 1 0 49.1317591117 45.0759612349 32.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1164 1 1 0 50.0 45.0 32.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1165 1 1 0 50.8682408883 45.0759612349 32.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1166 1 1 0 51.7101007166 45.3015368961 32.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1167 1 1 0 52.5 45.6698729811 32.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1168 1 1 0 53.2139380484 46.1697777844 32.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1169 1 1 0 53.8302222156 46.7860619516 32.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1170 1 1 0 54.3301270189 47.5 32.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1171 1 1 0 54.6984631039 48.2898992834 32.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1172 1 1 0 54.9240387651 49.1317591117 32.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1173 1 1 0 55.0 50.0 32.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1174 1 1 0 54.9240387651 50.8682408883 32.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1175 1 1 0 54.6984631039 51.7101007166 32.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1176 1 1 0 54.3301270189 52.5 32.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1177 1 1 0 53.8302222156 53.2139380484 32.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1178 1 1 0 53.2139380484 53.8302222156 32.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1179 1 1 0 52.5 54.3301270189 32.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1180 1 1 0 51.7101007166 54.6984631039 32.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1181 1 1 0 50.8682408883 54.9240387651 32.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1182 1 1 0 50.0 55.0 32.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1183 1 1 0 49.1317591117 54.9240387651 32.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1184 1 1 0 48.2898992834 54.6984631039 32.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1185 1 1 0 47.5 54.3301270189 32.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1186 1 1 0 46.7860619516 53.8302222156 32.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1187 1 1 0 46.1697777844 53.2139380484 32.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1188 1 1 0 45.6698729811 52.5 32.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1189 1 1 0 45.1703708686 51.2940952255 33.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1190 1 1 0 45.0190265095 50.4357787137 33.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1191 1 1 0 45.0190265095 49.5642212863 33.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1192 1 1 0 45.1703708686 48.7059047745 33.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1193 1 1 0 45.4684610648 47.8869086913 33.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1194 1 1 0 45.9042397786 47.1321178182 33.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1195 1 1 0 46.4644660941 46.4644660941 33.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1196 1 1 0 47.1321178182 45.9042397786 33.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1197 1 1 0 47.8869086913 45.4684610648 33.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1198 1 1 0 48.7059047745 45.1703708686 33.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1199 1 1 0 49.5642212863 45.0190265095 33.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1200 1 1 0 50.4357787137 45.0190265095 33.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1201 1 1 0 51.2940952255 45.1703708686 33.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1202 1 1 0 52.1130913087 45.4684610648 33.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1203 1 1 0 52.8678821818 45.9042397786 33.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1204 1 1 0 53.5355339059 46.4644660941 33.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1205 1 1 0 54.0957602214 47.1321178182 33.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1206 1 1 0 54.5315389352 47.8869086913 33.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1207 1 1 0 54.8296291314 48.7059047745 33.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1208 1 1 0 54.9809734905 49.5642212863 33.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1209 1 1 0 54.9809734905 50.4357787137 33.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1210 1 1 0 54.8296291314 51.2940952255 33.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1211 1 1 0 54.5315389352 52.1130913087 33.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1212 1 1 0 54.0957602214 52.8678821818 33.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1213 1 1 0 53.5355339059 53.5355339059 33.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1214 1 1 0 52.8678821818 54.0957602214 33.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1215 1 1 0 52.1130913087 54.5315389352 33.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1216 1 1 0 51.2940952255 54.8296291314 33.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1217 1 1 0 50.4357787137 54.9809734905 33.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1218 1 1 0 49.5642212863 54.9809734905 33.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1219 1 1 0 48.7059047745 54.8296291314 33.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1220 1 1 0 47.8869086913 54.5315389352 33.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1221 1 1 0 47.1321178182 54.0957602214 33.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1222 1 1 0 46.4644660941 53.5355339059 33.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1223 1 1 0 45.9042397786 52.8678821818 33.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1224 1 1 0 45.4684610648 52.1130913087 33.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1225 1 1 0 45.0759612349 50.8682408883 34.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1226 1 1 0 45.0 50.0 34.0 -1.0 2.34291072917e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1227 1 1 0 45.0759612349 49.1317591117 34.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1228 1 1 0 45.3015368961 48.2898992834 34.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1229 1 1 0 45.6698729811 47.5 34.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1230 1 1 0 46.1697777844 46.7860619516 34.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1231 1 1 0 46.7860619516 46.1697777844 34.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1232 1 1 0 47.5 45.6698729811 34.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1233 1 1 0 48.2898992834 45.3015368961 34.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1234 1 1 0 49.1317591117 45.0759612349 34.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1235 1 1 0 50.0 45.0 34.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1236 1 1 0 50.8682408883 45.0759612349 34.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1237 1 1 0 51.7101007166 45.3015368961 34.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1238 1 1 0 52.5 45.6698729811 34.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1239 1 1 0 53.2139380484 46.1697777844 34.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1240 1 1 0 53.8302222156 46.7860619516 34.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1241 1 1 0 54.3301270189 47.5 34.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1242 1 1 0 54.6984631039 48.2898992834 34.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1243 1 1 0 54.9240387651 49.1317591117 34.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1244 1 1 0 55.0 50.0 34.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1245 1 1 0 54.9240387651 50.8682408883 34.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1246 1 1 0 54.6984631039 51.7101007166 34.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1247 1 1 0 54.3301270189 52.5 34.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1248 1 1 0 53.8302222156 53.2139380484 34.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1249 1 1 0 53.2139380484 53.8302222156 34.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1250 1 1 0 52.5 54.3301270189 34.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1251 1 1 0 51.7101007166 54.6984631039 34.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1252 1 1 0 50.8682408883 54.9240387651 34.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1253 1 1 0 50.0 55.0 34.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1254 1 1 0 49.1317591117 54.9240387651 34.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1255 1 1 0 48.2898992834 54.6984631039 34.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1256 1 1 0 47.5 54.3301270189 34.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1257 1 1 0 46.7860619516 53.8302222156 34.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1258 1 1 0 46.1697777844 53.2139380484 34.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1259 1 1 0 45.6698729811 52.5 34.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1260 1 1 0 45.3015368961 51.7101007166 34.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1261 1 1 0 45.0190265095 50.4357787137 35.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1262 1 1 0 45.0190265095 49.5642212863 35.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1263 1 1 0 45.1703708686 48.7059047745 35.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1264 1 1 0 45.4684610648 47.8869086913 35.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1265 1 1 0 45.9042397786 47.1321178182 35.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1266 1 1 0 46.4644660941 46.4644660941 35.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1267 1 1 0 47.1321178182 45.9042397786 35.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1268 1 1 0 47.8869086913 45.4684610648 35.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1269 1 1 0 48.7059047745 45.1703708686 35.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1270 1 1 0 49.5642212863 45.0190265095 35.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1271 1 1 0 50.4357787137 45.0190265095 35.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1272 1 1 0 51.2940952255 45.1703708686 35.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1273 1 1 0 52.1130913087 45.4684610648 35.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1274 1 1 0 52.8678821818 45.9042397786 35.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1275 1 1 0 53.5355339059 46.4644660941 35.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1276 1 1 0 54.0957602214 47.1321178182 35.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1277 1 1 0 54.5315389352 47.8869086913 35.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1278 1 1 0 54.8296291314 48.7059047745 35.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1279 1 1 0 54.9809734905 49.5642212863 35.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1280 1 1 0 54.9809734905 50.4357787137 35.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1281 1 1 0 54.8296291314 51.2940952255 35.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1282 1 1 0 54.5315389352 52.1130913087 35.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1283 1 1 0 54.0957602214 52.8678821818 35.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1284 1 1 0 53.5355339059 53.5355339059 35.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1285 1 1 0 52.8678821818 54.0957602214 35.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1286 1 1 0 52.1130913087 54.5315389352 35.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1287 1 1 0 51.2940952255 54.8296291314 35.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1288 1 1 0 50.4357787137 54.9809734905 35.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1289 1 1 0 49.5642212863 54.9809734905 35.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1290 1 1 0 48.7059047745 54.8296291314 35.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1291 1 1 0 47.8869086913 54.5315389352 35.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1292 1 1 0 47.1321178182 54.0957602214 35.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1293 1 1 0 46.4644660941 53.5355339059 35.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1294 1 1 0 45.9042397786 52.8678821818 35.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1295 1 1 0 45.4684610648 52.1130913087 35.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1296 1 1 0 45.1703708686 51.2940952255 35.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1297 1 1 0 45.0 50.0 36.0 -1.0 2.34291072917e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1298 1 1 0 45.0759612349 49.1317591117 36.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1299 1 1 0 45.3015368961 48.2898992834 36.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1300 1 1 0 45.6698729811 47.5 36.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1301 1 1 0 46.1697777844 46.7860619516 36.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1302 1 1 0 46.7860619516 46.1697777844 36.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1303 1 1 0 47.5 45.6698729811 36.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1304 1 1 0 48.2898992834 45.3015368961 36.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1305 1 1 0 49.1317591117 45.0759612349 36.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1306 1 1 0 50.0 45.0 36.0 -1.96005385927e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1307 1 1 0 50.8682408883 45.0759612349 36.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1308 1 1 0 51.7101007166 45.3015368961 36.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1309 1 1 0 52.5 45.6698729811 36.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1310 1 1 0 53.2139380484 46.1697777844 36.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1311 1 1 0 53.8302222156 46.7860619516 36.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1312 1 1 0 54.3301270189 47.5 36.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1313 1 1 0 54.6984631039 48.2898992834 36.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1314 1 1 0 54.9240387651 49.1317591117 36.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1315 1 1 0 55.0 50.0 36.0 1.0 -2.02128619923e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1316 1 1 0 54.9240387651 50.8682408883 36.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1317 1 1 0 54.6984631039 51.7101007166 36.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1318 1 1 0 54.3301270189 52.5 36.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1319 1 1 0 53.8302222156 53.2139380484 36.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1320 1 1 0 53.2139380484 53.8302222156 36.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1321 1 1 0 52.5 54.3301270189 36.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1322 1 1 0 51.7101007166 54.6984631039 36.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1323 1 1 0 50.8682408883 54.9240387651 36.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1324 1 1 0 50.0 55.0 36.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1325 1 1 0 49.1317591117 54.9240387651 36.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1326 1 1 0 48.2898992834 54.6984631039 36.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1327 1 1 0 47.5 54.3301270189 36.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1328 1 1 0 46.7860619516 53.8302222156 36.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1329 1 1 0 46.1697777844 53.2139380484 36.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1330 1 1 0 45.6698729811 52.5 36.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1331 1 1 0 45.3015368961 51.7101007166 36.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1332 1 1 0 45.0759612349 50.8682408883 36.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1333 1 1 0 45.0190265095 49.5642212863 37.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1334 1 1 0 45.1703708686 48.7059047745 37.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1335 1 1 0 45.4684610648 47.8869086913 37.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1336 1 1 0 45.9042397786 47.1321178182 37.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1337 1 1 0 46.4644660941 46.4644660941 37.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1338 1 1 0 47.1321178182 45.9042397786 37.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1339 1 1 0 47.8869086913 45.4684610648 37.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1340 1 1 0 48.7059047745 45.1703708686 37.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1341 1 1 0 49.5642212863 45.0190265095 37.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1342 1 1 0 50.4357787137 45.0190265095 37.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1343 1 1 0 51.2940952255 45.1703708686 37.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1344 1 1 0 52.1130913087 45.4684610648 37.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1345 1 1 0 52.8678821818 45.9042397786 37.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1346 1 1 0 53.5355339059 46.4644660941 37.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1347 1 1 0 54.0957602214 47.1321178182 37.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1348 1 1 0 54.5315389352 47.8869086913 37.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1349 1 1 0 54.8296291314 48.7059047745 37.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1350 1 1 0 54.9809734905 49.5642212863 37.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1351 1 1 0 54.9809734905 50.4357787137 37.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1352 1 1 0 54.8296291314 51.2940952255 37.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1353 1 1 0 54.5315389352 52.1130913087 37.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1354 1 1 0 54.0957602214 52.8678821818 37.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1355 1 1 0 53.5355339059 53.5355339059 37.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1356 1 1 0 52.8678821818 54.0957602214 37.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1357 1 1 0 52.1130913087 54.5315389352 37.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1358 1 1 0 51.2940952255 54.8296291314 37.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1359 1 1 0 50.4357787137 54.9809734905 37.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1360 1 1 0 49.5642212863 54.9809734905 37.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1361 1 1 0 48.7059047745 54.8296291314 37.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1362 1 1 0 47.8869086913 54.5315389352 37.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1363 1 1 0 47.1321178182 54.0957602214 37.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1364 1 1 0 46.4644660941 53.5355339059 37.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1365 1 1 0 45.9042397786 52.8678821818 37.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1366 1 1 0 45.4684610648 52.1130913087 37.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1367 1 1 0 45.1703708686 51.2940952255 37.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1368 1 1 0 45.0190265095 50.4357787137 37.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1369 1 1 0 45.0759612349 49.1317591117 38.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1370 1 1 0 45.3015368961 48.2898992834 38.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1371 1 1 0 45.6698729811 47.5 38.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1372 1 1 0 46.1697777844 46.7860619516 38.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1373 1 1 0 46.7860619516 46.1697777844 38.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1374 1 1 0 47.5 45.6698729811 38.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1375 1 1 0 48.2898992834 45.3015368961 38.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1376 1 1 0 49.1317591117 45.0759612349 38.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1377 1 1 0 50.0 45.0 38.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1378 1 1 0 50.8682408883 45.0759612349 38.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1379 1 1 0 51.7101007166 45.3015368961 38.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1380 1 1 0 52.5 45.6698729811 38.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1381 1 1 0 53.2139380484 46.1697777844 38.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1382 1 1 0 53.8302222156 46.7860619516 38.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1383 1 1 0 54.3301270189 47.5 38.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1384 1 1 0 54.6984631039 48.2898992834 38.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1385 1 1 0 54.9240387651 49.1317591117 38.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1386 1 1 0 55.0 50.0 38.0 1.0 -2.90946461893e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1387 1 1 0 54.9240387651 50.8682408883 38.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1388 1 1 0 54.6984631039 51.7101007166 38.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1389 1 1 0 54.3301270189 52.5 38.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1390 1 1 0 53.8302222156 53.2139380484 38.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1391 1 1 0 53.2139380484 53.8302222156 38.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1392 1 1 0 52.5 54.3301270189 38.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1393 1 1 0 51.7101007166 54.6984631039 38.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1394 1 1 0 50.8682408883 54.9240387651 38.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1395 1 1 0 50.0 55.0 38.0 2.08251853919e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1396 1 1 0 49.1317591117 54.9240387651 38.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1397 1 1 0 48.2898992834 54.6984631039 38.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1398 1 1 0 47.5 54.3301270189 38.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1399 1 1 0 46.7860619516 53.8302222156 38.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1400 1 1 0 46.1697777844 53.2139380484 38.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1401 1 1 0 45.6698729811 52.5 38.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1402 1 1 0 45.3015368961 51.7101007166 38.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1403 1 1 0 45.0759612349 50.8682408883 38.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1404 1 1 0 45.0 50.0 38.0 -1.0 2.14375087914e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1405 1 1 0 45.1703708686 48.7059047745 39.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1406 1 1 0 45.4684610648 47.8869086913 39.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1407 1 1 0 45.9042397786 47.1321178182 39.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1408 1 1 0 46.4644660941 46.4644660941 39.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1409 1 1 0 47.1321178182 45.9042397786 39.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1410 1 1 0 47.8869086913 45.4684610648 39.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1411 1 1 0 48.7059047745 45.1703708686 39.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1412 1 1 0 49.5642212863 45.0190265095 39.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1413 1 1 0 50.4357787137 45.0190265095 39.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1414 1 1 0 51.2940952255 45.1703708686 39.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1415 1 1 0 52.1130913087 45.4684610648 39.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1416 1 1 0 52.8678821818 45.9042397786 39.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1417 1 1 0 53.5355339059 46.4644660941 39.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1418 1 1 0 54.0957602214 47.1321178182 39.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1419 1 1 0 54.5315389352 47.8869086913 39.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1420 1 1 0 54.8296291314 48.7059047745 39.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1421 1 1 0 54.9809734905 49.5642212863 39.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1422 1 1 0 54.9809734905 50.4357787137 39.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1423 1 1 0 54.8296291314 51.2940952255 39.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1424 1 1 0 54.5315389352 52.1130913087 39.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1425 1 1 0 54.0957602214 52.8678821818 39.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1426 1 1 0 53.5355339059 53.5355339059 39.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1427 1 1 0 52.8678821818 54.0957602214 39.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1428 1 1 0 52.1130913087 54.5315389352 39.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1429 1 1 0 51.2940952255 54.8296291314 39.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1430 1 1 0 50.4357787137 54.9809734905 39.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1431 1 1 0 49.5642212863 54.9809734905 39.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1432 1 1 0 48.7059047745 54.8296291314 39.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1433 1 1 0 47.8869086913 54.5315389352 39.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1434 1 1 0 47.1321178182 54.0957602214 39.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1435 1 1 0 46.4644660941 53.5355339059 39.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1436 1 1 0 45.9042397786 52.8678821818 39.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1437 1 1 0 45.4684610648 52.1130913087 39.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1438 1 1 0 45.1703708686 51.2940952255 39.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1439 1 1 0 45.0190265095 50.4357787137 39.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1440 1 1 0 45.0190265095 49.5642212863 39.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1441 1 1 0 45.3015368961 48.2898992834 40.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1442 1 1 0 45.6698729811 47.5 40.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1443 1 1 0 46.1697777844 46.7860619516 40.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1444 1 1 0 46.7860619516 46.1697777844 40.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1445 1 1 0 47.5 45.6698729811 40.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1446 1 1 0 48.2898992834 45.3015368961 40.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1447 1 1 0 49.1317591117 45.0759612349 40.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1448 1 1 0 50.0 45.0 40.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1449 1 1 0 50.8682408883 45.0759612349 40.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1450 1 1 0 51.7101007166 45.3015368961 40.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1451 1 1 0 52.5 45.6698729811 40.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1452 1 1 0 53.2139380484 46.1697777844 40.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1453 1 1 0 53.8302222156 46.7860619516 40.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1454 1 1 0 54.3301270189 47.5 40.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1455 1 1 0 54.6984631039 48.2898992834 40.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1456 1 1 0 54.9240387651 49.1317591117 40.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1457 1 1 0 55.0 50.0 40.0 1.0 -2.90946461893e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1458 1 1 0 54.9240387651 50.8682408883 40.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1459 1 1 0 54.6984631039 51.7101007166 40.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1460 1 1 0 54.3301270189 52.5 40.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1461 1 1 0 53.8302222156 53.2139380484 40.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1462 1 1 0 53.2139380484 53.8302222156 40.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1463 1 1 0 52.5 54.3301270189 40.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1464 1 1 0 51.7101007166 54.6984631039 40.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1465 1 1 0 50.8682408883 54.9240387651 40.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1466 1 1 0 50.0 55.0 40.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1467 1 1 0 49.1317591117 54.9240387651 40.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1468 1 1 0 48.2898992834 54.6984631039 40.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1469 1 1 0 47.5 54.3301270189 40.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1470 1 1 0 46.7860619516 53.8302222156 40.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1471 1 1 0 46.1697777844 53.2139380484 40.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1472 1 1 0 45.6698729811 52.5 40.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1473 1 1 0 45.3015368961 51.7101007166 40.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1474 1 1 0 45.0759612349 50.8682408883 40.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1475 1 1 0 45.0 50.0 40.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1476 1 1 0 45.0759612349 49.1317591117 40.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1477 1 1 0 45.4684610648 47.8869086913 41.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1478 1 1 0 45.9042397786 47.1321178182 41.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1479 1 1 0 46.4644660941 46.4644660941 41.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1480 1 1 0 47.1321178182 45.9042397786 41.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1481 1 1 0 47.8869086913 45.4684610648 41.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1482 1 1 0 48.7059047745 45.1703708686 41.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1483 1 1 0 49.5642212863 45.0190265095 41.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1484 1 1 0 50.4357787137 45.0190265095 41.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1485 1 1 0 51.2940952255 45.1703708686 41.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1486 1 1 0 52.1130913087 45.4684610648 41.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1487 1 1 0 52.8678821818 45.9042397786 41.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1488 1 1 0 53.5355339059 46.4644660941 41.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1489 1 1 0 54.0957602214 47.1321178182 41.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1490 1 1 0 54.5315389352 47.8869086913 41.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1491 1 1 0 54.8296291314 48.7059047745 41.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1492 1 1 0 54.9809734905 49.5642212863 41.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1493 1 1 0 54.9809734905 50.4357787137 41.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1494 1 1 0 54.8296291314 51.2940952255 41.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1495 1 1 0 54.5315389352 52.1130913087 41.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1496 1 1 0 54.0957602214 52.8678821818 41.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1497 1 1 0 53.5355339059 53.5355339059 41.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1498 1 1 0 52.8678821818 54.0957602214 41.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1499 1 1 0 52.1130913087 54.5315389352 41.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1500 1 1 0 51.2940952255 54.8296291314 41.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1501 1 1 0 50.4357787137 54.9809734905 41.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1502 1 1 0 49.5642212863 54.9809734905 41.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1503 1 1 0 48.7059047745 54.8296291314 41.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1504 1 1 0 47.8869086913 54.5315389352 41.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1505 1 1 0 47.1321178182 54.0957602214 41.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1506 1 1 0 46.4644660941 53.5355339059 41.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1507 1 1 0 45.9042397786 52.8678821818 41.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1508 1 1 0 45.4684610648 52.1130913087 41.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1509 1 1 0 45.1703708686 51.2940952255 41.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1510 1 1 0 45.0190265095 50.4357787137 41.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1511 1 1 0 45.0190265095 49.5642212863 41.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1512 1 1 0 45.1703708686 48.7059047745 41.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1513 1 1 0 45.6698729811 47.5 42.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1514 1 1 0 46.1697777844 46.7860619516 42.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1515 1 1 0 46.7860619516 46.1697777844 42.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1516 1 1 0 47.5 45.6698729811 42.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1517 1 1 0 48.2898992834 45.3015368961 42.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1518 1 1 0 49.1317591117 45.0759612349 42.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1519 1 1 0 50.0 45.0 42.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1520 1 1 0 50.8682408883 45.0759612349 42.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1521 1 1 0 51.7101007166 45.3015368961 42.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1522 1 1 0 52.5 45.6698729811 42.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1523 1 1 0 53.2139380484 46.1697777844 42.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1524 1 1 0 53.8302222156 46.7860619516 42.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1525 1 1 0 54.3301270189 47.5 42.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1526 1 1 0 54.6984631039 48.2898992834 42.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1527 1 1 0 54.9240387651 49.1317591117 42.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1528 1 1 0 55.0 50.0 42.0 1.0 -2.90946461893e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1529 1 1 0 54.9240387651 50.8682408883 42.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1530 1 1 0 54.6984631039 51.7101007166 42.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1531 1 1 0 54.3301270189 52.5 42.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1532 1 1 0 53.8302222156 53.2139380484 42.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1533 1 1 0 53.2139380484 53.8302222156 42.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1534 1 1 0 52.5 54.3301270189 42.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1535 1 1 0 51.7101007166 54.6984631039 42.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1536 1 1 0 50.8682408883 54.9240387651 42.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1537 1 1 0 50.0 55.0 42.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1538 1 1 0 49.1317591117 54.9240387651 42.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1539 1 1 0 48.2898992834 54.6984631039 42.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1540 1 1 0 47.5 54.3301270189 42.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1541 1 1 0 46.7860619516 53.8302222156 42.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1542 1 1 0 46.1697777844 53.2139380484 42.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1543 1 1 0 45.6698729811 52.5 42.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1544 1 1 0 45.3015368961 51.7101007166 42.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1545 1 1 0 45.0759612349 50.8682408883 42.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1546 1 1 0 45.0 50.0 42.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1547 1 1 0 45.0759612349 49.1317591117 42.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1548 1 1 0 45.3015368961 48.2898992834 42.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1549 1 1 0 45.9042397786 47.1321178182 43.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1550 1 1 0 46.4644660941 46.4644660941 43.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1551 1 1 0 47.1321178182 45.9042397786 43.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1552 1 1 0 47.8869086913 45.4684610648 43.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1553 1 1 0 48.7059047745 45.1703708686 43.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1554 1 1 0 49.5642212863 45.0190265095 43.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1555 1 1 0 50.4357787137 45.0190265095 43.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1556 1 1 0 51.2940952255 45.1703708686 43.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1557 1 1 0 52.1130913087 45.4684610648 43.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1558 1 1 0 52.8678821818 45.9042397786 43.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1559 1 1 0 53.5355339059 46.4644660941 43.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1560 1 1 0 54.0957602214 47.1321178182 43.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1561 1 1 0 54.5315389352 47.8869086913 43.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1562 1 1 0 54.8296291314 48.7059047745 43.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1563 1 1 0 54.9809734905 49.5642212863 43.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1564 1 1 0 54.9809734905 50.4357787137 43.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1565 1 1 0 54.8296291314 51.2940952255 43.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1566 1 1 0 54.5315389352 52.1130913087 43.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1567 1 1 0 54.0957602214 52.8678821818 43.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1568 1 1 0 53.5355339059 53.5355339059 43.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1569 1 1 0 52.8678821818 54.0957602214 43.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1570 1 1 0 52.1130913087 54.5315389352 43.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1571 1 1 0 51.2940952255 54.8296291314 43.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1572 1 1 0 50.4357787137 54.9809734905 43.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1573 1 1 0 49.5642212863 54.9809734905 43.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1574 1 1 0 48.7059047745 54.8296291314 43.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1575 1 1 0 47.8869086913 54.5315389352 43.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1576 1 1 0 47.1321178182 54.0957602214 43.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1577 1 1 0 46.4644660941 53.5355339059 43.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1578 1 1 0 45.9042397786 52.8678821818 43.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1579 1 1 0 45.4684610648 52.1130913087 43.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1580 1 1 0 45.1703708686 51.2940952255 43.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1581 1 1 0 45.0190265095 50.4357787137 43.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1582 1 1 0 45.0190265095 49.5642212863 43.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1583 1 1 0 45.1703708686 48.7059047745 43.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1584 1 1 0 45.4684610648 47.8869086913 43.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1585 1 1 0 46.1697777844 46.7860619516 44.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1586 1 1 0 46.7860619516 46.1697777844 44.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1587 1 1 0 47.5 45.6698729811 44.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1588 1 1 0 48.2898992834 45.3015368961 44.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1589 1 1 0 49.1317591117 45.0759612349 44.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1590 1 1 0 50.0 45.0 44.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1591 1 1 0 50.8682408883 45.0759612349 44.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1592 1 1 0 51.7101007166 45.3015368961 44.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1593 1 1 0 52.5 45.6698729811 44.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1594 1 1 0 53.2139380484 46.1697777844 44.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1595 1 1 0 53.8302222156 46.7860619516 44.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1596 1 1 0 54.3301270189 47.5 44.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1597 1 1 0 54.6984631039 48.2898992834 44.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1598 1 1 0 54.9240387651 49.1317591117 44.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1599 1 1 0 55.0 50.0 44.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1600 1 1 0 54.9240387651 50.8682408883 44.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1601 1 1 0 54.6984631039 51.7101007166 44.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1602 1 1 0 54.3301270189 52.5 44.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1603 1 1 0 53.8302222156 53.2139380484 44.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1604 1 1 0 53.2139380484 53.8302222156 44.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1605 1 1 0 52.5 54.3301270189 44.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1606 1 1 0 51.7101007166 54.6984631039 44.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1607 1 1 0 50.8682408883 54.9240387651 44.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1608 1 1 0 50.0 55.0 44.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1609 1 1 0 49.1317591117 54.9240387651 44.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1610 1 1 0 48.2898992834 54.6984631039 44.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1611 1 1 0 47.5 54.3301270189 44.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1612 1 1 0 46.7860619516 53.8302222156 44.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1613 1 1 0 46.1697777844 53.2139380484 44.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1614 1 1 0 45.6698729811 52.5 44.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1615 1 1 0 45.3015368961 51.7101007166 44.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1616 1 1 0 45.0759612349 50.8682408883 44.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1617 1 1 0 45.0 50.0 44.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1618 1 1 0 45.0759612349 49.1317591117 44.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1619 1 1 0 45.3015368961 48.2898992834 44.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1620 1 1 0 45.6698729811 47.5 44.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1621 1 1 0 46.4644660941 46.4644660941 45.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1622 1 1 0 47.1321178182 45.9042397786 45.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1623 1 1 0 47.8869086913 45.4684610648 45.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1624 1 1 0 48.7059047745 45.1703708686 45.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1625 1 1 0 49.5642212863 45.0190265095 45.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1626 1 1 0 50.4357787137 45.0190265095 45.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1627 1 1 0 51.2940952255 45.1703708686 45.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1628 1 1 0 52.1130913087 45.4684610648 45.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1629 1 1 0 52.8678821818 45.9042397786 45.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1630 1 1 0 53.5355339059 46.4644660941 45.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1631 1 1 0 54.0957602214 47.1321178182 45.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1632 1 1 0 54.5315389352 47.8869086913 45.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1633 1 1 0 54.8296291314 48.7059047745 45.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1634 1 1 0 54.9809734905 49.5642212863 45.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1635 1 1 0 54.9809734905 50.4357787137 45.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1636 1 1 0 54.8296291314 51.2940952255 45.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1637 1 1 0 54.5315389352 52.1130913087 45.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1638 1 1 0 54.0957602214 52.8678821818 45.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1639 1 1 0 53.5355339059 53.5355339059 45.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1640 1 1 0 52.8678821818 54.0957602214 45.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1641 1 1 0 52.1130913087 54.5315389352 45.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1642 1 1 0 51.2940952255 54.8296291314 45.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1643 1 1 0 50.4357787137 54.9809734905 45.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1644 1 1 0 49.5642212863 54.9809734905 45.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1645 1 1 0 48.7059047745 54.8296291314 45.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1646 1 1 0 47.8869086913 54.5315389352 45.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1647 1 1 0 47.1321178182 54.0957602214 45.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1648 1 1 0 46.4644660941 53.5355339059 45.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1649 1 1 0 45.9042397786 52.8678821818 45.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1650 1 1 0 45.4684610648 52.1130913087 45.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1651 1 1 0 45.1703708686 51.2940952255 45.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1652 1 1 0 45.0190265095 50.4357787137 45.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1653 1 1 0 45.0190265095 49.5642212863 45.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1654 1 1 0 45.1703708686 48.7059047745 45.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1655 1 1 0 45.4684610648 47.8869086913 45.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1656 1 1 0 45.9042397786 47.1321178182 45.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1657 1 1 0 46.7860619516 46.1697777844 46.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1658 1 1 0 47.5 45.6698729811 46.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1659 1 1 0 48.2898992834 45.3015368961 46.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1660 1 1 0 49.1317591117 45.0759612349 46.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1661 1 1 0 50.0 45.0 46.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1662 1 1 0 50.8682408883 45.0759612349 46.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1663 1 1 0 51.7101007166 45.3015368961 46.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1664 1 1 0 52.5 45.6698729811 46.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1665 1 1 0 53.2139380484 46.1697777844 46.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1666 1 1 0 53.8302222156 46.7860619516 46.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1667 1 1 0 54.3301270189 47.5 46.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1668 1 1 0 54.6984631039 48.2898992834 46.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1669 1 1 0 54.9240387651 49.1317591117 46.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1670 1 1 0 55.0 50.0 46.0 1.0 -2.90946461893e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1671 1 1 0 54.9240387651 50.8682408883 46.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1672 1 1 0 54.6984631039 51.7101007166 46.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1673 1 1 0 54.3301270189 52.5 46.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1674 1 1 0 53.8302222156 53.2139380484 46.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1675 1 1 0 53.2139380484 53.8302222156 46.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1676 1 1 0 52.5 54.3301270189 46.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1677 1 1 0 51.7101007166 54.6984631039 46.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1678 1 1 0 50.8682408883 54.9240387651 46.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1679 1 1 0 50.0 55.0 46.0 2.97069695889e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1680 1 1 0 49.1317591117 54.9240387651 46.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1681 1 1 0 48.2898992834 54.6984631039 46.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1682 1 1 0 47.5 54.3301270189 46.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1683 1 1 0 46.7860619516 53.8302222156 46.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1684 1 1 0 46.1697777844 53.2139380484 46.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1685 1 1 0 45.6698729811 52.5 46.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1686 1 1 0 45.3015368961 51.7101007166 46.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1687 1 1 0 45.0759612349 50.8682408883 46.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1688 1 1 0 45.0 50.0 46.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1689 1 1 0 45.0759612349 49.1317591117 46.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1690 1 1 0 45.3015368961 48.2898992834 46.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1691 1 1 0 45.6698729811 47.5 46.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1692 1 1 0 46.1697777844 46.7860619516 46.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1693 1 1 0 47.1321178182 45.9042397786 47.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1694 1 1 0 47.8869086913 45.4684610648 47.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1695 1 1 0 48.7059047745 45.1703708686 47.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1696 1 1 0 49.5642212863 45.0190265095 47.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1697 1 1 0 50.4357787137 45.0190265095 47.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1698 1 1 0 51.2940952255 45.1703708686 47.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1699 1 1 0 52.1130913087 45.4684610648 47.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1700 1 1 0 52.8678821818 45.9042397786 47.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1701 1 1 0 53.5355339059 46.4644660941 47.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1702 1 1 0 54.0957602214 47.1321178182 47.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1703 1 1 0 54.5315389352 47.8869086913 47.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1704 1 1 0 54.8296291314 48.7059047745 47.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1705 1 1 0 54.9809734905 49.5642212863 47.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1706 1 1 0 54.9809734905 50.4357787137 47.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1707 1 1 0 54.8296291314 51.2940952255 47.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1708 1 1 0 54.5315389352 52.1130913087 47.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1709 1 1 0 54.0957602214 52.8678821818 47.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1710 1 1 0 53.5355339059 53.5355339059 47.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1711 1 1 0 52.8678821818 54.0957602214 47.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1712 1 1 0 52.1130913087 54.5315389352 47.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1713 1 1 0 51.2940952255 54.8296291314 47.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1714 1 1 0 50.4357787137 54.9809734905 47.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1715 1 1 0 49.5642212863 54.9809734905 47.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1716 1 1 0 48.7059047745 54.8296291314 47.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1717 1 1 0 47.8869086913 54.5315389352 47.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1718 1 1 0 47.1321178182 54.0957602214 47.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1719 1 1 0 46.4644660941 53.5355339059 47.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1720 1 1 0 45.9042397786 52.8678821818 47.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1721 1 1 0 45.4684610648 52.1130913087 47.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1722 1 1 0 45.1703708686 51.2940952255 47.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1723 1 1 0 45.0190265095 50.4357787137 47.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1724 1 1 0 45.0190265095 49.5642212863 47.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1725 1 1 0 45.1703708686 48.7059047745 47.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1726 1 1 0 45.4684610648 47.8869086913 47.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1727 1 1 0 45.9042397786 47.1321178182 47.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1728 1 1 0 46.4644660941 46.4644660941 47.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1729 1 1 0 47.5 45.6698729811 48.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1730 1 1 0 48.2898992834 45.3015368961 48.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1731 1 1 0 49.1317591117 45.0759612349 48.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1732 1 1 0 50.0 45.0 48.0 -2.84823227897e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1733 1 1 0 50.8682408883 45.0759612349 48.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1734 1 1 0 51.7101007166 45.3015368961 48.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1735 1 1 0 52.5 45.6698729811 48.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1736 1 1 0 53.2139380484 46.1697777844 48.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1737 1 1 0 53.8302222156 46.7860619516 48.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1738 1 1 0 54.3301270189 47.5 48.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1739 1 1 0 54.6984631039 48.2898992834 48.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1740 1 1 0 54.9240387651 49.1317591117 48.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1741 1 1 0 55.0 50.0 48.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1742 1 1 0 54.9240387651 50.8682408883 48.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1743 1 1 0 54.6984631039 51.7101007166 48.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1744 1 1 0 54.3301270189 52.5 48.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1745 1 1 0 53.8302222156 53.2139380484 48.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1746 1 1 0 53.2139380484 53.8302222156 48.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1747 1 1 0 52.5 54.3301270189 48.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1748 1 1 0 51.7101007166 54.6984631039 48.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1749 1 1 0 50.8682408883 54.9240387651 48.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1750 1 1 0 50.0 55.0 48.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1751 1 1 0 49.1317591117 54.9240387651 48.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1752 1 1 0 48.2898992834 54.6984631039 48.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1753 1 1 0 47.5 54.3301270189 48.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1754 1 1 0 46.7860619516 53.8302222156 48.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1755 1 1 0 46.1697777844 53.2139380484 48.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1756 1 1 0 45.6698729811 52.5 48.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1757 1 1 0 45.3015368961 51.7101007166 48.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1758 1 1 0 45.0759612349 50.8682408883 48.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1759 1 1 0 45.0 50.0 48.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1760 1 1 0 45.0759612349 49.1317591117 48.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1761 1 1 0 45.3015368961 48.2898992834 48.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1762 1 1 0 45.6698729811 47.5 48.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1763 1 1 0 46.1697777844 46.7860619516 48.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1764 1 1 0 46.7860619516 46.1697777844 48.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1765 1 1 0 47.8869086913 45.4684610648 49.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1766 1 1 0 48.7059047745 45.1703708686 49.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1767 1 1 0 49.5642212863 45.0190265095 49.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1768 1 1 0 50.4357787137 45.0190265095 49.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1769 1 1 0 51.2940952255 45.1703708686 49.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1770 1 1 0 52.1130913087 45.4684610648 49.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1771 1 1 0 52.8678821818 45.9042397786 49.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1772 1 1 0 53.5355339059 46.4644660941 49.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1773 1 1 0 54.0957602214 47.1321178182 49.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1774 1 1 0 54.5315389352 47.8869086913 49.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1775 1 1 0 54.8296291314 48.7059047745 49.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1776 1 1 0 54.9809734905 49.5642212863 49.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1777 1 1 0 54.9809734905 50.4357787137 49.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1778 1 1 0 54.8296291314 51.2940952255 49.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1779 1 1 0 54.5315389352 52.1130913087 49.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1780 1 1 0 54.0957602214 52.8678821818 49.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1781 1 1 0 53.5355339059 53.5355339059 49.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1782 1 1 0 52.8678821818 54.0957602214 49.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1783 1 1 0 52.1130913087 54.5315389352 49.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1784 1 1 0 51.2940952255 54.8296291314 49.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1785 1 1 0 50.4357787137 54.9809734905 49.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1786 1 1 0 49.5642212863 54.9809734905 49.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1787 1 1 0 48.7059047745 54.8296291314 49.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1788 1 1 0 47.8869086913 54.5315389352 49.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1789 1 1 0 47.1321178182 54.0957602214 49.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1790 1 1 0 46.4644660941 53.5355339059 49.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1791 1 1 0 45.9042397786 52.8678821818 49.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1792 1 1 0 45.4684610648 52.1130913087 49.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1793 1 1 0 45.1703708686 51.2940952255 49.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1794 1 1 0 45.0190265095 50.4357787137 49.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1795 1 1 0 45.0190265095 49.5642212863 49.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1796 1 1 0 45.1703708686 48.7059047745 49.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1797 1 1 0 45.4684610648 47.8869086913 49.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1798 1 1 0 45.9042397786 47.1321178182 49.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1799 1 1 0 46.4644660941 46.4644660941 49.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1800 1 1 0 47.1321178182 45.9042397786 49.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1801 1 1 0 48.2898992834 45.3015368961 50.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1802 1 1 0 49.1317591117 45.0759612349 50.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1803 1 1 0 50.0 45.0 50.0 -3.73641069867e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1804 1 1 0 50.8682408883 45.0759612349 50.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1805 1 1 0 51.7101007166 45.3015368961 50.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1806 1 1 0 52.5 45.6698729811 50.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1807 1 1 0 53.2139380484 46.1697777844 50.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1808 1 1 0 53.8302222156 46.7860619516 50.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1809 1 1 0 54.3301270189 47.5 50.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1810 1 1 0 54.6984631039 48.2898992834 50.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1811 1 1 0 54.9240387651 49.1317591117 50.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1812 1 1 0 55.0 50.0 50.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1813 1 1 0 54.9240387651 50.8682408883 50.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1814 1 1 0 54.6984631039 51.7101007166 50.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1815 1 1 0 54.3301270189 52.5 50.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1816 1 1 0 53.8302222156 53.2139380484 50.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1817 1 1 0 53.2139380484 53.8302222156 50.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1818 1 1 0 52.5 54.3301270189 50.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1819 1 1 0 51.7101007166 54.6984631039 50.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1820 1 1 0 50.8682408883 54.9240387651 50.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1821 1 1 0 50.0 55.0 50.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1822 1 1 0 49.1317591117 54.9240387651 50.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1823 1 1 0 48.2898992834 54.6984631039 50.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1824 1 1 0 47.5 54.3301270189 50.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1825 1 1 0 46.7860619516 53.8302222156 50.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1826 1 1 0 46.1697777844 53.2139380484 50.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1827 1 1 0 45.6698729811 52.5 50.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1828 1 1 0 45.3015368961 51.7101007166 50.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1829 1 1 0 45.0759612349 50.8682408883 50.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1830 1 1 0 45.0 50.0 50.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1831 1 1 0 45.0759612349 49.1317591117 50.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1832 1 1 0 45.3015368961 48.2898992834 50.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1833 1 1 0 45.6698729811 47.5 50.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1834 1 1 0 46.1697777844 46.7860619516 50.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1835 1 1 0 46.7860619516 46.1697777844 50.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1836 1 1 0 47.5 45.6698729811 50.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1837 1 1 0 48.7059047745 45.1703708686 51.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1838 1 1 0 49.5642212863 45.0190265095 51.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1839 1 1 0 50.4357787137 45.0190265095 51.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1840 1 1 0 51.2940952255 45.1703708686 51.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1841 1 1 0 52.1130913087 45.4684610648 51.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1842 1 1 0 52.8678821818 45.9042397786 51.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1843 1 1 0 53.5355339059 46.4644660941 51.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1844 1 1 0 54.0957602214 47.1321178182 51.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1845 1 1 0 54.5315389352 47.8869086913 51.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1846 1 1 0 54.8296291314 48.7059047745 51.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1847 1 1 0 54.9809734905 49.5642212863 51.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1848 1 1 0 54.9809734905 50.4357787137 51.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1849 1 1 0 54.8296291314 51.2940952255 51.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1850 1 1 0 54.5315389352 52.1130913087 51.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1851 1 1 0 54.0957602214 52.8678821818 51.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1852 1 1 0 53.5355339059 53.5355339059 51.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1853 1 1 0 52.8678821818 54.0957602214 51.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1854 1 1 0 52.1130913087 54.5315389352 51.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1855 1 1 0 51.2940952255 54.8296291314 51.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1856 1 1 0 50.4357787137 54.9809734905 51.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1857 1 1 0 49.5642212863 54.9809734905 51.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1858 1 1 0 48.7059047745 54.8296291314 51.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1859 1 1 0 47.8869086913 54.5315389352 51.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1860 1 1 0 47.1321178182 54.0957602214 51.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1861 1 1 0 46.4644660941 53.5355339059 51.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1862 1 1 0 45.9042397786 52.8678821818 51.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1863 1 1 0 45.4684610648 52.1130913087 51.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1864 1 1 0 45.1703708686 51.2940952255 51.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1865 1 1 0 45.0190265095 50.4357787137 51.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1866 1 1 0 45.0190265095 49.5642212863 51.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1867 1 1 0 45.1703708686 48.7059047745 51.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1868 1 1 0 45.4684610648 47.8869086913 51.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1869 1 1 0 45.9042397786 47.1321178182 51.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1870 1 1 0 46.4644660941 46.4644660941 51.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1871 1 1 0 47.1321178182 45.9042397786 51.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1872 1 1 0 47.8869086913 45.4684610648 51.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1873 1 1 0 49.1317591117 45.0759612349 52.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1874 1 1 0 50.0 45.0 52.0 -3.73641069867e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1875 1 1 0 50.8682408883 45.0759612349 52.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1876 1 1 0 51.7101007166 45.3015368961 52.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1877 1 1 0 52.5 45.6698729811 52.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1878 1 1 0 53.2139380484 46.1697777844 52.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1879 1 1 0 53.8302222156 46.7860619516 52.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1880 1 1 0 54.3301270189 47.5 52.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1881 1 1 0 54.6984631039 48.2898992834 52.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1882 1 1 0 54.9240387651 49.1317591117 52.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1883 1 1 0 55.0 50.0 52.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1884 1 1 0 54.9240387651 50.8682408883 52.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1885 1 1 0 54.6984631039 51.7101007166 52.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1886 1 1 0 54.3301270189 52.5 52.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1887 1 1 0 53.8302222156 53.2139380484 52.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1888 1 1 0 53.2139380484 53.8302222156 52.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1889 1 1 0 52.5 54.3301270189 52.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1890 1 1 0 51.7101007166 54.6984631039 52.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1891 1 1 0 50.8682408883 54.9240387651 52.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1892 1 1 0 50.0 55.0 52.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1893 1 1 0 49.1317591117 54.9240387651 52.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1894 1 1 0 48.2898992834 54.6984631039 52.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1895 1 1 0 47.5 54.3301270189 52.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1896 1 1 0 46.7860619516 53.8302222156 52.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1897 1 1 0 46.1697777844 53.2139380484 52.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1898 1 1 0 45.6698729811 52.5 52.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1899 1 1 0 45.3015368961 51.7101007166 52.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1900 1 1 0 45.0759612349 50.8682408883 52.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1901 1 1 0 45.0 50.0 52.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1902 1 1 0 45.0759612349 49.1317591117 52.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1903 1 1 0 45.3015368961 48.2898992834 52.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1904 1 1 0 45.6698729811 47.5 52.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1905 1 1 0 46.1697777844 46.7860619516 52.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1906 1 1 0 46.7860619516 46.1697777844 52.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1907 1 1 0 47.5 45.6698729811 52.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1908 1 1 0 48.2898992834 45.3015368961 52.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1909 1 1 0 49.5642212863 45.0190265095 53.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1910 1 1 0 50.4357787137 45.0190265095 53.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1911 1 1 0 51.2940952255 45.1703708686 53.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1912 1 1 0 52.1130913087 45.4684610648 53.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1913 1 1 0 52.8678821818 45.9042397786 53.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1914 1 1 0 53.5355339059 46.4644660941 53.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1915 1 1 0 54.0957602214 47.1321178182 53.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1916 1 1 0 54.5315389352 47.8869086913 53.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1917 1 1 0 54.8296291314 48.7059047745 53.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1918 1 1 0 54.9809734905 49.5642212863 53.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1919 1 1 0 54.9809734905 50.4357787137 53.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1920 1 1 0 54.8296291314 51.2940952255 53.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1921 1 1 0 54.5315389352 52.1130913087 53.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1922 1 1 0 54.0957602214 52.8678821818 53.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1923 1 1 0 53.5355339059 53.5355339059 53.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1924 1 1 0 52.8678821818 54.0957602214 53.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1925 1 1 0 52.1130913087 54.5315389352 53.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1926 1 1 0 51.2940952255 54.8296291314 53.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1927 1 1 0 50.4357787137 54.9809734905 53.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1928 1 1 0 49.5642212863 54.9809734905 53.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1929 1 1 0 48.7059047745 54.8296291314 53.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1930 1 1 0 47.8869086913 54.5315389352 53.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1931 1 1 0 47.1321178182 54.0957602214 53.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1932 1 1 0 46.4644660941 53.5355339059 53.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1933 1 1 0 45.9042397786 52.8678821818 53.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1934 1 1 0 45.4684610648 52.1130913087 53.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1935 1 1 0 45.1703708686 51.2940952255 53.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1936 1 1 0 45.0190265095 50.4357787137 53.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1937 1 1 0 45.0190265095 49.5642212863 53.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1938 1 1 0 45.1703708686 48.7059047745 53.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1939 1 1 0 45.4684610648 47.8869086913 53.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1940 1 1 0 45.9042397786 47.1321178182 53.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1941 1 1 0 46.4644660941 46.4644660941 53.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1942 1 1 0 47.1321178182 45.9042397786 53.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1943 1 1 0 47.8869086913 45.4684610648 53.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1944 1 1 0 48.7059047745 45.1703708686 53.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1945 1 1 0 50.0 45.0 54.0 -3.73641069867e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1946 1 1 0 50.8682408883 45.0759612349 54.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1947 1 1 0 51.7101007166 45.3015368961 54.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1948 1 1 0 52.5 45.6698729811 54.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1949 1 1 0 53.2139380484 46.1697777844 54.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1950 1 1 0 53.8302222156 46.7860619516 54.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1951 1 1 0 54.3301270189 47.5 54.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1952 1 1 0 54.6984631039 48.2898992834 54.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1953 1 1 0 54.9240387651 49.1317591117 54.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1954 1 1 0 55.0 50.0 54.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1955 1 1 0 54.9240387651 50.8682408883 54.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1956 1 1 0 54.6984631039 51.7101007166 54.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1957 1 1 0 54.3301270189 52.5 54.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1958 1 1 0 53.8302222156 53.2139380484 54.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1959 1 1 0 53.2139380484 53.8302222156 54.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1960 1 1 0 52.5 54.3301270189 54.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1961 1 1 0 51.7101007166 54.6984631039 54.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1962 1 1 0 50.8682408883 54.9240387651 54.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1963 1 1 0 50.0 55.0 54.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -1964 1 1 0 49.1317591117 54.9240387651 54.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1965 1 1 0 48.2898992834 54.6984631039 54.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1966 1 1 0 47.5 54.3301270189 54.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1967 1 1 0 46.7860619516 53.8302222156 54.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1968 1 1 0 46.1697777844 53.2139380484 54.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1969 1 1 0 45.6698729811 52.5 54.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1970 1 1 0 45.3015368961 51.7101007166 54.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1971 1 1 0 45.0759612349 50.8682408883 54.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1972 1 1 0 45.0 50.0 54.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -1973 1 1 0 45.0759612349 49.1317591117 54.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -1974 1 1 0 45.3015368961 48.2898992834 54.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -1975 1 1 0 45.6698729811 47.5 54.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -1976 1 1 0 46.1697777844 46.7860619516 54.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -1977 1 1 0 46.7860619516 46.1697777844 54.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -1978 1 1 0 47.5 45.6698729811 54.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -1979 1 1 0 48.2898992834 45.3015368961 54.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -1980 1 1 0 49.1317591117 45.0759612349 54.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -1981 1 1 0 50.4357787137 45.0190265095 55.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1982 1 1 0 51.2940952255 45.1703708686 55.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1983 1 1 0 52.1130913087 45.4684610648 55.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1984 1 1 0 52.8678821818 45.9042397786 55.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1985 1 1 0 53.5355339059 46.4644660941 55.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1986 1 1 0 54.0957602214 47.1321178182 55.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1987 1 1 0 54.5315389352 47.8869086913 55.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1988 1 1 0 54.8296291314 48.7059047745 55.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1989 1 1 0 54.9809734905 49.5642212863 55.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1990 1 1 0 54.9809734905 50.4357787137 55.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -1991 1 1 0 54.8296291314 51.2940952255 55.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -1992 1 1 0 54.5315389352 52.1130913087 55.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -1993 1 1 0 54.0957602214 52.8678821818 55.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -1994 1 1 0 53.5355339059 53.5355339059 55.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -1995 1 1 0 52.8678821818 54.0957602214 55.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -1996 1 1 0 52.1130913087 54.5315389352 55.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -1997 1 1 0 51.2940952255 54.8296291314 55.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -1998 1 1 0 50.4357787137 54.9809734905 55.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -1999 1 1 0 49.5642212863 54.9809734905 55.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2000 1 1 0 48.7059047745 54.8296291314 55.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2001 1 1 0 47.8869086913 54.5315389352 55.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2002 1 1 0 47.1321178182 54.0957602214 55.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2003 1 1 0 46.4644660941 53.5355339059 55.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2004 1 1 0 45.9042397786 52.8678821818 55.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2005 1 1 0 45.4684610648 52.1130913087 55.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2006 1 1 0 45.1703708686 51.2940952255 55.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2007 1 1 0 45.0190265095 50.4357787137 55.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2008 1 1 0 45.0190265095 49.5642212863 55.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2009 1 1 0 45.1703708686 48.7059047745 55.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2010 1 1 0 45.4684610648 47.8869086913 55.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2011 1 1 0 45.9042397786 47.1321178182 55.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2012 1 1 0 46.4644660941 46.4644660941 55.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2013 1 1 0 47.1321178182 45.9042397786 55.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2014 1 1 0 47.8869086913 45.4684610648 55.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2015 1 1 0 48.7059047745 45.1703708686 55.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2016 1 1 0 49.5642212863 45.0190265095 55.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2017 1 1 0 50.8682408883 45.0759612349 56.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2018 1 1 0 51.7101007166 45.3015368961 56.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2019 1 1 0 52.5 45.6698729811 56.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2020 1 1 0 53.2139380484 46.1697777844 56.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2021 1 1 0 53.8302222156 46.7860619516 56.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2022 1 1 0 54.3301270189 47.5 56.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2023 1 1 0 54.6984631039 48.2898992834 56.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2024 1 1 0 54.9240387651 49.1317591117 56.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2025 1 1 0 55.0 50.0 56.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2026 1 1 0 54.9240387651 50.8682408883 56.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2027 1 1 0 54.6984631039 51.7101007166 56.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2028 1 1 0 54.3301270189 52.5 56.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2029 1 1 0 53.8302222156 53.2139380484 56.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2030 1 1 0 53.2139380484 53.8302222156 56.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2031 1 1 0 52.5 54.3301270189 56.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2032 1 1 0 51.7101007166 54.6984631039 56.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2033 1 1 0 50.8682408883 54.9240387651 56.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2034 1 1 0 50.0 55.0 56.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2035 1 1 0 49.1317591117 54.9240387651 56.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2036 1 1 0 48.2898992834 54.6984631039 56.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2037 1 1 0 47.5 54.3301270189 56.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2038 1 1 0 46.7860619516 53.8302222156 56.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2039 1 1 0 46.1697777844 53.2139380484 56.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2040 1 1 0 45.6698729811 52.5 56.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2041 1 1 0 45.3015368961 51.7101007166 56.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2042 1 1 0 45.0759612349 50.8682408883 56.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2043 1 1 0 45.0 50.0 56.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2044 1 1 0 45.0759612349 49.1317591117 56.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2045 1 1 0 45.3015368961 48.2898992834 56.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2046 1 1 0 45.6698729811 47.5 56.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2047 1 1 0 46.1697777844 46.7860619516 56.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2048 1 1 0 46.7860619516 46.1697777844 56.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2049 1 1 0 47.5 45.6698729811 56.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2050 1 1 0 48.2898992834 45.3015368961 56.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2051 1 1 0 49.1317591117 45.0759612349 56.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2052 1 1 0 50.0 45.0 56.0 -3.9813400585e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2053 1 1 0 51.2940952255 45.1703708686 57.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2054 1 1 0 52.1130913087 45.4684610648 57.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2055 1 1 0 52.8678821818 45.9042397786 57.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2056 1 1 0 53.5355339059 46.4644660941 57.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2057 1 1 0 54.0957602214 47.1321178182 57.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2058 1 1 0 54.5315389352 47.8869086913 57.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2059 1 1 0 54.8296291314 48.7059047745 57.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2060 1 1 0 54.9809734905 49.5642212863 57.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2061 1 1 0 54.9809734905 50.4357787137 57.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2062 1 1 0 54.8296291314 51.2940952255 57.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2063 1 1 0 54.5315389352 52.1130913087 57.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2064 1 1 0 54.0957602214 52.8678821818 57.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2065 1 1 0 53.5355339059 53.5355339059 57.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2066 1 1 0 52.8678821818 54.0957602214 57.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2067 1 1 0 52.1130913087 54.5315389352 57.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2068 1 1 0 51.2940952255 54.8296291314 57.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2069 1 1 0 50.4357787137 54.9809734905 57.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2070 1 1 0 49.5642212863 54.9809734905 57.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2071 1 1 0 48.7059047745 54.8296291314 57.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2072 1 1 0 47.8869086913 54.5315389352 57.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2073 1 1 0 47.1321178182 54.0957602214 57.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2074 1 1 0 46.4644660941 53.5355339059 57.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2075 1 1 0 45.9042397786 52.8678821818 57.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2076 1 1 0 45.4684610648 52.1130913087 57.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2077 1 1 0 45.1703708686 51.2940952255 57.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2078 1 1 0 45.0190265095 50.4357787137 57.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2079 1 1 0 45.0190265095 49.5642212863 57.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2080 1 1 0 45.1703708686 48.7059047745 57.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2081 1 1 0 45.4684610648 47.8869086913 57.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2082 1 1 0 45.9042397786 47.1321178182 57.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2083 1 1 0 46.4644660941 46.4644660941 57.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2084 1 1 0 47.1321178182 45.9042397786 57.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2085 1 1 0 47.8869086913 45.4684610648 57.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2086 1 1 0 48.7059047745 45.1703708686 57.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2087 1 1 0 49.5642212863 45.0190265095 57.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2088 1 1 0 50.4357787137 45.0190265095 57.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2089 1 1 0 51.7101007166 45.3015368961 58.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2090 1 1 0 52.5 45.6698729811 58.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2091 1 1 0 53.2139380484 46.1697777844 58.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2092 1 1 0 53.8302222156 46.7860619516 58.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2093 1 1 0 54.3301270189 47.5 58.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2094 1 1 0 54.6984631039 48.2898992834 58.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2095 1 1 0 54.9240387651 49.1317591117 58.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2096 1 1 0 55.0 50.0 58.0 1.0 -3.79764303863e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2097 1 1 0 54.9240387651 50.8682408883 58.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2098 1 1 0 54.6984631039 51.7101007166 58.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2099 1 1 0 54.3301270189 52.5 58.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2100 1 1 0 53.8302222156 53.2139380484 58.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2101 1 1 0 53.2139380484 53.8302222156 58.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2102 1 1 0 52.5 54.3301270189 58.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2103 1 1 0 51.7101007166 54.6984631039 58.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2104 1 1 0 50.8682408883 54.9240387651 58.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2105 1 1 0 50.0 55.0 58.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2106 1 1 0 49.1317591117 54.9240387651 58.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2107 1 1 0 48.2898992834 54.6984631039 58.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2108 1 1 0 47.5 54.3301270189 58.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2109 1 1 0 46.7860619516 53.8302222156 58.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2110 1 1 0 46.1697777844 53.2139380484 58.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2111 1 1 0 45.6698729811 52.5 58.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2112 1 1 0 45.3015368961 51.7101007166 58.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2113 1 1 0 45.0759612349 50.8682408883 58.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2114 1 1 0 45.0 50.0 58.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2115 1 1 0 45.0759612349 49.1317591117 58.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2116 1 1 0 45.3015368961 48.2898992834 58.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2117 1 1 0 45.6698729811 47.5 58.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2118 1 1 0 46.1697777844 46.7860619516 58.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2119 1 1 0 46.7860619516 46.1697777844 58.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2120 1 1 0 47.5 45.6698729811 58.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2121 1 1 0 48.2898992834 45.3015368961 58.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2122 1 1 0 49.1317591117 45.0759612349 58.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2123 1 1 0 50.0 45.0 58.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2124 1 1 0 50.8682408883 45.0759612349 58.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2125 1 1 0 52.1130913087 45.4684610648 59.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2126 1 1 0 52.8678821818 45.9042397786 59.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2127 1 1 0 53.5355339059 46.4644660941 59.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2128 1 1 0 54.0957602214 47.1321178182 59.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2129 1 1 0 54.5315389352 47.8869086913 59.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2130 1 1 0 54.8296291314 48.7059047745 59.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2131 1 1 0 54.9809734905 49.5642212863 59.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2132 1 1 0 54.9809734905 50.4357787137 59.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2133 1 1 0 54.8296291314 51.2940952255 59.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2134 1 1 0 54.5315389352 52.1130913087 59.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2135 1 1 0 54.0957602214 52.8678821818 59.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2136 1 1 0 53.5355339059 53.5355339059 59.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2137 1 1 0 52.8678821818 54.0957602214 59.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2138 1 1 0 52.1130913087 54.5315389352 59.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2139 1 1 0 51.2940952255 54.8296291314 59.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2140 1 1 0 50.4357787137 54.9809734905 59.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2141 1 1 0 49.5642212863 54.9809734905 59.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2142 1 1 0 48.7059047745 54.8296291314 59.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2143 1 1 0 47.8869086913 54.5315389352 59.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2144 1 1 0 47.1321178182 54.0957602214 59.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2145 1 1 0 46.4644660941 53.5355339059 59.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2146 1 1 0 45.9042397786 52.8678821818 59.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2147 1 1 0 45.4684610648 52.1130913087 59.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2148 1 1 0 45.1703708686 51.2940952255 59.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2149 1 1 0 45.0190265095 50.4357787137 59.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2150 1 1 0 45.0190265095 49.5642212863 59.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2151 1 1 0 45.1703708686 48.7059047745 59.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2152 1 1 0 45.4684610648 47.8869086913 59.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2153 1 1 0 45.9042397786 47.1321178182 59.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2154 1 1 0 46.4644660941 46.4644660941 59.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2155 1 1 0 47.1321178182 45.9042397786 59.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2156 1 1 0 47.8869086913 45.4684610648 59.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2157 1 1 0 48.7059047745 45.1703708686 59.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2158 1 1 0 49.5642212863 45.0190265095 59.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2159 1 1 0 50.4357787137 45.0190265095 59.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2160 1 1 0 51.2940952255 45.1703708686 59.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2161 1 1 0 52.5 45.6698729811 60.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2162 1 1 0 53.2139380484 46.1697777844 60.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2163 1 1 0 53.8302222156 46.7860619516 60.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2164 1 1 0 54.3301270189 47.5 60.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2165 1 1 0 54.6984631039 48.2898992834 60.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2166 1 1 0 54.9240387651 49.1317591117 60.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2167 1 1 0 55.0 50.0 60.0 1.0 -4.68582145833e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2168 1 1 0 54.9240387651 50.8682408883 60.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2169 1 1 0 54.6984631039 51.7101007166 60.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2170 1 1 0 54.3301270189 52.5 60.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2171 1 1 0 53.8302222156 53.2139380484 60.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2172 1 1 0 53.2139380484 53.8302222156 60.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2173 1 1 0 52.5 54.3301270189 60.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2174 1 1 0 51.7101007166 54.6984631039 60.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2175 1 1 0 50.8682408883 54.9240387651 60.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2176 1 1 0 50.0 55.0 60.0 3.85887537859e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2177 1 1 0 49.1317591117 54.9240387651 60.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2178 1 1 0 48.2898992834 54.6984631039 60.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2179 1 1 0 47.5 54.3301270189 60.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2180 1 1 0 46.7860619516 53.8302222156 60.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2181 1 1 0 46.1697777844 53.2139380484 60.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2182 1 1 0 45.6698729811 52.5 60.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2183 1 1 0 45.3015368961 51.7101007166 60.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2184 1 1 0 45.0759612349 50.8682408883 60.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2185 1 1 0 45.0 50.0 60.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2186 1 1 0 45.0759612349 49.1317591117 60.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2187 1 1 0 45.3015368961 48.2898992834 60.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2188 1 1 0 45.6698729811 47.5 60.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2189 1 1 0 46.1697777844 46.7860619516 60.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2190 1 1 0 46.7860619516 46.1697777844 60.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2191 1 1 0 47.5 45.6698729811 60.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2192 1 1 0 48.2898992834 45.3015368961 60.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2193 1 1 0 49.1317591117 45.0759612349 60.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2194 1 1 0 50.0 45.0 60.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2195 1 1 0 50.8682408883 45.0759612349 60.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2196 1 1 0 51.7101007166 45.3015368961 60.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2197 1 1 0 52.8678821818 45.9042397786 61.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2198 1 1 0 53.5355339059 46.4644660941 61.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2199 1 1 0 54.0957602214 47.1321178182 61.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2200 1 1 0 54.5315389352 47.8869086913 61.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2201 1 1 0 54.8296291314 48.7059047745 61.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2202 1 1 0 54.9809734905 49.5642212863 61.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2203 1 1 0 54.9809734905 50.4357787137 61.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2204 1 1 0 54.8296291314 51.2940952255 61.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2205 1 1 0 54.5315389352 52.1130913087 61.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2206 1 1 0 54.0957602214 52.8678821818 61.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2207 1 1 0 53.5355339059 53.5355339059 61.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2208 1 1 0 52.8678821818 54.0957602214 61.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2209 1 1 0 52.1130913087 54.5315389352 61.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2210 1 1 0 51.2940952255 54.8296291314 61.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2211 1 1 0 50.4357787137 54.9809734905 61.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2212 1 1 0 49.5642212863 54.9809734905 61.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2213 1 1 0 48.7059047745 54.8296291314 61.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2214 1 1 0 47.8869086913 54.5315389352 61.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2215 1 1 0 47.1321178182 54.0957602214 61.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2216 1 1 0 46.4644660941 53.5355339059 61.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2217 1 1 0 45.9042397786 52.8678821818 61.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2218 1 1 0 45.4684610648 52.1130913087 61.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2219 1 1 0 45.1703708686 51.2940952255 61.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2220 1 1 0 45.0190265095 50.4357787137 61.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2221 1 1 0 45.0190265095 49.5642212863 61.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2222 1 1 0 45.1703708686 48.7059047745 61.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2223 1 1 0 45.4684610648 47.8869086913 61.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2224 1 1 0 45.9042397786 47.1321178182 61.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2225 1 1 0 46.4644660941 46.4644660941 61.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2226 1 1 0 47.1321178182 45.9042397786 61.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2227 1 1 0 47.8869086913 45.4684610648 61.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2228 1 1 0 48.7059047745 45.1703708686 61.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2229 1 1 0 49.5642212863 45.0190265095 61.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2230 1 1 0 50.4357787137 45.0190265095 61.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2231 1 1 0 51.2940952255 45.1703708686 61.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2232 1 1 0 52.1130913087 45.4684610648 61.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2233 1 1 0 53.2139380484 46.1697777844 62.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2234 1 1 0 53.8302222156 46.7860619516 62.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2235 1 1 0 54.3301270189 47.5 62.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2236 1 1 0 54.6984631039 48.2898992834 62.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2237 1 1 0 54.9240387651 49.1317591117 62.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2238 1 1 0 55.0 50.0 62.0 1.0 -4.68582145833e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2239 1 1 0 54.9240387651 50.8682408883 62.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2240 1 1 0 54.6984631039 51.7101007166 62.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2241 1 1 0 54.3301270189 52.5 62.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2242 1 1 0 53.8302222156 53.2139380484 62.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2243 1 1 0 53.2139380484 53.8302222156 62.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2244 1 1 0 52.5 54.3301270189 62.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2245 1 1 0 51.7101007166 54.6984631039 62.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2246 1 1 0 50.8682408883 54.9240387651 62.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2247 1 1 0 50.0 55.0 62.0 4.74705379829e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2248 1 1 0 49.1317591117 54.9240387651 62.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2249 1 1 0 48.2898992834 54.6984631039 62.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2250 1 1 0 47.5 54.3301270189 62.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2251 1 1 0 46.7860619516 53.8302222156 62.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2252 1 1 0 46.1697777844 53.2139380484 62.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2253 1 1 0 45.6698729811 52.5 62.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2254 1 1 0 45.3015368961 51.7101007166 62.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2255 1 1 0 45.0759612349 50.8682408883 62.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2256 1 1 0 45.0 50.0 62.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2257 1 1 0 45.0759612349 49.1317591117 62.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2258 1 1 0 45.3015368961 48.2898992834 62.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2259 1 1 0 45.6698729811 47.5 62.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2260 1 1 0 46.1697777844 46.7860619516 62.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2261 1 1 0 46.7860619516 46.1697777844 62.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2262 1 1 0 47.5 45.6698729811 62.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2263 1 1 0 48.2898992834 45.3015368961 62.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2264 1 1 0 49.1317591117 45.0759612349 62.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2265 1 1 0 50.0 45.0 62.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2266 1 1 0 50.8682408883 45.0759612349 62.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2267 1 1 0 51.7101007166 45.3015368961 62.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2268 1 1 0 52.5 45.6698729811 62.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2269 1 1 0 53.5355339059 46.4644660941 63.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2270 1 1 0 54.0957602214 47.1321178182 63.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2271 1 1 0 54.5315389352 47.8869086913 63.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2272 1 1 0 54.8296291314 48.7059047745 63.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2273 1 1 0 54.9809734905 49.5642212863 63.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2274 1 1 0 54.9809734905 50.4357787137 63.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2275 1 1 0 54.8296291314 51.2940952255 63.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2276 1 1 0 54.5315389352 52.1130913087 63.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2277 1 1 0 54.0957602214 52.8678821818 63.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2278 1 1 0 53.5355339059 53.5355339059 63.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2279 1 1 0 52.8678821818 54.0957602214 63.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2280 1 1 0 52.1130913087 54.5315389352 63.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2281 1 1 0 51.2940952255 54.8296291314 63.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2282 1 1 0 50.4357787137 54.9809734905 63.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2283 1 1 0 49.5642212863 54.9809734905 63.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2284 1 1 0 48.7059047745 54.8296291314 63.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2285 1 1 0 47.8869086913 54.5315389352 63.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2286 1 1 0 47.1321178182 54.0957602214 63.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2287 1 1 0 46.4644660941 53.5355339059 63.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2288 1 1 0 45.9042397786 52.8678821818 63.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2289 1 1 0 45.4684610648 52.1130913087 63.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2290 1 1 0 45.1703708686 51.2940952255 63.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2291 1 1 0 45.0190265095 50.4357787137 63.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2292 1 1 0 45.0190265095 49.5642212863 63.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2293 1 1 0 45.1703708686 48.7059047745 63.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2294 1 1 0 45.4684610648 47.8869086913 63.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2295 1 1 0 45.9042397786 47.1321178182 63.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2296 1 1 0 46.4644660941 46.4644660941 63.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2297 1 1 0 47.1321178182 45.9042397786 63.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2298 1 1 0 47.8869086913 45.4684610648 63.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2299 1 1 0 48.7059047745 45.1703708686 63.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2300 1 1 0 49.5642212863 45.0190265095 63.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2301 1 1 0 50.4357787137 45.0190265095 63.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2302 1 1 0 51.2940952255 45.1703708686 63.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2303 1 1 0 52.1130913087 45.4684610648 63.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2304 1 1 0 52.8678821818 45.9042397786 63.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2305 1 1 0 53.8302222156 46.7860619516 64.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2306 1 1 0 54.3301270189 47.5 64.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2307 1 1 0 54.6984631039 48.2898992834 64.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2308 1 1 0 54.9240387651 49.1317591117 64.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2309 1 1 0 55.0 50.0 64.0 1.0 -4.68582145833e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2310 1 1 0 54.9240387651 50.8682408883 64.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2311 1 1 0 54.6984631039 51.7101007166 64.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2312 1 1 0 54.3301270189 52.5 64.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2313 1 1 0 53.8302222156 53.2139380484 64.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2314 1 1 0 53.2139380484 53.8302222156 64.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2315 1 1 0 52.5 54.3301270189 64.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2316 1 1 0 51.7101007166 54.6984631039 64.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2317 1 1 0 50.8682408883 54.9240387651 64.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2318 1 1 0 50.0 55.0 64.0 4.74705379829e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2319 1 1 0 49.1317591117 54.9240387651 64.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2320 1 1 0 48.2898992834 54.6984631039 64.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2321 1 1 0 47.5 54.3301270189 64.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2322 1 1 0 46.7860619516 53.8302222156 64.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2323 1 1 0 46.1697777844 53.2139380484 64.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2324 1 1 0 45.6698729811 52.5 64.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2325 1 1 0 45.3015368961 51.7101007166 64.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2326 1 1 0 45.0759612349 50.8682408883 64.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2327 1 1 0 45.0 50.0 64.0 -1.0 3.92010771854e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2328 1 1 0 45.0759612349 49.1317591117 64.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2329 1 1 0 45.3015368961 48.2898992834 64.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2330 1 1 0 45.6698729811 47.5 64.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2331 1 1 0 46.1697777844 46.7860619516 64.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2332 1 1 0 46.7860619516 46.1697777844 64.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2333 1 1 0 47.5 45.6698729811 64.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2334 1 1 0 48.2898992834 45.3015368961 64.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2335 1 1 0 49.1317591117 45.0759612349 64.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2336 1 1 0 50.0 45.0 64.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2337 1 1 0 50.8682408883 45.0759612349 64.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2338 1 1 0 51.7101007166 45.3015368961 64.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2339 1 1 0 52.5 45.6698729811 64.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2340 1 1 0 53.2139380484 46.1697777844 64.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2341 1 1 0 54.0957602214 47.1321178182 65.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2342 1 1 0 54.5315389352 47.8869086913 65.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2343 1 1 0 54.8296291314 48.7059047745 65.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2344 1 1 0 54.9809734905 49.5642212863 65.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2345 1 1 0 54.9809734905 50.4357787137 65.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2346 1 1 0 54.8296291314 51.2940952255 65.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2347 1 1 0 54.5315389352 52.1130913087 65.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2348 1 1 0 54.0957602214 52.8678821818 65.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2349 1 1 0 53.5355339059 53.5355339059 65.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2350 1 1 0 52.8678821818 54.0957602214 65.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2351 1 1 0 52.1130913087 54.5315389352 65.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2352 1 1 0 51.2940952255 54.8296291314 65.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2353 1 1 0 50.4357787137 54.9809734905 65.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2354 1 1 0 49.5642212863 54.9809734905 65.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2355 1 1 0 48.7059047745 54.8296291314 65.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2356 1 1 0 47.8869086913 54.5315389352 65.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2357 1 1 0 47.1321178182 54.0957602214 65.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2358 1 1 0 46.4644660941 53.5355339059 65.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2359 1 1 0 45.9042397786 52.8678821818 65.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2360 1 1 0 45.4684610648 52.1130913087 65.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2361 1 1 0 45.1703708686 51.2940952255 65.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2362 1 1 0 45.0190265095 50.4357787137 65.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2363 1 1 0 45.0190265095 49.5642212863 65.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2364 1 1 0 45.1703708686 48.7059047745 65.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2365 1 1 0 45.4684610648 47.8869086913 65.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2366 1 1 0 45.9042397786 47.1321178182 65.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2367 1 1 0 46.4644660941 46.4644660941 65.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2368 1 1 0 47.1321178182 45.9042397786 65.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2369 1 1 0 47.8869086913 45.4684610648 65.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2370 1 1 0 48.7059047745 45.1703708686 65.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2371 1 1 0 49.5642212863 45.0190265095 65.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2372 1 1 0 50.4357787137 45.0190265095 65.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2373 1 1 0 51.2940952255 45.1703708686 65.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2374 1 1 0 52.1130913087 45.4684610648 65.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2375 1 1 0 52.8678821818 45.9042397786 65.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2376 1 1 0 53.5355339059 46.4644660941 65.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2377 1 1 0 54.3301270189 47.5 66.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2378 1 1 0 54.6984631039 48.2898992834 66.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2379 1 1 0 54.9240387651 49.1317591117 66.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2380 1 1 0 55.0 50.0 66.0 1.0 -4.68582145833e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2381 1 1 0 54.9240387651 50.8682408883 66.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2382 1 1 0 54.6984631039 51.7101007166 66.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2383 1 1 0 54.3301270189 52.5 66.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2384 1 1 0 53.8302222156 53.2139380484 66.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2385 1 1 0 53.2139380484 53.8302222156 66.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2386 1 1 0 52.5 54.3301270189 66.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2387 1 1 0 51.7101007166 54.6984631039 66.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2388 1 1 0 50.8682408883 54.9240387651 66.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2389 1 1 0 50.0 55.0 66.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2390 1 1 0 49.1317591117 54.9240387651 66.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2391 1 1 0 48.2898992834 54.6984631039 66.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2392 1 1 0 47.5 54.3301270189 66.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2393 1 1 0 46.7860619516 53.8302222156 66.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2394 1 1 0 46.1697777844 53.2139380484 66.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2395 1 1 0 45.6698729811 52.5 66.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2396 1 1 0 45.3015368961 51.7101007166 66.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2397 1 1 0 45.0759612349 50.8682408883 66.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2398 1 1 0 45.0 50.0 66.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2399 1 1 0 45.0759612349 49.1317591117 66.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2400 1 1 0 45.3015368961 48.2898992834 66.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2401 1 1 0 45.6698729811 47.5 66.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2402 1 1 0 46.1697777844 46.7860619516 66.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2403 1 1 0 46.7860619516 46.1697777844 66.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2404 1 1 0 47.5 45.6698729811 66.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2405 1 1 0 48.2898992834 45.3015368961 66.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2406 1 1 0 49.1317591117 45.0759612349 66.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2407 1 1 0 50.0 45.0 66.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2408 1 1 0 50.8682408883 45.0759612349 66.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2409 1 1 0 51.7101007166 45.3015368961 66.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2410 1 1 0 52.5 45.6698729811 66.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2411 1 1 0 53.2139380484 46.1697777844 66.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2412 1 1 0 53.8302222156 46.7860619516 66.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2413 1 1 0 54.5315389352 47.8869086913 67.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2414 1 1 0 54.8296291314 48.7059047745 67.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2415 1 1 0 54.9809734905 49.5642212863 67.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2416 1 1 0 54.9809734905 50.4357787137 67.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2417 1 1 0 54.8296291314 51.2940952255 67.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2418 1 1 0 54.5315389352 52.1130913087 67.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2419 1 1 0 54.0957602214 52.8678821818 67.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2420 1 1 0 53.5355339059 53.5355339059 67.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2421 1 1 0 52.8678821818 54.0957602214 67.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2422 1 1 0 52.1130913087 54.5315389352 67.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2423 1 1 0 51.2940952255 54.8296291314 67.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2424 1 1 0 50.4357787137 54.9809734905 67.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2425 1 1 0 49.5642212863 54.9809734905 67.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2426 1 1 0 48.7059047745 54.8296291314 67.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2427 1 1 0 47.8869086913 54.5315389352 67.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2428 1 1 0 47.1321178182 54.0957602214 67.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2429 1 1 0 46.4644660941 53.5355339059 67.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2430 1 1 0 45.9042397786 52.8678821818 67.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2431 1 1 0 45.4684610648 52.1130913087 67.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2432 1 1 0 45.1703708686 51.2940952255 67.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2433 1 1 0 45.0190265095 50.4357787137 67.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2434 1 1 0 45.0190265095 49.5642212863 67.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2435 1 1 0 45.1703708686 48.7059047745 67.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2436 1 1 0 45.4684610648 47.8869086913 67.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2437 1 1 0 45.9042397786 47.1321178182 67.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2438 1 1 0 46.4644660941 46.4644660941 67.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2439 1 1 0 47.1321178182 45.9042397786 67.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2440 1 1 0 47.8869086913 45.4684610648 67.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2441 1 1 0 48.7059047745 45.1703708686 67.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2442 1 1 0 49.5642212863 45.0190265095 67.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2443 1 1 0 50.4357787137 45.0190265095 67.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2444 1 1 0 51.2940952255 45.1703708686 67.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2445 1 1 0 52.1130913087 45.4684610648 67.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2446 1 1 0 52.8678821818 45.9042397786 67.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2447 1 1 0 53.5355339059 46.4644660941 67.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2448 1 1 0 54.0957602214 47.1321178182 67.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2449 1 1 0 54.6984631039 48.2898992834 68.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2450 1 1 0 54.9240387651 49.1317591117 68.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2451 1 1 0 55.0 50.0 68.0 1.0 -5.57399987803e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2452 1 1 0 54.9240387651 50.8682408883 68.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2453 1 1 0 54.6984631039 51.7101007166 68.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2454 1 1 0 54.3301270189 52.5 68.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2455 1 1 0 53.8302222156 53.2139380484 68.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2456 1 1 0 53.2139380484 53.8302222156 68.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2457 1 1 0 52.5 54.3301270189 68.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2458 1 1 0 51.7101007166 54.6984631039 68.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2459 1 1 0 50.8682408883 54.9240387651 68.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2460 1 1 0 50.0 55.0 68.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2461 1 1 0 49.1317591117 54.9240387651 68.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2462 1 1 0 48.2898992834 54.6984631039 68.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2463 1 1 0 47.5 54.3301270189 68.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2464 1 1 0 46.7860619516 53.8302222156 68.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2465 1 1 0 46.1697777844 53.2139380484 68.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2466 1 1 0 45.6698729811 52.5 68.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2467 1 1 0 45.3015368961 51.7101007166 68.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2468 1 1 0 45.0759612349 50.8682408883 68.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2469 1 1 0 45.0 50.0 68.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2470 1 1 0 45.0759612349 49.1317591117 68.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2471 1 1 0 45.3015368961 48.2898992834 68.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2472 1 1 0 45.6698729811 47.5 68.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2473 1 1 0 46.1697777844 46.7860619516 68.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2474 1 1 0 46.7860619516 46.1697777844 68.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2475 1 1 0 47.5 45.6698729811 68.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2476 1 1 0 48.2898992834 45.3015368961 68.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2477 1 1 0 49.1317591117 45.0759612349 68.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2478 1 1 0 50.0 45.0 68.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2479 1 1 0 50.8682408883 45.0759612349 68.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2480 1 1 0 51.7101007166 45.3015368961 68.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2481 1 1 0 52.5 45.6698729811 68.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2482 1 1 0 53.2139380484 46.1697777844 68.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2483 1 1 0 53.8302222156 46.7860619516 68.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2484 1 1 0 54.3301270189 47.5 68.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2485 1 1 0 54.8296291314 48.7059047745 69.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2486 1 1 0 54.9809734905 49.5642212863 69.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2487 1 1 0 54.9809734905 50.4357787137 69.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2488 1 1 0 54.8296291314 51.2940952255 69.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2489 1 1 0 54.5315389352 52.1130913087 69.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2490 1 1 0 54.0957602214 52.8678821818 69.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2491 1 1 0 53.5355339059 53.5355339059 69.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2492 1 1 0 52.8678821818 54.0957602214 69.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2493 1 1 0 52.1130913087 54.5315389352 69.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2494 1 1 0 51.2940952255 54.8296291314 69.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2495 1 1 0 50.4357787137 54.9809734905 69.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2496 1 1 0 49.5642212863 54.9809734905 69.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2497 1 1 0 48.7059047745 54.8296291314 69.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2498 1 1 0 47.8869086913 54.5315389352 69.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2499 1 1 0 47.1321178182 54.0957602214 69.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2500 1 1 0 46.4644660941 53.5355339059 69.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2501 1 1 0 45.9042397786 52.8678821818 69.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2502 1 1 0 45.4684610648 52.1130913087 69.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2503 1 1 0 45.1703708686 51.2940952255 69.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2504 1 1 0 45.0190265095 50.4357787137 69.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2505 1 1 0 45.0190265095 49.5642212863 69.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2506 1 1 0 45.1703708686 48.7059047745 69.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2507 1 1 0 45.4684610648 47.8869086913 69.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2508 1 1 0 45.9042397786 47.1321178182 69.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2509 1 1 0 46.4644660941 46.4644660941 69.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2510 1 1 0 47.1321178182 45.9042397786 69.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2511 1 1 0 47.8869086913 45.4684610648 69.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2512 1 1 0 48.7059047745 45.1703708686 69.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2513 1 1 0 49.5642212863 45.0190265095 69.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2514 1 1 0 50.4357787137 45.0190265095 69.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2515 1 1 0 51.2940952255 45.1703708686 69.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2516 1 1 0 52.1130913087 45.4684610648 69.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2517 1 1 0 52.8678821818 45.9042397786 69.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2518 1 1 0 53.5355339059 46.4644660941 69.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2519 1 1 0 54.0957602214 47.1321178182 69.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2520 1 1 0 54.5315389352 47.8869086913 69.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2521 1 1 0 54.9240387651 49.1317591117 70.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2522 1 1 0 55.0 50.0 70.0 1.0 -5.57399987803e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2523 1 1 0 54.9240387651 50.8682408883 70.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2524 1 1 0 54.6984631039 51.7101007166 70.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2525 1 1 0 54.3301270189 52.5 70.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2526 1 1 0 53.8302222156 53.2139380484 70.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2527 1 1 0 53.2139380484 53.8302222156 70.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2528 1 1 0 52.5 54.3301270189 70.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2529 1 1 0 51.7101007166 54.6984631039 70.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2530 1 1 0 50.8682408883 54.9240387651 70.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2531 1 1 0 50.0 55.0 70.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2532 1 1 0 49.1317591117 54.9240387651 70.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2533 1 1 0 48.2898992834 54.6984631039 70.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2534 1 1 0 47.5 54.3301270189 70.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2535 1 1 0 46.7860619516 53.8302222156 70.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2536 1 1 0 46.1697777844 53.2139380484 70.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2537 1 1 0 45.6698729811 52.5 70.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2538 1 1 0 45.3015368961 51.7101007166 70.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2539 1 1 0 45.0759612349 50.8682408883 70.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2540 1 1 0 45.0 50.0 70.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2541 1 1 0 45.0759612349 49.1317591117 70.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2542 1 1 0 45.3015368961 48.2898992834 70.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2543 1 1 0 45.6698729811 47.5 70.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2544 1 1 0 46.1697777844 46.7860619516 70.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2545 1 1 0 46.7860619516 46.1697777844 70.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2546 1 1 0 47.5 45.6698729811 70.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2547 1 1 0 48.2898992834 45.3015368961 70.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2548 1 1 0 49.1317591117 45.0759612349 70.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2549 1 1 0 50.0 45.0 70.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2550 1 1 0 50.8682408883 45.0759612349 70.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2551 1 1 0 51.7101007166 45.3015368961 70.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2552 1 1 0 52.5 45.6698729811 70.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2553 1 1 0 53.2139380484 46.1697777844 70.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2554 1 1 0 53.8302222156 46.7860619516 70.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2555 1 1 0 54.3301270189 47.5 70.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2556 1 1 0 54.6984631039 48.2898992834 70.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2557 1 1 0 54.9809734905 49.5642212863 71.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2558 1 1 0 54.9809734905 50.4357787137 71.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2559 1 1 0 54.8296291314 51.2940952255 71.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2560 1 1 0 54.5315389352 52.1130913087 71.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2561 1 1 0 54.0957602214 52.8678821818 71.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2562 1 1 0 53.5355339059 53.5355339059 71.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2563 1 1 0 52.8678821818 54.0957602214 71.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2564 1 1 0 52.1130913087 54.5315389352 71.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2565 1 1 0 51.2940952255 54.8296291314 71.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2566 1 1 0 50.4357787137 54.9809734905 71.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2567 1 1 0 49.5642212863 54.9809734905 71.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2568 1 1 0 48.7059047745 54.8296291314 71.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2569 1 1 0 47.8869086913 54.5315389352 71.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2570 1 1 0 47.1321178182 54.0957602214 71.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2571 1 1 0 46.4644660941 53.5355339059 71.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2572 1 1 0 45.9042397786 52.8678821818 71.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2573 1 1 0 45.4684610648 52.1130913087 71.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2574 1 1 0 45.1703708686 51.2940952255 71.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2575 1 1 0 45.0190265095 50.4357787137 71.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2576 1 1 0 45.0190265095 49.5642212863 71.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2577 1 1 0 45.1703708686 48.7059047745 71.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2578 1 1 0 45.4684610648 47.8869086913 71.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2579 1 1 0 45.9042397786 47.1321178182 71.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2580 1 1 0 46.4644660941 46.4644660941 71.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2581 1 1 0 47.1321178182 45.9042397786 71.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2582 1 1 0 47.8869086913 45.4684610648 71.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2583 1 1 0 48.7059047745 45.1703708686 71.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2584 1 1 0 49.5642212863 45.0190265095 71.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2585 1 1 0 50.4357787137 45.0190265095 71.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2586 1 1 0 51.2940952255 45.1703708686 71.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2587 1 1 0 52.1130913087 45.4684610648 71.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2588 1 1 0 52.8678821818 45.9042397786 71.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2589 1 1 0 53.5355339059 46.4644660941 71.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2590 1 1 0 54.0957602214 47.1321178182 71.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2591 1 1 0 54.5315389352 47.8869086913 71.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2592 1 1 0 54.8296291314 48.7059047745 71.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2593 1 1 0 55.0 50.0 72.0 1.0 -5.57399987803e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2594 1 1 0 54.9240387651 50.8682408883 72.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2595 1 1 0 54.6984631039 51.7101007166 72.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2596 1 1 0 54.3301270189 52.5 72.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2597 1 1 0 53.8302222156 53.2139380484 72.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2598 1 1 0 53.2139380484 53.8302222156 72.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2599 1 1 0 52.5 54.3301270189 72.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2600 1 1 0 51.7101007166 54.6984631039 72.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2601 1 1 0 50.8682408883 54.9240387651 72.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2602 1 1 0 50.0 55.0 72.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2603 1 1 0 49.1317591117 54.9240387651 72.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2604 1 1 0 48.2898992834 54.6984631039 72.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2605 1 1 0 47.5 54.3301270189 72.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2606 1 1 0 46.7860619516 53.8302222156 72.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2607 1 1 0 46.1697777844 53.2139380484 72.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2608 1 1 0 45.6698729811 52.5 72.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2609 1 1 0 45.3015368961 51.7101007166 72.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2610 1 1 0 45.0759612349 50.8682408883 72.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2611 1 1 0 45.0 50.0 72.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2612 1 1 0 45.0759612349 49.1317591117 72.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2613 1 1 0 45.3015368961 48.2898992834 72.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2614 1 1 0 45.6698729811 47.5 72.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2615 1 1 0 46.1697777844 46.7860619516 72.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2616 1 1 0 46.7860619516 46.1697777844 72.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2617 1 1 0 47.5 45.6698729811 72.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2618 1 1 0 48.2898992834 45.3015368961 72.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2619 1 1 0 49.1317591117 45.0759612349 72.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2620 1 1 0 50.0 45.0 72.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2621 1 1 0 50.8682408883 45.0759612349 72.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2622 1 1 0 51.7101007166 45.3015368961 72.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2623 1 1 0 52.5 45.6698729811 72.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2624 1 1 0 53.2139380484 46.1697777844 72.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2625 1 1 0 53.8302222156 46.7860619516 72.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2626 1 1 0 54.3301270189 47.5 72.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2627 1 1 0 54.6984631039 48.2898992834 72.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2628 1 1 0 54.9240387651 49.1317591117 72.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2629 1 1 0 54.9809734905 50.4357787137 73.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2630 1 1 0 54.8296291314 51.2940952255 73.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2631 1 1 0 54.5315389352 52.1130913087 73.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2632 1 1 0 54.0957602214 52.8678821818 73.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2633 1 1 0 53.5355339059 53.5355339059 73.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2634 1 1 0 52.8678821818 54.0957602214 73.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2635 1 1 0 52.1130913087 54.5315389352 73.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2636 1 1 0 51.2940952255 54.8296291314 73.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2637 1 1 0 50.4357787137 54.9809734905 73.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2638 1 1 0 49.5642212863 54.9809734905 73.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2639 1 1 0 48.7059047745 54.8296291314 73.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2640 1 1 0 47.8869086913 54.5315389352 73.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2641 1 1 0 47.1321178182 54.0957602214 73.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2642 1 1 0 46.4644660941 53.5355339059 73.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2643 1 1 0 45.9042397786 52.8678821818 73.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2644 1 1 0 45.4684610648 52.1130913087 73.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2645 1 1 0 45.1703708686 51.2940952255 73.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2646 1 1 0 45.0190265095 50.4357787137 73.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2647 1 1 0 45.0190265095 49.5642212863 73.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2648 1 1 0 45.1703708686 48.7059047745 73.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2649 1 1 0 45.4684610648 47.8869086913 73.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2650 1 1 0 45.9042397786 47.1321178182 73.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2651 1 1 0 46.4644660941 46.4644660941 73.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2652 1 1 0 47.1321178182 45.9042397786 73.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2653 1 1 0 47.8869086913 45.4684610648 73.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2654 1 1 0 48.7059047745 45.1703708686 73.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2655 1 1 0 49.5642212863 45.0190265095 73.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2656 1 1 0 50.4357787137 45.0190265095 73.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2657 1 1 0 51.2940952255 45.1703708686 73.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2658 1 1 0 52.1130913087 45.4684610648 73.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2659 1 1 0 52.8678821818 45.9042397786 73.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2660 1 1 0 53.5355339059 46.4644660941 73.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2661 1 1 0 54.0957602214 47.1321178182 73.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2662 1 1 0 54.5315389352 47.8869086913 73.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2663 1 1 0 54.8296291314 48.7059047745 73.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2664 1 1 0 54.9809734905 49.5642212863 73.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2665 1 1 0 54.9240387651 50.8682408883 74.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2666 1 1 0 54.6984631039 51.7101007166 74.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2667 1 1 0 54.3301270189 52.5 74.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2668 1 1 0 53.8302222156 53.2139380484 74.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2669 1 1 0 53.2139380484 53.8302222156 74.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2670 1 1 0 52.5 54.3301270189 74.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2671 1 1 0 51.7101007166 54.6984631039 74.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2672 1 1 0 50.8682408883 54.9240387651 74.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2673 1 1 0 50.0 55.0 74.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2674 1 1 0 49.1317591117 54.9240387651 74.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2675 1 1 0 48.2898992834 54.6984631039 74.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2676 1 1 0 47.5 54.3301270189 74.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2677 1 1 0 46.7860619516 53.8302222156 74.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2678 1 1 0 46.1697777844 53.2139380484 74.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2679 1 1 0 45.6698729811 52.5 74.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2680 1 1 0 45.3015368961 51.7101007166 74.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2681 1 1 0 45.0759612349 50.8682408883 74.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2682 1 1 0 45.0 50.0 74.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2683 1 1 0 45.0759612349 49.1317591117 74.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2684 1 1 0 45.3015368961 48.2898992834 74.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2685 1 1 0 45.6698729811 47.5 74.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2686 1 1 0 46.1697777844 46.7860619516 74.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2687 1 1 0 46.7860619516 46.1697777844 74.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2688 1 1 0 47.5 45.6698729811 74.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2689 1 1 0 48.2898992834 45.3015368961 74.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2690 1 1 0 49.1317591117 45.0759612349 74.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2691 1 1 0 50.0 45.0 74.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2692 1 1 0 50.8682408883 45.0759612349 74.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2693 1 1 0 51.7101007166 45.3015368961 74.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2694 1 1 0 52.5 45.6698729811 74.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2695 1 1 0 53.2139380484 46.1697777844 74.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2696 1 1 0 53.8302222156 46.7860619516 74.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2697 1 1 0 54.3301270189 47.5 74.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2698 1 1 0 54.6984631039 48.2898992834 74.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2699 1 1 0 54.9240387651 49.1317591117 74.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2700 1 1 0 55.0 50.0 74.0 1.0 -5.81892923786e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2701 1 1 0 54.8296291314 51.2940952255 75.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2702 1 1 0 54.5315389352 52.1130913087 75.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2703 1 1 0 54.0957602214 52.8678821818 75.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2704 1 1 0 53.5355339059 53.5355339059 75.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2705 1 1 0 52.8678821818 54.0957602214 75.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2706 1 1 0 52.1130913087 54.5315389352 75.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2707 1 1 0 51.2940952255 54.8296291314 75.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2708 1 1 0 50.4357787137 54.9809734905 75.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2709 1 1 0 49.5642212863 54.9809734905 75.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2710 1 1 0 48.7059047745 54.8296291314 75.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2711 1 1 0 47.8869086913 54.5315389352 75.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2712 1 1 0 47.1321178182 54.0957602214 75.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2713 1 1 0 46.4644660941 53.5355339059 75.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2714 1 1 0 45.9042397786 52.8678821818 75.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2715 1 1 0 45.4684610648 52.1130913087 75.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2716 1 1 0 45.1703708686 51.2940952255 75.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2717 1 1 0 45.0190265095 50.4357787137 75.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2718 1 1 0 45.0190265095 49.5642212863 75.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2719 1 1 0 45.1703708686 48.7059047745 75.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2720 1 1 0 45.4684610648 47.8869086913 75.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2721 1 1 0 45.9042397786 47.1321178182 75.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2722 1 1 0 46.4644660941 46.4644660941 75.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2723 1 1 0 47.1321178182 45.9042397786 75.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2724 1 1 0 47.8869086913 45.4684610648 75.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2725 1 1 0 48.7059047745 45.1703708686 75.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2726 1 1 0 49.5642212863 45.0190265095 75.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2727 1 1 0 50.4357787137 45.0190265095 75.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2728 1 1 0 51.2940952255 45.1703708686 75.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2729 1 1 0 52.1130913087 45.4684610648 75.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2730 1 1 0 52.8678821818 45.9042397786 75.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2731 1 1 0 53.5355339059 46.4644660941 75.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2732 1 1 0 54.0957602214 47.1321178182 75.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2733 1 1 0 54.5315389352 47.8869086913 75.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2734 1 1 0 54.8296291314 48.7059047745 75.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2735 1 1 0 54.9809734905 49.5642212863 75.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2736 1 1 0 54.9809734905 50.4357787137 75.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2737 1 1 0 54.6984631039 51.7101007166 76.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2738 1 1 0 54.3301270189 52.5 76.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2739 1 1 0 53.8302222156 53.2139380484 76.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2740 1 1 0 53.2139380484 53.8302222156 76.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2741 1 1 0 52.5 54.3301270189 76.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2742 1 1 0 51.7101007166 54.6984631039 76.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2743 1 1 0 50.8682408883 54.9240387651 76.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2744 1 1 0 50.0 55.0 76.0 5.63523221799e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2745 1 1 0 49.1317591117 54.9240387651 76.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2746 1 1 0 48.2898992834 54.6984631039 76.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2747 1 1 0 47.5 54.3301270189 76.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2748 1 1 0 46.7860619516 53.8302222156 76.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2749 1 1 0 46.1697777844 53.2139380484 76.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2750 1 1 0 45.6698729811 52.5 76.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2751 1 1 0 45.3015368961 51.7101007166 76.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2752 1 1 0 45.0759612349 50.8682408883 76.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2753 1 1 0 45.0 50.0 76.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2754 1 1 0 45.0759612349 49.1317591117 76.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2755 1 1 0 45.3015368961 48.2898992834 76.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2756 1 1 0 45.6698729811 47.5 76.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2757 1 1 0 46.1697777844 46.7860619516 76.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2758 1 1 0 46.7860619516 46.1697777844 76.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2759 1 1 0 47.5 45.6698729811 76.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2760 1 1 0 48.2898992834 45.3015368961 76.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2761 1 1 0 49.1317591117 45.0759612349 76.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2762 1 1 0 50.0 45.0 76.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2763 1 1 0 50.8682408883 45.0759612349 76.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2764 1 1 0 51.7101007166 45.3015368961 76.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2765 1 1 0 52.5 45.6698729811 76.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2766 1 1 0 53.2139380484 46.1697777844 76.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2767 1 1 0 53.8302222156 46.7860619516 76.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2768 1 1 0 54.3301270189 47.5 76.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2769 1 1 0 54.6984631039 48.2898992834 76.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2770 1 1 0 54.9240387651 49.1317591117 76.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2771 1 1 0 55.0 50.0 76.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2772 1 1 0 54.9240387651 50.8682408883 76.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2773 1 1 0 54.5315389352 52.1130913087 77.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2774 1 1 0 54.0957602214 52.8678821818 77.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2775 1 1 0 53.5355339059 53.5355339059 77.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2776 1 1 0 52.8678821818 54.0957602214 77.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2777 1 1 0 52.1130913087 54.5315389352 77.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2778 1 1 0 51.2940952255 54.8296291314 77.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2779 1 1 0 50.4357787137 54.9809734905 77.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2780 1 1 0 49.5642212863 54.9809734905 77.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2781 1 1 0 48.7059047745 54.8296291314 77.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2782 1 1 0 47.8869086913 54.5315389352 77.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2783 1 1 0 47.1321178182 54.0957602214 77.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2784 1 1 0 46.4644660941 53.5355339059 77.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2785 1 1 0 45.9042397786 52.8678821818 77.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2786 1 1 0 45.4684610648 52.1130913087 77.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2787 1 1 0 45.1703708686 51.2940952255 77.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2788 1 1 0 45.0190265095 50.4357787137 77.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2789 1 1 0 45.0190265095 49.5642212863 77.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2790 1 1 0 45.1703708686 48.7059047745 77.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2791 1 1 0 45.4684610648 47.8869086913 77.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2792 1 1 0 45.9042397786 47.1321178182 77.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2793 1 1 0 46.4644660941 46.4644660941 77.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2794 1 1 0 47.1321178182 45.9042397786 77.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2795 1 1 0 47.8869086913 45.4684610648 77.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2796 1 1 0 48.7059047745 45.1703708686 77.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2797 1 1 0 49.5642212863 45.0190265095 77.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2798 1 1 0 50.4357787137 45.0190265095 77.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2799 1 1 0 51.2940952255 45.1703708686 77.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2800 1 1 0 52.1130913087 45.4684610648 77.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2801 1 1 0 52.8678821818 45.9042397786 77.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2802 1 1 0 53.5355339059 46.4644660941 77.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2803 1 1 0 54.0957602214 47.1321178182 77.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2804 1 1 0 54.5315389352 47.8869086913 77.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2805 1 1 0 54.8296291314 48.7059047745 77.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2806 1 1 0 54.9809734905 49.5642212863 77.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2807 1 1 0 54.9809734905 50.4357787137 77.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2808 1 1 0 54.8296291314 51.2940952255 77.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2809 1 1 0 54.3301270189 52.5 78.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2810 1 1 0 53.8302222156 53.2139380484 78.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2811 1 1 0 53.2139380484 53.8302222156 78.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2812 1 1 0 52.5 54.3301270189 78.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2813 1 1 0 51.7101007166 54.6984631039 78.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2814 1 1 0 50.8682408883 54.9240387651 78.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2815 1 1 0 50.0 55.0 78.0 6.52341063769e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2816 1 1 0 49.1317591117 54.9240387651 78.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2817 1 1 0 48.2898992834 54.6984631039 78.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2818 1 1 0 47.5 54.3301270189 78.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2819 1 1 0 46.7860619516 53.8302222156 78.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2820 1 1 0 46.1697777844 53.2139380484 78.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2821 1 1 0 45.6698729811 52.5 78.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2822 1 1 0 45.3015368961 51.7101007166 78.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2823 1 1 0 45.0759612349 50.8682408883 78.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2824 1 1 0 45.0 50.0 78.0 -1.0 5.69646455794e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2825 1 1 0 45.0759612349 49.1317591117 78.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2826 1 1 0 45.3015368961 48.2898992834 78.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2827 1 1 0 45.6698729811 47.5 78.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2828 1 1 0 46.1697777844 46.7860619516 78.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2829 1 1 0 46.7860619516 46.1697777844 78.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2830 1 1 0 47.5 45.6698729811 78.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2831 1 1 0 48.2898992834 45.3015368961 78.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2832 1 1 0 49.1317591117 45.0759612349 78.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2833 1 1 0 50.0 45.0 78.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2834 1 1 0 50.8682408883 45.0759612349 78.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2835 1 1 0 51.7101007166 45.3015368961 78.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2836 1 1 0 52.5 45.6698729811 78.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2837 1 1 0 53.2139380484 46.1697777844 78.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2838 1 1 0 53.8302222156 46.7860619516 78.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2839 1 1 0 54.3301270189 47.5 78.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2840 1 1 0 54.6984631039 48.2898992834 78.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2841 1 1 0 54.9240387651 49.1317591117 78.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2842 1 1 0 55.0 50.0 78.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2843 1 1 0 54.9240387651 50.8682408883 78.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2844 1 1 0 54.6984631039 51.7101007166 78.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2845 1 1 0 54.0957602214 52.8678821818 79.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2846 1 1 0 53.5355339059 53.5355339059 79.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2847 1 1 0 52.8678821818 54.0957602214 79.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2848 1 1 0 52.1130913087 54.5315389352 79.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2849 1 1 0 51.2940952255 54.8296291314 79.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2850 1 1 0 50.4357787137 54.9809734905 79.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2851 1 1 0 49.5642212863 54.9809734905 79.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2852 1 1 0 48.7059047745 54.8296291314 79.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2853 1 1 0 47.8869086913 54.5315389352 79.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2854 1 1 0 47.1321178182 54.0957602214 79.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2855 1 1 0 46.4644660941 53.5355339059 79.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2856 1 1 0 45.9042397786 52.8678821818 79.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2857 1 1 0 45.4684610648 52.1130913087 79.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2858 1 1 0 45.1703708686 51.2940952255 79.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2859 1 1 0 45.0190265095 50.4357787137 79.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2860 1 1 0 45.0190265095 49.5642212863 79.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2861 1 1 0 45.1703708686 48.7059047745 79.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2862 1 1 0 45.4684610648 47.8869086913 79.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2863 1 1 0 45.9042397786 47.1321178182 79.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2864 1 1 0 46.4644660941 46.4644660941 79.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2865 1 1 0 47.1321178182 45.9042397786 79.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2866 1 1 0 47.8869086913 45.4684610648 79.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2867 1 1 0 48.7059047745 45.1703708686 79.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2868 1 1 0 49.5642212863 45.0190265095 79.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2869 1 1 0 50.4357787137 45.0190265095 79.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2870 1 1 0 51.2940952255 45.1703708686 79.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2871 1 1 0 52.1130913087 45.4684610648 79.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2872 1 1 0 52.8678821818 45.9042397786 79.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2873 1 1 0 53.5355339059 46.4644660941 79.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2874 1 1 0 54.0957602214 47.1321178182 79.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2875 1 1 0 54.5315389352 47.8869086913 79.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2876 1 1 0 54.8296291314 48.7059047745 79.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2877 1 1 0 54.9809734905 49.5642212863 79.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2878 1 1 0 54.9809734905 50.4357787137 79.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2879 1 1 0 54.8296291314 51.2940952255 79.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2880 1 1 0 54.5315389352 52.1130913087 79.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2881 1 1 0 53.8302222156 53.2139380484 80.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2882 1 1 0 53.2139380484 53.8302222156 80.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2883 1 1 0 52.5 54.3301270189 80.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2884 1 1 0 51.7101007166 54.6984631039 80.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2885 1 1 0 50.8682408883 54.9240387651 80.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2886 1 1 0 50.0 55.0 80.0 6.52341063769e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2887 1 1 0 49.1317591117 54.9240387651 80.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2888 1 1 0 48.2898992834 54.6984631039 80.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2889 1 1 0 47.5 54.3301270189 80.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2890 1 1 0 46.7860619516 53.8302222156 80.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2891 1 1 0 46.1697777844 53.2139380484 80.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2892 1 1 0 45.6698729811 52.5 80.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2893 1 1 0 45.3015368961 51.7101007166 80.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2894 1 1 0 45.0759612349 50.8682408883 80.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2895 1 1 0 45.0 50.0 80.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2896 1 1 0 45.0759612349 49.1317591117 80.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2897 1 1 0 45.3015368961 48.2898992834 80.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2898 1 1 0 45.6698729811 47.5 80.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2899 1 1 0 46.1697777844 46.7860619516 80.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2900 1 1 0 46.7860619516 46.1697777844 80.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2901 1 1 0 47.5 45.6698729811 80.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2902 1 1 0 48.2898992834 45.3015368961 80.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2903 1 1 0 49.1317591117 45.0759612349 80.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2904 1 1 0 50.0 45.0 80.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2905 1 1 0 50.8682408883 45.0759612349 80.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2906 1 1 0 51.7101007166 45.3015368961 80.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2907 1 1 0 52.5 45.6698729811 80.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2908 1 1 0 53.2139380484 46.1697777844 80.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2909 1 1 0 53.8302222156 46.7860619516 80.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2910 1 1 0 54.3301270189 47.5 80.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2911 1 1 0 54.6984631039 48.2898992834 80.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2912 1 1 0 54.9240387651 49.1317591117 80.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2913 1 1 0 55.0 50.0 80.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2914 1 1 0 54.9240387651 50.8682408883 80.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2915 1 1 0 54.6984631039 51.7101007166 80.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2916 1 1 0 54.3301270189 52.5 80.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2917 1 1 0 53.5355339059 53.5355339059 81.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2918 1 1 0 52.8678821818 54.0957602214 81.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2919 1 1 0 52.1130913087 54.5315389352 81.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2920 1 1 0 51.2940952255 54.8296291314 81.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2921 1 1 0 50.4357787137 54.9809734905 81.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2922 1 1 0 49.5642212863 54.9809734905 81.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2923 1 1 0 48.7059047745 54.8296291314 81.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2924 1 1 0 47.8869086913 54.5315389352 81.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2925 1 1 0 47.1321178182 54.0957602214 81.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2926 1 1 0 46.4644660941 53.5355339059 81.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2927 1 1 0 45.9042397786 52.8678821818 81.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2928 1 1 0 45.4684610648 52.1130913087 81.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2929 1 1 0 45.1703708686 51.2940952255 81.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2930 1 1 0 45.0190265095 50.4357787137 81.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2931 1 1 0 45.0190265095 49.5642212863 81.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2932 1 1 0 45.1703708686 48.7059047745 81.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2933 1 1 0 45.4684610648 47.8869086913 81.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2934 1 1 0 45.9042397786 47.1321178182 81.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2935 1 1 0 46.4644660941 46.4644660941 81.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2936 1 1 0 47.1321178182 45.9042397786 81.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2937 1 1 0 47.8869086913 45.4684610648 81.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2938 1 1 0 48.7059047745 45.1703708686 81.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2939 1 1 0 49.5642212863 45.0190265095 81.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2940 1 1 0 50.4357787137 45.0190265095 81.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2941 1 1 0 51.2940952255 45.1703708686 81.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2942 1 1 0 52.1130913087 45.4684610648 81.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2943 1 1 0 52.8678821818 45.9042397786 81.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2944 1 1 0 53.5355339059 46.4644660941 81.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2945 1 1 0 54.0957602214 47.1321178182 81.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2946 1 1 0 54.5315389352 47.8869086913 81.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2947 1 1 0 54.8296291314 48.7059047745 81.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2948 1 1 0 54.9809734905 49.5642212863 81.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2949 1 1 0 54.9809734905 50.4357787137 81.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -2950 1 1 0 54.8296291314 51.2940952255 81.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -2951 1 1 0 54.5315389352 52.1130913087 81.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -2952 1 1 0 54.0957602214 52.8678821818 81.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2953 1 1 0 53.2139380484 53.8302222156 82.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2954 1 1 0 52.5 54.3301270189 82.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2955 1 1 0 51.7101007166 54.6984631039 82.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2956 1 1 0 50.8682408883 54.9240387651 82.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2957 1 1 0 50.0 55.0 82.0 6.52341063769e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2958 1 1 0 49.1317591117 54.9240387651 82.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2959 1 1 0 48.2898992834 54.6984631039 82.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2960 1 1 0 47.5 54.3301270189 82.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2961 1 1 0 46.7860619516 53.8302222156 82.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2962 1 1 0 46.1697777844 53.2139380484 82.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2963 1 1 0 45.6698729811 52.5 82.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2964 1 1 0 45.3015368961 51.7101007166 82.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2965 1 1 0 45.0759612349 50.8682408883 82.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2966 1 1 0 45.0 50.0 82.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2967 1 1 0 45.0759612349 49.1317591117 82.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2968 1 1 0 45.3015368961 48.2898992834 82.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2969 1 1 0 45.6698729811 47.5 82.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2970 1 1 0 46.1697777844 46.7860619516 82.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2971 1 1 0 46.7860619516 46.1697777844 82.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2972 1 1 0 47.5 45.6698729811 82.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2973 1 1 0 48.2898992834 45.3015368961 82.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2974 1 1 0 49.1317591117 45.0759612349 82.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2975 1 1 0 50.0 45.0 82.0 -5.7576968979e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -2976 1 1 0 50.8682408883 45.0759612349 82.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -2977 1 1 0 51.7101007166 45.3015368961 82.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -2978 1 1 0 52.5 45.6698729811 82.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -2979 1 1 0 53.2139380484 46.1697777844 82.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -2980 1 1 0 53.8302222156 46.7860619516 82.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2981 1 1 0 54.3301270189 47.5 82.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2982 1 1 0 54.6984631039 48.2898992834 82.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2983 1 1 0 54.9240387651 49.1317591117 82.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2984 1 1 0 55.0 50.0 82.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -2985 1 1 0 54.9240387651 50.8682408883 82.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -2986 1 1 0 54.6984631039 51.7101007166 82.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -2987 1 1 0 54.3301270189 52.5 82.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -2988 1 1 0 53.8302222156 53.2139380484 82.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -2989 1 1 0 52.8678821818 54.0957602214 83.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2990 1 1 0 52.1130913087 54.5315389352 83.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2991 1 1 0 51.2940952255 54.8296291314 83.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2992 1 1 0 50.4357787137 54.9809734905 83.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2993 1 1 0 49.5642212863 54.9809734905 83.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -2994 1 1 0 48.7059047745 54.8296291314 83.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -2995 1 1 0 47.8869086913 54.5315389352 83.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -2996 1 1 0 47.1321178182 54.0957602214 83.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -2997 1 1 0 46.4644660941 53.5355339059 83.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -2998 1 1 0 45.9042397786 52.8678821818 83.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -2999 1 1 0 45.4684610648 52.1130913087 83.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3000 1 1 0 45.1703708686 51.2940952255 83.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3001 1 1 0 45.0190265095 50.4357787137 83.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3002 1 1 0 45.0190265095 49.5642212863 83.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3003 1 1 0 45.1703708686 48.7059047745 83.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3004 1 1 0 45.4684610648 47.8869086913 83.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3005 1 1 0 45.9042397786 47.1321178182 83.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3006 1 1 0 46.4644660941 46.4644660941 83.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3007 1 1 0 47.1321178182 45.9042397786 83.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3008 1 1 0 47.8869086913 45.4684610648 83.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3009 1 1 0 48.7059047745 45.1703708686 83.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3010 1 1 0 49.5642212863 45.0190265095 83.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3011 1 1 0 50.4357787137 45.0190265095 83.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3012 1 1 0 51.2940952255 45.1703708686 83.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3013 1 1 0 52.1130913087 45.4684610648 83.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3014 1 1 0 52.8678821818 45.9042397786 83.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3015 1 1 0 53.5355339059 46.4644660941 83.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3016 1 1 0 54.0957602214 47.1321178182 83.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3017 1 1 0 54.5315389352 47.8869086913 83.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3018 1 1 0 54.8296291314 48.7059047745 83.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3019 1 1 0 54.9809734905 49.5642212863 83.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3020 1 1 0 54.9809734905 50.4357787137 83.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3021 1 1 0 54.8296291314 51.2940952255 83.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3022 1 1 0 54.5315389352 52.1130913087 83.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3023 1 1 0 54.0957602214 52.8678821818 83.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3024 1 1 0 53.5355339059 53.5355339059 83.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3025 1 1 0 52.5 54.3301270189 84.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3026 1 1 0 51.7101007166 54.6984631039 84.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3027 1 1 0 50.8682408883 54.9240387651 84.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3028 1 1 0 50.0 55.0 84.0 6.52341063769e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3029 1 1 0 49.1317591117 54.9240387651 84.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3030 1 1 0 48.2898992834 54.6984631039 84.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3031 1 1 0 47.5 54.3301270189 84.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3032 1 1 0 46.7860619516 53.8302222156 84.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3033 1 1 0 46.1697777844 53.2139380484 84.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3034 1 1 0 45.6698729811 52.5 84.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3035 1 1 0 45.3015368961 51.7101007166 84.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3036 1 1 0 45.0759612349 50.8682408883 84.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3037 1 1 0 45.0 50.0 84.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3038 1 1 0 45.0759612349 49.1317591117 84.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3039 1 1 0 45.3015368961 48.2898992834 84.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3040 1 1 0 45.6698729811 47.5 84.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3041 1 1 0 46.1697777844 46.7860619516 84.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3042 1 1 0 46.7860619516 46.1697777844 84.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3043 1 1 0 47.5 45.6698729811 84.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3044 1 1 0 48.2898992834 45.3015368961 84.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3045 1 1 0 49.1317591117 45.0759612349 84.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3046 1 1 0 50.0 45.0 84.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3047 1 1 0 50.8682408883 45.0759612349 84.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3048 1 1 0 51.7101007166 45.3015368961 84.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3049 1 1 0 52.5 45.6698729811 84.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3050 1 1 0 53.2139380484 46.1697777844 84.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3051 1 1 0 53.8302222156 46.7860619516 84.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3052 1 1 0 54.3301270189 47.5 84.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3053 1 1 0 54.6984631039 48.2898992834 84.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3054 1 1 0 54.9240387651 49.1317591117 84.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3055 1 1 0 55.0 50.0 84.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3056 1 1 0 54.9240387651 50.8682408883 84.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3057 1 1 0 54.6984631039 51.7101007166 84.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3058 1 1 0 54.3301270189 52.5 84.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3059 1 1 0 53.8302222156 53.2139380484 84.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3060 1 1 0 53.2139380484 53.8302222156 84.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3061 1 1 0 52.1130913087 54.5315389352 85.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3062 1 1 0 51.2940952255 54.8296291314 85.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3063 1 1 0 50.4357787137 54.9809734905 85.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3064 1 1 0 49.5642212863 54.9809734905 85.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3065 1 1 0 48.7059047745 54.8296291314 85.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3066 1 1 0 47.8869086913 54.5315389352 85.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3067 1 1 0 47.1321178182 54.0957602214 85.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3068 1 1 0 46.4644660941 53.5355339059 85.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3069 1 1 0 45.9042397786 52.8678821818 85.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3070 1 1 0 45.4684610648 52.1130913087 85.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3071 1 1 0 45.1703708686 51.2940952255 85.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3072 1 1 0 45.0190265095 50.4357787137 85.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3073 1 1 0 45.0190265095 49.5642212863 85.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3074 1 1 0 45.1703708686 48.7059047745 85.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3075 1 1 0 45.4684610648 47.8869086913 85.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3076 1 1 0 45.9042397786 47.1321178182 85.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3077 1 1 0 46.4644660941 46.4644660941 85.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3078 1 1 0 47.1321178182 45.9042397786 85.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3079 1 1 0 47.8869086913 45.4684610648 85.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3080 1 1 0 48.7059047745 45.1703708686 85.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3081 1 1 0 49.5642212863 45.0190265095 85.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3082 1 1 0 50.4357787137 45.0190265095 85.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3083 1 1 0 51.2940952255 45.1703708686 85.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3084 1 1 0 52.1130913087 45.4684610648 85.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3085 1 1 0 52.8678821818 45.9042397786 85.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3086 1 1 0 53.5355339059 46.4644660941 85.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3087 1 1 0 54.0957602214 47.1321178182 85.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3088 1 1 0 54.5315389352 47.8869086913 85.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3089 1 1 0 54.8296291314 48.7059047745 85.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3090 1 1 0 54.9809734905 49.5642212863 85.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3091 1 1 0 54.9809734905 50.4357787137 85.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3092 1 1 0 54.8296291314 51.2940952255 85.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3093 1 1 0 54.5315389352 52.1130913087 85.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3094 1 1 0 54.0957602214 52.8678821818 85.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3095 1 1 0 53.5355339059 53.5355339059 85.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3096 1 1 0 52.8678821818 54.0957602214 85.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3097 1 1 0 51.7101007166 54.6984631039 86.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3098 1 1 0 50.8682408883 54.9240387651 86.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3099 1 1 0 50.0 55.0 86.0 7.41158905739e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3100 1 1 0 49.1317591117 54.9240387651 86.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3101 1 1 0 48.2898992834 54.6984631039 86.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3102 1 1 0 47.5 54.3301270189 86.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3103 1 1 0 46.7860619516 53.8302222156 86.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3104 1 1 0 46.1697777844 53.2139380484 86.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3105 1 1 0 45.6698729811 52.5 86.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3106 1 1 0 45.3015368961 51.7101007166 86.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3107 1 1 0 45.0759612349 50.8682408883 86.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3108 1 1 0 45.0 50.0 86.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3109 1 1 0 45.0759612349 49.1317591117 86.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3110 1 1 0 45.3015368961 48.2898992834 86.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3111 1 1 0 45.6698729811 47.5 86.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3112 1 1 0 46.1697777844 46.7860619516 86.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3113 1 1 0 46.7860619516 46.1697777844 86.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3114 1 1 0 47.5 45.6698729811 86.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3115 1 1 0 48.2898992834 45.3015368961 86.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3116 1 1 0 49.1317591117 45.0759612349 86.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3117 1 1 0 50.0 45.0 86.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3118 1 1 0 50.8682408883 45.0759612349 86.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3119 1 1 0 51.7101007166 45.3015368961 86.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3120 1 1 0 52.5 45.6698729811 86.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3121 1 1 0 53.2139380484 46.1697777844 86.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3122 1 1 0 53.8302222156 46.7860619516 86.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3123 1 1 0 54.3301270189 47.5 86.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3124 1 1 0 54.6984631039 48.2898992834 86.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3125 1 1 0 54.9240387651 49.1317591117 86.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3126 1 1 0 55.0 50.0 86.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3127 1 1 0 54.9240387651 50.8682408883 86.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3128 1 1 0 54.6984631039 51.7101007166 86.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3129 1 1 0 54.3301270189 52.5 86.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3130 1 1 0 53.8302222156 53.2139380484 86.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3131 1 1 0 53.2139380484 53.8302222156 86.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3132 1 1 0 52.5 54.3301270189 86.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3133 1 1 0 51.2940952255 54.8296291314 87.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3134 1 1 0 50.4357787137 54.9809734905 87.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3135 1 1 0 49.5642212863 54.9809734905 87.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3136 1 1 0 48.7059047745 54.8296291314 87.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3137 1 1 0 47.8869086913 54.5315389352 87.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3138 1 1 0 47.1321178182 54.0957602214 87.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3139 1 1 0 46.4644660941 53.5355339059 87.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3140 1 1 0 45.9042397786 52.8678821818 87.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3141 1 1 0 45.4684610648 52.1130913087 87.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3142 1 1 0 45.1703708686 51.2940952255 87.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3143 1 1 0 45.0190265095 50.4357787137 87.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3144 1 1 0 45.0190265095 49.5642212863 87.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3145 1 1 0 45.1703708686 48.7059047745 87.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3146 1 1 0 45.4684610648 47.8869086913 87.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3147 1 1 0 45.9042397786 47.1321178182 87.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3148 1 1 0 46.4644660941 46.4644660941 87.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3149 1 1 0 47.1321178182 45.9042397786 87.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3150 1 1 0 47.8869086913 45.4684610648 87.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3151 1 1 0 48.7059047745 45.1703708686 87.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3152 1 1 0 49.5642212863 45.0190265095 87.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3153 1 1 0 50.4357787137 45.0190265095 87.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3154 1 1 0 51.2940952255 45.1703708686 87.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3155 1 1 0 52.1130913087 45.4684610648 87.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3156 1 1 0 52.8678821818 45.9042397786 87.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3157 1 1 0 53.5355339059 46.4644660941 87.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3158 1 1 0 54.0957602214 47.1321178182 87.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3159 1 1 0 54.5315389352 47.8869086913 87.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3160 1 1 0 54.8296291314 48.7059047745 87.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3161 1 1 0 54.9809734905 49.5642212863 87.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3162 1 1 0 54.9809734905 50.4357787137 87.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3163 1 1 0 54.8296291314 51.2940952255 87.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3164 1 1 0 54.5315389352 52.1130913087 87.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3165 1 1 0 54.0957602214 52.8678821818 87.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3166 1 1 0 53.5355339059 53.5355339059 87.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3167 1 1 0 52.8678821818 54.0957602214 87.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3168 1 1 0 52.1130913087 54.5315389352 87.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3169 1 1 0 50.8682408883 54.9240387651 88.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3170 1 1 0 50.0 55.0 88.0 7.41158905739e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3171 1 1 0 49.1317591117 54.9240387651 88.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3172 1 1 0 48.2898992834 54.6984631039 88.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3173 1 1 0 47.5 54.3301270189 88.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3174 1 1 0 46.7860619516 53.8302222156 88.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3175 1 1 0 46.1697777844 53.2139380484 88.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3176 1 1 0 45.6698729811 52.5 88.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3177 1 1 0 45.3015368961 51.7101007166 88.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3178 1 1 0 45.0759612349 50.8682408883 88.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3179 1 1 0 45.0 50.0 88.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3180 1 1 0 45.0759612349 49.1317591117 88.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3181 1 1 0 45.3015368961 48.2898992834 88.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3182 1 1 0 45.6698729811 47.5 88.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3183 1 1 0 46.1697777844 46.7860619516 88.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3184 1 1 0 46.7860619516 46.1697777844 88.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3185 1 1 0 47.5 45.6698729811 88.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3186 1 1 0 48.2898992834 45.3015368961 88.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3187 1 1 0 49.1317591117 45.0759612349 88.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3188 1 1 0 50.0 45.0 88.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3189 1 1 0 50.8682408883 45.0759612349 88.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3190 1 1 0 51.7101007166 45.3015368961 88.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3191 1 1 0 52.5 45.6698729811 88.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3192 1 1 0 53.2139380484 46.1697777844 88.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3193 1 1 0 53.8302222156 46.7860619516 88.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3194 1 1 0 54.3301270189 47.5 88.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3195 1 1 0 54.6984631039 48.2898992834 88.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3196 1 1 0 54.9240387651 49.1317591117 88.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3197 1 1 0 55.0 50.0 88.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3198 1 1 0 54.9240387651 50.8682408883 88.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3199 1 1 0 54.6984631039 51.7101007166 88.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3200 1 1 0 54.3301270189 52.5 88.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3201 1 1 0 53.8302222156 53.2139380484 88.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3202 1 1 0 53.2139380484 53.8302222156 88.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3203 1 1 0 52.5 54.3301270189 88.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3204 1 1 0 51.7101007166 54.6984631039 88.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3205 1 1 0 50.4357787137 54.9809734905 89.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3206 1 1 0 49.5642212863 54.9809734905 89.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3207 1 1 0 48.7059047745 54.8296291314 89.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3208 1 1 0 47.8869086913 54.5315389352 89.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3209 1 1 0 47.1321178182 54.0957602214 89.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3210 1 1 0 46.4644660941 53.5355339059 89.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3211 1 1 0 45.9042397786 52.8678821818 89.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3212 1 1 0 45.4684610648 52.1130913087 89.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3213 1 1 0 45.1703708686 51.2940952255 89.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3214 1 1 0 45.0190265095 50.4357787137 89.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3215 1 1 0 45.0190265095 49.5642212863 89.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3216 1 1 0 45.1703708686 48.7059047745 89.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3217 1 1 0 45.4684610648 47.8869086913 89.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3218 1 1 0 45.9042397786 47.1321178182 89.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3219 1 1 0 46.4644660941 46.4644660941 89.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3220 1 1 0 47.1321178182 45.9042397786 89.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3221 1 1 0 47.8869086913 45.4684610648 89.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3222 1 1 0 48.7059047745 45.1703708686 89.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3223 1 1 0 49.5642212863 45.0190265095 89.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3224 1 1 0 50.4357787137 45.0190265095 89.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3225 1 1 0 51.2940952255 45.1703708686 89.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3226 1 1 0 52.1130913087 45.4684610648 89.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3227 1 1 0 52.8678821818 45.9042397786 89.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3228 1 1 0 53.5355339059 46.4644660941 89.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3229 1 1 0 54.0957602214 47.1321178182 89.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3230 1 1 0 54.5315389352 47.8869086913 89.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3231 1 1 0 54.8296291314 48.7059047745 89.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3232 1 1 0 54.9809734905 49.5642212863 89.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3233 1 1 0 54.9809734905 50.4357787137 89.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3234 1 1 0 54.8296291314 51.2940952255 89.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3235 1 1 0 54.5315389352 52.1130913087 89.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3236 1 1 0 54.0957602214 52.8678821818 89.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3237 1 1 0 53.5355339059 53.5355339059 89.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3238 1 1 0 52.8678821818 54.0957602214 89.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3239 1 1 0 52.1130913087 54.5315389352 89.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3240 1 1 0 51.2940952255 54.8296291314 89.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3241 1 1 0 50.0 55.0 90.0 7.41158905739e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3242 1 1 0 49.1317591117 54.9240387651 90.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3243 1 1 0 48.2898992834 54.6984631039 90.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3244 1 1 0 47.5 54.3301270189 90.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3245 1 1 0 46.7860619516 53.8302222156 90.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3246 1 1 0 46.1697777844 53.2139380484 90.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3247 1 1 0 45.6698729811 52.5 90.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3248 1 1 0 45.3015368961 51.7101007166 90.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3249 1 1 0 45.0759612349 50.8682408883 90.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3250 1 1 0 45.0 50.0 90.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3251 1 1 0 45.0759612349 49.1317591117 90.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3252 1 1 0 45.3015368961 48.2898992834 90.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3253 1 1 0 45.6698729811 47.5 90.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3254 1 1 0 46.1697777844 46.7860619516 90.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3255 1 1 0 46.7860619516 46.1697777844 90.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3256 1 1 0 47.5 45.6698729811 90.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3257 1 1 0 48.2898992834 45.3015368961 90.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3258 1 1 0 49.1317591117 45.0759612349 90.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3259 1 1 0 50.0 45.0 90.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3260 1 1 0 50.8682408883 45.0759612349 90.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3261 1 1 0 51.7101007166 45.3015368961 90.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3262 1 1 0 52.5 45.6698729811 90.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3263 1 1 0 53.2139380484 46.1697777844 90.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3264 1 1 0 53.8302222156 46.7860619516 90.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3265 1 1 0 54.3301270189 47.5 90.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3266 1 1 0 54.6984631039 48.2898992834 90.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3267 1 1 0 54.9240387651 49.1317591117 90.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3268 1 1 0 55.0 50.0 90.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3269 1 1 0 54.9240387651 50.8682408883 90.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3270 1 1 0 54.6984631039 51.7101007166 90.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3271 1 1 0 54.3301270189 52.5 90.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3272 1 1 0 53.8302222156 53.2139380484 90.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3273 1 1 0 53.2139380484 53.8302222156 90.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3274 1 1 0 52.5 54.3301270189 90.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3275 1 1 0 51.7101007166 54.6984631039 90.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3276 1 1 0 50.8682408883 54.9240387651 90.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3277 1 1 0 49.5642212863 54.9809734905 91.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3278 1 1 0 48.7059047745 54.8296291314 91.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3279 1 1 0 47.8869086913 54.5315389352 91.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3280 1 1 0 47.1321178182 54.0957602214 91.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3281 1 1 0 46.4644660941 53.5355339059 91.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3282 1 1 0 45.9042397786 52.8678821818 91.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3283 1 1 0 45.4684610648 52.1130913087 91.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3284 1 1 0 45.1703708686 51.2940952255 91.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3285 1 1 0 45.0190265095 50.4357787137 91.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3286 1 1 0 45.0190265095 49.5642212863 91.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3287 1 1 0 45.1703708686 48.7059047745 91.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3288 1 1 0 45.4684610648 47.8869086913 91.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3289 1 1 0 45.9042397786 47.1321178182 91.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3290 1 1 0 46.4644660941 46.4644660941 91.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3291 1 1 0 47.1321178182 45.9042397786 91.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3292 1 1 0 47.8869086913 45.4684610648 91.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3293 1 1 0 48.7059047745 45.1703708686 91.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3294 1 1 0 49.5642212863 45.0190265095 91.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3295 1 1 0 50.4357787137 45.0190265095 91.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3296 1 1 0 51.2940952255 45.1703708686 91.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3297 1 1 0 52.1130913087 45.4684610648 91.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3298 1 1 0 52.8678821818 45.9042397786 91.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3299 1 1 0 53.5355339059 46.4644660941 91.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3300 1 1 0 54.0957602214 47.1321178182 91.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3301 1 1 0 54.5315389352 47.8869086913 91.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3302 1 1 0 54.8296291314 48.7059047745 91.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3303 1 1 0 54.9809734905 49.5642212863 91.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3304 1 1 0 54.9809734905 50.4357787137 91.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3305 1 1 0 54.8296291314 51.2940952255 91.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3306 1 1 0 54.5315389352 52.1130913087 91.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3307 1 1 0 54.0957602214 52.8678821818 91.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3308 1 1 0 53.5355339059 53.5355339059 91.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3309 1 1 0 52.8678821818 54.0957602214 91.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3310 1 1 0 52.1130913087 54.5315389352 91.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3311 1 1 0 51.2940952255 54.8296291314 91.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3312 1 1 0 50.4357787137 54.9809734905 91.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3313 1 1 0 49.1317591117 54.9240387651 92.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3314 1 1 0 48.2898992834 54.6984631039 92.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3315 1 1 0 47.5 54.3301270189 92.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3316 1 1 0 46.7860619516 53.8302222156 92.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3317 1 1 0 46.1697777844 53.2139380484 92.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3318 1 1 0 45.6698729811 52.5 92.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3319 1 1 0 45.3015368961 51.7101007166 92.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3320 1 1 0 45.0759612349 50.8682408883 92.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3321 1 1 0 45.0 50.0 92.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3322 1 1 0 45.0759612349 49.1317591117 92.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3323 1 1 0 45.3015368961 48.2898992834 92.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3324 1 1 0 45.6698729811 47.5 92.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3325 1 1 0 46.1697777844 46.7860619516 92.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3326 1 1 0 46.7860619516 46.1697777844 92.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3327 1 1 0 47.5 45.6698729811 92.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3328 1 1 0 48.2898992834 45.3015368961 92.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3329 1 1 0 49.1317591117 45.0759612349 92.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3330 1 1 0 50.0 45.0 92.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3331 1 1 0 50.8682408883 45.0759612349 92.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3332 1 1 0 51.7101007166 45.3015368961 92.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3333 1 1 0 52.5 45.6698729811 92.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3334 1 1 0 53.2139380484 46.1697777844 92.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3335 1 1 0 53.8302222156 46.7860619516 92.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3336 1 1 0 54.3301270189 47.5 92.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3337 1 1 0 54.6984631039 48.2898992834 92.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3338 1 1 0 54.9240387651 49.1317591117 92.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3339 1 1 0 55.0 50.0 92.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3340 1 1 0 54.9240387651 50.8682408883 92.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3341 1 1 0 54.6984631039 51.7101007166 92.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3342 1 1 0 54.3301270189 52.5 92.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3343 1 1 0 53.8302222156 53.2139380484 92.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3344 1 1 0 53.2139380484 53.8302222156 92.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3345 1 1 0 52.5 54.3301270189 92.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3346 1 1 0 51.7101007166 54.6984631039 92.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3347 1 1 0 50.8682408883 54.9240387651 92.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3348 1 1 0 50.0 55.0 92.0 7.65651841722e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3349 1 1 0 48.7059047745 54.8296291314 93.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3350 1 1 0 47.8869086913 54.5315389352 93.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3351 1 1 0 47.1321178182 54.0957602214 93.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3352 1 1 0 46.4644660941 53.5355339059 93.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3353 1 1 0 45.9042397786 52.8678821818 93.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3354 1 1 0 45.4684610648 52.1130913087 93.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3355 1 1 0 45.1703708686 51.2940952255 93.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3356 1 1 0 45.0190265095 50.4357787137 93.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3357 1 1 0 45.0190265095 49.5642212863 93.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3358 1 1 0 45.1703708686 48.7059047745 93.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3359 1 1 0 45.4684610648 47.8869086913 93.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3360 1 1 0 45.9042397786 47.1321178182 93.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3361 1 1 0 46.4644660941 46.4644660941 93.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3362 1 1 0 47.1321178182 45.9042397786 93.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3363 1 1 0 47.8869086913 45.4684610648 93.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3364 1 1 0 48.7059047745 45.1703708686 93.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3365 1 1 0 49.5642212863 45.0190265095 93.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3366 1 1 0 50.4357787137 45.0190265095 93.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3367 1 1 0 51.2940952255 45.1703708686 93.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3368 1 1 0 52.1130913087 45.4684610648 93.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3369 1 1 0 52.8678821818 45.9042397786 93.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3370 1 1 0 53.5355339059 46.4644660941 93.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3371 1 1 0 54.0957602214 47.1321178182 93.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3372 1 1 0 54.5315389352 47.8869086913 93.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3373 1 1 0 54.8296291314 48.7059047745 93.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3374 1 1 0 54.9809734905 49.5642212863 93.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3375 1 1 0 54.9809734905 50.4357787137 93.0 0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3376 1 1 0 54.8296291314 51.2940952255 93.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3377 1 1 0 54.5315389352 52.1130913087 93.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3378 1 1 0 54.0957602214 52.8678821818 93.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3379 1 1 0 53.5355339059 53.5355339059 93.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3380 1 1 0 52.8678821818 54.0957602214 93.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3381 1 1 0 52.1130913087 54.5315389352 93.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3382 1 1 0 51.2940952255 54.8296291314 93.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3383 1 1 0 50.4357787137 54.9809734905 93.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3384 1 1 0 49.5642212863 54.9809734905 93.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3385 1 1 0 48.2898992834 54.6984631039 94.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3386 1 1 0 47.5 54.3301270189 94.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3387 1 1 0 46.7860619516 53.8302222156 94.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3388 1 1 0 46.1697777844 53.2139380484 94.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3389 1 1 0 45.6698729811 52.5 94.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3390 1 1 0 45.3015368961 51.7101007166 94.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3391 1 1 0 45.0759612349 50.8682408883 94.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3392 1 1 0 45.0 50.0 94.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3393 1 1 0 45.0759612349 49.1317591117 94.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3394 1 1 0 45.3015368961 48.2898992834 94.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3395 1 1 0 45.6698729811 47.5 94.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3396 1 1 0 46.1697777844 46.7860619516 94.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3397 1 1 0 46.7860619516 46.1697777844 94.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3398 1 1 0 47.5 45.6698729811 94.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3399 1 1 0 48.2898992834 45.3015368961 94.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3400 1 1 0 49.1317591117 45.0759612349 94.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3401 1 1 0 50.0 45.0 94.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3402 1 1 0 50.8682408883 45.0759612349 94.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3403 1 1 0 51.7101007166 45.3015368961 94.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3404 1 1 0 52.5 45.6698729811 94.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3405 1 1 0 53.2139380484 46.1697777844 94.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3406 1 1 0 53.8302222156 46.7860619516 94.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3407 1 1 0 54.3301270189 47.5 94.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3408 1 1 0 54.6984631039 48.2898992834 94.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3409 1 1 0 54.9240387651 49.1317591117 94.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3410 1 1 0 55.0 50.0 94.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3411 1 1 0 54.9240387651 50.8682408883 94.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3412 1 1 0 54.6984631039 51.7101007166 94.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3413 1 1 0 54.3301270189 52.5 94.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3414 1 1 0 53.8302222156 53.2139380484 94.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3415 1 1 0 53.2139380484 53.8302222156 94.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3416 1 1 0 52.5 54.3301270189 94.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3417 1 1 0 51.7101007166 54.6984631039 94.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3418 1 1 0 50.8682408883 54.9240387651 94.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3419 1 1 0 50.0 55.0 94.0 9.43287525662e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3420 1 1 0 49.1317591117 54.9240387651 94.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3421 1 1 0 47.8869086913 54.5315389352 95.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3422 1 1 0 47.1321178182 54.0957602214 95.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3423 1 1 0 46.4644660941 53.5355339059 95.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3424 1 1 0 45.9042397786 52.8678821818 95.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3425 1 1 0 45.4684610648 52.1130913087 95.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3426 1 1 0 45.1703708686 51.2940952255 95.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3427 1 1 0 45.0190265095 50.4357787137 95.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3428 1 1 0 45.0190265095 49.5642212863 95.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3429 1 1 0 45.1703708686 48.7059047745 95.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3430 1 1 0 45.4684610648 47.8869086913 95.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3431 1 1 0 45.9042397786 47.1321178182 95.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3432 1 1 0 46.4644660941 46.4644660941 95.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3433 1 1 0 47.1321178182 45.9042397786 95.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3434 1 1 0 47.8869086913 45.4684610648 95.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3435 1 1 0 48.7059047745 45.1703708686 95.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3436 1 1 0 49.5642212863 45.0190265095 95.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3437 1 1 0 50.4357787137 45.0190265095 95.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3438 1 1 0 51.2940952255 45.1703708686 95.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3439 1 1 0 52.1130913087 45.4684610648 95.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3440 1 1 0 52.8678821818 45.9042397786 95.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3441 1 1 0 53.5355339059 46.4644660941 95.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3442 1 1 0 54.0957602214 47.1321178182 95.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3443 1 1 0 54.5315389352 47.8869086913 95.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3444 1 1 0 54.8296291314 48.7059047745 95.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3445 1 1 0 54.9809734905 49.5642212863 95.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3446 1 1 0 54.9809734905 50.4357787137 95.0 0.996194698092 0.0871557427476 0 0.872664625997 -75 42.5 42.5 0.2 -3447 1 1 0 54.8296291314 51.2940952255 95.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3448 1 1 0 54.5315389352 52.1130913087 95.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3449 1 1 0 54.0957602214 52.8678821818 95.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3450 1 1 0 53.5355339059 53.5355339059 95.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3451 1 1 0 52.8678821818 54.0957602214 95.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3452 1 1 0 52.1130913087 54.5315389352 95.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3453 1 1 0 51.2940952255 54.8296291314 95.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3454 1 1 0 50.4357787137 54.9809734905 95.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3455 1 1 0 49.5642212863 54.9809734905 95.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3456 1 1 0 48.7059047745 54.8296291314 95.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3457 1 1 0 47.5 54.3301270189 96.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3458 1 1 0 46.7860619516 53.8302222156 96.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3459 1 1 0 46.1697777844 53.2139380484 96.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3460 1 1 0 45.6698729811 52.5 96.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3461 1 1 0 45.3015368961 51.7101007166 96.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3462 1 1 0 45.0759612349 50.8682408883 96.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3463 1 1 0 45.0 50.0 96.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3464 1 1 0 45.0759612349 49.1317591117 96.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3465 1 1 0 45.3015368961 48.2898992834 96.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3466 1 1 0 45.6698729811 47.5 96.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3467 1 1 0 46.1697777844 46.7860619516 96.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3468 1 1 0 46.7860619516 46.1697777844 96.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3469 1 1 0 47.5 45.6698729811 96.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3470 1 1 0 48.2898992834 45.3015368961 96.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3471 1 1 0 49.1317591117 45.0759612349 96.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3472 1 1 0 50.0 45.0 96.0 -7.5340537373e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3473 1 1 0 50.8682408883 45.0759612349 96.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3474 1 1 0 51.7101007166 45.3015368961 96.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3475 1 1 0 52.5 45.6698729811 96.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3476 1 1 0 53.2139380484 46.1697777844 96.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3477 1 1 0 53.8302222156 46.7860619516 96.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3478 1 1 0 54.3301270189 47.5 96.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3479 1 1 0 54.6984631039 48.2898992834 96.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3480 1 1 0 54.9240387651 49.1317591117 96.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3481 1 1 0 55.0 50.0 96.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3482 1 1 0 54.9240387651 50.8682408883 96.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3483 1 1 0 54.6984631039 51.7101007166 96.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3484 1 1 0 54.3301270189 52.5 96.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3485 1 1 0 53.8302222156 53.2139380484 96.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3486 1 1 0 53.2139380484 53.8302222156 96.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3487 1 1 0 52.5 54.3301270189 96.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3488 1 1 0 51.7101007166 54.6984631039 96.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3489 1 1 0 50.8682408883 54.9240387651 96.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3490 1 1 0 50.0 55.0 96.0 9.43287525662e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3491 1 1 0 49.1317591117 54.9240387651 96.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3492 1 1 0 48.2898992834 54.6984631039 96.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3493 1 1 0 47.1321178182 54.0957602214 97.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3494 1 1 0 46.4644660941 53.5355339059 97.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3495 1 1 0 45.9042397786 52.8678821818 97.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3496 1 1 0 45.4684610648 52.1130913087 97.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3497 1 1 0 45.1703708686 51.2940952255 97.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3498 1 1 0 45.0190265095 50.4357787137 97.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3499 1 1 0 45.0190265095 49.5642212863 97.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3500 1 1 0 45.1703708686 48.7059047745 97.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3501 1 1 0 45.4684610648 47.8869086913 97.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3502 1 1 0 45.9042397786 47.1321178182 97.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3503 1 1 0 46.4644660941 46.4644660941 97.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3504 1 1 0 47.1321178182 45.9042397786 97.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3505 1 1 0 47.8869086913 45.4684610648 97.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3506 1 1 0 48.7059047745 45.1703708686 97.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3507 1 1 0 49.5642212863 45.0190265095 97.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3508 1 1 0 50.4357787137 45.0190265095 97.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3509 1 1 0 51.2940952255 45.1703708686 97.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3510 1 1 0 52.1130913087 45.4684610648 97.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3511 1 1 0 52.8678821818 45.9042397786 97.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3512 1 1 0 53.5355339059 46.4644660941 97.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3513 1 1 0 54.0957602214 47.1321178182 97.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3514 1 1 0 54.5315389352 47.8869086913 97.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3515 1 1 0 54.8296291314 48.7059047745 97.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3516 1 1 0 54.9809734905 49.5642212863 97.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3517 1 1 0 54.9809734905 50.4357787137 97.0 0.996194698092 0.0871557427476 0 0.872664625997 -75 42.5 42.5 0.2 -3518 1 1 0 54.8296291314 51.2940952255 97.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3519 1 1 0 54.5315389352 52.1130913087 97.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3520 1 1 0 54.0957602214 52.8678821818 97.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3521 1 1 0 53.5355339059 53.5355339059 97.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3522 1 1 0 52.8678821818 54.0957602214 97.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3523 1 1 0 52.1130913087 54.5315389352 97.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3524 1 1 0 51.2940952255 54.8296291314 97.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3525 1 1 0 50.4357787137 54.9809734905 97.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3526 1 1 0 49.5642212863 54.9809734905 97.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3527 1 1 0 48.7059047745 54.8296291314 97.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3528 1 1 0 47.8869086913 54.5315389352 97.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3529 1 1 0 46.7860619516 53.8302222156 98.0 -0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3530 1 1 0 46.1697777844 53.2139380484 98.0 -0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3531 1 1 0 45.6698729811 52.5 98.0 -0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3532 1 1 0 45.3015368961 51.7101007166 98.0 -0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3533 1 1 0 45.0759612349 50.8682408883 98.0 -0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3534 1 1 0 45.0 50.0 98.0 -1.0 7.47282139735e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3535 1 1 0 45.0759612349 49.1317591117 98.0 -0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3536 1 1 0 45.3015368961 48.2898992834 98.0 -0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3537 1 1 0 45.6698729811 47.5 98.0 -0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3538 1 1 0 46.1697777844 46.7860619516 98.0 -0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3539 1 1 0 46.7860619516 46.1697777844 98.0 -0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3540 1 1 0 47.5 45.6698729811 98.0 -0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3541 1 1 0 48.2898992834 45.3015368961 98.0 -0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3542 1 1 0 49.1317591117 45.0759612349 98.0 -0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3543 1 1 0 50.0 45.0 98.0 -9.3104105767e-15 -1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3544 1 1 0 50.8682408883 45.0759612349 98.0 0.173648177667 -0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3545 1 1 0 51.7101007166 45.3015368961 98.0 0.342020143326 -0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3546 1 1 0 52.5 45.6698729811 98.0 0.5 -0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3547 1 1 0 53.2139380484 46.1697777844 98.0 0.642787609687 -0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3548 1 1 0 53.8302222156 46.7860619516 98.0 0.766044443119 -0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3549 1 1 0 54.3301270189 47.5 98.0 0.866025403784 -0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3550 1 1 0 54.6984631039 48.2898992834 98.0 0.939692620786 -0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3551 1 1 0 54.9240387651 49.1317591117 98.0 0.984807753012 -0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3552 1 1 0 55.0 50.0 98.0 1.0 -7.59528607726e-15 0 0.872664625997 -75 42.5 42.5 0.2 -3553 1 1 0 54.9240387651 50.8682408883 98.0 0.984807753012 0.173648177667 0 0.872664625997 -75 42.5 42.5 0.2 -3554 1 1 0 54.6984631039 51.7101007166 98.0 0.939692620786 0.342020143326 0 0.872664625997 -75 42.5 42.5 0.2 -3555 1 1 0 54.3301270189 52.5 98.0 0.866025403784 0.5 0 0.872664625997 -75 42.5 42.5 0.2 -3556 1 1 0 53.8302222156 53.2139380484 98.0 0.766044443119 0.642787609687 0 0.872664625997 -75 42.5 42.5 0.2 -3557 1 1 0 53.2139380484 53.8302222156 98.0 0.642787609687 0.766044443119 0 0.872664625997 -75 42.5 42.5 0.2 -3558 1 1 0 52.5 54.3301270189 98.0 0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3559 1 1 0 51.7101007166 54.6984631039 98.0 0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3560 1 1 0 50.8682408883 54.9240387651 98.0 0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3561 1 1 0 50.0 55.0 98.0 9.43287525662e-15 1.0 0 0.872664625997 -75 42.5 42.5 0.2 -3562 1 1 0 49.1317591117 54.9240387651 98.0 -0.173648177667 0.984807753012 0 0.872664625997 -75 42.5 42.5 0.2 -3563 1 1 0 48.2898992834 54.6984631039 98.0 -0.342020143326 0.939692620786 0 0.872664625997 -75 42.5 42.5 0.2 -3564 1 1 0 47.5 54.3301270189 98.0 -0.5 0.866025403784 0 0.872664625997 -75 42.5 42.5 0.2 -3565 1 1 0 46.4644660941 53.5355339059 99.0 -0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3566 1 1 0 45.9042397786 52.8678821818 99.0 -0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3567 1 1 0 45.4684610648 52.1130913087 99.0 -0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3568 1 1 0 45.1703708686 51.2940952255 99.0 -0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3569 1 1 0 45.0190265095 50.4357787137 99.0 -0.996194698092 0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3570 1 1 0 45.0190265095 49.5642212863 99.0 -0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3571 1 1 0 45.1703708686 48.7059047745 99.0 -0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3572 1 1 0 45.4684610648 47.8869086913 99.0 -0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3573 1 1 0 45.9042397786 47.1321178182 99.0 -0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3574 1 1 0 46.4644660941 46.4644660941 99.0 -0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3575 1 1 0 47.1321178182 45.9042397786 99.0 -0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3576 1 1 0 47.8869086913 45.4684610648 99.0 -0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3577 1 1 0 48.7059047745 45.1703708686 99.0 -0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3578 1 1 0 49.5642212863 45.0190265095 99.0 -0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3579 1 1 0 50.4357787137 45.0190265095 99.0 0.0871557427477 -0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3580 1 1 0 51.2940952255 45.1703708686 99.0 0.258819045103 -0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3581 1 1 0 52.1130913087 45.4684610648 99.0 0.422618261741 -0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3582 1 1 0 52.8678821818 45.9042397786 99.0 0.573576436351 -0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3583 1 1 0 53.5355339059 46.4644660941 99.0 0.707106781187 -0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3584 1 1 0 54.0957602214 47.1321178182 99.0 0.819152044289 -0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3585 1 1 0 54.5315389352 47.8869086913 99.0 0.906307787037 -0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3586 1 1 0 54.8296291314 48.7059047745 99.0 0.965925826289 -0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3587 1 1 0 54.9809734905 49.5642212863 99.0 0.996194698092 -0.0871557427477 0 0.872664625997 -75 42.5 42.5 0.2 -3588 1 1 0 54.9809734905 50.4357787137 99.0 0.996194698092 0.0871557427476 0 0.872664625997 -75 42.5 42.5 0.2 -3589 1 1 0 54.8296291314 51.2940952255 99.0 0.965925826289 0.258819045103 0 0.872664625997 -75 42.5 42.5 0.2 -3590 1 1 0 54.5315389352 52.1130913087 99.0 0.906307787037 0.422618261741 0 0.872664625997 -75 42.5 42.5 0.2 -3591 1 1 0 54.0957602214 52.8678821818 99.0 0.819152044289 0.573576436351 0 0.872664625997 -75 42.5 42.5 0.2 -3592 1 1 0 53.5355339059 53.5355339059 99.0 0.707106781187 0.707106781187 0 0.872664625997 -75 42.5 42.5 0.2 -3593 1 1 0 52.8678821818 54.0957602214 99.0 0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3594 1 1 0 52.1130913087 54.5315389352 99.0 0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3595 1 1 0 51.2940952255 54.8296291314 99.0 0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3596 1 1 0 50.4357787137 54.9809734905 99.0 0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3597 1 1 0 49.5642212863 54.9809734905 99.0 -0.0871557427477 0.996194698092 0 0.872664625997 -75 42.5 42.5 0.2 -3598 1 1 0 48.7059047745 54.8296291314 99.0 -0.258819045103 0.965925826289 0 0.872664625997 -75 42.5 42.5 0.2 -3599 1 1 0 47.8869086913 54.5315389352 99.0 -0.422618261741 0.906307787037 0 0.872664625997 -75 42.5 42.5 0.2 -3600 1 1 0 47.1321178182 54.0957602214 99.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 -3601 2 2 1.0 57.0 50.0 50.0 -0.573576436351 0.819152044289 0 0.872664625997 -75 42.5 42.5 0.2 diff --git a/examples/USER/dielectric/data.minimal b/examples/USER/dielectric/data.minimal deleted file mode 100644 index f87ae8cd70..0000000000 --- a/examples/USER/dielectric/data.minimal +++ /dev/null @@ -1,50 +0,0 @@ -LAMMPS data file via write_data, version 22 Nov 2016, timestep = 0 - -32 atoms -3 atom types - -0.0000000000000000e+00 5.0000007843669128e+00 xlo xhi -0.0000000000000000e+00 5.1961532151380023e+00 ylo yhi -0.0000000000000000e+00 1.0000000000000000e+01 zlo zhi - -Masses - -1 1 -2 1 -3 1 - -Atoms # dielectric: id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature - -1 1 1 0 0 0 5 0 0 1 1 8 6 1 0 -2 1 1 0 0.5 0.866026 5 0 0 1 1 8 6 1 0 -3 1 1 0 1 0 5 0 0 1 1 8 6 1 0 -4 1 1 0 1.5 0.866026 5 0 0 1 1 8 6 1 0 -5 1 1 0 2 0 5 0 0 1 1 8 6 1 0 -6 1 1 0 2.5 0.866026 5 0 0 1 1 8 6 1 0 -7 1 1 0 3 0 5 0 0 1 1 8 6 1 0 -8 1 1 0 3.5 0.866026 5 0 0 1 1 8 6 1 0 -9 1 1 0 4 0 5 0 0 1 1 8 6 1 0 -10 1 1 0 4.5 0.866026 5 0 0 1 1 8 6 1 0 -11 1 1 0 0 1.73205 5 0 0 1 1 8 6 1 0 -12 1 1 0 0.5 2.59808 5 0 0 1 1 8 6 1 0 -13 1 1 0 1 1.73205 5 0 0 1 1 8 6 1 0 -14 1 1 0 1.5 2.59808 5 0 0 1 1 8 6 1 0 -15 1 1 0 2 1.73205 5 0 0 1 1 8 6 1 0 -16 1 1 0 2.5 2.59808 5 0 0 1 1 8 6 1 0 -17 1 1 0 3 1.73205 5 0 0 1 1 8 6 1 0 -18 1 1 0 3.5 2.59808 5 0 0 1 1 8 6 1 0 -19 1 1 0 4 1.73205 5 0 0 1 1 8 6 1 0 -20 1 1 0 4.5 2.59808 5 0 0 1 1 8 6 1 0 -21 1 1 0 0 3.4641 5 0 0 1 1 8 6 1 0 -22 1 1 0 0.5 4.33013 5 0 0 1 1 8 6 1 0 -23 1 1 0 1 3.4641 5 0 0 1 1 8 6 1 0 -24 1 1 0 1.5 4.33013 5 0 0 1 1 8 6 1 0 -25 1 1 0 2 3.4641 5 0 0 1 1 8 6 1 0 -26 1 1 0 2.5 4.33013 5 0 0 1 1 8 6 1 0 -27 1 1 0 3 3.4641 5 0 0 1 1 8 6 1 0 -28 1 1 0 3.5 4.33013 5 0 0 1 1 8 6 1 0 -29 1 1 0 4 3.4641 5 0 0 1 1 8 6 1 0 -30 1 1 0 4.5 4.33013 5 0 0 1 1 8 6 1 0 -31 2 2 1 1 1 7 0 0 1 1 8 6 10 0 -32 2 3 -1 3 3 7 0 0 1 1 8 6 10 0 - diff --git a/examples/USER/dielectric/data.plane b/examples/USER/dielectric/data.plane deleted file mode 100644 index e35233b3e6..0000000000 --- a/examples/USER/dielectric/data.plane +++ /dev/null @@ -1,2019 +0,0 @@ -LAMMPS data file: using 2001 atoms for single point charge (no pbc), or 2002 atoms for two opposite charges (to have charge neutrality for pbc) - -2001 atoms -3 atom types - -0.0000000000000000e+00 4.0000006274935302e+01 xlo xhi -0.0000000000000000e+00 4.3301276792816687e+01 ylo yhi -0.0000000000000000e+00 4.0000000000000000e+01 zlo zhi - -Masses - -1 1 -2 1 -3 1 - -Atoms # dielectric: id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature - -1 0 1 0 0 0 20 0 0 1 0.866 8 6 1 0 -2 0 1 0 0.5 0.866026 20 0 0 1 0.866 8 6 1 0 -3 0 1 0 1 0 20 0 0 1 0.866 8 6 1 0 -4 0 1 0 1.5 0.866026 20 0 0 1 0.866 8 6 1 0 -5 0 1 0 2 0 20 0 0 1 0.866 8 6 1 0 -6 0 1 0 2.5 0.866026 20 0 0 1 0.866 8 6 1 0 -7 0 1 0 3 0 20 0 0 1 0.866 8 6 1 0 -8 0 1 0 3.5 0.866026 20 0 0 1 0.866 8 6 1 0 -9 0 1 0 4 0 20 0 0 1 0.866 8 6 1 0 -10 0 1 0 4.5 0.866026 20 0 0 1 0.866 8 6 1 0 -11 0 1 0 5 0 20 0 0 1 0.866 8 6 1 0 -12 0 1 0 5.5 0.866026 20 0 0 1 0.866 8 6 1 0 -13 0 1 0 6 0 20 0 0 1 0.866 8 6 1 0 -14 0 1 0 6.5 0.866026 20 0 0 1 0.866 8 6 1 0 -15 0 1 0 7 0 20 0 0 1 0.866 8 6 1 0 -16 0 1 0 7.5 0.866026 20 0 0 1 0.866 8 6 1 0 -17 0 1 0 8 0 20 0 0 1 0.866 8 6 1 0 -18 0 1 0 8.5 0.866026 20 0 0 1 0.866 8 6 1 0 -19 0 1 0 9 0 20 0 0 1 0.866 8 6 1 0 -20 0 1 0 9.5 0.866026 20 0 0 1 0.866 8 6 1 0 -21 0 1 0 10 0 20 0 0 1 0.866 8 6 1 0 -22 0 1 0 10.5 0.866026 20 0 0 1 0.866 8 6 1 0 -23 0 1 0 11 0 20 0 0 1 0.866 8 6 1 0 -24 0 1 0 11.5 0.866026 20 0 0 1 0.866 8 6 1 0 -25 0 1 0 12 0 20 0 0 1 0.866 8 6 1 0 -26 0 1 0 12.5 0.866026 20 0 0 1 0.866 8 6 1 0 -27 0 1 0 13 0 20 0 0 1 0.866 8 6 1 0 -28 0 1 0 13.5 0.866026 20 0 0 1 0.866 8 6 1 0 -29 0 1 0 14 0 20 0 0 1 0.866 8 6 1 0 -30 0 1 0 14.5 0.866026 20 0 0 1 0.866 8 6 1 0 -31 0 1 0 15 0 20 0 0 1 0.866 8 6 1 0 -32 0 1 0 15.5 0.866026 20 0 0 1 0.866 8 6 1 0 -33 0 1 0 16 0 20 0 0 1 0.866 8 6 1 0 -34 0 1 0 16.5 0.866026 20 0 0 1 0.866 8 6 1 0 -35 0 1 0 17 0 20 0 0 1 0.866 8 6 1 0 -36 0 1 0 17.5 0.866026 20 0 0 1 0.866 8 6 1 0 -37 0 1 0 18 0 20 0 0 1 0.866 8 6 1 0 -38 0 1 0 18.5 0.866026 20 0 0 1 0.866 8 6 1 0 -39 0 1 0 19 0 20 0 0 1 0.866 8 6 1 0 -40 0 1 0 19.5 0.866026 20 0 0 1 0.866 8 6 1 0 -41 0 1 0 20 0 20 0 0 1 0.866 8 6 1 0 -42 0 1 0 20.5 0.866026 20 0 0 1 0.866 8 6 1 0 -43 0 1 0 21 0 20 0 0 1 0.866 8 6 1 0 -44 0 1 0 21.5 0.866026 20 0 0 1 0.866 8 6 1 0 -45 0 1 0 22 0 20 0 0 1 0.866 8 6 1 0 -46 0 1 0 22.5 0.866026 20 0 0 1 0.866 8 6 1 0 -47 0 1 0 23 0 20 0 0 1 0.866 8 6 1 0 -48 0 1 0 23.5 0.866026 20 0 0 1 0.866 8 6 1 0 -49 0 1 0 24 0 20 0 0 1 0.866 8 6 1 0 -50 0 1 0 24.5 0.866026 20 0 0 1 0.866 8 6 1 0 -51 0 1 0 25 0 20 0 0 1 0.866 8 6 1 0 -52 0 1 0 25.5 0.866026 20 0 0 1 0.866 8 6 1 0 -53 0 1 0 26 0 20 0 0 1 0.866 8 6 1 0 -54 0 1 0 26.5 0.866026 20 0 0 1 0.866 8 6 1 0 -55 0 1 0 27 0 20 0 0 1 0.866 8 6 1 0 -56 0 1 0 27.5 0.866026 20 0 0 1 0.866 8 6 1 0 -57 0 1 0 28 0 20 0 0 1 0.866 8 6 1 0 -58 0 1 0 28.5 0.866026 20 0 0 1 0.866 8 6 1 0 -59 0 1 0 29 0 20 0 0 1 0.866 8 6 1 0 -60 0 1 0 29.5 0.866026 20 0 0 1 0.866 8 6 1 0 -61 0 1 0 30 0 20 0 0 1 0.866 8 6 1 0 -62 0 1 0 30.5 0.866026 20 0 0 1 0.866 8 6 1 0 -63 0 1 0 31 0 20 0 0 1 0.866 8 6 1 0 -64 0 1 0 31.5 0.866026 20 0 0 1 0.866 8 6 1 0 -65 0 1 0 32 0 20 0 0 1 0.866 8 6 1 0 -66 0 1 0 32.5 0.866026 20 0 0 1 0.866 8 6 1 0 -67 0 1 0 33 0 20 0 0 1 0.866 8 6 1 0 -68 0 1 0 33.5 0.866026 20 0 0 1 0.866 8 6 1 0 -69 0 1 0 34 0 20 0 0 1 0.866 8 6 1 0 -70 0 1 0 34.5 0.866026 20 0 0 1 0.866 8 6 1 0 -71 0 1 0 35 0 20 0 0 1 0.866 8 6 1 0 -72 0 1 0 35.5 0.866026 20 0 0 1 0.866 8 6 1 0 -73 0 1 0 36 0 20 0 0 1 0.866 8 6 1 0 -74 0 1 0 36.5 0.866026 20 0 0 1 0.866 8 6 1 0 -75 0 1 0 37 0 20 0 0 1 0.866 8 6 1 0 -76 0 1 0 37.5 0.866026 20 0 0 1 0.866 8 6 1 0 -77 0 1 0 38 0 20 0 0 1 0.866 8 6 1 0 -78 0 1 0 38.5 0.866026 20 0 0 1 0.866 8 6 1 0 -79 0 1 0 39 0 20 0 0 1 0.866 8 6 1 0 -80 0 1 0 39.5 0.866026 20 0 0 1 0.866 8 6 1 0 -81 0 1 0 0 1.73205 20 0 0 1 0.866 8 6 1 0 -82 0 1 0 0.5 2.59808 20 0 0 1 0.866 8 6 1 0 -83 0 1 0 1 1.73205 20 0 0 1 0.866 8 6 1 0 -84 0 1 0 1.5 2.59808 20 0 0 1 0.866 8 6 1 0 -85 0 1 0 2 1.73205 20 0 0 1 0.866 8 6 1 0 -86 0 1 0 2.5 2.59808 20 0 0 1 0.866 8 6 1 0 -87 0 1 0 3 1.73205 20 0 0 1 0.866 8 6 1 0 -88 0 1 0 3.5 2.59808 20 0 0 1 0.866 8 6 1 0 -89 0 1 0 4 1.73205 20 0 0 1 0.866 8 6 1 0 -90 0 1 0 4.5 2.59808 20 0 0 1 0.866 8 6 1 0 -91 0 1 0 5 1.73205 20 0 0 1 0.866 8 6 1 0 -92 0 1 0 5.5 2.59808 20 0 0 1 0.866 8 6 1 0 -93 0 1 0 6 1.73205 20 0 0 1 0.866 8 6 1 0 -94 0 1 0 6.5 2.59808 20 0 0 1 0.866 8 6 1 0 -95 0 1 0 7 1.73205 20 0 0 1 0.866 8 6 1 0 -96 0 1 0 7.5 2.59808 20 0 0 1 0.866 8 6 1 0 -97 0 1 0 8 1.73205 20 0 0 1 0.866 8 6 1 0 -98 0 1 0 8.5 2.59808 20 0 0 1 0.866 8 6 1 0 -99 0 1 0 9 1.73205 20 0 0 1 0.866 8 6 1 0 -100 0 1 0 9.5 2.59808 20 0 0 1 0.866 8 6 1 0 -101 0 1 0 10 1.73205 20 0 0 1 0.866 8 6 1 0 -102 0 1 0 10.5 2.59808 20 0 0 1 0.866 8 6 1 0 -103 0 1 0 11 1.73205 20 0 0 1 0.866 8 6 1 0 -104 0 1 0 11.5 2.59808 20 0 0 1 0.866 8 6 1 0 -105 0 1 0 12 1.73205 20 0 0 1 0.866 8 6 1 0 -106 0 1 0 12.5 2.59808 20 0 0 1 0.866 8 6 1 0 -107 0 1 0 13 1.73205 20 0 0 1 0.866 8 6 1 0 -108 0 1 0 13.5 2.59808 20 0 0 1 0.866 8 6 1 0 -109 0 1 0 14 1.73205 20 0 0 1 0.866 8 6 1 0 -110 0 1 0 14.5 2.59808 20 0 0 1 0.866 8 6 1 0 -111 0 1 0 15 1.73205 20 0 0 1 0.866 8 6 1 0 -112 0 1 0 15.5 2.59808 20 0 0 1 0.866 8 6 1 0 -113 0 1 0 16 1.73205 20 0 0 1 0.866 8 6 1 0 -114 0 1 0 16.5 2.59808 20 0 0 1 0.866 8 6 1 0 -115 0 1 0 17 1.73205 20 0 0 1 0.866 8 6 1 0 -116 0 1 0 17.5 2.59808 20 0 0 1 0.866 8 6 1 0 -117 0 1 0 18 1.73205 20 0 0 1 0.866 8 6 1 0 -118 0 1 0 18.5 2.59808 20 0 0 1 0.866 8 6 1 0 -119 0 1 0 19 1.73205 20 0 0 1 0.866 8 6 1 0 -120 0 1 0 19.5 2.59808 20 0 0 1 0.866 8 6 1 0 -121 0 1 0 20 1.73205 20 0 0 1 0.866 8 6 1 0 -122 0 1 0 20.5 2.59808 20 0 0 1 0.866 8 6 1 0 -123 0 1 0 21 1.73205 20 0 0 1 0.866 8 6 1 0 -124 0 1 0 21.5 2.59808 20 0 0 1 0.866 8 6 1 0 -125 0 1 0 22 1.73205 20 0 0 1 0.866 8 6 1 0 -126 0 1 0 22.5 2.59808 20 0 0 1 0.866 8 6 1 0 -127 0 1 0 23 1.73205 20 0 0 1 0.866 8 6 1 0 -128 0 1 0 23.5 2.59808 20 0 0 1 0.866 8 6 1 0 -129 0 1 0 24 1.73205 20 0 0 1 0.866 8 6 1 0 -130 0 1 0 24.5 2.59808 20 0 0 1 0.866 8 6 1 0 -131 0 1 0 25 1.73205 20 0 0 1 0.866 8 6 1 0 -132 0 1 0 25.5 2.59808 20 0 0 1 0.866 8 6 1 0 -133 0 1 0 26 1.73205 20 0 0 1 0.866 8 6 1 0 -134 0 1 0 26.5 2.59808 20 0 0 1 0.866 8 6 1 0 -135 0 1 0 27 1.73205 20 0 0 1 0.866 8 6 1 0 -136 0 1 0 27.5 2.59808 20 0 0 1 0.866 8 6 1 0 -137 0 1 0 28 1.73205 20 0 0 1 0.866 8 6 1 0 -138 0 1 0 28.5 2.59808 20 0 0 1 0.866 8 6 1 0 -139 0 1 0 29 1.73205 20 0 0 1 0.866 8 6 1 0 -140 0 1 0 29.5 2.59808 20 0 0 1 0.866 8 6 1 0 -141 0 1 0 30 1.73205 20 0 0 1 0.866 8 6 1 0 -142 0 1 0 30.5 2.59808 20 0 0 1 0.866 8 6 1 0 -143 0 1 0 31 1.73205 20 0 0 1 0.866 8 6 1 0 -144 0 1 0 31.5 2.59808 20 0 0 1 0.866 8 6 1 0 -145 0 1 0 32 1.73205 20 0 0 1 0.866 8 6 1 0 -146 0 1 0 32.5 2.59808 20 0 0 1 0.866 8 6 1 0 -147 0 1 0 33 1.73205 20 0 0 1 0.866 8 6 1 0 -148 0 1 0 33.5 2.59808 20 0 0 1 0.866 8 6 1 0 -149 0 1 0 34 1.73205 20 0 0 1 0.866 8 6 1 0 -150 0 1 0 34.5 2.59808 20 0 0 1 0.866 8 6 1 0 -151 0 1 0 35 1.73205 20 0 0 1 0.866 8 6 1 0 -152 0 1 0 35.5 2.59808 20 0 0 1 0.866 8 6 1 0 -153 0 1 0 36 1.73205 20 0 0 1 0.866 8 6 1 0 -154 0 1 0 36.5 2.59808 20 0 0 1 0.866 8 6 1 0 -155 0 1 0 37 1.73205 20 0 0 1 0.866 8 6 1 0 -156 0 1 0 37.5 2.59808 20 0 0 1 0.866 8 6 1 0 -157 0 1 0 38 1.73205 20 0 0 1 0.866 8 6 1 0 -158 0 1 0 38.5 2.59808 20 0 0 1 0.866 8 6 1 0 -159 0 1 0 39 1.73205 20 0 0 1 0.866 8 6 1 0 -160 0 1 0 39.5 2.59808 20 0 0 1 0.866 8 6 1 0 -161 0 1 0 0 3.4641 20 0 0 1 0.866 8 6 1 0 -162 0 1 0 0.5 4.33013 20 0 0 1 0.866 8 6 1 0 -163 0 1 0 1 3.4641 20 0 0 1 0.866 8 6 1 0 -164 0 1 0 1.5 4.33013 20 0 0 1 0.866 8 6 1 0 -165 0 1 0 2 3.4641 20 0 0 1 0.866 8 6 1 0 -166 0 1 0 2.5 4.33013 20 0 0 1 0.866 8 6 1 0 -167 0 1 0 3 3.4641 20 0 0 1 0.866 8 6 1 0 -168 0 1 0 3.5 4.33013 20 0 0 1 0.866 8 6 1 0 -169 0 1 0 4 3.4641 20 0 0 1 0.866 8 6 1 0 -170 0 1 0 4.5 4.33013 20 0 0 1 0.866 8 6 1 0 -171 0 1 0 5 3.4641 20 0 0 1 0.866 8 6 1 0 -172 0 1 0 5.5 4.33013 20 0 0 1 0.866 8 6 1 0 -173 0 1 0 6 3.4641 20 0 0 1 0.866 8 6 1 0 -174 0 1 0 6.5 4.33013 20 0 0 1 0.866 8 6 1 0 -175 0 1 0 7 3.4641 20 0 0 1 0.866 8 6 1 0 -176 0 1 0 7.5 4.33013 20 0 0 1 0.866 8 6 1 0 -177 0 1 0 8 3.4641 20 0 0 1 0.866 8 6 1 0 -178 0 1 0 8.5 4.33013 20 0 0 1 0.866 8 6 1 0 -179 0 1 0 9 3.4641 20 0 0 1 0.866 8 6 1 0 -180 0 1 0 9.5 4.33013 20 0 0 1 0.866 8 6 1 0 -181 0 1 0 10 3.4641 20 0 0 1 0.866 8 6 1 0 -182 0 1 0 10.5 4.33013 20 0 0 1 0.866 8 6 1 0 -183 0 1 0 11 3.4641 20 0 0 1 0.866 8 6 1 0 -184 0 1 0 11.5 4.33013 20 0 0 1 0.866 8 6 1 0 -185 0 1 0 12 3.4641 20 0 0 1 0.866 8 6 1 0 -186 0 1 0 12.5 4.33013 20 0 0 1 0.866 8 6 1 0 -187 0 1 0 13 3.4641 20 0 0 1 0.866 8 6 1 0 -188 0 1 0 13.5 4.33013 20 0 0 1 0.866 8 6 1 0 -189 0 1 0 14 3.4641 20 0 0 1 0.866 8 6 1 0 -190 0 1 0 14.5 4.33013 20 0 0 1 0.866 8 6 1 0 -191 0 1 0 15 3.4641 20 0 0 1 0.866 8 6 1 0 -192 0 1 0 15.5 4.33013 20 0 0 1 0.866 8 6 1 0 -193 0 1 0 16 3.4641 20 0 0 1 0.866 8 6 1 0 -194 0 1 0 16.5 4.33013 20 0 0 1 0.866 8 6 1 0 -195 0 1 0 17 3.4641 20 0 0 1 0.866 8 6 1 0 -196 0 1 0 17.5 4.33013 20 0 0 1 0.866 8 6 1 0 -197 0 1 0 18 3.4641 20 0 0 1 0.866 8 6 1 0 -198 0 1 0 18.5 4.33013 20 0 0 1 0.866 8 6 1 0 -199 0 1 0 19 3.4641 20 0 0 1 0.866 8 6 1 0 -200 0 1 0 19.5 4.33013 20 0 0 1 0.866 8 6 1 0 -201 0 1 0 20 3.4641 20 0 0 1 0.866 8 6 1 0 -202 0 1 0 20.5 4.33013 20 0 0 1 0.866 8 6 1 0 -203 0 1 0 21 3.4641 20 0 0 1 0.866 8 6 1 0 -204 0 1 0 21.5 4.33013 20 0 0 1 0.866 8 6 1 0 -205 0 1 0 22 3.4641 20 0 0 1 0.866 8 6 1 0 -206 0 1 0 22.5 4.33013 20 0 0 1 0.866 8 6 1 0 -207 0 1 0 23 3.4641 20 0 0 1 0.866 8 6 1 0 -208 0 1 0 23.5 4.33013 20 0 0 1 0.866 8 6 1 0 -209 0 1 0 24 3.4641 20 0 0 1 0.866 8 6 1 0 -210 0 1 0 24.5 4.33013 20 0 0 1 0.866 8 6 1 0 -211 0 1 0 25 3.4641 20 0 0 1 0.866 8 6 1 0 -212 0 1 0 25.5 4.33013 20 0 0 1 0.866 8 6 1 0 -213 0 1 0 26 3.4641 20 0 0 1 0.866 8 6 1 0 -214 0 1 0 26.5 4.33013 20 0 0 1 0.866 8 6 1 0 -215 0 1 0 27 3.4641 20 0 0 1 0.866 8 6 1 0 -216 0 1 0 27.5 4.33013 20 0 0 1 0.866 8 6 1 0 -217 0 1 0 28 3.4641 20 0 0 1 0.866 8 6 1 0 -218 0 1 0 28.5 4.33013 20 0 0 1 0.866 8 6 1 0 -219 0 1 0 29 3.4641 20 0 0 1 0.866 8 6 1 0 -220 0 1 0 29.5 4.33013 20 0 0 1 0.866 8 6 1 0 -221 0 1 0 30 3.4641 20 0 0 1 0.866 8 6 1 0 -222 0 1 0 30.5 4.33013 20 0 0 1 0.866 8 6 1 0 -223 0 1 0 31 3.4641 20 0 0 1 0.866 8 6 1 0 -224 0 1 0 31.5 4.33013 20 0 0 1 0.866 8 6 1 0 -225 0 1 0 32 3.4641 20 0 0 1 0.866 8 6 1 0 -226 0 1 0 32.5 4.33013 20 0 0 1 0.866 8 6 1 0 -227 0 1 0 33 3.4641 20 0 0 1 0.866 8 6 1 0 -228 0 1 0 33.5 4.33013 20 0 0 1 0.866 8 6 1 0 -229 0 1 0 34 3.4641 20 0 0 1 0.866 8 6 1 0 -230 0 1 0 34.5 4.33013 20 0 0 1 0.866 8 6 1 0 -231 0 1 0 35 3.4641 20 0 0 1 0.866 8 6 1 0 -232 0 1 0 35.5 4.33013 20 0 0 1 0.866 8 6 1 0 -233 0 1 0 36 3.4641 20 0 0 1 0.866 8 6 1 0 -234 0 1 0 36.5 4.33013 20 0 0 1 0.866 8 6 1 0 -235 0 1 0 37 3.4641 20 0 0 1 0.866 8 6 1 0 -236 0 1 0 37.5 4.33013 20 0 0 1 0.866 8 6 1 0 -237 0 1 0 38 3.4641 20 0 0 1 0.866 8 6 1 0 -238 0 1 0 38.5 4.33013 20 0 0 1 0.866 8 6 1 0 -239 0 1 0 39 3.4641 20 0 0 1 0.866 8 6 1 0 -240 0 1 0 39.5 4.33013 20 0 0 1 0.866 8 6 1 0 -241 0 1 0 0 5.19615 20 0 0 1 0.866 8 6 1 0 -242 0 1 0 0.5 6.06218 20 0 0 1 0.866 8 6 1 0 -243 0 1 0 1 5.19615 20 0 0 1 0.866 8 6 1 0 -244 0 1 0 1.5 6.06218 20 0 0 1 0.866 8 6 1 0 -245 0 1 0 2 5.19615 20 0 0 1 0.866 8 6 1 0 -246 0 1 0 2.5 6.06218 20 0 0 1 0.866 8 6 1 0 -247 0 1 0 3 5.19615 20 0 0 1 0.866 8 6 1 0 -248 0 1 0 3.5 6.06218 20 0 0 1 0.866 8 6 1 0 -249 0 1 0 4 5.19615 20 0 0 1 0.866 8 6 1 0 -250 0 1 0 4.5 6.06218 20 0 0 1 0.866 8 6 1 0 -251 0 1 0 5 5.19615 20 0 0 1 0.866 8 6 1 0 -252 0 1 0 5.5 6.06218 20 0 0 1 0.866 8 6 1 0 -253 0 1 0 6 5.19615 20 0 0 1 0.866 8 6 1 0 -254 0 1 0 6.5 6.06218 20 0 0 1 0.866 8 6 1 0 -255 0 1 0 7 5.19615 20 0 0 1 0.866 8 6 1 0 -256 0 1 0 7.5 6.06218 20 0 0 1 0.866 8 6 1 0 -257 0 1 0 8 5.19615 20 0 0 1 0.866 8 6 1 0 -258 0 1 0 8.5 6.06218 20 0 0 1 0.866 8 6 1 0 -259 0 1 0 9 5.19615 20 0 0 1 0.866 8 6 1 0 -260 0 1 0 9.5 6.06218 20 0 0 1 0.866 8 6 1 0 -261 0 1 0 10 5.19615 20 0 0 1 0.866 8 6 1 0 -262 0 1 0 10.5 6.06218 20 0 0 1 0.866 8 6 1 0 -263 0 1 0 11 5.19615 20 0 0 1 0.866 8 6 1 0 -264 0 1 0 11.5 6.06218 20 0 0 1 0.866 8 6 1 0 -265 0 1 0 12 5.19615 20 0 0 1 0.866 8 6 1 0 -266 0 1 0 12.5 6.06218 20 0 0 1 0.866 8 6 1 0 -267 0 1 0 13 5.19615 20 0 0 1 0.866 8 6 1 0 -268 0 1 0 13.5 6.06218 20 0 0 1 0.866 8 6 1 0 -269 0 1 0 14 5.19615 20 0 0 1 0.866 8 6 1 0 -270 0 1 0 14.5 6.06218 20 0 0 1 0.866 8 6 1 0 -271 0 1 0 15 5.19615 20 0 0 1 0.866 8 6 1 0 -272 0 1 0 15.5 6.06218 20 0 0 1 0.866 8 6 1 0 -273 0 1 0 16 5.19615 20 0 0 1 0.866 8 6 1 0 -274 0 1 0 16.5 6.06218 20 0 0 1 0.866 8 6 1 0 -275 0 1 0 17 5.19615 20 0 0 1 0.866 8 6 1 0 -276 0 1 0 17.5 6.06218 20 0 0 1 0.866 8 6 1 0 -277 0 1 0 18 5.19615 20 0 0 1 0.866 8 6 1 0 -278 0 1 0 18.5 6.06218 20 0 0 1 0.866 8 6 1 0 -279 0 1 0 19 5.19615 20 0 0 1 0.866 8 6 1 0 -280 0 1 0 19.5 6.06218 20 0 0 1 0.866 8 6 1 0 -281 0 1 0 20 5.19615 20 0 0 1 0.866 8 6 1 0 -282 0 1 0 20.5 6.06218 20 0 0 1 0.866 8 6 1 0 -283 0 1 0 21 5.19615 20 0 0 1 0.866 8 6 1 0 -284 0 1 0 21.5 6.06218 20 0 0 1 0.866 8 6 1 0 -285 0 1 0 22 5.19615 20 0 0 1 0.866 8 6 1 0 -286 0 1 0 22.5 6.06218 20 0 0 1 0.866 8 6 1 0 -287 0 1 0 23 5.19615 20 0 0 1 0.866 8 6 1 0 -288 0 1 0 23.5 6.06218 20 0 0 1 0.866 8 6 1 0 -289 0 1 0 24 5.19615 20 0 0 1 0.866 8 6 1 0 -290 0 1 0 24.5 6.06218 20 0 0 1 0.866 8 6 1 0 -291 0 1 0 25 5.19615 20 0 0 1 0.866 8 6 1 0 -292 0 1 0 25.5 6.06218 20 0 0 1 0.866 8 6 1 0 -293 0 1 0 26 5.19615 20 0 0 1 0.866 8 6 1 0 -294 0 1 0 26.5 6.06218 20 0 0 1 0.866 8 6 1 0 -295 0 1 0 27 5.19615 20 0 0 1 0.866 8 6 1 0 -296 0 1 0 27.5 6.06218 20 0 0 1 0.866 8 6 1 0 -297 0 1 0 28 5.19615 20 0 0 1 0.866 8 6 1 0 -298 0 1 0 28.5 6.06218 20 0 0 1 0.866 8 6 1 0 -299 0 1 0 29 5.19615 20 0 0 1 0.866 8 6 1 0 -300 0 1 0 29.5 6.06218 20 0 0 1 0.866 8 6 1 0 -301 0 1 0 30 5.19615 20 0 0 1 0.866 8 6 1 0 -302 0 1 0 30.5 6.06218 20 0 0 1 0.866 8 6 1 0 -303 0 1 0 31 5.19615 20 0 0 1 0.866 8 6 1 0 -304 0 1 0 31.5 6.06218 20 0 0 1 0.866 8 6 1 0 -305 0 1 0 32 5.19615 20 0 0 1 0.866 8 6 1 0 -306 0 1 0 32.5 6.06218 20 0 0 1 0.866 8 6 1 0 -307 0 1 0 33 5.19615 20 0 0 1 0.866 8 6 1 0 -308 0 1 0 33.5 6.06218 20 0 0 1 0.866 8 6 1 0 -309 0 1 0 34 5.19615 20 0 0 1 0.866 8 6 1 0 -310 0 1 0 34.5 6.06218 20 0 0 1 0.866 8 6 1 0 -311 0 1 0 35 5.19615 20 0 0 1 0.866 8 6 1 0 -312 0 1 0 35.5 6.06218 20 0 0 1 0.866 8 6 1 0 -313 0 1 0 36 5.19615 20 0 0 1 0.866 8 6 1 0 -314 0 1 0 36.5 6.06218 20 0 0 1 0.866 8 6 1 0 -315 0 1 0 37 5.19615 20 0 0 1 0.866 8 6 1 0 -316 0 1 0 37.5 6.06218 20 0 0 1 0.866 8 6 1 0 -317 0 1 0 38 5.19615 20 0 0 1 0.866 8 6 1 0 -318 0 1 0 38.5 6.06218 20 0 0 1 0.866 8 6 1 0 -319 0 1 0 39 5.19615 20 0 0 1 0.866 8 6 1 0 -320 0 1 0 39.5 6.06218 20 0 0 1 0.866 8 6 1 0 -321 0 1 0 0 6.9282 20 0 0 1 0.866 8 6 1 0 -322 0 1 0 0.5 7.79423 20 0 0 1 0.866 8 6 1 0 -323 0 1 0 1 6.9282 20 0 0 1 0.866 8 6 1 0 -324 0 1 0 1.5 7.79423 20 0 0 1 0.866 8 6 1 0 -325 0 1 0 2 6.9282 20 0 0 1 0.866 8 6 1 0 -326 0 1 0 2.5 7.79423 20 0 0 1 0.866 8 6 1 0 -327 0 1 0 3 6.9282 20 0 0 1 0.866 8 6 1 0 -328 0 1 0 3.5 7.79423 20 0 0 1 0.866 8 6 1 0 -329 0 1 0 4 6.9282 20 0 0 1 0.866 8 6 1 0 -330 0 1 0 4.5 7.79423 20 0 0 1 0.866 8 6 1 0 -331 0 1 0 5 6.9282 20 0 0 1 0.866 8 6 1 0 -332 0 1 0 5.5 7.79423 20 0 0 1 0.866 8 6 1 0 -333 0 1 0 6 6.9282 20 0 0 1 0.866 8 6 1 0 -334 0 1 0 6.5 7.79423 20 0 0 1 0.866 8 6 1 0 -335 0 1 0 7 6.9282 20 0 0 1 0.866 8 6 1 0 -336 0 1 0 7.5 7.79423 20 0 0 1 0.866 8 6 1 0 -337 0 1 0 8 6.9282 20 0 0 1 0.866 8 6 1 0 -338 0 1 0 8.5 7.79423 20 0 0 1 0.866 8 6 1 0 -339 0 1 0 9 6.9282 20 0 0 1 0.866 8 6 1 0 -340 0 1 0 9.5 7.79423 20 0 0 1 0.866 8 6 1 0 -341 0 1 0 10 6.9282 20 0 0 1 0.866 8 6 1 0 -342 0 1 0 10.5 7.79423 20 0 0 1 0.866 8 6 1 0 -343 0 1 0 11 6.9282 20 0 0 1 0.866 8 6 1 0 -344 0 1 0 11.5 7.79423 20 0 0 1 0.866 8 6 1 0 -345 0 1 0 12 6.9282 20 0 0 1 0.866 8 6 1 0 -346 0 1 0 12.5 7.79423 20 0 0 1 0.866 8 6 1 0 -347 0 1 0 13 6.9282 20 0 0 1 0.866 8 6 1 0 -348 0 1 0 13.5 7.79423 20 0 0 1 0.866 8 6 1 0 -349 0 1 0 14 6.9282 20 0 0 1 0.866 8 6 1 0 -350 0 1 0 14.5 7.79423 20 0 0 1 0.866 8 6 1 0 -351 0 1 0 15 6.9282 20 0 0 1 0.866 8 6 1 0 -352 0 1 0 15.5 7.79423 20 0 0 1 0.866 8 6 1 0 -353 0 1 0 16 6.9282 20 0 0 1 0.866 8 6 1 0 -354 0 1 0 16.5 7.79423 20 0 0 1 0.866 8 6 1 0 -355 0 1 0 17 6.9282 20 0 0 1 0.866 8 6 1 0 -356 0 1 0 17.5 7.79423 20 0 0 1 0.866 8 6 1 0 -357 0 1 0 18 6.9282 20 0 0 1 0.866 8 6 1 0 -358 0 1 0 18.5 7.79423 20 0 0 1 0.866 8 6 1 0 -359 0 1 0 19 6.9282 20 0 0 1 0.866 8 6 1 0 -360 0 1 0 19.5 7.79423 20 0 0 1 0.866 8 6 1 0 -361 0 1 0 20 6.9282 20 0 0 1 0.866 8 6 1 0 -362 0 1 0 20.5 7.79423 20 0 0 1 0.866 8 6 1 0 -363 0 1 0 21 6.9282 20 0 0 1 0.866 8 6 1 0 -364 0 1 0 21.5 7.79423 20 0 0 1 0.866 8 6 1 0 -365 0 1 0 22 6.9282 20 0 0 1 0.866 8 6 1 0 -366 0 1 0 22.5 7.79423 20 0 0 1 0.866 8 6 1 0 -367 0 1 0 23 6.9282 20 0 0 1 0.866 8 6 1 0 -368 0 1 0 23.5 7.79423 20 0 0 1 0.866 8 6 1 0 -369 0 1 0 24 6.9282 20 0 0 1 0.866 8 6 1 0 -370 0 1 0 24.5 7.79423 20 0 0 1 0.866 8 6 1 0 -371 0 1 0 25 6.9282 20 0 0 1 0.866 8 6 1 0 -372 0 1 0 25.5 7.79423 20 0 0 1 0.866 8 6 1 0 -373 0 1 0 26 6.9282 20 0 0 1 0.866 8 6 1 0 -374 0 1 0 26.5 7.79423 20 0 0 1 0.866 8 6 1 0 -375 0 1 0 27 6.9282 20 0 0 1 0.866 8 6 1 0 -376 0 1 0 27.5 7.79423 20 0 0 1 0.866 8 6 1 0 -377 0 1 0 28 6.9282 20 0 0 1 0.866 8 6 1 0 -378 0 1 0 28.5 7.79423 20 0 0 1 0.866 8 6 1 0 -379 0 1 0 29 6.9282 20 0 0 1 0.866 8 6 1 0 -380 0 1 0 29.5 7.79423 20 0 0 1 0.866 8 6 1 0 -381 0 1 0 30 6.9282 20 0 0 1 0.866 8 6 1 0 -382 0 1 0 30.5 7.79423 20 0 0 1 0.866 8 6 1 0 -383 0 1 0 31 6.9282 20 0 0 1 0.866 8 6 1 0 -384 0 1 0 31.5 7.79423 20 0 0 1 0.866 8 6 1 0 -385 0 1 0 32 6.9282 20 0 0 1 0.866 8 6 1 0 -386 0 1 0 32.5 7.79423 20 0 0 1 0.866 8 6 1 0 -387 0 1 0 33 6.9282 20 0 0 1 0.866 8 6 1 0 -388 0 1 0 33.5 7.79423 20 0 0 1 0.866 8 6 1 0 -389 0 1 0 34 6.9282 20 0 0 1 0.866 8 6 1 0 -390 0 1 0 34.5 7.79423 20 0 0 1 0.866 8 6 1 0 -391 0 1 0 35 6.9282 20 0 0 1 0.866 8 6 1 0 -392 0 1 0 35.5 7.79423 20 0 0 1 0.866 8 6 1 0 -393 0 1 0 36 6.9282 20 0 0 1 0.866 8 6 1 0 -394 0 1 0 36.5 7.79423 20 0 0 1 0.866 8 6 1 0 -395 0 1 0 37 6.9282 20 0 0 1 0.866 8 6 1 0 -396 0 1 0 37.5 7.79423 20 0 0 1 0.866 8 6 1 0 -397 0 1 0 38 6.9282 20 0 0 1 0.866 8 6 1 0 -398 0 1 0 38.5 7.79423 20 0 0 1 0.866 8 6 1 0 -399 0 1 0 39 6.9282 20 0 0 1 0.866 8 6 1 0 -400 0 1 0 39.5 7.79423 20 0 0 1 0.866 8 6 1 0 -401 0 1 0 0 8.66026 20 0 0 1 0.866 8 6 1 0 -402 0 1 0 0.5 9.52628 20 0 0 1 0.866 8 6 1 0 -403 0 1 0 1 8.66026 20 0 0 1 0.866 8 6 1 0 -404 0 1 0 1.5 9.52628 20 0 0 1 0.866 8 6 1 0 -405 0 1 0 2 8.66026 20 0 0 1 0.866 8 6 1 0 -406 0 1 0 2.5 9.52628 20 0 0 1 0.866 8 6 1 0 -407 0 1 0 3 8.66026 20 0 0 1 0.866 8 6 1 0 -408 0 1 0 3.5 9.52628 20 0 0 1 0.866 8 6 1 0 -409 0 1 0 4 8.66026 20 0 0 1 0.866 8 6 1 0 -410 0 1 0 4.5 9.52628 20 0 0 1 0.866 8 6 1 0 -411 0 1 0 5 8.66026 20 0 0 1 0.866 8 6 1 0 -412 0 1 0 5.5 9.52628 20 0 0 1 0.866 8 6 1 0 -413 0 1 0 6 8.66026 20 0 0 1 0.866 8 6 1 0 -414 0 1 0 6.5 9.52628 20 0 0 1 0.866 8 6 1 0 -415 0 1 0 7 8.66026 20 0 0 1 0.866 8 6 1 0 -416 0 1 0 7.5 9.52628 20 0 0 1 0.866 8 6 1 0 -417 0 1 0 8 8.66026 20 0 0 1 0.866 8 6 1 0 -418 0 1 0 8.5 9.52628 20 0 0 1 0.866 8 6 1 0 -419 0 1 0 9 8.66026 20 0 0 1 0.866 8 6 1 0 -420 0 1 0 9.5 9.52628 20 0 0 1 0.866 8 6 1 0 -421 0 1 0 10 8.66026 20 0 0 1 0.866 8 6 1 0 -422 0 1 0 10.5 9.52628 20 0 0 1 0.866 8 6 1 0 -423 0 1 0 11 8.66026 20 0 0 1 0.866 8 6 1 0 -424 0 1 0 11.5 9.52628 20 0 0 1 0.866 8 6 1 0 -425 0 1 0 12 8.66026 20 0 0 1 0.866 8 6 1 0 -426 0 1 0 12.5 9.52628 20 0 0 1 0.866 8 6 1 0 -427 0 1 0 13 8.66026 20 0 0 1 0.866 8 6 1 0 -428 0 1 0 13.5 9.52628 20 0 0 1 0.866 8 6 1 0 -429 0 1 0 14 8.66026 20 0 0 1 0.866 8 6 1 0 -430 0 1 0 14.5 9.52628 20 0 0 1 0.866 8 6 1 0 -431 0 1 0 15 8.66026 20 0 0 1 0.866 8 6 1 0 -432 0 1 0 15.5 9.52628 20 0 0 1 0.866 8 6 1 0 -433 0 1 0 16 8.66026 20 0 0 1 0.866 8 6 1 0 -434 0 1 0 16.5 9.52628 20 0 0 1 0.866 8 6 1 0 -435 0 1 0 17 8.66026 20 0 0 1 0.866 8 6 1 0 -436 0 1 0 17.5 9.52628 20 0 0 1 0.866 8 6 1 0 -437 0 1 0 18 8.66026 20 0 0 1 0.866 8 6 1 0 -438 0 1 0 18.5 9.52628 20 0 0 1 0.866 8 6 1 0 -439 0 1 0 19 8.66026 20 0 0 1 0.866 8 6 1 0 -440 0 1 0 19.5 9.52628 20 0 0 1 0.866 8 6 1 0 -441 0 1 0 20 8.66026 20 0 0 1 0.866 8 6 1 0 -442 0 1 0 20.5 9.52628 20 0 0 1 0.866 8 6 1 0 -443 0 1 0 21 8.66026 20 0 0 1 0.866 8 6 1 0 -444 0 1 0 21.5 9.52628 20 0 0 1 0.866 8 6 1 0 -445 0 1 0 22 8.66026 20 0 0 1 0.866 8 6 1 0 -446 0 1 0 22.5 9.52628 20 0 0 1 0.866 8 6 1 0 -447 0 1 0 23 8.66026 20 0 0 1 0.866 8 6 1 0 -448 0 1 0 23.5 9.52628 20 0 0 1 0.866 8 6 1 0 -449 0 1 0 24 8.66026 20 0 0 1 0.866 8 6 1 0 -450 0 1 0 24.5 9.52628 20 0 0 1 0.866 8 6 1 0 -451 0 1 0 25 8.66026 20 0 0 1 0.866 8 6 1 0 -452 0 1 0 25.5 9.52628 20 0 0 1 0.866 8 6 1 0 -453 0 1 0 26 8.66026 20 0 0 1 0.866 8 6 1 0 -454 0 1 0 26.5 9.52628 20 0 0 1 0.866 8 6 1 0 -455 0 1 0 27 8.66026 20 0 0 1 0.866 8 6 1 0 -456 0 1 0 27.5 9.52628 20 0 0 1 0.866 8 6 1 0 -457 0 1 0 28 8.66026 20 0 0 1 0.866 8 6 1 0 -458 0 1 0 28.5 9.52628 20 0 0 1 0.866 8 6 1 0 -459 0 1 0 29 8.66026 20 0 0 1 0.866 8 6 1 0 -460 0 1 0 29.5 9.52628 20 0 0 1 0.866 8 6 1 0 -461 0 1 0 30 8.66026 20 0 0 1 0.866 8 6 1 0 -462 0 1 0 30.5 9.52628 20 0 0 1 0.866 8 6 1 0 -463 0 1 0 31 8.66026 20 0 0 1 0.866 8 6 1 0 -464 0 1 0 31.5 9.52628 20 0 0 1 0.866 8 6 1 0 -465 0 1 0 32 8.66026 20 0 0 1 0.866 8 6 1 0 -466 0 1 0 32.5 9.52628 20 0 0 1 0.866 8 6 1 0 -467 0 1 0 33 8.66026 20 0 0 1 0.866 8 6 1 0 -468 0 1 0 33.5 9.52628 20 0 0 1 0.866 8 6 1 0 -469 0 1 0 34 8.66026 20 0 0 1 0.866 8 6 1 0 -470 0 1 0 34.5 9.52628 20 0 0 1 0.866 8 6 1 0 -471 0 1 0 35 8.66026 20 0 0 1 0.866 8 6 1 0 -472 0 1 0 35.5 9.52628 20 0 0 1 0.866 8 6 1 0 -473 0 1 0 36 8.66026 20 0 0 1 0.866 8 6 1 0 -474 0 1 0 36.5 9.52628 20 0 0 1 0.866 8 6 1 0 -475 0 1 0 37 8.66026 20 0 0 1 0.866 8 6 1 0 -476 0 1 0 37.5 9.52628 20 0 0 1 0.866 8 6 1 0 -477 0 1 0 38 8.66026 20 0 0 1 0.866 8 6 1 0 -478 0 1 0 38.5 9.52628 20 0 0 1 0.866 8 6 1 0 -479 0 1 0 39 8.66026 20 0 0 1 0.866 8 6 1 0 -480 0 1 0 39.5 9.52628 20 0 0 1 0.866 8 6 1 0 -481 0 1 0 0 10.3923 20 0 0 1 0.866 8 6 1 0 -482 0 1 0 0.5 11.2583 20 0 0 1 0.866 8 6 1 0 -483 0 1 0 1 10.3923 20 0 0 1 0.866 8 6 1 0 -484 0 1 0 1.5 11.2583 20 0 0 1 0.866 8 6 1 0 -485 0 1 0 2 10.3923 20 0 0 1 0.866 8 6 1 0 -486 0 1 0 2.5 11.2583 20 0 0 1 0.866 8 6 1 0 -487 0 1 0 3 10.3923 20 0 0 1 0.866 8 6 1 0 -488 0 1 0 3.5 11.2583 20 0 0 1 0.866 8 6 1 0 -489 0 1 0 4 10.3923 20 0 0 1 0.866 8 6 1 0 -490 0 1 0 4.5 11.2583 20 0 0 1 0.866 8 6 1 0 -491 0 1 0 5 10.3923 20 0 0 1 0.866 8 6 1 0 -492 0 1 0 5.5 11.2583 20 0 0 1 0.866 8 6 1 0 -493 0 1 0 6 10.3923 20 0 0 1 0.866 8 6 1 0 -494 0 1 0 6.5 11.2583 20 0 0 1 0.866 8 6 1 0 -495 0 1 0 7 10.3923 20 0 0 1 0.866 8 6 1 0 -496 0 1 0 7.5 11.2583 20 0 0 1 0.866 8 6 1 0 -497 0 1 0 8 10.3923 20 0 0 1 0.866 8 6 1 0 -498 0 1 0 8.5 11.2583 20 0 0 1 0.866 8 6 1 0 -499 0 1 0 9 10.3923 20 0 0 1 0.866 8 6 1 0 -500 0 1 0 9.5 11.2583 20 0 0 1 0.866 8 6 1 0 -501 0 1 0 10 10.3923 20 0 0 1 0.866 8 6 1 0 -502 0 1 0 10.5 11.2583 20 0 0 1 0.866 8 6 1 0 -503 0 1 0 11 10.3923 20 0 0 1 0.866 8 6 1 0 -504 0 1 0 11.5 11.2583 20 0 0 1 0.866 8 6 1 0 -505 0 1 0 12 10.3923 20 0 0 1 0.866 8 6 1 0 -506 0 1 0 12.5 11.2583 20 0 0 1 0.866 8 6 1 0 -507 0 1 0 13 10.3923 20 0 0 1 0.866 8 6 1 0 -508 0 1 0 13.5 11.2583 20 0 0 1 0.866 8 6 1 0 -509 0 1 0 14 10.3923 20 0 0 1 0.866 8 6 1 0 -510 0 1 0 14.5 11.2583 20 0 0 1 0.866 8 6 1 0 -511 0 1 0 15 10.3923 20 0 0 1 0.866 8 6 1 0 -512 0 1 0 15.5 11.2583 20 0 0 1 0.866 8 6 1 0 -513 0 1 0 16 10.3923 20 0 0 1 0.866 8 6 1 0 -514 0 1 0 16.5 11.2583 20 0 0 1 0.866 8 6 1 0 -515 0 1 0 17 10.3923 20 0 0 1 0.866 8 6 1 0 -516 0 1 0 17.5 11.2583 20 0 0 1 0.866 8 6 1 0 -517 0 1 0 18 10.3923 20 0 0 1 0.866 8 6 1 0 -518 0 1 0 18.5 11.2583 20 0 0 1 0.866 8 6 1 0 -519 0 1 0 19 10.3923 20 0 0 1 0.866 8 6 1 0 -520 0 1 0 19.5 11.2583 20 0 0 1 0.866 8 6 1 0 -521 0 1 0 20 10.3923 20 0 0 1 0.866 8 6 1 0 -522 0 1 0 20.5 11.2583 20 0 0 1 0.866 8 6 1 0 -523 0 1 0 21 10.3923 20 0 0 1 0.866 8 6 1 0 -524 0 1 0 21.5 11.2583 20 0 0 1 0.866 8 6 1 0 -525 0 1 0 22 10.3923 20 0 0 1 0.866 8 6 1 0 -526 0 1 0 22.5 11.2583 20 0 0 1 0.866 8 6 1 0 -527 0 1 0 23 10.3923 20 0 0 1 0.866 8 6 1 0 -528 0 1 0 23.5 11.2583 20 0 0 1 0.866 8 6 1 0 -529 0 1 0 24 10.3923 20 0 0 1 0.866 8 6 1 0 -530 0 1 0 24.5 11.2583 20 0 0 1 0.866 8 6 1 0 -531 0 1 0 25 10.3923 20 0 0 1 0.866 8 6 1 0 -532 0 1 0 25.5 11.2583 20 0 0 1 0.866 8 6 1 0 -533 0 1 0 26 10.3923 20 0 0 1 0.866 8 6 1 0 -534 0 1 0 26.5 11.2583 20 0 0 1 0.866 8 6 1 0 -535 0 1 0 27 10.3923 20 0 0 1 0.866 8 6 1 0 -536 0 1 0 27.5 11.2583 20 0 0 1 0.866 8 6 1 0 -537 0 1 0 28 10.3923 20 0 0 1 0.866 8 6 1 0 -538 0 1 0 28.5 11.2583 20 0 0 1 0.866 8 6 1 0 -539 0 1 0 29 10.3923 20 0 0 1 0.866 8 6 1 0 -540 0 1 0 29.5 11.2583 20 0 0 1 0.866 8 6 1 0 -541 0 1 0 30 10.3923 20 0 0 1 0.866 8 6 1 0 -542 0 1 0 30.5 11.2583 20 0 0 1 0.866 8 6 1 0 -543 0 1 0 31 10.3923 20 0 0 1 0.866 8 6 1 0 -544 0 1 0 31.5 11.2583 20 0 0 1 0.866 8 6 1 0 -545 0 1 0 32 10.3923 20 0 0 1 0.866 8 6 1 0 -546 0 1 0 32.5 11.2583 20 0 0 1 0.866 8 6 1 0 -547 0 1 0 33 10.3923 20 0 0 1 0.866 8 6 1 0 -548 0 1 0 33.5 11.2583 20 0 0 1 0.866 8 6 1 0 -549 0 1 0 34 10.3923 20 0 0 1 0.866 8 6 1 0 -550 0 1 0 34.5 11.2583 20 0 0 1 0.866 8 6 1 0 -551 0 1 0 35 10.3923 20 0 0 1 0.866 8 6 1 0 -552 0 1 0 35.5 11.2583 20 0 0 1 0.866 8 6 1 0 -553 0 1 0 36 10.3923 20 0 0 1 0.866 8 6 1 0 -554 0 1 0 36.5 11.2583 20 0 0 1 0.866 8 6 1 0 -555 0 1 0 37 10.3923 20 0 0 1 0.866 8 6 1 0 -556 0 1 0 37.5 11.2583 20 0 0 1 0.866 8 6 1 0 -557 0 1 0 38 10.3923 20 0 0 1 0.866 8 6 1 0 -558 0 1 0 38.5 11.2583 20 0 0 1 0.866 8 6 1 0 -559 0 1 0 39 10.3923 20 0 0 1 0.866 8 6 1 0 -560 0 1 0 39.5 11.2583 20 0 0 1 0.866 8 6 1 0 -561 0 1 0 0 12.1244 20 0 0 1 0.866 8 6 1 0 -562 0 1 0 0.5 12.9904 20 0 0 1 0.866 8 6 1 0 -563 0 1 0 1 12.1244 20 0 0 1 0.866 8 6 1 0 -564 0 1 0 1.5 12.9904 20 0 0 1 0.866 8 6 1 0 -565 0 1 0 2 12.1244 20 0 0 1 0.866 8 6 1 0 -566 0 1 0 2.5 12.9904 20 0 0 1 0.866 8 6 1 0 -567 0 1 0 3 12.1244 20 0 0 1 0.866 8 6 1 0 -568 0 1 0 3.5 12.9904 20 0 0 1 0.866 8 6 1 0 -569 0 1 0 4 12.1244 20 0 0 1 0.866 8 6 1 0 -570 0 1 0 4.5 12.9904 20 0 0 1 0.866 8 6 1 0 -571 0 1 0 5 12.1244 20 0 0 1 0.866 8 6 1 0 -572 0 1 0 5.5 12.9904 20 0 0 1 0.866 8 6 1 0 -573 0 1 0 6 12.1244 20 0 0 1 0.866 8 6 1 0 -574 0 1 0 6.5 12.9904 20 0 0 1 0.866 8 6 1 0 -575 0 1 0 7 12.1244 20 0 0 1 0.866 8 6 1 0 -576 0 1 0 7.5 12.9904 20 0 0 1 0.866 8 6 1 0 -577 0 1 0 8 12.1244 20 0 0 1 0.866 8 6 1 0 -578 0 1 0 8.5 12.9904 20 0 0 1 0.866 8 6 1 0 -579 0 1 0 9 12.1244 20 0 0 1 0.866 8 6 1 0 -580 0 1 0 9.5 12.9904 20 0 0 1 0.866 8 6 1 0 -581 0 1 0 10 12.1244 20 0 0 1 0.866 8 6 1 0 -582 0 1 0 10.5 12.9904 20 0 0 1 0.866 8 6 1 0 -583 0 1 0 11 12.1244 20 0 0 1 0.866 8 6 1 0 -584 0 1 0 11.5 12.9904 20 0 0 1 0.866 8 6 1 0 -585 0 1 0 12 12.1244 20 0 0 1 0.866 8 6 1 0 -586 0 1 0 12.5 12.9904 20 0 0 1 0.866 8 6 1 0 -587 0 1 0 13 12.1244 20 0 0 1 0.866 8 6 1 0 -588 0 1 0 13.5 12.9904 20 0 0 1 0.866 8 6 1 0 -589 0 1 0 14 12.1244 20 0 0 1 0.866 8 6 1 0 -590 0 1 0 14.5 12.9904 20 0 0 1 0.866 8 6 1 0 -591 0 1 0 15 12.1244 20 0 0 1 0.866 8 6 1 0 -592 0 1 0 15.5 12.9904 20 0 0 1 0.866 8 6 1 0 -593 0 1 0 16 12.1244 20 0 0 1 0.866 8 6 1 0 -594 0 1 0 16.5 12.9904 20 0 0 1 0.866 8 6 1 0 -595 0 1 0 17 12.1244 20 0 0 1 0.866 8 6 1 0 -596 0 1 0 17.5 12.9904 20 0 0 1 0.866 8 6 1 0 -597 0 1 0 18 12.1244 20 0 0 1 0.866 8 6 1 0 -598 0 1 0 18.5 12.9904 20 0 0 1 0.866 8 6 1 0 -599 0 1 0 19 12.1244 20 0 0 1 0.866 8 6 1 0 -600 0 1 0 19.5 12.9904 20 0 0 1 0.866 8 6 1 0 -601 0 1 0 20 12.1244 20 0 0 1 0.866 8 6 1 0 -602 0 1 0 20.5 12.9904 20 0 0 1 0.866 8 6 1 0 -603 0 1 0 21 12.1244 20 0 0 1 0.866 8 6 1 0 -604 0 1 0 21.5 12.9904 20 0 0 1 0.866 8 6 1 0 -605 0 1 0 22 12.1244 20 0 0 1 0.866 8 6 1 0 -606 0 1 0 22.5 12.9904 20 0 0 1 0.866 8 6 1 0 -607 0 1 0 23 12.1244 20 0 0 1 0.866 8 6 1 0 -608 0 1 0 23.5 12.9904 20 0 0 1 0.866 8 6 1 0 -609 0 1 0 24 12.1244 20 0 0 1 0.866 8 6 1 0 -610 0 1 0 24.5 12.9904 20 0 0 1 0.866 8 6 1 0 -611 0 1 0 25 12.1244 20 0 0 1 0.866 8 6 1 0 -612 0 1 0 25.5 12.9904 20 0 0 1 0.866 8 6 1 0 -613 0 1 0 26 12.1244 20 0 0 1 0.866 8 6 1 0 -614 0 1 0 26.5 12.9904 20 0 0 1 0.866 8 6 1 0 -615 0 1 0 27 12.1244 20 0 0 1 0.866 8 6 1 0 -616 0 1 0 27.5 12.9904 20 0 0 1 0.866 8 6 1 0 -617 0 1 0 28 12.1244 20 0 0 1 0.866 8 6 1 0 -618 0 1 0 28.5 12.9904 20 0 0 1 0.866 8 6 1 0 -619 0 1 0 29 12.1244 20 0 0 1 0.866 8 6 1 0 -620 0 1 0 29.5 12.9904 20 0 0 1 0.866 8 6 1 0 -621 0 1 0 30 12.1244 20 0 0 1 0.866 8 6 1 0 -622 0 1 0 30.5 12.9904 20 0 0 1 0.866 8 6 1 0 -623 0 1 0 31 12.1244 20 0 0 1 0.866 8 6 1 0 -624 0 1 0 31.5 12.9904 20 0 0 1 0.866 8 6 1 0 -625 0 1 0 32 12.1244 20 0 0 1 0.866 8 6 1 0 -626 0 1 0 32.5 12.9904 20 0 0 1 0.866 8 6 1 0 -627 0 1 0 33 12.1244 20 0 0 1 0.866 8 6 1 0 -628 0 1 0 33.5 12.9904 20 0 0 1 0.866 8 6 1 0 -629 0 1 0 34 12.1244 20 0 0 1 0.866 8 6 1 0 -630 0 1 0 34.5 12.9904 20 0 0 1 0.866 8 6 1 0 -631 0 1 0 35 12.1244 20 0 0 1 0.866 8 6 1 0 -632 0 1 0 35.5 12.9904 20 0 0 1 0.866 8 6 1 0 -633 0 1 0 36 12.1244 20 0 0 1 0.866 8 6 1 0 -634 0 1 0 36.5 12.9904 20 0 0 1 0.866 8 6 1 0 -635 0 1 0 37 12.1244 20 0 0 1 0.866 8 6 1 0 -636 0 1 0 37.5 12.9904 20 0 0 1 0.866 8 6 1 0 -637 0 1 0 38 12.1244 20 0 0 1 0.866 8 6 1 0 -638 0 1 0 38.5 12.9904 20 0 0 1 0.866 8 6 1 0 -639 0 1 0 39 12.1244 20 0 0 1 0.866 8 6 1 0 -640 0 1 0 39.5 12.9904 20 0 0 1 0.866 8 6 1 0 -641 0 1 0 0 13.8564 20 0 0 1 0.866 8 6 1 0 -642 0 1 0 0.5 14.7224 20 0 0 1 0.866 8 6 1 0 -643 0 1 0 1 13.8564 20 0 0 1 0.866 8 6 1 0 -644 0 1 0 1.5 14.7224 20 0 0 1 0.866 8 6 1 0 -645 0 1 0 2 13.8564 20 0 0 1 0.866 8 6 1 0 -646 0 1 0 2.5 14.7224 20 0 0 1 0.866 8 6 1 0 -647 0 1 0 3 13.8564 20 0 0 1 0.866 8 6 1 0 -648 0 1 0 3.5 14.7224 20 0 0 1 0.866 8 6 1 0 -649 0 1 0 4 13.8564 20 0 0 1 0.866 8 6 1 0 -650 0 1 0 4.5 14.7224 20 0 0 1 0.866 8 6 1 0 -651 0 1 0 5 13.8564 20 0 0 1 0.866 8 6 1 0 -652 0 1 0 5.5 14.7224 20 0 0 1 0.866 8 6 1 0 -653 0 1 0 6 13.8564 20 0 0 1 0.866 8 6 1 0 -654 0 1 0 6.5 14.7224 20 0 0 1 0.866 8 6 1 0 -655 0 1 0 7 13.8564 20 0 0 1 0.866 8 6 1 0 -656 0 1 0 7.5 14.7224 20 0 0 1 0.866 8 6 1 0 -657 0 1 0 8 13.8564 20 0 0 1 0.866 8 6 1 0 -658 0 1 0 8.5 14.7224 20 0 0 1 0.866 8 6 1 0 -659 0 1 0 9 13.8564 20 0 0 1 0.866 8 6 1 0 -660 0 1 0 9.5 14.7224 20 0 0 1 0.866 8 6 1 0 -661 0 1 0 10 13.8564 20 0 0 1 0.866 8 6 1 0 -662 0 1 0 10.5 14.7224 20 0 0 1 0.866 8 6 1 0 -663 0 1 0 11 13.8564 20 0 0 1 0.866 8 6 1 0 -664 0 1 0 11.5 14.7224 20 0 0 1 0.866 8 6 1 0 -665 0 1 0 12 13.8564 20 0 0 1 0.866 8 6 1 0 -666 0 1 0 12.5 14.7224 20 0 0 1 0.866 8 6 1 0 -667 0 1 0 13 13.8564 20 0 0 1 0.866 8 6 1 0 -668 0 1 0 13.5 14.7224 20 0 0 1 0.866 8 6 1 0 -669 0 1 0 14 13.8564 20 0 0 1 0.866 8 6 1 0 -670 0 1 0 14.5 14.7224 20 0 0 1 0.866 8 6 1 0 -671 0 1 0 15 13.8564 20 0 0 1 0.866 8 6 1 0 -672 0 1 0 15.5 14.7224 20 0 0 1 0.866 8 6 1 0 -673 0 1 0 16 13.8564 20 0 0 1 0.866 8 6 1 0 -674 0 1 0 16.5 14.7224 20 0 0 1 0.866 8 6 1 0 -675 0 1 0 17 13.8564 20 0 0 1 0.866 8 6 1 0 -676 0 1 0 17.5 14.7224 20 0 0 1 0.866 8 6 1 0 -677 0 1 0 18 13.8564 20 0 0 1 0.866 8 6 1 0 -678 0 1 0 18.5 14.7224 20 0 0 1 0.866 8 6 1 0 -679 0 1 0 19 13.8564 20 0 0 1 0.866 8 6 1 0 -680 0 1 0 19.5 14.7224 20 0 0 1 0.866 8 6 1 0 -681 0 1 0 20 13.8564 20 0 0 1 0.866 8 6 1 0 -682 0 1 0 20.5 14.7224 20 0 0 1 0.866 8 6 1 0 -683 0 1 0 21 13.8564 20 0 0 1 0.866 8 6 1 0 -684 0 1 0 21.5 14.7224 20 0 0 1 0.866 8 6 1 0 -685 0 1 0 22 13.8564 20 0 0 1 0.866 8 6 1 0 -686 0 1 0 22.5 14.7224 20 0 0 1 0.866 8 6 1 0 -687 0 1 0 23 13.8564 20 0 0 1 0.866 8 6 1 0 -688 0 1 0 23.5 14.7224 20 0 0 1 0.866 8 6 1 0 -689 0 1 0 24 13.8564 20 0 0 1 0.866 8 6 1 0 -690 0 1 0 24.5 14.7224 20 0 0 1 0.866 8 6 1 0 -691 0 1 0 25 13.8564 20 0 0 1 0.866 8 6 1 0 -692 0 1 0 25.5 14.7224 20 0 0 1 0.866 8 6 1 0 -693 0 1 0 26 13.8564 20 0 0 1 0.866 8 6 1 0 -694 0 1 0 26.5 14.7224 20 0 0 1 0.866 8 6 1 0 -695 0 1 0 27 13.8564 20 0 0 1 0.866 8 6 1 0 -696 0 1 0 27.5 14.7224 20 0 0 1 0.866 8 6 1 0 -697 0 1 0 28 13.8564 20 0 0 1 0.866 8 6 1 0 -698 0 1 0 28.5 14.7224 20 0 0 1 0.866 8 6 1 0 -699 0 1 0 29 13.8564 20 0 0 1 0.866 8 6 1 0 -700 0 1 0 29.5 14.7224 20 0 0 1 0.866 8 6 1 0 -701 0 1 0 30 13.8564 20 0 0 1 0.866 8 6 1 0 -702 0 1 0 30.5 14.7224 20 0 0 1 0.866 8 6 1 0 -703 0 1 0 31 13.8564 20 0 0 1 0.866 8 6 1 0 -704 0 1 0 31.5 14.7224 20 0 0 1 0.866 8 6 1 0 -705 0 1 0 32 13.8564 20 0 0 1 0.866 8 6 1 0 -706 0 1 0 32.5 14.7224 20 0 0 1 0.866 8 6 1 0 -707 0 1 0 33 13.8564 20 0 0 1 0.866 8 6 1 0 -708 0 1 0 33.5 14.7224 20 0 0 1 0.866 8 6 1 0 -709 0 1 0 34 13.8564 20 0 0 1 0.866 8 6 1 0 -710 0 1 0 34.5 14.7224 20 0 0 1 0.866 8 6 1 0 -711 0 1 0 35 13.8564 20 0 0 1 0.866 8 6 1 0 -712 0 1 0 35.5 14.7224 20 0 0 1 0.866 8 6 1 0 -713 0 1 0 36 13.8564 20 0 0 1 0.866 8 6 1 0 -714 0 1 0 36.5 14.7224 20 0 0 1 0.866 8 6 1 0 -715 0 1 0 37 13.8564 20 0 0 1 0.866 8 6 1 0 -716 0 1 0 37.5 14.7224 20 0 0 1 0.866 8 6 1 0 -717 0 1 0 38 13.8564 20 0 0 1 0.866 8 6 1 0 -718 0 1 0 38.5 14.7224 20 0 0 1 0.866 8 6 1 0 -719 0 1 0 39 13.8564 20 0 0 1 0.866 8 6 1 0 -720 0 1 0 39.5 14.7224 20 0 0 1 0.866 8 6 1 0 -721 0 1 0 0 15.5885 20 0 0 1 0.866 8 6 1 0 -722 0 1 0 0.5 16.4545 20 0 0 1 0.866 8 6 1 0 -723 0 1 0 1 15.5885 20 0 0 1 0.866 8 6 1 0 -724 0 1 0 1.5 16.4545 20 0 0 1 0.866 8 6 1 0 -725 0 1 0 2 15.5885 20 0 0 1 0.866 8 6 1 0 -726 0 1 0 2.5 16.4545 20 0 0 1 0.866 8 6 1 0 -727 0 1 0 3 15.5885 20 0 0 1 0.866 8 6 1 0 -728 0 1 0 3.5 16.4545 20 0 0 1 0.866 8 6 1 0 -729 0 1 0 4 15.5885 20 0 0 1 0.866 8 6 1 0 -730 0 1 0 4.5 16.4545 20 0 0 1 0.866 8 6 1 0 -731 0 1 0 5 15.5885 20 0 0 1 0.866 8 6 1 0 -732 0 1 0 5.5 16.4545 20 0 0 1 0.866 8 6 1 0 -733 0 1 0 6 15.5885 20 0 0 1 0.866 8 6 1 0 -734 0 1 0 6.5 16.4545 20 0 0 1 0.866 8 6 1 0 -735 0 1 0 7 15.5885 20 0 0 1 0.866 8 6 1 0 -736 0 1 0 7.5 16.4545 20 0 0 1 0.866 8 6 1 0 -737 0 1 0 8 15.5885 20 0 0 1 0.866 8 6 1 0 -738 0 1 0 8.5 16.4545 20 0 0 1 0.866 8 6 1 0 -739 0 1 0 9 15.5885 20 0 0 1 0.866 8 6 1 0 -740 0 1 0 9.5 16.4545 20 0 0 1 0.866 8 6 1 0 -741 0 1 0 10 15.5885 20 0 0 1 0.866 8 6 1 0 -742 0 1 0 10.5 16.4545 20 0 0 1 0.866 8 6 1 0 -743 0 1 0 11 15.5885 20 0 0 1 0.866 8 6 1 0 -744 0 1 0 11.5 16.4545 20 0 0 1 0.866 8 6 1 0 -745 0 1 0 12 15.5885 20 0 0 1 0.866 8 6 1 0 -746 0 1 0 12.5 16.4545 20 0 0 1 0.866 8 6 1 0 -747 0 1 0 13 15.5885 20 0 0 1 0.866 8 6 1 0 -748 0 1 0 13.5 16.4545 20 0 0 1 0.866 8 6 1 0 -749 0 1 0 14 15.5885 20 0 0 1 0.866 8 6 1 0 -750 0 1 0 14.5 16.4545 20 0 0 1 0.866 8 6 1 0 -751 0 1 0 15 15.5885 20 0 0 1 0.866 8 6 1 0 -752 0 1 0 15.5 16.4545 20 0 0 1 0.866 8 6 1 0 -753 0 1 0 16 15.5885 20 0 0 1 0.866 8 6 1 0 -754 0 1 0 16.5 16.4545 20 0 0 1 0.866 8 6 1 0 -755 0 1 0 17 15.5885 20 0 0 1 0.866 8 6 1 0 -756 0 1 0 17.5 16.4545 20 0 0 1 0.866 8 6 1 0 -757 0 1 0 18 15.5885 20 0 0 1 0.866 8 6 1 0 -758 0 1 0 18.5 16.4545 20 0 0 1 0.866 8 6 1 0 -759 0 1 0 19 15.5885 20 0 0 1 0.866 8 6 1 0 -760 0 1 0 19.5 16.4545 20 0 0 1 0.866 8 6 1 0 -761 0 1 0 20 15.5885 20 0 0 1 0.866 8 6 1 0 -762 0 1 0 20.5 16.4545 20 0 0 1 0.866 8 6 1 0 -763 0 1 0 21 15.5885 20 0 0 1 0.866 8 6 1 0 -764 0 1 0 21.5 16.4545 20 0 0 1 0.866 8 6 1 0 -765 0 1 0 22 15.5885 20 0 0 1 0.866 8 6 1 0 -766 0 1 0 22.5 16.4545 20 0 0 1 0.866 8 6 1 0 -767 0 1 0 23 15.5885 20 0 0 1 0.866 8 6 1 0 -768 0 1 0 23.5 16.4545 20 0 0 1 0.866 8 6 1 0 -769 0 1 0 24 15.5885 20 0 0 1 0.866 8 6 1 0 -770 0 1 0 24.5 16.4545 20 0 0 1 0.866 8 6 1 0 -771 0 1 0 25 15.5885 20 0 0 1 0.866 8 6 1 0 -772 0 1 0 25.5 16.4545 20 0 0 1 0.866 8 6 1 0 -773 0 1 0 26 15.5885 20 0 0 1 0.866 8 6 1 0 -774 0 1 0 26.5 16.4545 20 0 0 1 0.866 8 6 1 0 -775 0 1 0 27 15.5885 20 0 0 1 0.866 8 6 1 0 -776 0 1 0 27.5 16.4545 20 0 0 1 0.866 8 6 1 0 -777 0 1 0 28 15.5885 20 0 0 1 0.866 8 6 1 0 -778 0 1 0 28.5 16.4545 20 0 0 1 0.866 8 6 1 0 -779 0 1 0 29 15.5885 20 0 0 1 0.866 8 6 1 0 -780 0 1 0 29.5 16.4545 20 0 0 1 0.866 8 6 1 0 -781 0 1 0 30 15.5885 20 0 0 1 0.866 8 6 1 0 -782 0 1 0 30.5 16.4545 20 0 0 1 0.866 8 6 1 0 -783 0 1 0 31 15.5885 20 0 0 1 0.866 8 6 1 0 -784 0 1 0 31.5 16.4545 20 0 0 1 0.866 8 6 1 0 -785 0 1 0 32 15.5885 20 0 0 1 0.866 8 6 1 0 -786 0 1 0 32.5 16.4545 20 0 0 1 0.866 8 6 1 0 -787 0 1 0 33 15.5885 20 0 0 1 0.866 8 6 1 0 -788 0 1 0 33.5 16.4545 20 0 0 1 0.866 8 6 1 0 -789 0 1 0 34 15.5885 20 0 0 1 0.866 8 6 1 0 -790 0 1 0 34.5 16.4545 20 0 0 1 0.866 8 6 1 0 -791 0 1 0 35 15.5885 20 0 0 1 0.866 8 6 1 0 -792 0 1 0 35.5 16.4545 20 0 0 1 0.866 8 6 1 0 -793 0 1 0 36 15.5885 20 0 0 1 0.866 8 6 1 0 -794 0 1 0 36.5 16.4545 20 0 0 1 0.866 8 6 1 0 -795 0 1 0 37 15.5885 20 0 0 1 0.866 8 6 1 0 -796 0 1 0 37.5 16.4545 20 0 0 1 0.866 8 6 1 0 -797 0 1 0 38 15.5885 20 0 0 1 0.866 8 6 1 0 -798 0 1 0 38.5 16.4545 20 0 0 1 0.866 8 6 1 0 -799 0 1 0 39 15.5885 20 0 0 1 0.866 8 6 1 0 -800 0 1 0 39.5 16.4545 20 0 0 1 0.866 8 6 1 0 -801 0 1 0 0 17.3205 20 0 0 1 0.866 8 6 1 0 -802 0 1 0 0.5 18.1865 20 0 0 1 0.866 8 6 1 0 -803 0 1 0 1 17.3205 20 0 0 1 0.866 8 6 1 0 -804 0 1 0 1.5 18.1865 20 0 0 1 0.866 8 6 1 0 -805 0 1 0 2 17.3205 20 0 0 1 0.866 8 6 1 0 -806 0 1 0 2.5 18.1865 20 0 0 1 0.866 8 6 1 0 -807 0 1 0 3 17.3205 20 0 0 1 0.866 8 6 1 0 -808 0 1 0 3.5 18.1865 20 0 0 1 0.866 8 6 1 0 -809 0 1 0 4 17.3205 20 0 0 1 0.866 8 6 1 0 -810 0 1 0 4.5 18.1865 20 0 0 1 0.866 8 6 1 0 -811 0 1 0 5 17.3205 20 0 0 1 0.866 8 6 1 0 -812 0 1 0 5.5 18.1865 20 0 0 1 0.866 8 6 1 0 -813 0 1 0 6 17.3205 20 0 0 1 0.866 8 6 1 0 -814 0 1 0 6.5 18.1865 20 0 0 1 0.866 8 6 1 0 -815 0 1 0 7 17.3205 20 0 0 1 0.866 8 6 1 0 -816 0 1 0 7.5 18.1865 20 0 0 1 0.866 8 6 1 0 -817 0 1 0 8 17.3205 20 0 0 1 0.866 8 6 1 0 -818 0 1 0 8.5 18.1865 20 0 0 1 0.866 8 6 1 0 -819 0 1 0 9 17.3205 20 0 0 1 0.866 8 6 1 0 -820 0 1 0 9.5 18.1865 20 0 0 1 0.866 8 6 1 0 -821 0 1 0 10 17.3205 20 0 0 1 0.866 8 6 1 0 -822 0 1 0 10.5 18.1865 20 0 0 1 0.866 8 6 1 0 -823 0 1 0 11 17.3205 20 0 0 1 0.866 8 6 1 0 -824 0 1 0 11.5 18.1865 20 0 0 1 0.866 8 6 1 0 -825 0 1 0 12 17.3205 20 0 0 1 0.866 8 6 1 0 -826 0 1 0 12.5 18.1865 20 0 0 1 0.866 8 6 1 0 -827 0 1 0 13 17.3205 20 0 0 1 0.866 8 6 1 0 -828 0 1 0 13.5 18.1865 20 0 0 1 0.866 8 6 1 0 -829 0 1 0 14 17.3205 20 0 0 1 0.866 8 6 1 0 -830 0 1 0 14.5 18.1865 20 0 0 1 0.866 8 6 1 0 -831 0 1 0 15 17.3205 20 0 0 1 0.866 8 6 1 0 -832 0 1 0 15.5 18.1865 20 0 0 1 0.866 8 6 1 0 -833 0 1 0 16 17.3205 20 0 0 1 0.866 8 6 1 0 -834 0 1 0 16.5 18.1865 20 0 0 1 0.866 8 6 1 0 -835 0 1 0 17 17.3205 20 0 0 1 0.866 8 6 1 0 -836 0 1 0 17.5 18.1865 20 0 0 1 0.866 8 6 1 0 -837 0 1 0 18 17.3205 20 0 0 1 0.866 8 6 1 0 -838 0 1 0 18.5 18.1865 20 0 0 1 0.866 8 6 1 0 -839 0 1 0 19 17.3205 20 0 0 1 0.866 8 6 1 0 -840 0 1 0 19.5 18.1865 20 0 0 1 0.866 8 6 1 0 -841 0 1 0 20 17.3205 20 0 0 1 0.866 8 6 1 0 -842 0 1 0 20.5 18.1865 20 0 0 1 0.866 8 6 1 0 -843 0 1 0 21 17.3205 20 0 0 1 0.866 8 6 1 0 -844 0 1 0 21.5 18.1865 20 0 0 1 0.866 8 6 1 0 -845 0 1 0 22 17.3205 20 0 0 1 0.866 8 6 1 0 -846 0 1 0 22.5 18.1865 20 0 0 1 0.866 8 6 1 0 -847 0 1 0 23 17.3205 20 0 0 1 0.866 8 6 1 0 -848 0 1 0 23.5 18.1865 20 0 0 1 0.866 8 6 1 0 -849 0 1 0 24 17.3205 20 0 0 1 0.866 8 6 1 0 -850 0 1 0 24.5 18.1865 20 0 0 1 0.866 8 6 1 0 -851 0 1 0 25 17.3205 20 0 0 1 0.866 8 6 1 0 -852 0 1 0 25.5 18.1865 20 0 0 1 0.866 8 6 1 0 -853 0 1 0 26 17.3205 20 0 0 1 0.866 8 6 1 0 -854 0 1 0 26.5 18.1865 20 0 0 1 0.866 8 6 1 0 -855 0 1 0 27 17.3205 20 0 0 1 0.866 8 6 1 0 -856 0 1 0 27.5 18.1865 20 0 0 1 0.866 8 6 1 0 -857 0 1 0 28 17.3205 20 0 0 1 0.866 8 6 1 0 -858 0 1 0 28.5 18.1865 20 0 0 1 0.866 8 6 1 0 -859 0 1 0 29 17.3205 20 0 0 1 0.866 8 6 1 0 -860 0 1 0 29.5 18.1865 20 0 0 1 0.866 8 6 1 0 -861 0 1 0 30 17.3205 20 0 0 1 0.866 8 6 1 0 -862 0 1 0 30.5 18.1865 20 0 0 1 0.866 8 6 1 0 -863 0 1 0 31 17.3205 20 0 0 1 0.866 8 6 1 0 -864 0 1 0 31.5 18.1865 20 0 0 1 0.866 8 6 1 0 -865 0 1 0 32 17.3205 20 0 0 1 0.866 8 6 1 0 -866 0 1 0 32.5 18.1865 20 0 0 1 0.866 8 6 1 0 -867 0 1 0 33 17.3205 20 0 0 1 0.866 8 6 1 0 -868 0 1 0 33.5 18.1865 20 0 0 1 0.866 8 6 1 0 -869 0 1 0 34 17.3205 20 0 0 1 0.866 8 6 1 0 -870 0 1 0 34.5 18.1865 20 0 0 1 0.866 8 6 1 0 -871 0 1 0 35 17.3205 20 0 0 1 0.866 8 6 1 0 -872 0 1 0 35.5 18.1865 20 0 0 1 0.866 8 6 1 0 -873 0 1 0 36 17.3205 20 0 0 1 0.866 8 6 1 0 -874 0 1 0 36.5 18.1865 20 0 0 1 0.866 8 6 1 0 -875 0 1 0 37 17.3205 20 0 0 1 0.866 8 6 1 0 -876 0 1 0 37.5 18.1865 20 0 0 1 0.866 8 6 1 0 -877 0 1 0 38 17.3205 20 0 0 1 0.866 8 6 1 0 -878 0 1 0 38.5 18.1865 20 0 0 1 0.866 8 6 1 0 -879 0 1 0 39 17.3205 20 0 0 1 0.866 8 6 1 0 -880 0 1 0 39.5 18.1865 20 0 0 1 0.866 8 6 1 0 -881 0 1 0 0 19.0526 20 0 0 1 0.866 8 6 1 0 -882 0 1 0 0.5 19.9186 20 0 0 1 0.866 8 6 1 0 -883 0 1 0 1 19.0526 20 0 0 1 0.866 8 6 1 0 -884 0 1 0 1.5 19.9186 20 0 0 1 0.866 8 6 1 0 -885 0 1 0 2 19.0526 20 0 0 1 0.866 8 6 1 0 -886 0 1 0 2.5 19.9186 20 0 0 1 0.866 8 6 1 0 -887 0 1 0 3 19.0526 20 0 0 1 0.866 8 6 1 0 -888 0 1 0 3.5 19.9186 20 0 0 1 0.866 8 6 1 0 -889 0 1 0 4 19.0526 20 0 0 1 0.866 8 6 1 0 -890 0 1 0 4.5 19.9186 20 0 0 1 0.866 8 6 1 0 -891 0 1 0 5 19.0526 20 0 0 1 0.866 8 6 1 0 -892 0 1 0 5.5 19.9186 20 0 0 1 0.866 8 6 1 0 -893 0 1 0 6 19.0526 20 0 0 1 0.866 8 6 1 0 -894 0 1 0 6.5 19.9186 20 0 0 1 0.866 8 6 1 0 -895 0 1 0 7 19.0526 20 0 0 1 0.866 8 6 1 0 -896 0 1 0 7.5 19.9186 20 0 0 1 0.866 8 6 1 0 -897 0 1 0 8 19.0526 20 0 0 1 0.866 8 6 1 0 -898 0 1 0 8.5 19.9186 20 0 0 1 0.866 8 6 1 0 -899 0 1 0 9 19.0526 20 0 0 1 0.866 8 6 1 0 -900 0 1 0 9.5 19.9186 20 0 0 1 0.866 8 6 1 0 -901 0 1 0 10 19.0526 20 0 0 1 0.866 8 6 1 0 -902 0 1 0 10.5 19.9186 20 0 0 1 0.866 8 6 1 0 -903 0 1 0 11 19.0526 20 0 0 1 0.866 8 6 1 0 -904 0 1 0 11.5 19.9186 20 0 0 1 0.866 8 6 1 0 -905 0 1 0 12 19.0526 20 0 0 1 0.866 8 6 1 0 -906 0 1 0 12.5 19.9186 20 0 0 1 0.866 8 6 1 0 -907 0 1 0 13 19.0526 20 0 0 1 0.866 8 6 1 0 -908 0 1 0 13.5 19.9186 20 0 0 1 0.866 8 6 1 0 -909 0 1 0 14 19.0526 20 0 0 1 0.866 8 6 1 0 -910 0 1 0 14.5 19.9186 20 0 0 1 0.866 8 6 1 0 -911 0 1 0 15 19.0526 20 0 0 1 0.866 8 6 1 0 -912 0 1 0 15.5 19.9186 20 0 0 1 0.866 8 6 1 0 -913 0 1 0 16 19.0526 20 0 0 1 0.866 8 6 1 0 -914 0 1 0 16.5 19.9186 20 0 0 1 0.866 8 6 1 0 -915 0 1 0 17 19.0526 20 0 0 1 0.866 8 6 1 0 -916 0 1 0 17.5 19.9186 20 0 0 1 0.866 8 6 1 0 -917 0 1 0 18 19.0526 20 0 0 1 0.866 8 6 1 0 -918 0 1 0 18.5 19.9186 20 0 0 1 0.866 8 6 1 0 -919 0 1 0 19 19.0526 20 0 0 1 0.866 8 6 1 0 -920 0 1 0 19.5 19.9186 20 0 0 1 0.866 8 6 1 0 -921 0 1 0 20 19.0526 20 0 0 1 0.866 8 6 1 0 -922 0 1 0 20.5 19.9186 20 0 0 1 0.866 8 6 1 0 -923 0 1 0 21 19.0526 20 0 0 1 0.866 8 6 1 0 -924 0 1 0 21.5 19.9186 20 0 0 1 0.866 8 6 1 0 -925 0 1 0 22 19.0526 20 0 0 1 0.866 8 6 1 0 -926 0 1 0 22.5 19.9186 20 0 0 1 0.866 8 6 1 0 -927 0 1 0 23 19.0526 20 0 0 1 0.866 8 6 1 0 -928 0 1 0 23.5 19.9186 20 0 0 1 0.866 8 6 1 0 -929 0 1 0 24 19.0526 20 0 0 1 0.866 8 6 1 0 -930 0 1 0 24.5 19.9186 20 0 0 1 0.866 8 6 1 0 -931 0 1 0 25 19.0526 20 0 0 1 0.866 8 6 1 0 -932 0 1 0 25.5 19.9186 20 0 0 1 0.866 8 6 1 0 -933 0 1 0 26 19.0526 20 0 0 1 0.866 8 6 1 0 -934 0 1 0 26.5 19.9186 20 0 0 1 0.866 8 6 1 0 -935 0 1 0 27 19.0526 20 0 0 1 0.866 8 6 1 0 -936 0 1 0 27.5 19.9186 20 0 0 1 0.866 8 6 1 0 -937 0 1 0 28 19.0526 20 0 0 1 0.866 8 6 1 0 -938 0 1 0 28.5 19.9186 20 0 0 1 0.866 8 6 1 0 -939 0 1 0 29 19.0526 20 0 0 1 0.866 8 6 1 0 -940 0 1 0 29.5 19.9186 20 0 0 1 0.866 8 6 1 0 -941 0 1 0 30 19.0526 20 0 0 1 0.866 8 6 1 0 -942 0 1 0 30.5 19.9186 20 0 0 1 0.866 8 6 1 0 -943 0 1 0 31 19.0526 20 0 0 1 0.866 8 6 1 0 -944 0 1 0 31.5 19.9186 20 0 0 1 0.866 8 6 1 0 -945 0 1 0 32 19.0526 20 0 0 1 0.866 8 6 1 0 -946 0 1 0 32.5 19.9186 20 0 0 1 0.866 8 6 1 0 -947 0 1 0 33 19.0526 20 0 0 1 0.866 8 6 1 0 -948 0 1 0 33.5 19.9186 20 0 0 1 0.866 8 6 1 0 -949 0 1 0 34 19.0526 20 0 0 1 0.866 8 6 1 0 -950 0 1 0 34.5 19.9186 20 0 0 1 0.866 8 6 1 0 -951 0 1 0 35 19.0526 20 0 0 1 0.866 8 6 1 0 -952 0 1 0 35.5 19.9186 20 0 0 1 0.866 8 6 1 0 -953 0 1 0 36 19.0526 20 0 0 1 0.866 8 6 1 0 -954 0 1 0 36.5 19.9186 20 0 0 1 0.866 8 6 1 0 -955 0 1 0 37 19.0526 20 0 0 1 0.866 8 6 1 0 -956 0 1 0 37.5 19.9186 20 0 0 1 0.866 8 6 1 0 -957 0 1 0 38 19.0526 20 0 0 1 0.866 8 6 1 0 -958 0 1 0 38.5 19.9186 20 0 0 1 0.866 8 6 1 0 -959 0 1 0 39 19.0526 20 0 0 1 0.866 8 6 1 0 -960 0 1 0 39.5 19.9186 20 0 0 1 0.866 8 6 1 0 -961 0 1 0 0 20.7846 20 0 0 1 0.866 8 6 1 0 -962 0 1 0 0.5 21.6506 20 0 0 1 0.866 8 6 1 0 -963 0 1 0 1 20.7846 20 0 0 1 0.866 8 6 1 0 -964 0 1 0 1.5 21.6506 20 0 0 1 0.866 8 6 1 0 -965 0 1 0 2 20.7846 20 0 0 1 0.866 8 6 1 0 -966 0 1 0 2.5 21.6506 20 0 0 1 0.866 8 6 1 0 -967 0 1 0 3 20.7846 20 0 0 1 0.866 8 6 1 0 -968 0 1 0 3.5 21.6506 20 0 0 1 0.866 8 6 1 0 -969 0 1 0 4 20.7846 20 0 0 1 0.866 8 6 1 0 -970 0 1 0 4.5 21.6506 20 0 0 1 0.866 8 6 1 0 -971 0 1 0 5 20.7846 20 0 0 1 0.866 8 6 1 0 -972 0 1 0 5.5 21.6506 20 0 0 1 0.866 8 6 1 0 -973 0 1 0 6 20.7846 20 0 0 1 0.866 8 6 1 0 -974 0 1 0 6.5 21.6506 20 0 0 1 0.866 8 6 1 0 -975 0 1 0 7 20.7846 20 0 0 1 0.866 8 6 1 0 -976 0 1 0 7.5 21.6506 20 0 0 1 0.866 8 6 1 0 -977 0 1 0 8 20.7846 20 0 0 1 0.866 8 6 1 0 -978 0 1 0 8.5 21.6506 20 0 0 1 0.866 8 6 1 0 -979 0 1 0 9 20.7846 20 0 0 1 0.866 8 6 1 0 -980 0 1 0 9.5 21.6506 20 0 0 1 0.866 8 6 1 0 -981 0 1 0 10 20.7846 20 0 0 1 0.866 8 6 1 0 -982 0 1 0 10.5 21.6506 20 0 0 1 0.866 8 6 1 0 -983 0 1 0 11 20.7846 20 0 0 1 0.866 8 6 1 0 -984 0 1 0 11.5 21.6506 20 0 0 1 0.866 8 6 1 0 -985 0 1 0 12 20.7846 20 0 0 1 0.866 8 6 1 0 -986 0 1 0 12.5 21.6506 20 0 0 1 0.866 8 6 1 0 -987 0 1 0 13 20.7846 20 0 0 1 0.866 8 6 1 0 -988 0 1 0 13.5 21.6506 20 0 0 1 0.866 8 6 1 0 -989 0 1 0 14 20.7846 20 0 0 1 0.866 8 6 1 0 -990 0 1 0 14.5 21.6506 20 0 0 1 0.866 8 6 1 0 -991 0 1 0 15 20.7846 20 0 0 1 0.866 8 6 1 0 -992 0 1 0 15.5 21.6506 20 0 0 1 0.866 8 6 1 0 -993 0 1 0 16 20.7846 20 0 0 1 0.866 8 6 1 0 -994 0 1 0 16.5 21.6506 20 0 0 1 0.866 8 6 1 0 -995 0 1 0 17 20.7846 20 0 0 1 0.866 8 6 1 0 -996 0 1 0 17.5 21.6506 20 0 0 1 0.866 8 6 1 0 -997 0 1 0 18 20.7846 20 0 0 1 0.866 8 6 1 0 -998 0 1 0 18.5 21.6506 20 0 0 1 0.866 8 6 1 0 -999 0 1 0 19 20.7846 20 0 0 1 0.866 8 6 1 0 -1000 0 1 0 19.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1001 0 1 0 20 20.7846 20 0 0 1 0.866 8 6 1 0 -1002 0 1 0 20.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1003 0 1 0 21 20.7846 20 0 0 1 0.866 8 6 1 0 -1004 0 1 0 21.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1005 0 1 0 22 20.7846 20 0 0 1 0.866 8 6 1 0 -1006 0 1 0 22.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1007 0 1 0 23 20.7846 20 0 0 1 0.866 8 6 1 0 -1008 0 1 0 23.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1009 0 1 0 24 20.7846 20 0 0 1 0.866 8 6 1 0 -1010 0 1 0 24.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1011 0 1 0 25 20.7846 20 0 0 1 0.866 8 6 1 0 -1012 0 1 0 25.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1013 0 1 0 26 20.7846 20 0 0 1 0.866 8 6 1 0 -1014 0 1 0 26.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1015 0 1 0 27 20.7846 20 0 0 1 0.866 8 6 1 0 -1016 0 1 0 27.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1017 0 1 0 28 20.7846 20 0 0 1 0.866 8 6 1 0 -1018 0 1 0 28.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1019 0 1 0 29 20.7846 20 0 0 1 0.866 8 6 1 0 -1020 0 1 0 29.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1021 0 1 0 30 20.7846 20 0 0 1 0.866 8 6 1 0 -1022 0 1 0 30.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1023 0 1 0 31 20.7846 20 0 0 1 0.866 8 6 1 0 -1024 0 1 0 31.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1025 0 1 0 32 20.7846 20 0 0 1 0.866 8 6 1 0 -1026 0 1 0 32.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1027 0 1 0 33 20.7846 20 0 0 1 0.866 8 6 1 0 -1028 0 1 0 33.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1029 0 1 0 34 20.7846 20 0 0 1 0.866 8 6 1 0 -1030 0 1 0 34.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1031 0 1 0 35 20.7846 20 0 0 1 0.866 8 6 1 0 -1032 0 1 0 35.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1033 0 1 0 36 20.7846 20 0 0 1 0.866 8 6 1 0 -1034 0 1 0 36.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1035 0 1 0 37 20.7846 20 0 0 1 0.866 8 6 1 0 -1036 0 1 0 37.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1037 0 1 0 38 20.7846 20 0 0 1 0.866 8 6 1 0 -1038 0 1 0 38.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1039 0 1 0 39 20.7846 20 0 0 1 0.866 8 6 1 0 -1040 0 1 0 39.5 21.6506 20 0 0 1 0.866 8 6 1 0 -1041 0 1 0 0 22.5167 20 0 0 1 0.866 8 6 1 0 -1042 0 1 0 0.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1043 0 1 0 1 22.5167 20 0 0 1 0.866 8 6 1 0 -1044 0 1 0 1.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1045 0 1 0 2 22.5167 20 0 0 1 0.866 8 6 1 0 -1046 0 1 0 2.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1047 0 1 0 3 22.5167 20 0 0 1 0.866 8 6 1 0 -1048 0 1 0 3.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1049 0 1 0 4 22.5167 20 0 0 1 0.866 8 6 1 0 -1050 0 1 0 4.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1051 0 1 0 5 22.5167 20 0 0 1 0.866 8 6 1 0 -1052 0 1 0 5.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1053 0 1 0 6 22.5167 20 0 0 1 0.866 8 6 1 0 -1054 0 1 0 6.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1055 0 1 0 7 22.5167 20 0 0 1 0.866 8 6 1 0 -1056 0 1 0 7.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1057 0 1 0 8 22.5167 20 0 0 1 0.866 8 6 1 0 -1058 0 1 0 8.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1059 0 1 0 9 22.5167 20 0 0 1 0.866 8 6 1 0 -1060 0 1 0 9.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1061 0 1 0 10 22.5167 20 0 0 1 0.866 8 6 1 0 -1062 0 1 0 10.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1063 0 1 0 11 22.5167 20 0 0 1 0.866 8 6 1 0 -1064 0 1 0 11.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1065 0 1 0 12 22.5167 20 0 0 1 0.866 8 6 1 0 -1066 0 1 0 12.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1067 0 1 0 13 22.5167 20 0 0 1 0.866 8 6 1 0 -1068 0 1 0 13.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1069 0 1 0 14 22.5167 20 0 0 1 0.866 8 6 1 0 -1070 0 1 0 14.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1071 0 1 0 15 22.5167 20 0 0 1 0.866 8 6 1 0 -1072 0 1 0 15.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1073 0 1 0 16 22.5167 20 0 0 1 0.866 8 6 1 0 -1074 0 1 0 16.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1075 0 1 0 17 22.5167 20 0 0 1 0.866 8 6 1 0 -1076 0 1 0 17.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1077 0 1 0 18 22.5167 20 0 0 1 0.866 8 6 1 0 -1078 0 1 0 18.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1079 0 1 0 19 22.5167 20 0 0 1 0.866 8 6 1 0 -1080 0 1 0 19.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1081 0 1 0 20 22.5167 20 0 0 1 0.866 8 6 1 0 -1082 0 1 0 20.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1083 0 1 0 21 22.5167 20 0 0 1 0.866 8 6 1 0 -1084 0 1 0 21.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1085 0 1 0 22 22.5167 20 0 0 1 0.866 8 6 1 0 -1086 0 1 0 22.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1087 0 1 0 23 22.5167 20 0 0 1 0.866 8 6 1 0 -1088 0 1 0 23.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1089 0 1 0 24 22.5167 20 0 0 1 0.866 8 6 1 0 -1090 0 1 0 24.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1091 0 1 0 25 22.5167 20 0 0 1 0.866 8 6 1 0 -1092 0 1 0 25.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1093 0 1 0 26 22.5167 20 0 0 1 0.866 8 6 1 0 -1094 0 1 0 26.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1095 0 1 0 27 22.5167 20 0 0 1 0.866 8 6 1 0 -1096 0 1 0 27.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1097 0 1 0 28 22.5167 20 0 0 1 0.866 8 6 1 0 -1098 0 1 0 28.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1099 0 1 0 29 22.5167 20 0 0 1 0.866 8 6 1 0 -1100 0 1 0 29.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1101 0 1 0 30 22.5167 20 0 0 1 0.866 8 6 1 0 -1102 0 1 0 30.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1103 0 1 0 31 22.5167 20 0 0 1 0.866 8 6 1 0 -1104 0 1 0 31.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1105 0 1 0 32 22.5167 20 0 0 1 0.866 8 6 1 0 -1106 0 1 0 32.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1107 0 1 0 33 22.5167 20 0 0 1 0.866 8 6 1 0 -1108 0 1 0 33.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1109 0 1 0 34 22.5167 20 0 0 1 0.866 8 6 1 0 -1110 0 1 0 34.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1111 0 1 0 35 22.5167 20 0 0 1 0.866 8 6 1 0 -1112 0 1 0 35.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1113 0 1 0 36 22.5167 20 0 0 1 0.866 8 6 1 0 -1114 0 1 0 36.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1115 0 1 0 37 22.5167 20 0 0 1 0.866 8 6 1 0 -1116 0 1 0 37.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1117 0 1 0 38 22.5167 20 0 0 1 0.866 8 6 1 0 -1118 0 1 0 38.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1119 0 1 0 39 22.5167 20 0 0 1 0.866 8 6 1 0 -1120 0 1 0 39.5 23.3827 20 0 0 1 0.866 8 6 1 0 -1121 0 1 0 0 24.2487 20 0 0 1 0.866 8 6 1 0 -1122 0 1 0 0.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1123 0 1 0 1 24.2487 20 0 0 1 0.866 8 6 1 0 -1124 0 1 0 1.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1125 0 1 0 2 24.2487 20 0 0 1 0.866 8 6 1 0 -1126 0 1 0 2.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1127 0 1 0 3 24.2487 20 0 0 1 0.866 8 6 1 0 -1128 0 1 0 3.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1129 0 1 0 4 24.2487 20 0 0 1 0.866 8 6 1 0 -1130 0 1 0 4.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1131 0 1 0 5 24.2487 20 0 0 1 0.866 8 6 1 0 -1132 0 1 0 5.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1133 0 1 0 6 24.2487 20 0 0 1 0.866 8 6 1 0 -1134 0 1 0 6.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1135 0 1 0 7 24.2487 20 0 0 1 0.866 8 6 1 0 -1136 0 1 0 7.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1137 0 1 0 8 24.2487 20 0 0 1 0.866 8 6 1 0 -1138 0 1 0 8.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1139 0 1 0 9 24.2487 20 0 0 1 0.866 8 6 1 0 -1140 0 1 0 9.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1141 0 1 0 10 24.2487 20 0 0 1 0.866 8 6 1 0 -1142 0 1 0 10.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1143 0 1 0 11 24.2487 20 0 0 1 0.866 8 6 1 0 -1144 0 1 0 11.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1145 0 1 0 12 24.2487 20 0 0 1 0.866 8 6 1 0 -1146 0 1 0 12.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1147 0 1 0 13 24.2487 20 0 0 1 0.866 8 6 1 0 -1148 0 1 0 13.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1149 0 1 0 14 24.2487 20 0 0 1 0.866 8 6 1 0 -1150 0 1 0 14.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1151 0 1 0 15 24.2487 20 0 0 1 0.866 8 6 1 0 -1152 0 1 0 15.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1153 0 1 0 16 24.2487 20 0 0 1 0.866 8 6 1 0 -1154 0 1 0 16.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1155 0 1 0 17 24.2487 20 0 0 1 0.866 8 6 1 0 -1156 0 1 0 17.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1157 0 1 0 18 24.2487 20 0 0 1 0.866 8 6 1 0 -1158 0 1 0 18.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1159 0 1 0 19 24.2487 20 0 0 1 0.866 8 6 1 0 -1160 0 1 0 19.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1161 0 1 0 20 24.2487 20 0 0 1 0.866 8 6 1 0 -1162 0 1 0 20.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1163 0 1 0 21 24.2487 20 0 0 1 0.866 8 6 1 0 -1164 0 1 0 21.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1165 0 1 0 22 24.2487 20 0 0 1 0.866 8 6 1 0 -1166 0 1 0 22.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1167 0 1 0 23 24.2487 20 0 0 1 0.866 8 6 1 0 -1168 0 1 0 23.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1169 0 1 0 24 24.2487 20 0 0 1 0.866 8 6 1 0 -1170 0 1 0 24.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1171 0 1 0 25 24.2487 20 0 0 1 0.866 8 6 1 0 -1172 0 1 0 25.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1173 0 1 0 26 24.2487 20 0 0 1 0.866 8 6 1 0 -1174 0 1 0 26.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1175 0 1 0 27 24.2487 20 0 0 1 0.866 8 6 1 0 -1176 0 1 0 27.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1177 0 1 0 28 24.2487 20 0 0 1 0.866 8 6 1 0 -1178 0 1 0 28.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1179 0 1 0 29 24.2487 20 0 0 1 0.866 8 6 1 0 -1180 0 1 0 29.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1181 0 1 0 30 24.2487 20 0 0 1 0.866 8 6 1 0 -1182 0 1 0 30.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1183 0 1 0 31 24.2487 20 0 0 1 0.866 8 6 1 0 -1184 0 1 0 31.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1185 0 1 0 32 24.2487 20 0 0 1 0.866 8 6 1 0 -1186 0 1 0 32.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1187 0 1 0 33 24.2487 20 0 0 1 0.866 8 6 1 0 -1188 0 1 0 33.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1189 0 1 0 34 24.2487 20 0 0 1 0.866 8 6 1 0 -1190 0 1 0 34.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1191 0 1 0 35 24.2487 20 0 0 1 0.866 8 6 1 0 -1192 0 1 0 35.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1193 0 1 0 36 24.2487 20 0 0 1 0.866 8 6 1 0 -1194 0 1 0 36.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1195 0 1 0 37 24.2487 20 0 0 1 0.866 8 6 1 0 -1196 0 1 0 37.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1197 0 1 0 38 24.2487 20 0 0 1 0.866 8 6 1 0 -1198 0 1 0 38.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1199 0 1 0 39 24.2487 20 0 0 1 0.866 8 6 1 0 -1200 0 1 0 39.5 25.1147 20 0 0 1 0.866 8 6 1 0 -1201 0 1 0 0 25.9808 20 0 0 1 0.866 8 6 1 0 -1202 0 1 0 0.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1203 0 1 0 1 25.9808 20 0 0 1 0.866 8 6 1 0 -1204 0 1 0 1.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1205 0 1 0 2 25.9808 20 0 0 1 0.866 8 6 1 0 -1206 0 1 0 2.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1207 0 1 0 3 25.9808 20 0 0 1 0.866 8 6 1 0 -1208 0 1 0 3.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1209 0 1 0 4 25.9808 20 0 0 1 0.866 8 6 1 0 -1210 0 1 0 4.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1211 0 1 0 5 25.9808 20 0 0 1 0.866 8 6 1 0 -1212 0 1 0 5.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1213 0 1 0 6 25.9808 20 0 0 1 0.866 8 6 1 0 -1214 0 1 0 6.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1215 0 1 0 7 25.9808 20 0 0 1 0.866 8 6 1 0 -1216 0 1 0 7.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1217 0 1 0 8 25.9808 20 0 0 1 0.866 8 6 1 0 -1218 0 1 0 8.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1219 0 1 0 9 25.9808 20 0 0 1 0.866 8 6 1 0 -1220 0 1 0 9.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1221 0 1 0 10 25.9808 20 0 0 1 0.866 8 6 1 0 -1222 0 1 0 10.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1223 0 1 0 11 25.9808 20 0 0 1 0.866 8 6 1 0 -1224 0 1 0 11.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1225 0 1 0 12 25.9808 20 0 0 1 0.866 8 6 1 0 -1226 0 1 0 12.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1227 0 1 0 13 25.9808 20 0 0 1 0.866 8 6 1 0 -1228 0 1 0 13.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1229 0 1 0 14 25.9808 20 0 0 1 0.866 8 6 1 0 -1230 0 1 0 14.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1231 0 1 0 15 25.9808 20 0 0 1 0.866 8 6 1 0 -1232 0 1 0 15.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1233 0 1 0 16 25.9808 20 0 0 1 0.866 8 6 1 0 -1234 0 1 0 16.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1235 0 1 0 17 25.9808 20 0 0 1 0.866 8 6 1 0 -1236 0 1 0 17.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1237 0 1 0 18 25.9808 20 0 0 1 0.866 8 6 1 0 -1238 0 1 0 18.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1239 0 1 0 19 25.9808 20 0 0 1 0.866 8 6 1 0 -1240 0 1 0 19.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1241 0 1 0 20 25.9808 20 0 0 1 0.866 8 6 1 0 -1242 0 1 0 20.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1243 0 1 0 21 25.9808 20 0 0 1 0.866 8 6 1 0 -1244 0 1 0 21.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1245 0 1 0 22 25.9808 20 0 0 1 0.866 8 6 1 0 -1246 0 1 0 22.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1247 0 1 0 23 25.9808 20 0 0 1 0.866 8 6 1 0 -1248 0 1 0 23.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1249 0 1 0 24 25.9808 20 0 0 1 0.866 8 6 1 0 -1250 0 1 0 24.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1251 0 1 0 25 25.9808 20 0 0 1 0.866 8 6 1 0 -1252 0 1 0 25.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1253 0 1 0 26 25.9808 20 0 0 1 0.866 8 6 1 0 -1254 0 1 0 26.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1255 0 1 0 27 25.9808 20 0 0 1 0.866 8 6 1 0 -1256 0 1 0 27.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1257 0 1 0 28 25.9808 20 0 0 1 0.866 8 6 1 0 -1258 0 1 0 28.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1259 0 1 0 29 25.9808 20 0 0 1 0.866 8 6 1 0 -1260 0 1 0 29.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1261 0 1 0 30 25.9808 20 0 0 1 0.866 8 6 1 0 -1262 0 1 0 30.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1263 0 1 0 31 25.9808 20 0 0 1 0.866 8 6 1 0 -1264 0 1 0 31.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1265 0 1 0 32 25.9808 20 0 0 1 0.866 8 6 1 0 -1266 0 1 0 32.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1267 0 1 0 33 25.9808 20 0 0 1 0.866 8 6 1 0 -1268 0 1 0 33.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1269 0 1 0 34 25.9808 20 0 0 1 0.866 8 6 1 0 -1270 0 1 0 34.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1271 0 1 0 35 25.9808 20 0 0 1 0.866 8 6 1 0 -1272 0 1 0 35.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1273 0 1 0 36 25.9808 20 0 0 1 0.866 8 6 1 0 -1274 0 1 0 36.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1275 0 1 0 37 25.9808 20 0 0 1 0.866 8 6 1 0 -1276 0 1 0 37.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1277 0 1 0 38 25.9808 20 0 0 1 0.866 8 6 1 0 -1278 0 1 0 38.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1279 0 1 0 39 25.9808 20 0 0 1 0.866 8 6 1 0 -1280 0 1 0 39.5 26.8468 20 0 0 1 0.866 8 6 1 0 -1281 0 1 0 0 27.7128 20 0 0 1 0.866 8 6 1 0 -1282 0 1 0 0.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1283 0 1 0 1 27.7128 20 0 0 1 0.866 8 6 1 0 -1284 0 1 0 1.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1285 0 1 0 2 27.7128 20 0 0 1 0.866 8 6 1 0 -1286 0 1 0 2.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1287 0 1 0 3 27.7128 20 0 0 1 0.866 8 6 1 0 -1288 0 1 0 3.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1289 0 1 0 4 27.7128 20 0 0 1 0.866 8 6 1 0 -1290 0 1 0 4.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1291 0 1 0 5 27.7128 20 0 0 1 0.866 8 6 1 0 -1292 0 1 0 5.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1293 0 1 0 6 27.7128 20 0 0 1 0.866 8 6 1 0 -1294 0 1 0 6.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1295 0 1 0 7 27.7128 20 0 0 1 0.866 8 6 1 0 -1296 0 1 0 7.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1297 0 1 0 8 27.7128 20 0 0 1 0.866 8 6 1 0 -1298 0 1 0 8.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1299 0 1 0 9 27.7128 20 0 0 1 0.866 8 6 1 0 -1300 0 1 0 9.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1301 0 1 0 10 27.7128 20 0 0 1 0.866 8 6 1 0 -1302 0 1 0 10.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1303 0 1 0 11 27.7128 20 0 0 1 0.866 8 6 1 0 -1304 0 1 0 11.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1305 0 1 0 12 27.7128 20 0 0 1 0.866 8 6 1 0 -1306 0 1 0 12.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1307 0 1 0 13 27.7128 20 0 0 1 0.866 8 6 1 0 -1308 0 1 0 13.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1309 0 1 0 14 27.7128 20 0 0 1 0.866 8 6 1 0 -1310 0 1 0 14.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1311 0 1 0 15 27.7128 20 0 0 1 0.866 8 6 1 0 -1312 0 1 0 15.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1313 0 1 0 16 27.7128 20 0 0 1 0.866 8 6 1 0 -1314 0 1 0 16.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1315 0 1 0 17 27.7128 20 0 0 1 0.866 8 6 1 0 -1316 0 1 0 17.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1317 0 1 0 18 27.7128 20 0 0 1 0.866 8 6 1 0 -1318 0 1 0 18.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1319 0 1 0 19 27.7128 20 0 0 1 0.866 8 6 1 0 -1320 0 1 0 19.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1321 0 1 0 20 27.7128 20 0 0 1 0.866 8 6 1 0 -1322 0 1 0 20.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1323 0 1 0 21 27.7128 20 0 0 1 0.866 8 6 1 0 -1324 0 1 0 21.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1325 0 1 0 22 27.7128 20 0 0 1 0.866 8 6 1 0 -1326 0 1 0 22.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1327 0 1 0 23 27.7128 20 0 0 1 0.866 8 6 1 0 -1328 0 1 0 23.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1329 0 1 0 24 27.7128 20 0 0 1 0.866 8 6 1 0 -1330 0 1 0 24.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1331 0 1 0 25 27.7128 20 0 0 1 0.866 8 6 1 0 -1332 0 1 0 25.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1333 0 1 0 26 27.7128 20 0 0 1 0.866 8 6 1 0 -1334 0 1 0 26.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1335 0 1 0 27 27.7128 20 0 0 1 0.866 8 6 1 0 -1336 0 1 0 27.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1337 0 1 0 28 27.7128 20 0 0 1 0.866 8 6 1 0 -1338 0 1 0 28.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1339 0 1 0 29 27.7128 20 0 0 1 0.866 8 6 1 0 -1340 0 1 0 29.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1341 0 1 0 30 27.7128 20 0 0 1 0.866 8 6 1 0 -1342 0 1 0 30.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1343 0 1 0 31 27.7128 20 0 0 1 0.866 8 6 1 0 -1344 0 1 0 31.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1345 0 1 0 32 27.7128 20 0 0 1 0.866 8 6 1 0 -1346 0 1 0 32.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1347 0 1 0 33 27.7128 20 0 0 1 0.866 8 6 1 0 -1348 0 1 0 33.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1349 0 1 0 34 27.7128 20 0 0 1 0.866 8 6 1 0 -1350 0 1 0 34.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1351 0 1 0 35 27.7128 20 0 0 1 0.866 8 6 1 0 -1352 0 1 0 35.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1353 0 1 0 36 27.7128 20 0 0 1 0.866 8 6 1 0 -1354 0 1 0 36.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1355 0 1 0 37 27.7128 20 0 0 1 0.866 8 6 1 0 -1356 0 1 0 37.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1357 0 1 0 38 27.7128 20 0 0 1 0.866 8 6 1 0 -1358 0 1 0 38.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1359 0 1 0 39 27.7128 20 0 0 1 0.866 8 6 1 0 -1360 0 1 0 39.5 28.5788 20 0 0 1 0.866 8 6 1 0 -1361 0 1 0 0 29.4449 20 0 0 1 0.866 8 6 1 0 -1362 0 1 0 0.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1363 0 1 0 1 29.4449 20 0 0 1 0.866 8 6 1 0 -1364 0 1 0 1.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1365 0 1 0 2 29.4449 20 0 0 1 0.866 8 6 1 0 -1366 0 1 0 2.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1367 0 1 0 3 29.4449 20 0 0 1 0.866 8 6 1 0 -1368 0 1 0 3.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1369 0 1 0 4 29.4449 20 0 0 1 0.866 8 6 1 0 -1370 0 1 0 4.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1371 0 1 0 5 29.4449 20 0 0 1 0.866 8 6 1 0 -1372 0 1 0 5.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1373 0 1 0 6 29.4449 20 0 0 1 0.866 8 6 1 0 -1374 0 1 0 6.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1375 0 1 0 7 29.4449 20 0 0 1 0.866 8 6 1 0 -1376 0 1 0 7.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1377 0 1 0 8 29.4449 20 0 0 1 0.866 8 6 1 0 -1378 0 1 0 8.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1379 0 1 0 9 29.4449 20 0 0 1 0.866 8 6 1 0 -1380 0 1 0 9.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1381 0 1 0 10 29.4449 20 0 0 1 0.866 8 6 1 0 -1382 0 1 0 10.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1383 0 1 0 11 29.4449 20 0 0 1 0.866 8 6 1 0 -1384 0 1 0 11.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1385 0 1 0 12 29.4449 20 0 0 1 0.866 8 6 1 0 -1386 0 1 0 12.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1387 0 1 0 13 29.4449 20 0 0 1 0.866 8 6 1 0 -1388 0 1 0 13.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1389 0 1 0 14 29.4449 20 0 0 1 0.866 8 6 1 0 -1390 0 1 0 14.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1391 0 1 0 15 29.4449 20 0 0 1 0.866 8 6 1 0 -1392 0 1 0 15.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1393 0 1 0 16 29.4449 20 0 0 1 0.866 8 6 1 0 -1394 0 1 0 16.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1395 0 1 0 17 29.4449 20 0 0 1 0.866 8 6 1 0 -1396 0 1 0 17.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1397 0 1 0 18 29.4449 20 0 0 1 0.866 8 6 1 0 -1398 0 1 0 18.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1399 0 1 0 19 29.4449 20 0 0 1 0.866 8 6 1 0 -1400 0 1 0 19.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1401 0 1 0 20 29.4449 20 0 0 1 0.866 8 6 1 0 -1402 0 1 0 20.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1403 0 1 0 21 29.4449 20 0 0 1 0.866 8 6 1 0 -1404 0 1 0 21.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1405 0 1 0 22 29.4449 20 0 0 1 0.866 8 6 1 0 -1406 0 1 0 22.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1407 0 1 0 23 29.4449 20 0 0 1 0.866 8 6 1 0 -1408 0 1 0 23.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1409 0 1 0 24 29.4449 20 0 0 1 0.866 8 6 1 0 -1410 0 1 0 24.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1411 0 1 0 25 29.4449 20 0 0 1 0.866 8 6 1 0 -1412 0 1 0 25.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1413 0 1 0 26 29.4449 20 0 0 1 0.866 8 6 1 0 -1414 0 1 0 26.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1415 0 1 0 27 29.4449 20 0 0 1 0.866 8 6 1 0 -1416 0 1 0 27.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1417 0 1 0 28 29.4449 20 0 0 1 0.866 8 6 1 0 -1418 0 1 0 28.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1419 0 1 0 29 29.4449 20 0 0 1 0.866 8 6 1 0 -1420 0 1 0 29.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1421 0 1 0 30 29.4449 20 0 0 1 0.866 8 6 1 0 -1422 0 1 0 30.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1423 0 1 0 31 29.4449 20 0 0 1 0.866 8 6 1 0 -1424 0 1 0 31.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1425 0 1 0 32 29.4449 20 0 0 1 0.866 8 6 1 0 -1426 0 1 0 32.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1427 0 1 0 33 29.4449 20 0 0 1 0.866 8 6 1 0 -1428 0 1 0 33.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1429 0 1 0 34 29.4449 20 0 0 1 0.866 8 6 1 0 -1430 0 1 0 34.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1431 0 1 0 35 29.4449 20 0 0 1 0.866 8 6 1 0 -1432 0 1 0 35.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1433 0 1 0 36 29.4449 20 0 0 1 0.866 8 6 1 0 -1434 0 1 0 36.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1435 0 1 0 37 29.4449 20 0 0 1 0.866 8 6 1 0 -1436 0 1 0 37.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1437 0 1 0 38 29.4449 20 0 0 1 0.866 8 6 1 0 -1438 0 1 0 38.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1439 0 1 0 39 29.4449 20 0 0 1 0.866 8 6 1 0 -1440 0 1 0 39.5 30.3109 20 0 0 1 0.866 8 6 1 0 -1441 0 1 0 0 31.1769 20 0 0 1 0.866 8 6 1 0 -1442 0 1 0 0.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1443 0 1 0 1 31.1769 20 0 0 1 0.866 8 6 1 0 -1444 0 1 0 1.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1445 0 1 0 2 31.1769 20 0 0 1 0.866 8 6 1 0 -1446 0 1 0 2.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1447 0 1 0 3 31.1769 20 0 0 1 0.866 8 6 1 0 -1448 0 1 0 3.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1449 0 1 0 4 31.1769 20 0 0 1 0.866 8 6 1 0 -1450 0 1 0 4.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1451 0 1 0 5 31.1769 20 0 0 1 0.866 8 6 1 0 -1452 0 1 0 5.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1453 0 1 0 6 31.1769 20 0 0 1 0.866 8 6 1 0 -1454 0 1 0 6.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1455 0 1 0 7 31.1769 20 0 0 1 0.866 8 6 1 0 -1456 0 1 0 7.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1457 0 1 0 8 31.1769 20 0 0 1 0.866 8 6 1 0 -1458 0 1 0 8.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1459 0 1 0 9 31.1769 20 0 0 1 0.866 8 6 1 0 -1460 0 1 0 9.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1461 0 1 0 10 31.1769 20 0 0 1 0.866 8 6 1 0 -1462 0 1 0 10.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1463 0 1 0 11 31.1769 20 0 0 1 0.866 8 6 1 0 -1464 0 1 0 11.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1465 0 1 0 12 31.1769 20 0 0 1 0.866 8 6 1 0 -1466 0 1 0 12.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1467 0 1 0 13 31.1769 20 0 0 1 0.866 8 6 1 0 -1468 0 1 0 13.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1469 0 1 0 14 31.1769 20 0 0 1 0.866 8 6 1 0 -1470 0 1 0 14.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1471 0 1 0 15 31.1769 20 0 0 1 0.866 8 6 1 0 -1472 0 1 0 15.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1473 0 1 0 16 31.1769 20 0 0 1 0.866 8 6 1 0 -1474 0 1 0 16.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1475 0 1 0 17 31.1769 20 0 0 1 0.866 8 6 1 0 -1476 0 1 0 17.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1477 0 1 0 18 31.1769 20 0 0 1 0.866 8 6 1 0 -1478 0 1 0 18.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1479 0 1 0 19 31.1769 20 0 0 1 0.866 8 6 1 0 -1480 0 1 0 19.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1481 0 1 0 20 31.1769 20 0 0 1 0.866 8 6 1 0 -1482 0 1 0 20.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1483 0 1 0 21 31.1769 20 0 0 1 0.866 8 6 1 0 -1484 0 1 0 21.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1485 0 1 0 22 31.1769 20 0 0 1 0.866 8 6 1 0 -1486 0 1 0 22.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1487 0 1 0 23 31.1769 20 0 0 1 0.866 8 6 1 0 -1488 0 1 0 23.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1489 0 1 0 24 31.1769 20 0 0 1 0.866 8 6 1 0 -1490 0 1 0 24.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1491 0 1 0 25 31.1769 20 0 0 1 0.866 8 6 1 0 -1492 0 1 0 25.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1493 0 1 0 26 31.1769 20 0 0 1 0.866 8 6 1 0 -1494 0 1 0 26.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1495 0 1 0 27 31.1769 20 0 0 1 0.866 8 6 1 0 -1496 0 1 0 27.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1497 0 1 0 28 31.1769 20 0 0 1 0.866 8 6 1 0 -1498 0 1 0 28.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1499 0 1 0 29 31.1769 20 0 0 1 0.866 8 6 1 0 -1500 0 1 0 29.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1501 0 1 0 30 31.1769 20 0 0 1 0.866 8 6 1 0 -1502 0 1 0 30.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1503 0 1 0 31 31.1769 20 0 0 1 0.866 8 6 1 0 -1504 0 1 0 31.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1505 0 1 0 32 31.1769 20 0 0 1 0.866 8 6 1 0 -1506 0 1 0 32.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1507 0 1 0 33 31.1769 20 0 0 1 0.866 8 6 1 0 -1508 0 1 0 33.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1509 0 1 0 34 31.1769 20 0 0 1 0.866 8 6 1 0 -1510 0 1 0 34.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1511 0 1 0 35 31.1769 20 0 0 1 0.866 8 6 1 0 -1512 0 1 0 35.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1513 0 1 0 36 31.1769 20 0 0 1 0.866 8 6 1 0 -1514 0 1 0 36.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1515 0 1 0 37 31.1769 20 0 0 1 0.866 8 6 1 0 -1516 0 1 0 37.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1517 0 1 0 38 31.1769 20 0 0 1 0.866 8 6 1 0 -1518 0 1 0 38.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1519 0 1 0 39 31.1769 20 0 0 1 0.866 8 6 1 0 -1520 0 1 0 39.5 32.0429 20 0 0 1 0.866 8 6 1 0 -1521 0 1 0 0 32.909 20 0 0 1 0.866 8 6 1 0 -1522 0 1 0 0.5 33.775 20 0 0 1 0.866 8 6 1 0 -1523 0 1 0 1 32.909 20 0 0 1 0.866 8 6 1 0 -1524 0 1 0 1.5 33.775 20 0 0 1 0.866 8 6 1 0 -1525 0 1 0 2 32.909 20 0 0 1 0.866 8 6 1 0 -1526 0 1 0 2.5 33.775 20 0 0 1 0.866 8 6 1 0 -1527 0 1 0 3 32.909 20 0 0 1 0.866 8 6 1 0 -1528 0 1 0 3.5 33.775 20 0 0 1 0.866 8 6 1 0 -1529 0 1 0 4 32.909 20 0 0 1 0.866 8 6 1 0 -1530 0 1 0 4.5 33.775 20 0 0 1 0.866 8 6 1 0 -1531 0 1 0 5 32.909 20 0 0 1 0.866 8 6 1 0 -1532 0 1 0 5.5 33.775 20 0 0 1 0.866 8 6 1 0 -1533 0 1 0 6 32.909 20 0 0 1 0.866 8 6 1 0 -1534 0 1 0 6.5 33.775 20 0 0 1 0.866 8 6 1 0 -1535 0 1 0 7 32.909 20 0 0 1 0.866 8 6 1 0 -1536 0 1 0 7.5 33.775 20 0 0 1 0.866 8 6 1 0 -1537 0 1 0 8 32.909 20 0 0 1 0.866 8 6 1 0 -1538 0 1 0 8.5 33.775 20 0 0 1 0.866 8 6 1 0 -1539 0 1 0 9 32.909 20 0 0 1 0.866 8 6 1 0 -1540 0 1 0 9.5 33.775 20 0 0 1 0.866 8 6 1 0 -1541 0 1 0 10 32.909 20 0 0 1 0.866 8 6 1 0 -1542 0 1 0 10.5 33.775 20 0 0 1 0.866 8 6 1 0 -1543 0 1 0 11 32.909 20 0 0 1 0.866 8 6 1 0 -1544 0 1 0 11.5 33.775 20 0 0 1 0.866 8 6 1 0 -1545 0 1 0 12 32.909 20 0 0 1 0.866 8 6 1 0 -1546 0 1 0 12.5 33.775 20 0 0 1 0.866 8 6 1 0 -1547 0 1 0 13 32.909 20 0 0 1 0.866 8 6 1 0 -1548 0 1 0 13.5 33.775 20 0 0 1 0.866 8 6 1 0 -1549 0 1 0 14 32.909 20 0 0 1 0.866 8 6 1 0 -1550 0 1 0 14.5 33.775 20 0 0 1 0.866 8 6 1 0 -1551 0 1 0 15 32.909 20 0 0 1 0.866 8 6 1 0 -1552 0 1 0 15.5 33.775 20 0 0 1 0.866 8 6 1 0 -1553 0 1 0 16 32.909 20 0 0 1 0.866 8 6 1 0 -1554 0 1 0 16.5 33.775 20 0 0 1 0.866 8 6 1 0 -1555 0 1 0 17 32.909 20 0 0 1 0.866 8 6 1 0 -1556 0 1 0 17.5 33.775 20 0 0 1 0.866 8 6 1 0 -1557 0 1 0 18 32.909 20 0 0 1 0.866 8 6 1 0 -1558 0 1 0 18.5 33.775 20 0 0 1 0.866 8 6 1 0 -1559 0 1 0 19 32.909 20 0 0 1 0.866 8 6 1 0 -1560 0 1 0 19.5 33.775 20 0 0 1 0.866 8 6 1 0 -1561 0 1 0 20 32.909 20 0 0 1 0.866 8 6 1 0 -1562 0 1 0 20.5 33.775 20 0 0 1 0.866 8 6 1 0 -1563 0 1 0 21 32.909 20 0 0 1 0.866 8 6 1 0 -1564 0 1 0 21.5 33.775 20 0 0 1 0.866 8 6 1 0 -1565 0 1 0 22 32.909 20 0 0 1 0.866 8 6 1 0 -1566 0 1 0 22.5 33.775 20 0 0 1 0.866 8 6 1 0 -1567 0 1 0 23 32.909 20 0 0 1 0.866 8 6 1 0 -1568 0 1 0 23.5 33.775 20 0 0 1 0.866 8 6 1 0 -1569 0 1 0 24 32.909 20 0 0 1 0.866 8 6 1 0 -1570 0 1 0 24.5 33.775 20 0 0 1 0.866 8 6 1 0 -1571 0 1 0 25 32.909 20 0 0 1 0.866 8 6 1 0 -1572 0 1 0 25.5 33.775 20 0 0 1 0.866 8 6 1 0 -1573 0 1 0 26 32.909 20 0 0 1 0.866 8 6 1 0 -1574 0 1 0 26.5 33.775 20 0 0 1 0.866 8 6 1 0 -1575 0 1 0 27 32.909 20 0 0 1 0.866 8 6 1 0 -1576 0 1 0 27.5 33.775 20 0 0 1 0.866 8 6 1 0 -1577 0 1 0 28 32.909 20 0 0 1 0.866 8 6 1 0 -1578 0 1 0 28.5 33.775 20 0 0 1 0.866 8 6 1 0 -1579 0 1 0 29 32.909 20 0 0 1 0.866 8 6 1 0 -1580 0 1 0 29.5 33.775 20 0 0 1 0.866 8 6 1 0 -1581 0 1 0 30 32.909 20 0 0 1 0.866 8 6 1 0 -1582 0 1 0 30.5 33.775 20 0 0 1 0.866 8 6 1 0 -1583 0 1 0 31 32.909 20 0 0 1 0.866 8 6 1 0 -1584 0 1 0 31.5 33.775 20 0 0 1 0.866 8 6 1 0 -1585 0 1 0 32 32.909 20 0 0 1 0.866 8 6 1 0 -1586 0 1 0 32.5 33.775 20 0 0 1 0.866 8 6 1 0 -1587 0 1 0 33 32.909 20 0 0 1 0.866 8 6 1 0 -1588 0 1 0 33.5 33.775 20 0 0 1 0.866 8 6 1 0 -1589 0 1 0 34 32.909 20 0 0 1 0.866 8 6 1 0 -1590 0 1 0 34.5 33.775 20 0 0 1 0.866 8 6 1 0 -1591 0 1 0 35 32.909 20 0 0 1 0.866 8 6 1 0 -1592 0 1 0 35.5 33.775 20 0 0 1 0.866 8 6 1 0 -1593 0 1 0 36 32.909 20 0 0 1 0.866 8 6 1 0 -1594 0 1 0 36.5 33.775 20 0 0 1 0.866 8 6 1 0 -1595 0 1 0 37 32.909 20 0 0 1 0.866 8 6 1 0 -1596 0 1 0 37.5 33.775 20 0 0 1 0.866 8 6 1 0 -1597 0 1 0 38 32.909 20 0 0 1 0.866 8 6 1 0 -1598 0 1 0 38.5 33.775 20 0 0 1 0.866 8 6 1 0 -1599 0 1 0 39 32.909 20 0 0 1 0.866 8 6 1 0 -1600 0 1 0 39.5 33.775 20 0 0 1 0.866 8 6 1 0 -1601 0 1 0 0 34.641 20 0 0 1 0.866 8 6 1 0 -1602 0 1 0 0.5 35.507 20 0 0 1 0.866 8 6 1 0 -1603 0 1 0 1 34.641 20 0 0 1 0.866 8 6 1 0 -1604 0 1 0 1.5 35.507 20 0 0 1 0.866 8 6 1 0 -1605 0 1 0 2 34.641 20 0 0 1 0.866 8 6 1 0 -1606 0 1 0 2.5 35.507 20 0 0 1 0.866 8 6 1 0 -1607 0 1 0 3 34.641 20 0 0 1 0.866 8 6 1 0 -1608 0 1 0 3.5 35.507 20 0 0 1 0.866 8 6 1 0 -1609 0 1 0 4 34.641 20 0 0 1 0.866 8 6 1 0 -1610 0 1 0 4.5 35.507 20 0 0 1 0.866 8 6 1 0 -1611 0 1 0 5 34.641 20 0 0 1 0.866 8 6 1 0 -1612 0 1 0 5.5 35.507 20 0 0 1 0.866 8 6 1 0 -1613 0 1 0 6 34.641 20 0 0 1 0.866 8 6 1 0 -1614 0 1 0 6.5 35.507 20 0 0 1 0.866 8 6 1 0 -1615 0 1 0 7 34.641 20 0 0 1 0.866 8 6 1 0 -1616 0 1 0 7.5 35.507 20 0 0 1 0.866 8 6 1 0 -1617 0 1 0 8 34.641 20 0 0 1 0.866 8 6 1 0 -1618 0 1 0 8.5 35.507 20 0 0 1 0.866 8 6 1 0 -1619 0 1 0 9 34.641 20 0 0 1 0.866 8 6 1 0 -1620 0 1 0 9.5 35.507 20 0 0 1 0.866 8 6 1 0 -1621 0 1 0 10 34.641 20 0 0 1 0.866 8 6 1 0 -1622 0 1 0 10.5 35.507 20 0 0 1 0.866 8 6 1 0 -1623 0 1 0 11 34.641 20 0 0 1 0.866 8 6 1 0 -1624 0 1 0 11.5 35.507 20 0 0 1 0.866 8 6 1 0 -1625 0 1 0 12 34.641 20 0 0 1 0.866 8 6 1 0 -1626 0 1 0 12.5 35.507 20 0 0 1 0.866 8 6 1 0 -1627 0 1 0 13 34.641 20 0 0 1 0.866 8 6 1 0 -1628 0 1 0 13.5 35.507 20 0 0 1 0.866 8 6 1 0 -1629 0 1 0 14 34.641 20 0 0 1 0.866 8 6 1 0 -1630 0 1 0 14.5 35.507 20 0 0 1 0.866 8 6 1 0 -1631 0 1 0 15 34.641 20 0 0 1 0.866 8 6 1 0 -1632 0 1 0 15.5 35.507 20 0 0 1 0.866 8 6 1 0 -1633 0 1 0 16 34.641 20 0 0 1 0.866 8 6 1 0 -1634 0 1 0 16.5 35.507 20 0 0 1 0.866 8 6 1 0 -1635 0 1 0 17 34.641 20 0 0 1 0.866 8 6 1 0 -1636 0 1 0 17.5 35.507 20 0 0 1 0.866 8 6 1 0 -1637 0 1 0 18 34.641 20 0 0 1 0.866 8 6 1 0 -1638 0 1 0 18.5 35.507 20 0 0 1 0.866 8 6 1 0 -1639 0 1 0 19 34.641 20 0 0 1 0.866 8 6 1 0 -1640 0 1 0 19.5 35.507 20 0 0 1 0.866 8 6 1 0 -1641 0 1 0 20 34.641 20 0 0 1 0.866 8 6 1 0 -1642 0 1 0 20.5 35.507 20 0 0 1 0.866 8 6 1 0 -1643 0 1 0 21 34.641 20 0 0 1 0.866 8 6 1 0 -1644 0 1 0 21.5 35.507 20 0 0 1 0.866 8 6 1 0 -1645 0 1 0 22 34.641 20 0 0 1 0.866 8 6 1 0 -1646 0 1 0 22.5 35.507 20 0 0 1 0.866 8 6 1 0 -1647 0 1 0 23 34.641 20 0 0 1 0.866 8 6 1 0 -1648 0 1 0 23.5 35.507 20 0 0 1 0.866 8 6 1 0 -1649 0 1 0 24 34.641 20 0 0 1 0.866 8 6 1 0 -1650 0 1 0 24.5 35.507 20 0 0 1 0.866 8 6 1 0 -1651 0 1 0 25 34.641 20 0 0 1 0.866 8 6 1 0 -1652 0 1 0 25.5 35.507 20 0 0 1 0.866 8 6 1 0 -1653 0 1 0 26 34.641 20 0 0 1 0.866 8 6 1 0 -1654 0 1 0 26.5 35.507 20 0 0 1 0.866 8 6 1 0 -1655 0 1 0 27 34.641 20 0 0 1 0.866 8 6 1 0 -1656 0 1 0 27.5 35.507 20 0 0 1 0.866 8 6 1 0 -1657 0 1 0 28 34.641 20 0 0 1 0.866 8 6 1 0 -1658 0 1 0 28.5 35.507 20 0 0 1 0.866 8 6 1 0 -1659 0 1 0 29 34.641 20 0 0 1 0.866 8 6 1 0 -1660 0 1 0 29.5 35.507 20 0 0 1 0.866 8 6 1 0 -1661 0 1 0 30 34.641 20 0 0 1 0.866 8 6 1 0 -1662 0 1 0 30.5 35.507 20 0 0 1 0.866 8 6 1 0 -1663 0 1 0 31 34.641 20 0 0 1 0.866 8 6 1 0 -1664 0 1 0 31.5 35.507 20 0 0 1 0.866 8 6 1 0 -1665 0 1 0 32 34.641 20 0 0 1 0.866 8 6 1 0 -1666 0 1 0 32.5 35.507 20 0 0 1 0.866 8 6 1 0 -1667 0 1 0 33 34.641 20 0 0 1 0.866 8 6 1 0 -1668 0 1 0 33.5 35.507 20 0 0 1 0.866 8 6 1 0 -1669 0 1 0 34 34.641 20 0 0 1 0.866 8 6 1 0 -1670 0 1 0 34.5 35.507 20 0 0 1 0.866 8 6 1 0 -1671 0 1 0 35 34.641 20 0 0 1 0.866 8 6 1 0 -1672 0 1 0 35.5 35.507 20 0 0 1 0.866 8 6 1 0 -1673 0 1 0 36 34.641 20 0 0 1 0.866 8 6 1 0 -1674 0 1 0 36.5 35.507 20 0 0 1 0.866 8 6 1 0 -1675 0 1 0 37 34.641 20 0 0 1 0.866 8 6 1 0 -1676 0 1 0 37.5 35.507 20 0 0 1 0.866 8 6 1 0 -1677 0 1 0 38 34.641 20 0 0 1 0.866 8 6 1 0 -1678 0 1 0 38.5 35.507 20 0 0 1 0.866 8 6 1 0 -1679 0 1 0 39 34.641 20 0 0 1 0.866 8 6 1 0 -1680 0 1 0 39.5 35.507 20 0 0 1 0.866 8 6 1 0 -1681 0 1 0 0 36.3731 20 0 0 1 0.866 8 6 1 0 -1682 0 1 0 0.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1683 0 1 0 1 36.3731 20 0 0 1 0.866 8 6 1 0 -1684 0 1 0 1.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1685 0 1 0 2 36.3731 20 0 0 1 0.866 8 6 1 0 -1686 0 1 0 2.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1687 0 1 0 3 36.3731 20 0 0 1 0.866 8 6 1 0 -1688 0 1 0 3.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1689 0 1 0 4 36.3731 20 0 0 1 0.866 8 6 1 0 -1690 0 1 0 4.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1691 0 1 0 5 36.3731 20 0 0 1 0.866 8 6 1 0 -1692 0 1 0 5.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1693 0 1 0 6 36.3731 20 0 0 1 0.866 8 6 1 0 -1694 0 1 0 6.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1695 0 1 0 7 36.3731 20 0 0 1 0.866 8 6 1 0 -1696 0 1 0 7.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1697 0 1 0 8 36.3731 20 0 0 1 0.866 8 6 1 0 -1698 0 1 0 8.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1699 0 1 0 9 36.3731 20 0 0 1 0.866 8 6 1 0 -1700 0 1 0 9.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1701 0 1 0 10 36.3731 20 0 0 1 0.866 8 6 1 0 -1702 0 1 0 10.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1703 0 1 0 11 36.3731 20 0 0 1 0.866 8 6 1 0 -1704 0 1 0 11.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1705 0 1 0 12 36.3731 20 0 0 1 0.866 8 6 1 0 -1706 0 1 0 12.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1707 0 1 0 13 36.3731 20 0 0 1 0.866 8 6 1 0 -1708 0 1 0 13.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1709 0 1 0 14 36.3731 20 0 0 1 0.866 8 6 1 0 -1710 0 1 0 14.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1711 0 1 0 15 36.3731 20 0 0 1 0.866 8 6 1 0 -1712 0 1 0 15.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1713 0 1 0 16 36.3731 20 0 0 1 0.866 8 6 1 0 -1714 0 1 0 16.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1715 0 1 0 17 36.3731 20 0 0 1 0.866 8 6 1 0 -1716 0 1 0 17.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1717 0 1 0 18 36.3731 20 0 0 1 0.866 8 6 1 0 -1718 0 1 0 18.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1719 0 1 0 19 36.3731 20 0 0 1 0.866 8 6 1 0 -1720 0 1 0 19.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1721 0 1 0 20 36.3731 20 0 0 1 0.866 8 6 1 0 -1722 0 1 0 20.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1723 0 1 0 21 36.3731 20 0 0 1 0.866 8 6 1 0 -1724 0 1 0 21.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1725 0 1 0 22 36.3731 20 0 0 1 0.866 8 6 1 0 -1726 0 1 0 22.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1727 0 1 0 23 36.3731 20 0 0 1 0.866 8 6 1 0 -1728 0 1 0 23.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1729 0 1 0 24 36.3731 20 0 0 1 0.866 8 6 1 0 -1730 0 1 0 24.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1731 0 1 0 25 36.3731 20 0 0 1 0.866 8 6 1 0 -1732 0 1 0 25.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1733 0 1 0 26 36.3731 20 0 0 1 0.866 8 6 1 0 -1734 0 1 0 26.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1735 0 1 0 27 36.3731 20 0 0 1 0.866 8 6 1 0 -1736 0 1 0 27.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1737 0 1 0 28 36.3731 20 0 0 1 0.866 8 6 1 0 -1738 0 1 0 28.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1739 0 1 0 29 36.3731 20 0 0 1 0.866 8 6 1 0 -1740 0 1 0 29.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1741 0 1 0 30 36.3731 20 0 0 1 0.866 8 6 1 0 -1742 0 1 0 30.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1743 0 1 0 31 36.3731 20 0 0 1 0.866 8 6 1 0 -1744 0 1 0 31.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1745 0 1 0 32 36.3731 20 0 0 1 0.866 8 6 1 0 -1746 0 1 0 32.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1747 0 1 0 33 36.3731 20 0 0 1 0.866 8 6 1 0 -1748 0 1 0 33.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1749 0 1 0 34 36.3731 20 0 0 1 0.866 8 6 1 0 -1750 0 1 0 34.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1751 0 1 0 35 36.3731 20 0 0 1 0.866 8 6 1 0 -1752 0 1 0 35.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1753 0 1 0 36 36.3731 20 0 0 1 0.866 8 6 1 0 -1754 0 1 0 36.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1755 0 1 0 37 36.3731 20 0 0 1 0.866 8 6 1 0 -1756 0 1 0 37.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1757 0 1 0 38 36.3731 20 0 0 1 0.866 8 6 1 0 -1758 0 1 0 38.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1759 0 1 0 39 36.3731 20 0 0 1 0.866 8 6 1 0 -1760 0 1 0 39.5 37.2391 20 0 0 1 0.866 8 6 1 0 -1761 0 1 0 0 38.1051 20 0 0 1 0.866 8 6 1 0 -1762 0 1 0 0.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1763 0 1 0 1 38.1051 20 0 0 1 0.866 8 6 1 0 -1764 0 1 0 1.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1765 0 1 0 2 38.1051 20 0 0 1 0.866 8 6 1 0 -1766 0 1 0 2.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1767 0 1 0 3 38.1051 20 0 0 1 0.866 8 6 1 0 -1768 0 1 0 3.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1769 0 1 0 4 38.1051 20 0 0 1 0.866 8 6 1 0 -1770 0 1 0 4.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1771 0 1 0 5 38.1051 20 0 0 1 0.866 8 6 1 0 -1772 0 1 0 5.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1773 0 1 0 6 38.1051 20 0 0 1 0.866 8 6 1 0 -1774 0 1 0 6.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1775 0 1 0 7 38.1051 20 0 0 1 0.866 8 6 1 0 -1776 0 1 0 7.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1777 0 1 0 8 38.1051 20 0 0 1 0.866 8 6 1 0 -1778 0 1 0 8.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1779 0 1 0 9 38.1051 20 0 0 1 0.866 8 6 1 0 -1780 0 1 0 9.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1781 0 1 0 10 38.1051 20 0 0 1 0.866 8 6 1 0 -1782 0 1 0 10.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1783 0 1 0 11 38.1051 20 0 0 1 0.866 8 6 1 0 -1784 0 1 0 11.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1785 0 1 0 12 38.1051 20 0 0 1 0.866 8 6 1 0 -1786 0 1 0 12.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1787 0 1 0 13 38.1051 20 0 0 1 0.866 8 6 1 0 -1788 0 1 0 13.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1789 0 1 0 14 38.1051 20 0 0 1 0.866 8 6 1 0 -1790 0 1 0 14.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1791 0 1 0 15 38.1051 20 0 0 1 0.866 8 6 1 0 -1792 0 1 0 15.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1793 0 1 0 16 38.1051 20 0 0 1 0.866 8 6 1 0 -1794 0 1 0 16.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1795 0 1 0 17 38.1051 20 0 0 1 0.866 8 6 1 0 -1796 0 1 0 17.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1797 0 1 0 18 38.1051 20 0 0 1 0.866 8 6 1 0 -1798 0 1 0 18.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1799 0 1 0 19 38.1051 20 0 0 1 0.866 8 6 1 0 -1800 0 1 0 19.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1801 0 1 0 20 38.1051 20 0 0 1 0.866 8 6 1 0 -1802 0 1 0 20.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1803 0 1 0 21 38.1051 20 0 0 1 0.866 8 6 1 0 -1804 0 1 0 21.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1805 0 1 0 22 38.1051 20 0 0 1 0.866 8 6 1 0 -1806 0 1 0 22.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1807 0 1 0 23 38.1051 20 0 0 1 0.866 8 6 1 0 -1808 0 1 0 23.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1809 0 1 0 24 38.1051 20 0 0 1 0.866 8 6 1 0 -1810 0 1 0 24.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1811 0 1 0 25 38.1051 20 0 0 1 0.866 8 6 1 0 -1812 0 1 0 25.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1813 0 1 0 26 38.1051 20 0 0 1 0.866 8 6 1 0 -1814 0 1 0 26.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1815 0 1 0 27 38.1051 20 0 0 1 0.866 8 6 1 0 -1816 0 1 0 27.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1817 0 1 0 28 38.1051 20 0 0 1 0.866 8 6 1 0 -1818 0 1 0 28.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1819 0 1 0 29 38.1051 20 0 0 1 0.866 8 6 1 0 -1820 0 1 0 29.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1821 0 1 0 30 38.1051 20 0 0 1 0.866 8 6 1 0 -1822 0 1 0 30.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1823 0 1 0 31 38.1051 20 0 0 1 0.866 8 6 1 0 -1824 0 1 0 31.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1825 0 1 0 32 38.1051 20 0 0 1 0.866 8 6 1 0 -1826 0 1 0 32.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1827 0 1 0 33 38.1051 20 0 0 1 0.866 8 6 1 0 -1828 0 1 0 33.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1829 0 1 0 34 38.1051 20 0 0 1 0.866 8 6 1 0 -1830 0 1 0 34.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1831 0 1 0 35 38.1051 20 0 0 1 0.866 8 6 1 0 -1832 0 1 0 35.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1833 0 1 0 36 38.1051 20 0 0 1 0.866 8 6 1 0 -1834 0 1 0 36.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1835 0 1 0 37 38.1051 20 0 0 1 0.866 8 6 1 0 -1836 0 1 0 37.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1837 0 1 0 38 38.1051 20 0 0 1 0.866 8 6 1 0 -1838 0 1 0 38.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1839 0 1 0 39 38.1051 20 0 0 1 0.866 8 6 1 0 -1840 0 1 0 39.5 38.9711 20 0 0 1 0.866 8 6 1 0 -1841 0 1 0 0 39.8372 20 0 0 1 0.866 8 6 1 0 -1842 0 1 0 0.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1843 0 1 0 1 39.8372 20 0 0 1 0.866 8 6 1 0 -1844 0 1 0 1.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1845 0 1 0 2 39.8372 20 0 0 1 0.866 8 6 1 0 -1846 0 1 0 2.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1847 0 1 0 3 39.8372 20 0 0 1 0.866 8 6 1 0 -1848 0 1 0 3.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1849 0 1 0 4 39.8372 20 0 0 1 0.866 8 6 1 0 -1850 0 1 0 4.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1851 0 1 0 5 39.8372 20 0 0 1 0.866 8 6 1 0 -1852 0 1 0 5.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1853 0 1 0 6 39.8372 20 0 0 1 0.866 8 6 1 0 -1854 0 1 0 6.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1855 0 1 0 7 39.8372 20 0 0 1 0.866 8 6 1 0 -1856 0 1 0 7.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1857 0 1 0 8 39.8372 20 0 0 1 0.866 8 6 1 0 -1858 0 1 0 8.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1859 0 1 0 9 39.8372 20 0 0 1 0.866 8 6 1 0 -1860 0 1 0 9.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1861 0 1 0 10 39.8372 20 0 0 1 0.866 8 6 1 0 -1862 0 1 0 10.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1863 0 1 0 11 39.8372 20 0 0 1 0.866 8 6 1 0 -1864 0 1 0 11.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1865 0 1 0 12 39.8372 20 0 0 1 0.866 8 6 1 0 -1866 0 1 0 12.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1867 0 1 0 13 39.8372 20 0 0 1 0.866 8 6 1 0 -1868 0 1 0 13.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1869 0 1 0 14 39.8372 20 0 0 1 0.866 8 6 1 0 -1870 0 1 0 14.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1871 0 1 0 15 39.8372 20 0 0 1 0.866 8 6 1 0 -1872 0 1 0 15.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1873 0 1 0 16 39.8372 20 0 0 1 0.866 8 6 1 0 -1874 0 1 0 16.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1875 0 1 0 17 39.8372 20 0 0 1 0.866 8 6 1 0 -1876 0 1 0 17.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1877 0 1 0 18 39.8372 20 0 0 1 0.866 8 6 1 0 -1878 0 1 0 18.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1879 0 1 0 19 39.8372 20 0 0 1 0.866 8 6 1 0 -1880 0 1 0 19.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1881 0 1 0 20 39.8372 20 0 0 1 0.866 8 6 1 0 -1882 0 1 0 20.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1883 0 1 0 21 39.8372 20 0 0 1 0.866 8 6 1 0 -1884 0 1 0 21.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1885 0 1 0 22 39.8372 20 0 0 1 0.866 8 6 1 0 -1886 0 1 0 22.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1887 0 1 0 23 39.8372 20 0 0 1 0.866 8 6 1 0 -1888 0 1 0 23.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1889 0 1 0 24 39.8372 20 0 0 1 0.866 8 6 1 0 -1890 0 1 0 24.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1891 0 1 0 25 39.8372 20 0 0 1 0.866 8 6 1 0 -1892 0 1 0 25.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1893 0 1 0 26 39.8372 20 0 0 1 0.866 8 6 1 0 -1894 0 1 0 26.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1895 0 1 0 27 39.8372 20 0 0 1 0.866 8 6 1 0 -1896 0 1 0 27.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1897 0 1 0 28 39.8372 20 0 0 1 0.866 8 6 1 0 -1898 0 1 0 28.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1899 0 1 0 29 39.8372 20 0 0 1 0.866 8 6 1 0 -1900 0 1 0 29.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1901 0 1 0 30 39.8372 20 0 0 1 0.866 8 6 1 0 -1902 0 1 0 30.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1903 0 1 0 31 39.8372 20 0 0 1 0.866 8 6 1 0 -1904 0 1 0 31.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1905 0 1 0 32 39.8372 20 0 0 1 0.866 8 6 1 0 -1906 0 1 0 32.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1907 0 1 0 33 39.8372 20 0 0 1 0.866 8 6 1 0 -1908 0 1 0 33.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1909 0 1 0 34 39.8372 20 0 0 1 0.866 8 6 1 0 -1910 0 1 0 34.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1911 0 1 0 35 39.8372 20 0 0 1 0.866 8 6 1 0 -1912 0 1 0 35.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1913 0 1 0 36 39.8372 20 0 0 1 0.866 8 6 1 0 -1914 0 1 0 36.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1915 0 1 0 37 39.8372 20 0 0 1 0.866 8 6 1 0 -1916 0 1 0 37.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1917 0 1 0 38 39.8372 20 0 0 1 0.866 8 6 1 0 -1918 0 1 0 38.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1919 0 1 0 39 39.8372 20 0 0 1 0.866 8 6 1 0 -1920 0 1 0 39.5 40.7032 20 0 0 1 0.866 8 6 1 0 -1921 0 1 0 0 41.5692 20 0 0 1 0.866 8 6 1 0 -1922 0 1 0 0.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1923 0 1 0 1 41.5692 20 0 0 1 0.866 8 6 1 0 -1924 0 1 0 1.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1925 0 1 0 2 41.5692 20 0 0 1 0.866 8 6 1 0 -1926 0 1 0 2.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1927 0 1 0 3 41.5692 20 0 0 1 0.866 8 6 1 0 -1928 0 1 0 3.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1929 0 1 0 4 41.5692 20 0 0 1 0.866 8 6 1 0 -1930 0 1 0 4.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1931 0 1 0 5 41.5692 20 0 0 1 0.866 8 6 1 0 -1932 0 1 0 5.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1933 0 1 0 6 41.5692 20 0 0 1 0.866 8 6 1 0 -1934 0 1 0 6.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1935 0 1 0 7 41.5692 20 0 0 1 0.866 8 6 1 0 -1936 0 1 0 7.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1937 0 1 0 8 41.5692 20 0 0 1 0.866 8 6 1 0 -1938 0 1 0 8.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1939 0 1 0 9 41.5692 20 0 0 1 0.866 8 6 1 0 -1940 0 1 0 9.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1941 0 1 0 10 41.5692 20 0 0 1 0.866 8 6 1 0 -1942 0 1 0 10.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1943 0 1 0 11 41.5692 20 0 0 1 0.866 8 6 1 0 -1944 0 1 0 11.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1945 0 1 0 12 41.5692 20 0 0 1 0.866 8 6 1 0 -1946 0 1 0 12.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1947 0 1 0 13 41.5692 20 0 0 1 0.866 8 6 1 0 -1948 0 1 0 13.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1949 0 1 0 14 41.5692 20 0 0 1 0.866 8 6 1 0 -1950 0 1 0 14.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1951 0 1 0 15 41.5692 20 0 0 1 0.866 8 6 1 0 -1952 0 1 0 15.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1953 0 1 0 16 41.5692 20 0 0 1 0.866 8 6 1 0 -1954 0 1 0 16.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1955 0 1 0 17 41.5692 20 0 0 1 0.866 8 6 1 0 -1956 0 1 0 17.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1957 0 1 0 18 41.5692 20 0 0 1 0.866 8 6 1 0 -1958 0 1 0 18.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1959 0 1 0 19 41.5692 20 0 0 1 0.866 8 6 1 0 -1960 0 1 0 19.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1961 0 1 0 20 41.5692 20 0 0 1 0.866 8 6 1 0 -1962 0 1 0 20.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1963 0 1 0 21 41.5692 20 0 0 1 0.866 8 6 1 0 -1964 0 1 0 21.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1965 0 1 0 22 41.5692 20 0 0 1 0.866 8 6 1 0 -1966 0 1 0 22.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1967 0 1 0 23 41.5692 20 0 0 1 0.866 8 6 1 0 -1968 0 1 0 23.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1969 0 1 0 24 41.5692 20 0 0 1 0.866 8 6 1 0 -1970 0 1 0 24.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1971 0 1 0 25 41.5692 20 0 0 1 0.866 8 6 1 0 -1972 0 1 0 25.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1973 0 1 0 26 41.5692 20 0 0 1 0.866 8 6 1 0 -1974 0 1 0 26.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1975 0 1 0 27 41.5692 20 0 0 1 0.866 8 6 1 0 -1976 0 1 0 27.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1977 0 1 0 28 41.5692 20 0 0 1 0.866 8 6 1 0 -1978 0 1 0 28.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1979 0 1 0 29 41.5692 20 0 0 1 0.866 8 6 1 0 -1980 0 1 0 29.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1981 0 1 0 30 41.5692 20 0 0 1 0.866 8 6 1 0 -1982 0 1 0 30.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1983 0 1 0 31 41.5692 20 0 0 1 0.866 8 6 1 0 -1984 0 1 0 31.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1985 0 1 0 32 41.5692 20 0 0 1 0.866 8 6 1 0 -1986 0 1 0 32.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1987 0 1 0 33 41.5692 20 0 0 1 0.866 8 6 1 0 -1988 0 1 0 33.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1989 0 1 0 34 41.5692 20 0 0 1 0.866 8 6 1 0 -1990 0 1 0 34.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1991 0 1 0 35 41.5692 20 0 0 1 0.866 8 6 1 0 -1992 0 1 0 35.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1993 0 1 0 36 41.5692 20 0 0 1 0.866 8 6 1 0 -1994 0 1 0 36.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1995 0 1 0 37 41.5692 20 0 0 1 0.866 8 6 1 0 -1996 0 1 0 37.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1997 0 1 0 38 41.5692 20 0 0 1 0.866 8 6 1 0 -1998 0 1 0 38.5 42.4353 20 0 0 1 0.866 8 6 1 0 -1999 0 1 0 39 41.5692 20 0 0 1 0.866 8 6 1 0 -2000 0 1 0 39.5 42.4353 20 0 0 1 0.866 8 6 1 0 -2001 0 2 1 20 20 22 0 0 1 0.866 8 6 10 0 -2002 0 3 -1 25 20 22 0 0 1 0.866 8 6 10 0 diff --git a/examples/USER/dielectric/in.confined b/examples/USER/dielectric/in.confined index ce3f3c02ff..c9ae6d712a 100644 --- a/examples/USER/dielectric/in.confined +++ b/examples/USER/dielectric/in.confined @@ -14,11 +14,11 @@ units lj atom_style dielectric atom_modify map array dimension 3 -boundary f f f +boundary p p f variable method index gmres # gmres = BEM/GMRES # icc = BEM/ICC* - # dof = Variational + # dof = Direct optimization of the functional # none variable ed equal "v_epsilon2 - v_epsilon1" @@ -41,10 +41,13 @@ set group cations charge ${qscale} variable qscale equal "-1.0 / v_epsilon2" set group anions charge ${qscale} -pair_style lj/cut/coul/cut/dielectric 1.122 20.0 +pair_style lj/cut/coul/long/dielectric 1.122 10.0 pair_coeff * * 1.0 1.0 pair_coeff 1 1 0.0 1.0 +kspace_style pppm/dielectric 0.0001 +kspace_modify slab 3.0 + neigh_modify every 1 delay 0 check yes one 5000 #compute ef all efield/atom diff --git a/examples/USER/dielectric/in.minimal b/examples/USER/dielectric/in.minimal deleted file mode 100644 index beb738d36f..0000000000 --- a/examples/USER/dielectric/in.minimal +++ /dev/null @@ -1,39 +0,0 @@ -# Interface -newton off -units lj -atom_style dielectric -atom_modify map array -dimension 3 -boundary p p f - -read_data data.minimal - -group interface type 1 -group ions type 2 3 - -pair_style coul/long/dielectric 5.0 -#pair_style coul/cut/dielectric 20.0 -pair_coeff * * - -thermo 1000 -thermo_style custom step evdwl ecoul elong epair -thermo_modify flush yes - -#compute ef all efield/atom -dump 1 all custom 100 dump.txt id type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] - -dump_modify 1 sort id - -fix 1 ions nve - -fix 3 interface polarize/bem/icc 1 1.0e-4 - -kspace_style pppm/dielectric 0.0001 -kspace_modify slab 3.0 - -velocity all create 1.0 2947942 mom yes dist gaussian - -run 0 - - - diff --git a/examples/USER/dielectric/in.nopbc b/examples/USER/dielectric/in.nopbc index cf669fb686..ada9af2bf5 100644 --- a/examples/USER/dielectric/in.nopbc +++ b/examples/USER/dielectric/in.nopbc @@ -8,25 +8,25 @@ boundary f f f variable method index gmres # gmres = BEM/GMRES # icc = BEM/ICC* - # dof = Variational + # dof = Direct optimization of the functional # none -variable data index data.sphere #data.plane # data.minimal +variable data index data.sphere read_data ${data} group interface type 1 group ions type 2 3 -pair_style lj/cut/coul/cut/dielectric 50.0 +pair_style lj/cut/coul/cut/dielectric 1.122 20.0 pair_coeff * * 1.0 1.0 pair_coeff 1 1 0.0 1.0 neigh_modify one 5000 #compute ef all efield/atom -dump 1 all custom 100 all.dump id mol type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] -dump 2 interface custom 100 interface.dump id mol type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] +dump 1 all custom 100 all.dump id mol type q x y z #c_ef[1] c_ef[2] c_ef[3] +dump 2 interface custom 100 interface.dump id mol type q x y z #c_ef[1] c_ef[2] c_ef[3] dump_modify 1 sort id @@ -42,7 +42,7 @@ else & "print 'Unsupported method for polarization' " thermo 1000 -thermo_style custom step evdwl ecoul elong epair #f_3 +thermo_style custom step evdwl ecoul elong epair thermo_modify flush yes run 0 diff --git a/examples/USER/dielectric/in.pbc b/examples/USER/dielectric/in.pbc deleted file mode 100644 index da5c35f477..0000000000 --- a/examples/USER/dielectric/in.pbc +++ /dev/null @@ -1,54 +0,0 @@ -# Interface -newton off -units lj -atom_style dielectric -atom_modify map array -dimension 3 -boundary p p f - -variable method index gmres # gmres = BEM/GMRES - # icc = BEM/ICC* - # dof = Variational - # none - -variable data index data.sphere #data.plane # data.minimal - -read_data ${data} - -group interface type 1 -group ions type 2 3 - -pair_style lj/cut/coul/long/dielectric 1.122 10.0 -pair_coeff * * 1.0 1.0 -pair_coeff 1 1 0.0 1.0 - -kspace_style pppm/dielectric 0.0001 -kspace_modify slab 3.0 - -neigh_modify every 1 delay 0 check yes one 5000 - -#compute ef all efield/atom -dump 1 all custom 100 all.dump id mol type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] -dump 2 interface custom 100 interface.dump id mol type q x y z #fx fy fz c_ef[1] c_ef[2] c_ef[3] - -dump_modify 1 sort id - -fix 1 ions nve - -if "${method} == gmres" then & - "fix 3 interface polarize/bem/gmres 1 1.0e-4" & -elif "${method} == icc"& - "fix 3 interface polarize/bem/icc 1 1.0e-4 itr_max 50" & -elif "${method} == dof" & - "fix 3 interface polarize/functional 1 0.0001" & -else & - "print 'Unsupported method for polarization' " - -thermo 100 -thermo_style custom step evdwl ecoul elong epair cpu -thermo_modify flush yes - -run 0 - - - From 249a2a6783f286716160f7fd3e8bf633e6b0596c Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 2 Jun 2021 13:09:52 -0400 Subject: [PATCH 35/80] Sync copies of pizza --- python/examples/pizza/dump.py | 76 ++-- python/examples/pizza/gnu.py | 48 +-- python/examples/pizza/pdbfile.py | 28 +- tools/python/pizza/dump.py | 684 +++++++++++++------------------ tools/python/pizza/gnu.py | 47 ++- tools/python/pizza/pdbfile.py | 46 ++- 6 files changed, 424 insertions(+), 505 deletions(-) diff --git a/python/examples/pizza/dump.py b/python/examples/pizza/dump.py index 443ced1949..5c7fab33ae 100644 --- a/python/examples/pizza/dump.py +++ b/python/examples/pizza/dump.py @@ -3,7 +3,7 @@ # # Copyright (2005) 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 +# certain rights in this software. This software is distributed under # the GNU General Public License. # for python3 compatibility @@ -35,7 +35,7 @@ time = d.next() read next snapshot from dump files d.map(1,"id",3,"x") assign names to atom columns (1-N) not needed if dump file is self-describing - + d.tselect.all() select all timesteps d.tselect.one(N) select only timestep N d.tselect.none() deselect all timesteps @@ -227,7 +227,7 @@ class dump: for word in words: self.flist += glob.glob(word) if len(self.flist) == 0 and len(list) == 1: raise Exception("no dump file specified") - + if len(list) == 1: self.increment = 0 self.read_all() @@ -270,7 +270,7 @@ class dump: self.tselect.all() # set default names for atom columns if file wasn't self-describing - + if len(self.snaps) == 0: print("no column assignments made") elif len(self.names): @@ -341,7 +341,7 @@ class dump: # return snapshot or 0 if failed # assign column names if not already done and file is self-describing # convert xs,xu to x - + def read_snapshot(self,f): try: snap = Snap() @@ -414,7 +414,7 @@ class dump: # -------------------------------------------------------------------- # map atom column names - + def map(self,*pairs): if len(pairs) % 2 != 0: raise Exception("dump map() requires pairs of mappings") @@ -492,7 +492,7 @@ class dump: atoms[:,x] = snap.xlo + atoms[:,x]*xprd atoms[:,y] = snap.ylo + atoms[:,y]*yprd atoms[:,z] = snap.zlo + atoms[:,z]*zprd - + # -------------------------------------------------------------------- # wrap coords from outside box to inside @@ -505,7 +505,7 @@ class dump: ix = self.names["ix"] iy = self.names["iy"] iz = self.names["iz"] - + for snap in self.snaps: xprd = snap.xhi - snap.xlo yprd = snap.yhi - snap.ylo @@ -527,7 +527,7 @@ class dump: ix = self.names["ix"] iy = self.names["iy"] iz = self.names["iz"] - + for snap in self.snaps: xprd = snap.xhi - snap.xlo yprd = snap.yhi - snap.ylo @@ -542,7 +542,7 @@ class dump: def owrap(self,other): print("Wrapping to other ...") - + id = self.names["id"] x = self.names["x"] y = self.names["y"] @@ -551,7 +551,7 @@ class dump: iy = self.names["iy"] iz = self.names["iz"] iother = self.names[other] - + for snap in self.snaps: xprd = snap.xhi - snap.xlo yprd = snap.yhi - snap.ylo @@ -568,7 +568,7 @@ class dump: # -------------------------------------------------------------------- # convert column names assignment to a string, in column order - + def names2str(self): ncol = len(self.snaps[0].atoms[0]) pairs = self.names.items() @@ -631,7 +631,7 @@ class dump: print(snap.ylo,snap.yhi,file=f) print(snap.zlo,snap.zhi,file=f) print("ITEM: ATOMS",namestr,file=f) - + atoms = snap.atoms nvalues = len(atoms[0]) for i in range(snap.natoms): @@ -655,7 +655,7 @@ class dump: if not snap.tselect: continue print(snap.time,end='') sys.stdout.flush() - + file = root + "." + str(snap.time) f = open(file,"w") print("ITEM: TIMESTEP",file=f) @@ -667,7 +667,7 @@ class dump: print(snap.ylo,snap.yhi,file=f) print(snap.zlo,snap.zhi,file=f) print("ITEM: ATOMS",namestr,file=f) - + atoms = snap.atoms nvalues = len(atoms[0]) for i in range(snap.natoms): @@ -709,7 +709,7 @@ class dump: lhs = list[0][1:] if not self.names.has_key(lhs): self.newcolumn(lhs) - + for item in list: name = item[1:] column = self.names[name] @@ -721,7 +721,7 @@ class dump: if not snap.tselect: continue for i in range(snap.natoms): if snap.aselect[i]: exec(ceq) - + # -------------------------------------------------------------------- # set a column value via an input vec for all selected snapshots/atoms @@ -741,7 +741,7 @@ class dump: if snap.aselect[i]: atoms[i][icol] = vec[m] m += 1 - + # -------------------------------------------------------------------- # clone value in col across selected timesteps for atoms with same ID @@ -807,7 +807,7 @@ class dump: columns.append(self.names[name]) values.append(self.nselect * [0]) ncol = len(columns) - + id = self.names["id"] m = 0 for snap in self.snaps: @@ -823,13 +823,13 @@ class dump: if len(list) == 1: return values[0] else: return values - + # -------------------------------------------------------------------- # extract vector(s) of values for selected atoms at chosen timestep def vecs(self,n,*list): snap = self.snaps[self.findtime(n)] - + if len(list) == 0: raise Exception("no columns specified") columns = [] @@ -884,7 +884,7 @@ class dump: del self.snaps[i] else: i += 1 - + # -------------------------------------------------------------------- # iterate over selected snapshots @@ -896,11 +896,11 @@ class dump: self.iterate = i return i,self.snaps[i].time,1 return 0,0,-1 - + # -------------------------------------------------------------------- # return list of atoms to viz for snapshot isnap # augment with bonds, tris, lines if extra() was invoked - + def viz(self,isnap): snap = self.snaps[isnap] @@ -914,7 +914,7 @@ class dump: # create atom list needed by viz from id,type,x,y,z # need Numeric/Numpy mode here - + atoms = [] for i in range(snap.natoms): if not snap.aselect[i]: continue @@ -948,12 +948,12 @@ class dump: elif self.triflag == 2: timetmp,boxtmp,atomstmp,bondstmp, \ tris,linestmp = self.triobj.viz(time,1) - + lines = [] if self.lineflag: lines = self.linelist return time,box,atoms,bonds,tris,lines - + # -------------------------------------------------------------------- def findtime(self,n): @@ -997,7 +997,7 @@ class dump: def extra(self,arg): # read bonds from bond dump file - + if type(arg) is types.StringType: try: f = open(arg,'r') @@ -1017,7 +1017,7 @@ class dump: f.close() # convert values to int and absolute value since can be negative types - + if oldnumeric: bondlist = np.zeros((nbonds,4),np.Int) else: bondlist = np.zeros((nbonds,4),np.int) ints = [abs(int(value)) for value in words] @@ -1032,9 +1032,9 @@ class dump: self.bondlist = bondlist except: raise Exception("could not read from bond dump file") - + # request bonds from data object - + elif type(arg) is types.InstanceType and ".data" in str(arg.__class__): try: bondlist = [] @@ -1050,7 +1050,7 @@ class dump: raise Exception("could not extract bonds from data object") # request tris/lines from cdata object - + elif type(arg) is types.InstanceType and ".cdata" in str(arg.__class__): try: tmp,tmp,tmp,tmp,tris,lines = arg.viz(0) @@ -1064,7 +1064,7 @@ class dump: raise Exception("could not extract tris/lines from cdata object") # request tris from mdump object - + elif type(arg) is types.InstanceType and ".mdump" in str(arg.__class__): try: self.triflag = 2 @@ -1074,7 +1074,7 @@ class dump: else: raise Exception("unrecognized argument to dump.extra()") - + # -------------------------------------------------------------------- def compare_atom(self,a,b): @@ -1083,7 +1083,7 @@ class dump: elif a[0] > b[0]: return 1 else: - return 0 + return 0 # -------------------------------------------------------------------- # one snapshot @@ -1098,7 +1098,7 @@ class tselect: def __init__(self,data): self.data = data - + # -------------------------------------------------------------------- def all(self): @@ -1145,7 +1145,7 @@ class tselect: data.nselect -= 1 data.aselect.all() print("%d snapshots selected out of %d" % (data.nselect,data.nsnaps)) - + # -------------------------------------------------------------------- def test(self,teststr): @@ -1191,7 +1191,7 @@ class aselect: data = self.data # replace all $var with snap.atoms references and compile test string - + pattern = "\$\w*" list = re.findall(pattern,teststr) for item in list: diff --git a/python/examples/pizza/gnu.py b/python/examples/pizza/gnu.py index 26dc0a5d5a..6e0fc1ee0b 100644 --- a/python/examples/pizza/gnu.py +++ b/python/examples/pizza/gnu.py @@ -3,7 +3,7 @@ # # Copyright (2005) 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 +# certain rights in this software. This software is distributed under # the GNU General Public License. # for python3 compatibility @@ -16,7 +16,7 @@ oneline = "Create plots via GnuPlot plotting program" docstr = """ g = gnu() start up GnuPlot g.stop() shut down GnuPlot process - + g.plot(a) plot vector A against linear index g.plot(a,b) plot B against A g.plot(a,b,c,d,...) plot B against A, D against C, etc @@ -35,14 +35,14 @@ g("plot 'file.dat' using 2:3 with lines") execute string in GnuPlot g.enter() enter GnuPlot shell gnuplot> plot sin(x) with lines type commands directly to GnuPlot gnuplot> exit, quit exit GnuPlot shell - + g.export("data",range(100),a,...) create file with columns of numbers all vectors must be of equal length could plot from file with GnuPlot command: plot 'data' using 1:2 with lines g.select(N) figure N becomes the current plot - + subsequent commands apply to this plot g.hide(N) delete window for figure N @@ -98,7 +98,7 @@ except ImportError: PIZZA_GNUTERM = "x11" # Class definition class gnu: - + # -------------------------------------------------------------------- def __init__(self): @@ -106,7 +106,7 @@ class gnu: self.file = "tmp.gnu" self.figures = [] self.select(1) - + # -------------------------------------------------------------------- def stop(self): @@ -118,7 +118,7 @@ class gnu: def __call__(self,command): self.GNUPLOT.write(command + '\n') self.GNUPLOT.flush() - + # -------------------------------------------------------------------- def enter(self): @@ -159,7 +159,7 @@ class gnu: if i: partial_vecs.append(vec[:i]) else: partial_vecs.append([0]) self.plot(*partial_vecs) - + if n < 10: newfile = file + "000" + str(n) elif n < 100: newfile = file + "00" + str(n) elif n < 1000: newfile = file + "0" + str(n) @@ -167,7 +167,7 @@ class gnu: self.save(newfile) n += 1 - + # -------------------------------------------------------------------- # write list of equal-length vectors to filename @@ -208,7 +208,7 @@ class gnu: # do not continue until plot file is written out # else script could go forward and change data file # use tmp.done as semaphore to indicate plot is finished - + def save(self,file): self.__call__("set terminal postscript enhanced solid lw 2 color portrait") cmd = "set output '%s.eps'" % file @@ -219,7 +219,7 @@ class gnu: while not os.path.exists("tmp.done"): continue self.__call__("set output") self.select(self.current) - + # -------------------------------------------------------------------- # restore default attributes by creating a new fig object @@ -228,7 +228,7 @@ class gnu: fig.ncurves = self.figures[self.current-1].ncurves self.figures[self.current-1] = fig self.draw() - + # -------------------------------------------------------------------- def aspect(self,value): @@ -252,12 +252,12 @@ class gnu: else: self.figures[self.current-1].ylimit = (values[0],values[1]) self.draw() - + # -------------------------------------------------------------------- def label(self,x,y,text): self.figures[self.current-1].labels.append((x,y,text)) - self.figures[self.current-1].nlabels += 1 + self.figures[self.current-1].nlabels += 1 self.draw() # -------------------------------------------------------------------- @@ -266,7 +266,7 @@ class gnu: self.figures[self.current-1].nlabel = 0 self.figures[self.current-1].labels = [] self.draw() - + # -------------------------------------------------------------------- def title(self,*strings): @@ -283,13 +283,13 @@ class gnu: def xtitle(self,label): self.figures[self.current-1].xtitle = label self.draw() - + # -------------------------------------------------------------------- def ytitle(self,label): self.figures[self.current-1].ytitle = label self.draw() - + # -------------------------------------------------------------------- def xlog(self): @@ -298,7 +298,7 @@ class gnu: else: self.figures[self.current-1].xlog = 1 self.draw() - + # -------------------------------------------------------------------- def ylog(self): @@ -307,7 +307,7 @@ class gnu: else: self.figures[self.current-1].ylog = 1 self.draw() - + # -------------------------------------------------------------------- def curve(self,num,color): @@ -323,10 +323,10 @@ class gnu: def draw(self): fig = self.figures[self.current-1] if not fig.ncurves: return - + cmd = 'set size ratio ' + str(1.0/float(fig.aspect)) self.__call__(cmd) - + cmd = 'set title ' + '"' + fig.title + '"' self.__call__(cmd) cmd = 'set xlabel ' + '"' + fig.xtitle + '"' @@ -338,11 +338,11 @@ class gnu: else: self.__call__("unset logscale x") if fig.ylog: self.__call__("set logscale y") else: self.__call__("unset logscale y") - if fig.xlimit: + if fig.xlimit: cmd = 'set xr [' + str(fig.xlimit[0]) + ':' + str(fig.xlimit[1]) + ']' self.__call__(cmd) else: self.__call__("set xr [*:*]") - if fig.ylimit: + if fig.ylimit: cmd = 'set yr [' + str(fig.ylimit[0]) + ':' + str(fig.ylimit[1]) + ']' self.__call__(cmd) else: self.__call__("set yr [*:*]") @@ -372,7 +372,7 @@ class figure: def __init__(self): self.ncurves = 0 - self.colors = [] + self.colors = [] self.title = "" self.xtitle = "" self.ytitle = "" diff --git a/python/examples/pizza/pdbfile.py b/python/examples/pizza/pdbfile.py index 64e77db75f..efdf32fab1 100644 --- a/python/examples/pizza/pdbfile.py +++ b/python/examples/pizza/pdbfile.py @@ -3,7 +3,7 @@ # # Copyright (2005) 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 +# certain rights in this software. This software is distributed under # the GNU General Public License. # for python3 compatibility @@ -25,7 +25,7 @@ p = pdbfile("3CRO",d) read in single PDB file with snapshot data if only one 4-char file specified and it is not found, it will be downloaded from http://www.rcsb.org as 3CRO.pdb d arg is object with atom coordinates (dump, data) - + p.one() write all output as one big PDB file to tmp.pdb p.one("mine") write to mine.pdb p.many() write one PDB file per snapshot: tmp0000.pdb, ... @@ -39,7 +39,7 @@ p.single(N,"new") write as new.pdb if one file in str arg and d: one new PDB file per snapshot using input PDB file as template multiple input PDB files with a d is not allowed - + index,time,flag = p.iterator(0) index,time,flag = p.iterator(1) @@ -97,7 +97,7 @@ class pdbfile: # flist = full list of all PDB input file names # append .pdb if needed - + if filestr: list = filestr.split() flist = [] @@ -117,7 +117,7 @@ class pdbfile: raise Exception("no input PDB file(s)") # grab PDB file from http://rcsb.org if not a local file - + if len(self.files) == 1 and len(self.files[0]) == 8: try: open(self.files[0],'r').close() @@ -127,7 +127,7 @@ class pdbfile: urllib.urlretrieve(fetchstr,self.files[0]) if self.data and len(self.files): self.read_template(self.files[0]) - + # -------------------------------------------------------------------- # write a single large PDB file for concatenating all input data or files # if data exists: @@ -145,7 +145,7 @@ class pdbfile: f = open(file,'w') # use template PDB file with each snapshot - + if self.data: n = flag = 0 while 1: @@ -163,7 +163,7 @@ class pdbfile: print("END",file=f) print(file,end='') sys.stdout.flush() - + f.close() print("\nwrote %d datasets to %s in PDB format" % (n,file)) @@ -199,7 +199,7 @@ class pdbfile: f = open(file,'w') self.convert(f,which) f.close() - + print(time,end='') sys.stdout.flush() n += 1 @@ -216,13 +216,13 @@ class pdbfile: else: file = root + str(n) file += ".pdb" - + f = open(file,'w') f.write(open(infile,'r').read()) f.close() print(file,end='') sys.stdout.flush() - + n += 1 print("\nwrote %d datasets to %s*.pdb in PDB format" % (n,root)) @@ -249,7 +249,7 @@ class pdbfile: self.convert(f,which) else: f.write(open(self.files[time],'r').read()) - + f.close() # -------------------------------------------------------------------- @@ -268,8 +268,8 @@ class pdbfile: # -------------------------------------------------------------------- # read a PDB file and store ATOM lines - - def read_template(self,file): + + def read_template(self,file): lines = open(file,'r').readlines() self.atomlines = {} for line in lines: diff --git a/tools/python/pizza/dump.py b/tools/python/pizza/dump.py index 1c6eb5edfd..5c7fab33ae 100644 --- a/tools/python/pizza/dump.py +++ b/tools/python/pizza/dump.py @@ -6,21 +6,25 @@ # certain rights in this software. This software is distributed under # the GNU General Public License. +# for python3 compatibility + +from __future__ import print_function + # dump tool oneline = "Read, write, manipulate dump files and particle attributes" docstr = """ d = dump("dump.one") read in one or more dump files -d = dump("dump.1 dump.2.gz") can be gzipped -d = dump("dump.*") wildcard expands to multiple files -d = dump("dump.*",0) two args = store filenames, but don't read +d = dump("dump.1 dump.2.gz") can be gzipped +d = dump("dump.*") wildcard expands to multiple files +d = dump("dump.*",0) two args = store filenames, but don't read incomplete and duplicate snapshots are deleted + if atoms have 5 or 8 columns, assign id,type,x,y,z (ix,iy,iz) atoms will be unscaled if stored in files as scaled - self-describing column names assigned -time = d.next() read next snapshot from dump files +time = d.next() read next snapshot from dump files used with 2-argument constructor to allow reading snapshots one-at-a-time snapshot will be skipped only if another snapshot has same time stamp @@ -28,24 +32,24 @@ time = d.next() read next snapshot from dump files return -1 if no snapshots left or last snapshot is incomplete no column name assignment or unscaling is performed -d.map(1,"id",3,"x") assign names to columns (1-N) +d.map(1,"id",3,"x") assign names to atom columns (1-N) not needed if dump file is self-describing -d.tselect.all() select all timesteps -d.tselect.one(N) select only timestep N -d.tselect.none() deselect all timesteps -d.tselect.skip(M) select every Mth step +d.tselect.all() select all timesteps +d.tselect.one(N) select only timestep N +d.tselect.none() deselect all timesteps +d.tselect.skip(M) select every Mth step d.tselect.test("$t >= 100 and $t < 10000") select matching timesteps -d.delete() delete non-selected timesteps +d.delete() delete non-selected timesteps selecting a timestep also selects all atoms in the timestep skip() and test() only select from currently selected timesteps test() uses a Python Boolean expression with $t for timestep value Python comparison syntax: == != < > <= >= and or -d.aselect.all() select all atoms in all steps -d.aselect.all(N) select all atoms in one step +d.aselect.all() select all atoms in all steps +d.aselect.all(N) select all atoms in one step d.aselect.test("$id > 100 and $type == 2") select match atoms in all steps d.aselect.test("$id > 100 and $type == 2",N) select matching atoms in one step @@ -56,24 +60,24 @@ d.aselect.test("$id > 100 and $type == 2",N) select matching atoms in one step Python comparison syntax: == != < > <= >= and or $name must end with a space -d.write("file") write selected steps/atoms to dump file -d.write("file",head,app) write selected steps/atoms to dump file -d.scatter("tmp") write selected steps/atoms to multiple files +d.write("file") write selected steps/atoms to dump file +d.write("file",head,app) write selected steps/atoms to dump file +d.scatter("tmp") write selected steps/atoms to multiple files write() can be specified with 2 additional flags - head = 0/1 for no/yes snapshot header, app = 0/1 for write vs append + headd = 0/1 for no/yes snapshot header, app = 0/1 for write vs append scatter() files are given timestep suffix: e.g. tmp.0, tmp.100, etc -d.scale() scale x,y,z to 0-1 for all timesteps -d.scale(100) scale atom coords for timestep N -d.unscale() unscale x,y,z to box size to all timesteps -d.unscale(1000) unscale atom coords for timestep N -d.wrap() wrap x,y,z into periodic box via ix,iy,iz -d.unwrap() unwrap x,y,z out of box via ix,iy,iz -d.owrap("other") wrap x,y,z to same image as another atom -d.sort() sort atoms by atom ID in all selected steps -d.sort("x") sort atoms by column value in all steps -d.sort(1000) sort atoms in timestep N +d.scale() scale x,y,z to 0-1 for all timesteps +d.scale(100) scale atom coords for timestep N +d.unscale() unscale x,y,z to box size to all timesteps +d.unscale(1000) unscale atom coords for timestep N +d.wrap() wrap x,y,z into periodic box via ix,iy,iz +d.unwrap() unwrap x,y,z out of box via ix,iy,iz +d.owrap("other") wrap x,y,z to same image as another atom +d.sort() sort atoms by atom ID in all selected steps +d.sort("x") sort atoms by column value in all steps +d.sort(1000) sort atoms in timestep N scale(), unscale(), wrap(), unwrap(), owrap() operate on all steps and atoms wrap(), unwrap(), owrap() require ix,iy,iz be defined @@ -85,8 +89,8 @@ d.sort(1000) sort atoms in timestep N m1,m2 = d.minmax("type") find min/max values for a column d.set("$ke = $vx * $vx + $vy * $vy") set a column to a computed value d.setv("type",vector) set a column to a vector of values -d.spread("ke",N,"color") 2nd col = N ints spread over 1st col -d.clone(1000,"color") clone timestep N values to other steps +d.spread("ke",N,"color") 2nd col = N ints spread over 1st col +d.clone(1000,"color") clone timestep N values to other steps minmax() operates on selected timesteps and atoms set() operates on selected timesteps and atoms @@ -107,17 +111,18 @@ d.clone(1000,"color") clone timestep N values to other steps values at every timestep are set to value at timestep N for that atom ID useful for propagating a color map -t = d.time() return vector of selected timestep values +t = d.time() return vector of selected timestep values fx,fy,... = d.atom(100,"fx","fy",...) return vector(s) for atom ID N fx,fy,... = d.vecs(1000,"fx","fy",...) return vector(s) for timestep N atom() returns vectors with one value for each selected timestep vecs() returns vectors with one value for each selected atom in the timestep -index,time,flag = d.iterator(0/1) loop over dump snapshots -time,box,atoms,bonds,tris,lines = d.viz(index) return list of viz objects -d.atype = "color" set column returned as "type" by viz -d.extra(obj) extract bond/tri/line info from obj +index,time,flag = d.iterator(0/1) loop over dump snapshots +time,box,atoms,bonds,tris = d.viz(index) return list of viz objects +d.atype = "color" set column returned as "type" by viz +d.extra("dump.bond") read bond list from dump file +d.extra(data) extract bond/tri/line list from data iterator() loops over selected timesteps iterator() called with arg = 0 first time, with arg = 1 on subsequent calls @@ -125,26 +130,24 @@ d.extra(obj) extract bond/tri/line info from obj time = timestep value flag = -1 when iteration is done, 1 otherwise viz() returns info for selected atoms for specified timestep index - can also call as viz(time,1) and will find index of preceding snapshot time = timestep value - box = \[xlo,ylo,zlo,xhi,yhi,zhi\] + box = [xlo,ylo,zlo,xhi,yhi,zhi] atoms = id,type,x,y,z for each atom as 2d array bonds = id,type,x1,y1,z1,x2,y2,z2,t1,t2 for each bond as 2d array - if extra() used to define bonds, else NULL + if bonds() was used to define bonds, else empty list tris = id,type,x1,y1,z1,x2,y2,z2,x3,y3,z3,nx,ny,nz for each tri as 2d array - if extra() used to define tris, else NULL + if extra() was used to define tris, else empty list lines = id,type,x1,y1,z1,x2,y2,z2 for each line as 2d array - if extra() used to define lines, else NULL + if extra() was used to define lines, else empty list atype is column name viz() will return as atom type (def = "type") - extra() extracts bonds/tris/lines from obj each time viz() is called - obj can be data object for bonds, cdata object for tris and lines, - bdump object for bonds, tdump object for tris, ldump object for lines. - mdump object for tris + extra() stores list of bonds/tris/lines to return each time viz() is called """ # History # 8/05, Steve Plimpton (SNL): original version # 12/09, David Hart (SNL): allow use of NumPy or Numeric +# 03/17, Richard Berger (Temple U): improve Python 3 compatibility, +# simplify read_snapshot by using reshape # ToDo list # try to optimize this line in read_snap: words += f.readline().split() @@ -156,7 +159,6 @@ d.extra(obj) extract bond/tri/line info from obj # increment = 1 if reading snapshots one-at-a-time # nextfile = which file to read from via next() # eof = ptr into current file for where to read via next() -# scale_original = 0/1/-1 if coords were read in as unscaled/scaled/unknown # nsnaps = # of snapshots # nselect = # of selected snapshots # snaps = list of snapshots @@ -165,36 +167,34 @@ d.extra(obj) extract bond/tri/line info from obj # tselect = class for time selection # aselect = class for atom selection # atype = name of vector used as atom type by viz extract -# bondflag = 0 if no bonds, 1 if they are defined statically, 2 if dynamic -# bondlist = static list of bonds to return w/ viz() for all snapshots +# bondflag = 0 if no bonds, 1 if they are defined statically +# bondlist = static list of bonds to viz() return for all snapshots +# only a list of atom pairs, coords have to be created for each snapshot # triflag = 0 if no tris, 1 if they are defined statically, 2 if dynamic -# trilist = static list of tris to return w/ viz() for all snapshots -# lineflag = 0 if no lines, 1 if they are defined statically, 2 if dynamic -# linelist = static list of lines to return w/ viz() for all snapshots -# objextra = object to get bonds,tris,lines from dynamically +# trilist = static list of tris to return via viz() for all snapshots +# lineflag = 0 if no lines, 1 if they are defined statically +# linelist = static list of lines to return via viz() for all snapshots # Snap = one snapshot # time = time stamp # tselect = 0/1 if this snapshot selected # natoms = # of atoms -# boxstr = format string after BOX BOUNDS, if it exists -# triclinic = 0/1 for orthogonal/triclinic based on BOX BOUNDS fields # nselect = # of selected atoms in this snapshot # aselect[i] = 0/1 for each atom -# xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz = box bounds (float) +# xlo,xhi,ylo,yhi,zlo,zhi = box bounds (float) # atoms[i][j] = 2d array of floats, i = 0 to natoms-1, j = 0 to ncols-1 # Imports and external programs -import sys, commands, re, glob, types +import sys, re, glob, types from os import popen from math import * # any function could be used by set() try: - import numpy as np - oldnumeric = False + import numpy as np + oldnumeric = False except: - import Numeric as np - oldnumeric = True + import Numeric as np + oldnumeric = True try: from DEFAULTS import PIZZA_GUNZIP except: PIZZA_GUNZIP = "gunzip" @@ -216,9 +216,9 @@ class dump: self.bondlist = [] self.triflag = 0 self.trilist = [] + self.triobj = 0 self.lineflag = 0 self.linelist = [] - self.objextra = None # flist = list of all dump file names @@ -226,7 +226,7 @@ class dump: self.flist = [] for word in words: self.flist += glob.glob(word) if len(self.flist) == 0 and len(list) == 1: - raise StandardError,"no dump file specified" + raise Exception("no dump file specified") if len(list) == 1: self.increment = 0 @@ -251,48 +251,57 @@ class dump: snap = self.read_snapshot(f) while snap: self.snaps.append(snap) - print snap.time, + print(snap.time,end='') sys.stdout.flush() snap = self.read_snapshot(f) f.close() - print + print() # sort entries by timestep, cull duplicates self.snaps.sort(self.compare_time) self.cull() self.nsnaps = len(self.snaps) - print "read %d snapshots" % self.nsnaps + print("read %d snapshots" % self.nsnaps) # select all timesteps and atoms self.tselect.all() - # print column assignments + # set default names for atom columns if file wasn't self-describing - if len(self.names): - print "assigned columns:",self.names2str() + if len(self.snaps) == 0: + print("no column assignments made") + elif len(self.names): + print("assigned columns:",self.names2str()) + elif self.snaps[0].atoms is None: + print("no column assignments made") + elif len(self.snaps[0].atoms[0]) == 5: + self.map(1,"id",2,"type",3,"x",4,"y",5,"z") + print("assigned columns:",self.names2str()) + elif len(self.snaps[0].atoms[0]) == 8: + self.map(1,"id",2,"type",3,"x",4,"y",5,"z",6,"ix",7,"iy",8,"iz") + print("assigned columns:",self.names2str()) else: - print "no column assignments made" + print("no column assignments made") # if snapshots are scaled, unscale them if (not self.names.has_key("x")) or \ (not self.names.has_key("y")) or \ (not self.names.has_key("z")): - print "dump scaling status is unknown" + print("no unscaling could be performed") elif self.nsnaps > 0: - if self.scale_original == 1: self.unscale() - elif self.scale_original == 0: print "dump is already unscaled" - else: print "dump scaling status is unknown" + if self.scaled(self.nsnaps-1): self.unscale() + else: print("dump is already unscaled") # -------------------------------------------------------------------- # read next snapshot from list of files def next(self): - if not self.increment: raise StandardError,"cannot read incrementally" + if not self.increment: raise Exception("cannot read incrementally") # read next snapshot in current file using eof as pointer # if fail, try next file @@ -321,7 +330,7 @@ class dump: snap = self.snaps[self.nsnaps] snap.tselect = 1 snap.nselect = snap.natoms - for i in xrange(snap.natoms): snap.aselect[i] = 1 + for i in range(snap.natoms): snap.aselect[i] = 1 self.nsnaps += 1 self.nselect += 1 @@ -330,111 +339,93 @@ class dump: # -------------------------------------------------------------------- # read a single snapshot from file f # return snapshot or 0 if failed - # for first snapshot only: - # assign column names (file must be self-describing) - # set scale_original to 0/1/-1 for unscaled/scaled/unknown - # convert xs,xu to x in names + # assign column names if not already done and file is self-describing + # convert xs,xu to x def read_snapshot(self,f): try: snap = Snap() item = f.readline() - snap.time = int(f.readline().split()[0]) # just grab 1st field + snap.time = int(f.readline().decode().split()[0]) # just grab 1st field item = f.readline() - snap.natoms = int(f.readline()) + snap.natoms = int(f.readline().decode()) snap.aselect = np.zeros(snap.natoms) - item = f.readline() - words = item.split("BOUNDS ") - if len(words) == 1: snap.boxstr = "" - else: snap.boxstr = words[1].strip() - if "xy" in snap.boxstr: snap.triclinic = 1 - else: snap.triclinic = 0 - + item = f.readline().decode() words = f.readline().split() - if len(words) == 2: - snap.xlo,snap.xhi,snap.xy = float(words[0]),float(words[1]),0.0 - else: - snap.xlo,snap.xhi,snap.xy = \ - float(words[0]),float(words[1]),float(words[2]) - + snap.xlo,snap.xhi = float(words[0]),float(words[1]) words = f.readline().split() - if len(words) == 2: - snap.ylo,snap.yhi,snap.xz = float(words[0]),float(words[1]),0.0 - else: - snap.ylo,snap.yhi,snap.xz = \ - float(words[0]),float(words[1]),float(words[2]) - + snap.ylo,snap.yhi = float(words[0]),float(words[1]) words = f.readline().split() - if len(words) == 2: - snap.zlo,snap.zhi,snap.yz = float(words[0]),float(words[1]),0.0 - else: - snap.zlo,snap.zhi,snap.yz = \ - float(words[0]),float(words[1]),float(words[2]) + snap.zlo,snap.zhi = float(words[0]),float(words[1]) - item = f.readline() + item = f.readline().decode() if len(self.names) == 0: - self.scale_original = -1 - xflag = yflag = zflag = -1 words = item.split()[2:] if len(words): for i in range(len(words)): - if words[i] == "x" or words[i] == "xu": - xflag = 0 + if words[i] == "xs" or words[i] == "xu": self.names["x"] = i - elif words[i] == "xs" or words[i] == "xsu": - xflag = 1 - self.names["x"] = i - elif words[i] == "y" or words[i] == "yu": - yflag = 0 + elif words[i] == "ys" or words[i] == "yu": self.names["y"] = i - elif words[i] == "ys" or words[i] == "ysu": - yflag = 1 - self.names["y"] = i - elif words[i] == "z" or words[i] == "zu": - zflag = 0 - self.names["z"] = i - elif words[i] == "zs" or words[i] == "zsu": - zflag = 1 + elif words[i] == "zs" or words[i] == "zu": self.names["z"] = i else: self.names[words[i]] = i - if xflag == 0 and yflag == 0 and zflag == 0: self.scale_original = 0 - if xflag == 1 and yflag == 1 and zflag == 1: self.scale_original = 1 if snap.natoms: - words = f.readline().split() + words = f.readline().decode().split() ncol = len(words) - for i in xrange(1,snap.natoms): - words += f.readline().split() + for i in range(1,snap.natoms): + words += f.readline().decode().split() floats = map(float,words) - if oldnumeric: atoms = np.zeros((snap.natoms,ncol),np.Float) - else: atoms = np.zeros((snap.natoms,ncol),np.float) - start = 0 - stop = ncol - for i in xrange(snap.natoms): - atoms[i] = floats[start:stop] - start = stop - stop += ncol - else: atoms = None - snap.atoms = atoms + if oldnumeric: + atom_data = np.array(list(floats),np.Float) + else: + atom_data = np.array(list(floats),np.float) + + snap.atoms = atom_data.reshape((snap.natoms, ncol)) + else: + snap.atoms = None return snap except: - return 0 + return None + + # -------------------------------------------------------------------- + # decide if snapshot i is scaled/unscaled from coords of first and last atom + + def scaled(self,i): + ix = self.names["x"] + iy = self.names["y"] + iz = self.names["z"] + natoms = self.snaps[i].natoms + if natoms == 0: return 0 + x1 = self.snaps[i].atoms[0][ix] + y1 = self.snaps[i].atoms[0][iy] + z1 = self.snaps[i].atoms[0][iz] + x2 = self.snaps[i].atoms[natoms-1][ix] + y2 = self.snaps[i].atoms[natoms-1][iy] + z2 = self.snaps[i].atoms[natoms-1][iz] + if x1 >= -0.1 and x1 <= 1.1 and y1 >= -0.1 and y1 <= 1.1 and \ + z1 >= -0.1 and z1 <= 1.1 and x2 >= -0.1 and x2 <= 1.1 and \ + y2 >= -0.1 and y2 <= 1.1 and z2 >= -0.1 and z2 <= 1.1: + return 1 + else: return 0 # -------------------------------------------------------------------- # map atom column names def map(self,*pairs): if len(pairs) % 2 != 0: - raise StandardError, "dump map() requires pairs of mappings" + raise Exception("dump map() requires pairs of mappings") for i in range(0,len(pairs),2): j = i + 1 self.names[pairs[j]] = pairs[i]-1 - # -------------------------------------------------------------------- # delete unselected snapshots + # -------------------------------------------------------------------- + def delete(self): ndel = i = 0 while i < self.nsnaps: @@ -443,16 +434,15 @@ class dump: self.nsnaps -= 1 ndel += 1 else: i += 1 - print "%d snapshots deleted" % ndel - print "%d snapshots remaining" % self.nsnaps + print("%d snapshots deleted" % ndel) + print("%d snapshots remaining" % self.nsnaps) # -------------------------------------------------------------------- # scale coords to 0-1 for all snapshots or just one - # use 6 params as h-matrix to treat orthogonal or triclinic boxes def scale(self,*list): if len(list) == 0: - print "Scaling dump ..." + print("Scaling dump ...") x = self.names["x"] y = self.names["y"] z = self.names["z"] @@ -467,56 +457,20 @@ class dump: # -------------------------------------------------------------------- def scale_one(self,snap,x,y,z): - if snap.xy == 0.0 and snap.xz == 0.0 and snap.yz == 0.0: - xprdinv = 1.0 / (snap.xhi - snap.xlo) - yprdinv = 1.0 / (snap.yhi - snap.ylo) - zprdinv = 1.0 / (snap.zhi - snap.zlo) - atoms = snap.atoms - if type(atoms) != types.NoneType: - atoms[:,x] = (atoms[:,x] - snap.xlo) * xprdinv - atoms[:,y] = (atoms[:,y] - snap.ylo) * yprdinv - atoms[:,z] = (atoms[:,z] - snap.zlo) * zprdinv - else: - xlo_bound = snap.xlo; xhi_bound = snap.xhi - ylo_bound = snap.ylo; yhi_bound = snap.yhi - zlo_bound = snap.zlo; zhi_bound = snap.zhi - xy = snap.xy - xz = snap.xz - yz = snap.yz - xlo = xlo_bound - min((0.0,xy,xz,xy+xz)) - xhi = xhi_bound - max((0.0,xy,xz,xy+xz)) - ylo = ylo_bound - min((0.0,yz)) - yhi = yhi_bound - max((0.0,yz)) - zlo = zlo_bound - zhi = zhi_bound - h0 = xhi - xlo - h1 = yhi - ylo - h2 = zhi - zlo - h3 = yz - h4 = xz - h5 = xy - h0inv = 1.0 / h0 - h1inv = 1.0 / h1 - h2inv = 1.0 / h2 - h3inv = yz / (h1*h2) - h4inv = (h3*h5 - h1*h4) / (h0*h1*h2) - h5inv = xy / (h0*h1) - atoms = snap.atoms - if type(atoms) != types.NoneType: - atoms[:,x] = (atoms[:,x] - snap.xlo)*h0inv + \ - (atoms[:,y] - snap.ylo)*h5inv + \ - (atoms[:,z] - snap.zlo)*h4inv - atoms[:,y] = (atoms[:,y] - snap.ylo)*h1inv + \ - (atoms[:,z] - snap.zlo)*h3inv - atoms[:,z] = (atoms[:,z] - snap.zlo)*h2inv + xprdinv = 1.0 / (snap.xhi - snap.xlo) + yprdinv = 1.0 / (snap.yhi - snap.ylo) + zprdinv = 1.0 / (snap.zhi - snap.zlo) + atoms = snap.atoms + atoms[:,x] = (atoms[:,x] - snap.xlo) * xprdinv + atoms[:,y] = (atoms[:,y] - snap.ylo) * yprdinv + atoms[:,z] = (atoms[:,z] - snap.zlo) * zprdinv # -------------------------------------------------------------------- # unscale coords from 0-1 to box size for all snapshots or just one - # use 6 params as h-matrix to treat orthogonal or triclinic boxes def unscale(self,*list): if len(list) == 0: - print "Unscaling dump ..." + print("Unscaling dump ...") x = self.names["x"] y = self.names["y"] z = self.names["z"] @@ -531,45 +485,19 @@ class dump: # -------------------------------------------------------------------- def unscale_one(self,snap,x,y,z): - if snap.xy == 0.0 and snap.xz == 0.0 and snap.yz == 0.0: - xprd = snap.xhi - snap.xlo - yprd = snap.yhi - snap.ylo - zprd = snap.zhi - snap.zlo - atoms = snap.atoms - if type(atoms) != types.NoneType: - atoms[:,x] = snap.xlo + atoms[:,x]*xprd - atoms[:,y] = snap.ylo + atoms[:,y]*yprd - atoms[:,z] = snap.zlo + atoms[:,z]*zprd - else: - xlo_bound = snap.xlo; xhi_bound = snap.xhi - ylo_bound = snap.ylo; yhi_bound = snap.yhi - zlo_bound = snap.zlo; zhi_bound = snap.zhi - xy = snap.xy - xz = snap.xz - yz = snap.yz - xlo = xlo_bound - min((0.0,xy,xz,xy+xz)) - xhi = xhi_bound - max((0.0,xy,xz,xy+xz)) - ylo = ylo_bound - min((0.0,yz)) - yhi = yhi_bound - max((0.0,yz)) - zlo = zlo_bound - zhi = zhi_bound - h0 = xhi - xlo - h1 = yhi - ylo - h2 = zhi - zlo - h3 = yz - h4 = xz - h5 = xy - atoms = snap.atoms - if type(atoms) != types.NoneType: - atoms[:,x] = snap.xlo + atoms[:,x]*h0 + atoms[:,y]*h5 + atoms[:,z]*h4 - atoms[:,y] = snap.ylo + atoms[:,y]*h1 + atoms[:,z]*h3 - atoms[:,z] = snap.zlo + atoms[:,z]*h2 + xprd = snap.xhi - snap.xlo + yprd = snap.yhi - snap.ylo + zprd = snap.zhi - snap.zlo + atoms = snap.atoms + atoms[:,x] = snap.xlo + atoms[:,x]*xprd + atoms[:,y] = snap.ylo + atoms[:,y]*yprd + atoms[:,z] = snap.zlo + atoms[:,z]*zprd # -------------------------------------------------------------------- # wrap coords from outside box to inside def wrap(self): - print "Wrapping dump ..." + print("Wrapping dump ...") x = self.names["x"] y = self.names["y"] @@ -591,7 +519,7 @@ class dump: # unwrap coords from inside box to outside def unwrap(self): - print "Unwrapping dump ..." + print("Unwrapping dump ...") x = self.names["x"] y = self.names["y"] @@ -611,10 +539,9 @@ class dump: # -------------------------------------------------------------------- # wrap coords to same image as atom ID stored in "other" column - # if dynamic extra lines or triangles defined, owrap them as well def owrap(self,other): - print "Wrapping to other ..." + print("Wrapping to other ...") id = self.names["id"] x = self.names["x"] @@ -631,26 +558,23 @@ class dump: zprd = snap.zhi - snap.zlo atoms = snap.atoms ids = {} - for i in xrange(snap.natoms): + for i in range(snap.natoms): ids[atoms[i][id]] = i - for i in xrange(snap.natoms): + for i in range(snap.natoms): j = ids[atoms[i][iother]] atoms[i][x] += (atoms[i][ix]-atoms[j][ix])*xprd atoms[i][y] += (atoms[i][iy]-atoms[j][iy])*yprd atoms[i][z] += (atoms[i][iz]-atoms[j][iz])*zprd - # should bonds also be owrapped ? - if self.lineflag == 2 or self.triflag == 2: - self.objextra.owrap(snap.time,xprd,yprd,zprd,ids,atoms,iother,ix,iy,iz) # -------------------------------------------------------------------- # convert column names assignment to a string, in column order def names2str(self): + ncol = len(self.snaps[0].atoms[0]) pairs = self.names.items() values = self.names.values() - ncol = len(pairs) str = "" - for i in xrange(ncol): + for i in range(ncol): if i in values: str += pairs[values.index(i)][0] + ' ' return str @@ -661,12 +585,12 @@ class dump: def sort(self,*list): if len(list) == 0: - print "Sorting selected snapshots ..." + print("Sorting selected snapshots ...") id = self.names["id"] for snap in self.snaps: if snap.tselect: self.sort_one(snap,id) elif type(list[0]) is types.StringType: - print "Sorting selected snapshots by %s ..." % list[0] + print("Sorting selected snapshots by %s ..." % list[0]) id = self.names[list[0]] for snap in self.snaps: if snap.tselect: self.sort_one(snap,id) @@ -682,7 +606,7 @@ class dump: atoms = snap.atoms ids = atoms[:,id] ordering = np.argsort(ids) - for i in xrange(len(atoms[0])): + for i in range(len(atoms[0])): atoms[:,i] = np.take(atoms[:,i],ordering) # -------------------------------------------------------------------- @@ -692,47 +616,35 @@ class dump: if len(self.snaps): namestr = self.names2str() if not append: f = open(file,"w") else: f = open(file,"a") - - if "id" in self.names: id = self.names["id"] - else: id = -1 - if "type" in self.names: type = self.names["type"] - else: type = -1 - for snap in self.snaps: if not snap.tselect: continue - print snap.time, + print(snap.time,end='') sys.stdout.flush() if header: - print >>f,"ITEM: TIMESTEP" - print >>f,snap.time - print >>f,"ITEM: NUMBER OF ATOMS" - print >>f,snap.nselect - if snap.boxstr: print >>f,"ITEM: BOX BOUNDS",snap.boxstr - else: print >>f,"ITEM: BOX BOUNDS" - if snap.triclinic: - print >>f,snap.xlo,snap.xhi,snap.xy - print >>f,snap.ylo,snap.yhi,snap.xz - print >>f,snap.zlo,snap.zhi,snap.yz - else: - print >>f,snap.xlo,snap.xhi - print >>f,snap.ylo,snap.yhi - print >>f,snap.zlo,snap.zhi - print >>f,"ITEM: ATOMS",namestr + print("ITEM: TIMESTEP",file=f) + print(snap.time,file=f) + print("ITEM: NUMBER OF ATOMS",file=f) + print(snap.nselect,file=f) + print("ITEM: BOX BOUNDS",file=f) + print(snap.xlo,snap.xhi,file=f) + print(snap.ylo,snap.yhi,file=f) + print(snap.zlo,snap.zhi,file=f) + print("ITEM: ATOMS",namestr,file=f) atoms = snap.atoms nvalues = len(atoms[0]) - for i in xrange(snap.natoms): + for i in range(snap.natoms): if not snap.aselect[i]: continue line = "" - for j in xrange(nvalues): - if j == id or j == type: + for j in range(nvalues): + if (j < 2): line += str(int(atoms[i][j])) + " " else: line += str(atoms[i][j]) + " " - print >>f,line + print(line,file=f) f.close() - print "\n%d snapshots" % self.nselect + print("\n%d snapshots" % self.nselect) # -------------------------------------------------------------------- # write one dump file per snapshot from current selection @@ -741,40 +653,34 @@ class dump: if len(self.snaps): namestr = self.names2str() for snap in self.snaps: if not snap.tselect: continue - print snap.time, + print(snap.time,end='') sys.stdout.flush() file = root + "." + str(snap.time) f = open(file,"w") - print >>f,"ITEM: TIMESTEP" - print >>f,snap.time - print >>f,"ITEM: NUMBER OF ATOMS" - print >>f,snap.nselect - if snap.boxstr: print >>f,"ITEM: BOX BOUNDS",snap.boxstr - else: print >>f,"ITEM: BOX BOUNDS" - if snap.triclinic: - print >>f,snap.xlo,snap.xhi,snap.xy - print >>f,snap.ylo,snap.yhi,snap.xz - print >>f,snap.zlo,snap.zhi,snap.yz - else: - print >>f,snap.xlo,snap.xhi - print >>f,snap.ylo,snap.yhi - print >>f,snap.zlo,snap.zhi - print >>f,"ITEM: ATOMS",namestr + print("ITEM: TIMESTEP",file=f) + print(snap.time,file=f) + print("ITEM: NUMBER OF ATOMS",file=f) + print(snap.nselect,file=f) + print("ITEM: BOX BOUNDS",file=f) + print(snap.xlo,snap.xhi,file=f) + print(snap.ylo,snap.yhi,file=f) + print(snap.zlo,snap.zhi,file=f) + print("ITEM: ATOMS",namestr,file=f) atoms = snap.atoms nvalues = len(atoms[0]) - for i in xrange(snap.natoms): + for i in range(snap.natoms): if not snap.aselect[i]: continue line = "" - for j in xrange(nvalues): + for j in range(nvalues): if (j < 2): line += str(int(atoms[i][j])) + " " else: line += str(atoms[i][j]) + " " - print >>f,line + print(line,file=f) f.close() - print "\n%d snapshots" % self.nselect + print("\n%d snapshots" % self.nselect) # -------------------------------------------------------------------- # find min/max across all selected snapshots/atoms for a particular column @@ -786,7 +692,7 @@ class dump: for snap in self.snaps: if not snap.tselect: continue atoms = snap.atoms - for i in xrange(snap.natoms): + for i in range(snap.natoms): if not snap.aselect[i]: continue if atoms[i][icol] < min: min = atoms[i][icol] if atoms[i][icol] > max: max = atoms[i][icol] @@ -796,7 +702,7 @@ class dump: # set a column value via an equation for all selected snapshots def set(self,eq): - print "Setting ..." + print("Setting ...") pattern = "\$\w*" list = re.findall(pattern,eq) @@ -813,14 +719,14 @@ class dump: for snap in self.snaps: if not snap.tselect: continue - for i in xrange(snap.natoms): - if snap.aselect[i]: exec ceq + for i in range(snap.natoms): + if snap.aselect[i]: exec(ceq) # -------------------------------------------------------------------- # set a column value via an input vec for all selected snapshots/atoms def setv(self,colname,vec): - print "Setting ..." + print("Setting ...") if not self.names.has_key(colname): self.newcolumn(colname) icol = self.names[colname] @@ -828,10 +734,10 @@ class dump: for snap in self.snaps: if not snap.tselect: continue if snap.nselect != len(vec): - raise StandardError,"vec length does not match # of selected atoms" + raise Exception("vec length does not match # of selected atoms") atoms = snap.atoms m = 0 - for i in xrange(snap.natoms): + for i in range(snap.natoms): if snap.aselect[i]: atoms[i][icol] = vec[m] m += 1 @@ -844,12 +750,12 @@ class dump: icol = self.names[col] id = self.names["id"] ids = {} - for i in xrange(self.snaps[istep].natoms): + for i in range(self.snaps[istep].natoms): ids[self.snaps[istep].atoms[i][id]] = i for snap in self.snaps: if not snap.tselect: continue atoms = snap.atoms - for i in xrange(snap.natoms): + for i in range(snap.natoms): if not snap.aselect[i]: continue j = ids[atoms[i][id]] atoms[i][icol] = self.snaps[istep].atoms[j][icol] @@ -863,14 +769,14 @@ class dump: inew = self.names[new] min,max = self.minmax(old) - print "min/max = ",min,max + print("min/max = ",min,max) gap = max - min invdelta = n/gap for snap in self.snaps: if not snap.tselect: continue atoms = snap.atoms - for i in xrange(snap.natoms): + for i in range(snap.natoms): if not snap.aselect[i]: continue ivalue = int((atoms[i][iold] - min) * invdelta) + 1 if ivalue > n: ivalue = n @@ -894,7 +800,7 @@ class dump: def atom(self,n,*list): if len(list) == 0: - raise StandardError, "no columns specified" + raise Exception("no columns specified") columns = [] values = [] for name in list: @@ -907,11 +813,11 @@ class dump: for snap in self.snaps: if not snap.tselect: continue atoms = snap.atoms - for i in xrange(snap.natoms): + for i in range(snap.natoms): if atoms[i][id] == n: break if atoms[i][id] != n: - raise StandardError, "could not find atom ID in snapshot" - for j in xrange(ncol): + raise Exception("could not find atom ID in snapshot") + for j in range(ncol): values[j][m] = atoms[i][columns[j]] m += 1 @@ -925,7 +831,7 @@ class dump: snap = self.snaps[self.findtime(n)] if len(list) == 0: - raise StandardError, "no columns specified" + raise Exception("no columns specified") columns = [] values = [] for name in list: @@ -934,9 +840,9 @@ class dump: ncol = len(columns) m = 0 - for i in xrange(snap.natoms): + for i in range(snap.natoms): if not snap.aselect[i]: continue - for j in xrange(ncol): + for j in range(ncol): values[j][m] = snap.atoms[i][columns[j]] m += 1 @@ -985,7 +891,7 @@ class dump: def iterator(self,flag): start = 0 if flag: start = self.iterate + 1 - for i in xrange(start,self.nsnaps): + for i in range(start,self.nsnaps): if self.snaps[i].tselect: self.iterate = i return i,self.snaps[i].time,1 @@ -993,20 +899,9 @@ class dump: # -------------------------------------------------------------------- # return list of atoms to viz for snapshot isnap - # if called with flag, then index is timestep, so convert to snapshot index # augment with bonds, tris, lines if extra() was invoked - def viz(self,index,flag=0): - if not flag: isnap = index - else: - times = self.time() - n = len(times) - i = 0 - while i < n: - if times[i] > index: break - i += 1 - isnap = i - 1 - + def viz(self,isnap): snap = self.snaps[isnap] time = snap.time @@ -1021,27 +916,23 @@ class dump: # need Numeric/Numpy mode here atoms = [] - for i in xrange(snap.natoms): + for i in range(snap.natoms): if not snap.aselect[i]: continue atom = snap.atoms[i] atoms.append([atom[id],atom[type],atom[x],atom[y],atom[z]]) - # create list of bonds from static or dynamic bond list - # then generate bond coords from bondlist + # create list of current bond coords from static bondlist # alist = dictionary of atom IDs for atoms list # lookup bond atom IDs in alist and grab their coords # try is used since some atoms may be unselected - # any bond with unselected atom is not added to bonds + # any bond with unselected atom is not returned to viz caller # need Numeric/Numpy mode here bonds = [] if self.bondflag: - if self.bondflag == 1: bondlist = self.bondlist - elif self.bondflag == 2: - tmp1,tmp2,tmp3,bondlist,tmp4,tmp5 = self.objextra.viz(time,1) alist = {} - for i in xrange(len(atoms)): alist[int(atoms[i][0])] = i - for bond in bondlist: + for i in range(len(atoms)): alist[int(atoms[i][0])] = i + for bond in self.bondlist: try: i = alist[bond[2]] j = alist[bond[3]] @@ -1051,32 +942,24 @@ class dump: atom2[2],atom2[3],atom2[4],atom1[1],atom2[1]]) except: continue - # create list of tris from static or dynamic tri list - # if dynamic, could eliminate tris for unselected atoms - tris = [] if self.triflag: if self.triflag == 1: tris = self.trilist elif self.triflag == 2: - tmp1,tmp2,tmp3,tmp4,tris,tmp5 = self.objextra.viz(time,1) - - # create list of lines from static or dynamic tri list - # if dynamic, could eliminate lines for unselected atoms + timetmp,boxtmp,atomstmp,bondstmp, \ + tris,linestmp = self.triobj.viz(time,1) lines = [] - if self.lineflag: - if self.lineflag == 1: lines = self.linelist - elif self.lineflag == 2: - tmp1,tmp2,tmp3,tmp4,tmp5,lines = self.objextra.viz(time,1) + if self.lineflag: lines = self.linelist return time,box,atoms,bonds,tris,lines # -------------------------------------------------------------------- def findtime(self,n): - for i in xrange(self.nsnaps): - if self.snaps[i].time == n: return i - raise StandardError, "no step %d exists" % n + for i, snap in enumerate(self.snaps): + if snap.time == n: return i + raise Exception("no step %d exists" % n) # -------------------------------------------------------------------- # return maximum box size across all selected snapshots @@ -1086,12 +969,12 @@ class dump: xhi = yhi = zhi = None for snap in self.snaps: if not snap.tselect: continue - if xlo == None or snap.xlo < xlo: xlo = snap.xlo - if xhi == None or snap.xhi > xhi: xhi = snap.xhi - if ylo == None or snap.ylo < ylo: ylo = snap.ylo - if yhi == None or snap.yhi > yhi: yhi = snap.yhi - if zlo == None or snap.zlo < zlo: zlo = snap.zlo - if zhi == None or snap.zhi > zhi: zhi = snap.zhi + if xlo is None or snap.xlo < xlo: xlo = snap.xlo + if xhi is None or snap.xhi > xhi: xhi = snap.xhi + if ylo is None or snap.ylo < ylo: ylo = snap.ylo + if yhi is None or snap.yhi > yhi: yhi = snap.yhi + if zlo is None or snap.zlo < zlo: zlo = snap.zlo + if zhi is None or snap.zhi > zhi: zhi = snap.zhi return [xlo,ylo,zlo,xhi,yhi,zhi] # -------------------------------------------------------------------- @@ -1103,21 +986,56 @@ class dump: for snap in self.snaps: if not snap.tselect: continue atoms = snap.atoms - for i in xrange(snap.natoms): + for i in range(snap.natoms): if not snap.aselect[i]: continue if atoms[i][icol] > max: max = atoms[i][icol] return int(max) # -------------------------------------------------------------------- # grab bonds/tris/lines from another object - # if static, grab once, else store obj to grab dynamically def extra(self,arg): - # data object, grab bonds statically + # read bonds from bond dump file - if type(arg) is types.InstanceType and ".data" in str(arg.__class__): - self.bondflag = 0 + if type(arg) is types.StringType: + try: + f = open(arg,'r') + + item = f.readline() + time = int(f.readline()) + item = f.readline() + nbonds = int(f.readline()) + item = f.readline() + if not re.search("BONDS",item): + raise Exception("could not read bonds from dump file") + + words = f.readline().split() + ncol = len(words) + for i in range(1,nbonds): + words += f.readline().split() + f.close() + + # convert values to int and absolute value since can be negative types + + if oldnumeric: bondlist = np.zeros((nbonds,4),np.Int) + else: bondlist = np.zeros((nbonds,4),np.int) + ints = [abs(int(value)) for value in words] + start = 0 + stop = 4 + for i in range(nbonds): + bondlist[i] = ints[start:stop] + start += ncol + stop += ncol + if bondlist: + self.bondflag = 1 + self.bondlist = bondlist + except: + raise Exception("could not read from bond dump file") + + # request bonds from data object + + elif type(arg) is types.InstanceType and ".data" in str(arg.__class__): try: bondlist = [] bondlines = arg.sections["Bonds"] @@ -1129,12 +1047,11 @@ class dump: self.bondflag = 1 self.bondlist = bondlist except: - raise StandardError,"could not extract bonds from data object" + raise Exception("could not extract bonds from data object") - # cdata object, grab tris and lines statically + # request tris/lines from cdata object elif type(arg) is types.InstanceType and ".cdata" in str(arg.__class__): - self.triflag = self.lineflag = 0 try: tmp,tmp,tmp,tmp,tris,lines = arg.viz(0) if tris: @@ -1144,34 +1061,19 @@ class dump: self.lineflag = 1 self.linelist = lines except: - raise StandardError,"could not extract tris/lines from cdata object" + raise Exception("could not extract tris/lines from cdata object") - # mdump object, grab tris dynamically + # request tris from mdump object elif type(arg) is types.InstanceType and ".mdump" in str(arg.__class__): - self.triflag = 2 - self.objextra = arg - - # bdump object, grab bonds dynamically - - elif type(arg) is types.InstanceType and ".bdump" in str(arg.__class__): - self.bondflag = 2 - self.objextra = arg - - # ldump object, grab lines dynamically - - elif type(arg) is types.InstanceType and ".ldump" in str(arg.__class__): - self.lineflag = 2 - self.objextra = arg - - # tdump object, grab tris dynamically - - elif type(arg) is types.InstanceType and ".tdump" in str(arg.__class__): - self.triflag = 2 - self.objextra = arg + try: + self.triflag = 2 + self.triobj = arg + except: + raise Exception("could not extract tris from mdump object") else: - raise StandardError,"unrecognized argument to dump.extra()" + raise Exception("unrecognized argument to dump.extra()") # -------------------------------------------------------------------- @@ -1205,7 +1107,7 @@ class tselect: snap.tselect = 1 data.nselect = len(data.snaps) data.aselect.all() - print "%d snapshots selected out of %d" % (data.nselect,data.nsnaps) + print("%d snapshots selected out of %d" % (data.nselect,data.nsnaps)) # -------------------------------------------------------------------- @@ -1217,7 +1119,7 @@ class tselect: data.snaps[i].tselect = 1 data.nselect = 1 data.aselect.all() - print "%d snapshots selected out of %d" % (data.nselect,data.nsnaps) + print("%d snapshots selected out of %d" % (data.nselect,data.nsnaps)) # -------------------------------------------------------------------- @@ -1226,7 +1128,7 @@ class tselect: for snap in data.snaps: snap.tselect = 0 data.nselect = 0 - print "%d snapshots selected out of %d" % (data.nselect,data.nsnaps) + print("%d snapshots selected out of %d" % (data.nselect,data.nsnaps)) # -------------------------------------------------------------------- @@ -1242,7 +1144,7 @@ class tselect: snap.tselect = 0 data.nselect -= 1 data.aselect.all() - print "%d snapshots selected out of %d" % (data.nselect,data.nsnaps) + print("%d snapshots selected out of %d" % (data.nselect,data.nsnaps)) # -------------------------------------------------------------------- @@ -1251,14 +1153,14 @@ class tselect: snaps = data.snaps cmd = "flag = " + teststr.replace("$t","snaps[i].time") ccmd = compile(cmd,'','single') - for i in xrange(data.nsnaps): + for i in range(data.nsnaps): if not snaps[i].tselect: continue - exec ccmd + exec(ccmd) if not flag: snaps[i].tselect = 0 data.nselect -= 1 data.aselect.all() - print "%d snapshots selected out of %d" % (data.nselect,data.nsnaps) + print("%d snapshots selected out of %d" % (data.nselect,data.nsnaps)) # -------------------------------------------------------------------- # atom selection class @@ -1275,12 +1177,12 @@ class aselect: if len(args) == 0: # all selected timesteps for snap in data.snaps: if not snap.tselect: continue - for i in xrange(snap.natoms): snap.aselect[i] = 1 + for i in range(snap.natoms): snap.aselect[i] = 1 snap.nselect = snap.natoms else: # one timestep n = data.findtime(args[0]) snap = data.snaps[n] - for i in xrange(snap.natoms): snap.aselect[i] = 1 + for i in range(snap.natoms): snap.aselect[i] = 1 snap.nselect = snap.natoms # -------------------------------------------------------------------- @@ -1303,29 +1205,29 @@ class aselect: if len(args) == 0: # all selected timesteps for snap in data.snaps: if not snap.tselect: continue - for i in xrange(snap.natoms): + for i in range(snap.natoms): if not snap.aselect[i]: continue - exec ccmd + exec(ccmd) if not flag: snap.aselect[i] = 0 snap.nselect -= 1 - for i in xrange(data.nsnaps): + for i in range(data.nsnaps): if data.snaps[i].tselect: - print "%d atoms of %d selected in first step %d" % \ - (data.snaps[i].nselect,data.snaps[i].natoms,data.snaps[i].time) + print("%d atoms of %d selected in first step %d" % \ + (data.snaps[i].nselect,data.snaps[i].natoms,data.snaps[i].time)) break - for i in xrange(data.nsnaps-1,-1,-1): + for i in range(data.nsnaps-1,-1,-1): if data.snaps[i].tselect: - print "%d atoms of %d selected in last step %d" % \ - (data.snaps[i].nselect,data.snaps[i].natoms,data.snaps[i].time) + print("%d atoms of %d selected in last step %d" % \ + (data.snaps[i].nselect,data.snaps[i].natoms,data.snaps[i].time)) break else: # one timestep n = data.findtime(args[0]) snap = data.snaps[n] - for i in xrange(snap.natoms): + for i in range(snap.natoms): if not snap.aselect[i]: continue - exec ccmd + exec(ccmd) if not flag: snap.aselect[i] = 0 snap.nselect -= 1 diff --git a/tools/python/pizza/gnu.py b/tools/python/pizza/gnu.py index d99ab3811d..6e0fc1ee0b 100644 --- a/tools/python/pizza/gnu.py +++ b/tools/python/pizza/gnu.py @@ -6,17 +6,20 @@ # certain rights in this software. This software is distributed under # the GNU General Public License. +# for python3 compatibility +from __future__ import print_function + # gnu tool oneline = "Create plots via GnuPlot plotting program" docstr = """ -g = gnu() start up GnuPlot -g.stop() shut down GnuPlot process +g = gnu() start up GnuPlot +g.stop() shut down GnuPlot process g.plot(a) plot vector A against linear index -g.plot(a,b) plot B against A -g.plot(a,b,c,d,...) plot B against A, D against C, etc +g.plot(a,b) plot B against A +g.plot(a,b,c,d,...) plot B against A, D against C, etc g.mplot(M,N,S,"file",a,b,...) multiple plots saved to file0000.eps, etc each plot argument can be a tuple, list, or Numeric/NumPy vector @@ -29,21 +32,21 @@ g.mplot(M,N,S,"file",a,b,...) multiple plots saved to file0000.eps, etc g("plot 'file.dat' using 2:3 with lines") execute string in GnuPlot -g.enter() enter GnuPlot shell +g.enter() enter GnuPlot shell gnuplot> plot sin(x) with lines type commands directly to GnuPlot -gnuplot> exit, quit exit GnuPlot shell +gnuplot> exit, quit exit GnuPlot shell g.export("data",range(100),a,...) create file with columns of numbers all vectors must be of equal length could plot from file with GnuPlot command: plot 'data' using 1:2 with lines -g.select(N) figure N becomes the current plot +g.select(N) figure N becomes the current plot subsequent commands apply to this plot -g.hide(N) delete window for figure N -g.save("file") save current plot as file.eps +g.hide(N) delete window for figure N +g.save("file") save current plot as file.eps Set attributes for current plot: @@ -84,12 +87,13 @@ g.curve(N,'r') set color of curve N # Imports and external programs -import types, os +import os +import sys try: from DEFAULTS import PIZZA_GNUPLOT -except: PIZZA_GNUPLOT = "gnuplot" +except ImportError: PIZZA_GNUPLOT = "gnuplot -p" try: from DEFAULTS import PIZZA_GNUTERM -except: PIZZA_GNUTERM = "x11" +except ImportError: PIZZA_GNUTERM = "x11" # Class definition @@ -119,7 +123,10 @@ class gnu: def enter(self): while 1: - command = raw_input("gnuplot> ") + if sys.version_info[0] == 3: + command = input("gnuplot> ") + else: + command = raw_input("gnuplot> ") if command == "quit" or command == "exit": return self.__call__(command) @@ -133,7 +140,7 @@ class gnu: self.export(file,linear,vectors[0]) self.figures[self.current-1].ncurves = 1 else: - if len(vectors) % 2: raise StandardError,"vectors must come in pairs" + if len(vectors) % 2: raise Exception("vectors must come in pairs") for i in range(0,len(vectors),2): file = self.file + ".%d.%d" % (self.current,i/2+1) self.export(file,vectors[i],vectors[i+1]) @@ -167,13 +174,13 @@ class gnu: def export(self,filename,*vectors): n = len(vectors[0]) for vector in vectors: - if len(vector) != n: raise StandardError,"vectors must be same length" + if len(vector) != n: raise Exception("vectors must be same length") f = open(filename,'w') nvec = len(vectors) - for i in xrange(n): - for j in xrange(nvec): - print >>f,vectors[j][i], - print >>f + for i in range(n): + for j in range(nvec): + print(str(vectors[j][i])+" ",file=f,end='') + print ("",file=f) f.close() # -------------------------------------------------------------------- @@ -350,7 +357,7 @@ class gnu: self.__call__("set key off") cmd = 'plot ' - for i in range(fig.ncurves): + for i in range(int(fig.ncurves)): file = self.file + ".%d.%d" % (self.current,i+1) if len(fig.colors) > i and fig.colors[i]: cmd += "'" + file + "' using 1:2 with line %d, " % fig.colors[i] diff --git a/tools/python/pizza/pdbfile.py b/tools/python/pizza/pdbfile.py index 9b2238cbd6..efdf32fab1 100644 --- a/tools/python/pizza/pdbfile.py +++ b/tools/python/pizza/pdbfile.py @@ -6,6 +6,9 @@ # certain rights in this software. This software is distributed under # the GNU General Public License. +# for python3 compatibility +from __future__ import print_function + # pdb tool oneline = "Read, write PDB files in combo with LAMMPS snapshots" @@ -51,6 +54,7 @@ index,time,flag = p.iterator(1) # History # 8/05, Steve Plimpton (SNL): original version +# 3/17, Richard Berger (Temple U): improve Python 3 compatibility # ToDo list # for generic PDB file (no template) from a LJ unit system, @@ -64,7 +68,13 @@ index,time,flag = p.iterator(1) # Imports and external programs -import sys, types, glob, urllib +import sys, glob, urllib +PY3 = sys.version_info[0] == 3 + +if PY3: + string_types = str, +else: + string_types = basestring # Class definition @@ -74,7 +84,7 @@ class pdbfile: def __init__(self,*args): if len(args) == 1: - if type(args[0]) is types.StringType: + if type(args[0]) is string_types: filestr = args[0] self.data = None else: @@ -83,7 +93,7 @@ class pdbfile: elif len(args) == 2: filestr = args[0] self.data = args[1] - else: raise StandardError, "invalid args for pdb()" + else: raise Exception("invalid args for pdb()") # flist = full list of all PDB input file names # append .pdb if needed @@ -94,17 +104,17 @@ class pdbfile: for file in list: if '*' in file: flist += glob.glob(file) else: flist.append(file) - for i in xrange(len(flist)): + for i in range(len(flist)): if flist[i][-4:] != ".pdb": flist[i] += ".pdb" if len(flist) == 0: - raise StandardError,"no PDB file specified" + raise Exception("no PDB file specified") self.files = flist else: self.files = [] if len(self.files) > 1 and self.data: - raise StandardError, "cannot use multiple PDB files with data object" + raise Exception("cannot use multiple PDB files with data object") if len(self.files) == 0 and not self.data: - raise StandardError, "no input PDB file(s)" + raise Exception("no input PDB file(s)") # grab PDB file from http://rcsb.org if not a local file @@ -112,7 +122,7 @@ class pdbfile: try: open(self.files[0],'r').close() except: - print "downloading %s from http://rcsb.org" % self.files[0] + print("downloading %s from http://rcsb.org" % self.files[0]) fetchstr = "http://www.rcsb.org/pdb/cgi/export.cgi/%s?format=PDB&pdbId=2cpk&compression=None" % self.files[0] urllib.urlretrieve(fetchstr,self.files[0]) @@ -142,20 +152,20 @@ class pdbfile: which,time,flag = self.data.iterator(flag) if flag == -1: break self.convert(f,which) - print >>f,"END" - print time, + print("END",file=f) + print(time,end='') sys.stdout.flush() n += 1 else: for file in self.files: f.write(open(file,'r').read()) - print >>f,"END" - print file, + print("END",file=f) + print(file,end='') sys.stdout.flush() f.close() - print "\nwrote %d datasets to %s in PDB format" % (n,file) + print("\nwrote %d datasets to %s in PDB format" % (n,file)) # -------------------------------------------------------------------- # write series of numbered PDB files @@ -190,7 +200,7 @@ class pdbfile: self.convert(f,which) f.close() - print time, + print(time,end='') sys.stdout.flush() n += 1 @@ -210,12 +220,12 @@ class pdbfile: f = open(file,'w') f.write(open(infile,'r').read()) f.close() - print file, + print(file,end='') sys.stdout.flush() n += 1 - print "\nwrote %d datasets to %s*.pdb in PDB format" % (n,root) + print("\nwrote %d datasets to %s*.pdb in PDB format" % (n,root)) # -------------------------------------------------------------------- # write a single PDB file @@ -280,10 +290,10 @@ class pdbfile: if self.atomlines.has_key(id): (begin,end) = self.atomlines[id] line = "%s%8.3f%8.3f%8.3f%s" % (begin,atom[2],atom[3],atom[4],end) - print >>f,line, + print(line,file=f,end='') else: for atom in atoms: begin = "ATOM %6d %2d R00 1 " % (atom[0],atom[1]) middle = "%8.3f%8.3f%8.3f" % (atom[2],atom[3],atom[4]) end = " 1.00 0.00 NONE" - print >>f,begin+middle+end + print(begin+middle+end,file=f) From a1194e89d51e454b9223cc3bc2e8f421ab290cd5 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 2 Jun 2021 13:17:08 -0400 Subject: [PATCH 36/80] Remove unused sys.path --- python/examples/matplotlib_plot.py | 1 - 1 file changed, 1 deletion(-) diff --git a/python/examples/matplotlib_plot.py b/python/examples/matplotlib_plot.py index b8bdc287d6..b85d40c4c4 100755 --- a/python/examples/matplotlib_plot.py +++ b/python/examples/matplotlib_plot.py @@ -12,7 +12,6 @@ from __future__ import print_function import sys -sys.path.append("./pizza") import matplotlib.pyplot as plt # parse command line From 7e05c6f8fd2255751f3e7c0c84d50d068f4e24b3 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 2 Jun 2021 14:40:37 -0400 Subject: [PATCH 37/80] Update ROCm container defintiion and add missing lib path --- tools/singularity/ubuntu20.04_amd_rocm.def | 1 + tools/singularity/ubuntu20.04_gpu.def | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/singularity/ubuntu20.04_amd_rocm.def b/tools/singularity/ubuntu20.04_amd_rocm.def index 4eee97ffec..9db8265629 100644 --- a/tools/singularity/ubuntu20.04_amd_rocm.def +++ b/tools/singularity/ubuntu20.04_amd_rocm.def @@ -3,6 +3,7 @@ From: ubuntu:20.04 %environment export PATH=/usr/lib/ccache:${PATH}:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib:/opt/rocm-4.2.0/llvm/lib %post export DEBIAN_FRONTEND=noninteractive apt-get update diff --git a/tools/singularity/ubuntu20.04_gpu.def b/tools/singularity/ubuntu20.04_gpu.def index 29938b33f4..44f975d2c8 100644 --- a/tools/singularity/ubuntu20.04_gpu.def +++ b/tools/singularity/ubuntu20.04_gpu.def @@ -5,7 +5,7 @@ From: ubuntu:20.04 export PATH=/usr/lib/ccache:/usr/local/cuda-11.0/bin:${PATH}:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 export CUDADIR=/usr/local/cuda-11.0 export CUDA_PATH=/usr/local/cuda-11.0 - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.0/lib64 + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.0/lib64:/opt/rocm/lib:/opt/rocm-4.2.0/llvm/lib export LIBRARY_PATH=/usr/local/cuda-11.0/lib64/stubs %post export DEBIAN_FRONTEND=noninteractive @@ -131,7 +131,7 @@ From: ubuntu:20.04 ########################################################################### export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64 - git clone -b rocm-3.7.x https://github.com/ROCmSoftwarePlatform/hipCUB.git + git clone -b rocm-4.2.x https://github.com/ROCmSoftwarePlatform/hipCUB.git mkdir hipCUB/build cd hipCUB/build CXX=hipcc cmake -D BUILD_TEST=off .. From f3ba2d07f890f7c823444eab37d9058c57ac6bf9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 2 Jun 2021 15:14:37 -0400 Subject: [PATCH 38/80] prefer GNU make (aka gmake) over plain "make", to avoid compilation failures --- cmake/Modules/Packages/USER-HDNNP.cmake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/USER-HDNNP.cmake b/cmake/Modules/Packages/USER-HDNNP.cmake index 41d066a235..02b343e42f 100644 --- a/cmake/Modules/Packages/USER-HDNNP.cmake +++ b/cmake/Modules/Packages/USER-HDNNP.cmake @@ -55,6 +55,9 @@ if(DOWNLOAD_N2P2) endif() endif() + # prefer GNU make, if available. N2P2 lib seems to need it. + find_program(N2P2_MAKE NAMES gmake make) + # override compiler (optimization) flags in n2p2 library to flags used for LAMMPS # specifically -march=native can result in problems when compiling on HPC clusters or with a cross compiler # this convoluted way gets correct quoting/escaping when configuring the external project @@ -74,7 +77,7 @@ if(DOWNLOAD_N2P2) UPDATE_COMMAND "" CONFIGURE_COMMAND "" PATCH_COMMAND sed -i -e "s/\\(MPI_\\(P\\|Unp\\)ack(\\)/\\1(void *) /" src/libnnpif/LAMMPS/InterfaceLammps.cpp - BUILD_COMMAND make -f makefile libnnpif ${N2P2_BUILD_OPTIONS} + BUILD_COMMAND ${N2P2_MAKE} -f makefile libnnpif ${N2P2_BUILD_OPTIONS} BUILD_ALWAYS YES INSTALL_COMMAND "" BUILD_IN_SOURCE 1 From 62423b0c75224a62e08f9bd9f263ce9e281e06a1 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 2 Jun 2021 15:45:06 -0400 Subject: [PATCH 39/80] Disable new GPU neighbor for HIP --- lib/gpu/geryon/hip_device.h | 4 ---- lib/gpu/lal_neighbor.h | 4 ++++ lib/gpu/lal_neighbor_gpu.cu | 4 ++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/gpu/geryon/hip_device.h b/lib/gpu/geryon/hip_device.h index d3917ed0cf..11100cbea1 100644 --- a/lib/gpu/geryon/hip_device.h +++ b/lib/gpu/geryon/hip_device.h @@ -8,10 +8,6 @@ #ifndef HIP_DEVICE #define HIP_DEVICE -// workaround after GPU package Feb2021 update -// todo: make new neighbor code work with HIP -#define LAL_USE_OLD_NEIGHBOR - #include #include #include diff --git a/lib/gpu/lal_neighbor.h b/lib/gpu/lal_neighbor.h index fb854a706c..c1e1a87ef4 100644 --- a/lib/gpu/lal_neighbor.h +++ b/lib/gpu/lal_neighbor.h @@ -33,6 +33,10 @@ #endif #endif +#if defined(USE_HIP) +#define LAL_USE_OLD_NEIGHBOR +#endif + namespace LAMMPS_AL { class Neighbor { diff --git a/lib/gpu/lal_neighbor_gpu.cu b/lib/gpu/lal_neighbor_gpu.cu index 62c93e6cf1..6fd724b494 100644 --- a/lib/gpu/lal_neighbor_gpu.cu +++ b/lib/gpu/lal_neighbor_gpu.cu @@ -40,6 +40,10 @@ _texture_2d( pos_tex,int4); #endif #endif +#ifdef USE_HIP +#define LAL_USE_OLD_NEIGHBOR +#endif + __kernel void calc_cell_id(const numtyp4 *restrict x_, unsigned *restrict cell_id, int *restrict particle_id, From 8ea9179a00175f4d44c8239c166a679f1d895e81 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 2 Jun 2021 15:46:57 -0400 Subject: [PATCH 40/80] Correct device pointer datatype in HIP UCL_Const --- lib/gpu/geryon/hip_texture.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/gpu/geryon/hip_texture.h b/lib/gpu/geryon/hip_texture.h index 9117adc879..8738f6e2ea 100644 --- a/lib/gpu/geryon/hip_texture.h +++ b/lib/gpu/geryon/hip_texture.h @@ -128,12 +128,12 @@ class UCL_Const { _cq)); } /// Get device ptr associated with object - inline const void* begin() const { return &_global; } + inline const hipDeviceptr_t * begin() const { return &_global; } inline void clear() {} private: hipStream_t _cq; - void* _global; + hipDeviceptr_t _global; size_t _global_bytes; friend class UCL_Kernel; }; From 1e66dfbd74c9c74ab819c78ad419ffba4d381757 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 2 Jun 2021 17:44:45 -0400 Subject: [PATCH 41/80] Add LAMMPS_WEBSITE_BASEURL env variable to set canonical URL in docs --- doc/utils/sphinx-config/_themes/lammps_theme/layout.html | 9 +++++---- doc/utils/sphinx-config/_themes/lammps_theme/theme.conf | 1 - doc/utils/sphinx-config/conf.py.in | 2 ++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/utils/sphinx-config/_themes/lammps_theme/layout.html b/doc/utils/sphinx-config/_themes/lammps_theme/layout.html index 2f31c3d56a..703a3ace5d 100644 --- a/doc/utils/sphinx-config/_themes/lammps_theme/layout.html +++ b/doc/utils/sphinx-config/_themes/lammps_theme/layout.html @@ -38,10 +38,11 @@ {% if favicon %} {% endif %} - {# CANONICAL URL #} - {% if theme_canonical_url %} - - {% endif %} + + {#- CANONICAL URL #} + {%- if pageurl %} + + {%- endif -%} {# JAVASCRIPTS #} {%- block scripts %} diff --git a/doc/utils/sphinx-config/_themes/lammps_theme/theme.conf b/doc/utils/sphinx-config/_themes/lammps_theme/theme.conf index 37dc1185b7..444b1379f2 100644 --- a/doc/utils/sphinx-config/_themes/lammps_theme/theme.conf +++ b/doc/utils/sphinx-config/_themes/lammps_theme/theme.conf @@ -4,7 +4,6 @@ stylesheet = css/theme.css pygments_style = default [options] -canonical_url = analytics_id = collapse_navigation = False sticky_navigation = False diff --git a/doc/utils/sphinx-config/conf.py.in b/doc/utils/sphinx-config/conf.py.in index 7a6fbaf7a0..04315047ce 100644 --- a/doc/utils/sphinx-config/conf.py.in +++ b/doc/utils/sphinx-config/conf.py.in @@ -255,6 +255,8 @@ htmlhelp_basename = 'LAMMPSdoc' html_permalinks = True +html_baseurl = os.environ.get('LAMMPS_WEBSITE_BASEURL', '') + if 'epub' in sys.argv: html_math_renderer = 'imgmath' else: From 21607fe0ce58f844114aa7ad6eeec9d65d560c1d Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Thu, 3 Jun 2021 12:03:36 -0400 Subject: [PATCH 42/80] Update website URL in lammps theme --- doc/utils/sphinx-config/_themes/lammps_theme/breadcrumbs.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/utils/sphinx-config/_themes/lammps_theme/breadcrumbs.html b/doc/utils/sphinx-config/_themes/lammps_theme/breadcrumbs.html index 3a5672093d..d658528368 100644 --- a/doc/utils/sphinx-config/_themes/lammps_theme/breadcrumbs.html +++ b/doc/utils/sphinx-config/_themes/lammps_theme/breadcrumbs.html @@ -65,7 +65,7 @@ {% elif show_source and has_source and sourcename %} {{ _('View page source') }} {% endif %} - Website + Website Commands {% endif %} From 415f33134b037b48971c6f36f99a6a5b5d1dcb32 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Jun 2021 13:12:43 -0400 Subject: [PATCH 43/80] fix typos in Kolmolgorov-Crespi potential formula --- doc/src/pair_kolmogorov_crespi_full.rst | 2 +- doc/src/pair_kolmogorov_crespi_z.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/pair_kolmogorov_crespi_full.rst b/doc/src/pair_kolmogorov_crespi_full.rst index 6c9817cd5e..858b0eb984 100644 --- a/doc/src/pair_kolmogorov_crespi_full.rst +++ b/doc/src/pair_kolmogorov_crespi_full.rst @@ -36,7 +36,7 @@ No simplification is made, .. math:: E = & \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ - V_{ij} = & e^{-\lambda (r_{ij} -z_0)} \left [ C + f(\rho_{ij}) + f(\rho_{ji}) - A \left ( \frac{r_{ij}}{z_0}\right )^{-6} \right ] \\ + V_{ij} = & e^{-\lambda (r_{ij} -z_0)} \left [ C + f(\rho_{ij}) + f(\rho_{ji}) \right ] - A \left ( \frac{r_{ij}}{z_0}\right )^{-6} \\ \rho_{ij}^2 = & r_{ij}^2 - ({\bf r}_{ij}\cdot {\bf n}_{i})^2 \\ \rho_{ji}^2 = & r_{ij}^2 - ({\bf r}_{ij}\cdot {\bf n}_{j})^2 \\ f(\rho) & = e^{-(\rho/\delta)^2} \sum_{n=0}^2 C_{2n} { (\rho/\delta) }^{2n} diff --git a/doc/src/pair_kolmogorov_crespi_z.rst b/doc/src/pair_kolmogorov_crespi_z.rst index 942ef85836..bd02221074 100644 --- a/doc/src/pair_kolmogorov_crespi_z.rst +++ b/doc/src/pair_kolmogorov_crespi_z.rst @@ -33,7 +33,7 @@ which is to take all normals along the z-axis. .. math:: E = & \frac{1}{2} \sum_i \sum_{j \neq i} V_{ij} \\ - V_{ij} = & e^{-\lambda(r_{ij} -z_0}) \left[ C + f(\rho_{ij}) + f(\rho_{ji}) \right] - A \left( \frac{r_{ij}}{z_0}\right)^{-6} + A \left( \frac{\textrm{cutoff}}{z_0}\right)^{-6} \\ + V_{ij} = & e^{-\lambda(r_{ij} -z_0)} \left[ C + f(\rho_{ij}) + f(\rho_{ji}) \right] - A \left( \frac{r_{ij}}{z_0}\right)^{-6} + A \left( \frac{\textrm{cutoff}}{z_0}\right)^{-6} \\ \rho_{ij}^2 = & \rho_{ji}^2 = x_{ij}^2 + y_{ij}^2 \qquad \qquad (\mathbf{n}_i \equiv \mathbf{\hat{z}}) \\ f(\rho) = & e^{-(\rho/\delta)^2} \sum_{n=0}^2 C_{2n} \left( \rho/\delta \right)^{2n} From 2b012f4af7cbb22f4ec6a6bc66ac45ad224c3118 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Thu, 3 Jun 2021 13:16:04 -0400 Subject: [PATCH 44/80] Update copyright date in docs --- doc/utils/sphinx-config/conf.py.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/utils/sphinx-config/conf.py.in b/doc/utils/sphinx-config/conf.py.in index 04315047ce..ba11a276f5 100644 --- a/doc/utils/sphinx-config/conf.py.in +++ b/doc/utils/sphinx-config/conf.py.in @@ -76,7 +76,7 @@ master_doc = 'Manual' # General information about the project. project = 'LAMMPS' -copyright = '2003-2020 Sandia Corporation' +copyright = '2003-2021 Sandia Corporation' def get_lammps_version(): import os From 4a8b460201da5ecb18dd601272153340528195bf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Jun 2021 14:04:59 -0400 Subject: [PATCH 45/80] update singularity container definition file for Fedora 34 --- tools/singularity/README.md | 2 +- .../{fedora32_mingw.def => fedora34_mingw.def} | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) rename tools/singularity/{fedora32_mingw.def => fedora34_mingw.def} (87%) diff --git a/tools/singularity/README.md b/tools/singularity/README.md index 100d367439..3f7b69d409 100644 --- a/tools/singularity/README.md +++ b/tools/singularity/README.md @@ -48,7 +48,7 @@ make | ------------------------------ | ---------------------------------------------- | | centos7.def | CentOS 7.x with EPEL enabled, no LaTeX | | centos8.def | CentOS 8.x with EPEL enabled | -| fedora32_mingw.def | Fedora 32 with MinGW cross-compiler toolchain | +| fedora34_mingw.def | Fedora 34 with MinGW cross-compiler toolchain | | ubuntu16.04.def | Ubuntu 16.04LTS with MPI == OpenMPI, no LaTeX | | ubuntu18.04.def | Ubuntu 18.04LTS with MPI == OpenMPI | | ubuntu18.04_amd_rocm.def | Ubuntu 18.04LTS with AMD ROCm toolkit | diff --git a/tools/singularity/fedora32_mingw.def b/tools/singularity/fedora34_mingw.def similarity index 87% rename from tools/singularity/fedora32_mingw.def rename to tools/singularity/fedora34_mingw.def index fbbce4f279..4dd27894d4 100644 --- a/tools/singularity/fedora32_mingw.def +++ b/tools/singularity/fedora34_mingw.def @@ -1,11 +1,11 @@ BootStrap: docker -From: fedora:32 +From: fedora:34 %post dnf -y update dnf -y install vim-enhanced git file make cmake patch which file Lmod \ - ninja-build clang libomp-devel libubsan libasan libtsan diffutils \ - dos2unix findutils rsync python-devel libjpeg-devel libpng-devel \ + ninja-build clang clang-tools-extra libomp-devel libubsan libasan libtsan \ + diffutils dos2unix findutils rsync python-devel libjpeg-devel libpng-devel \ ccache gcc-c++ gcc-gfortran gdb valgrind eigen3-devel openblas-devel \ openmpi-devel mpich-devel fftw-devel voro++-devel gsl-devel hdf5-devel \ netcdf-devel netcdf-cxx-devel netcdf-mpich-devel netcdf-openmpi-devel \ @@ -23,6 +23,10 @@ From: fedora:32 mingw32-fftw mingw64-fftw \ mingw32-libjpeg-turbo mingw64-libjpeg-turbo \ mingw32-libpng mingw64-libpng \ + mingw32-python3 mingw64-python3 \ + mingw32-python3-numpy mingw64-python3-numpy \ + mingw32-python3-pyyaml mingw64-python3-pyyaml \ + mingw32-python3-setuptools mingw64-python3-setuptools \ mingw32-readline mingw64-readline \ mingw32-termcap mingw64-termcap \ mingw32-zlib mingw64-zlib \ @@ -44,10 +48,12 @@ From: fedora:32 # manually install Plumed mkdir plumed cd plumed - version=2.6.1 + version=2.7.1 curl -L -o plumed.tar.gz https://github.com/plumed/plumed2/releases/download/v${version}/plumed-src-${version}.tgz tar -xzf plumed.tar.gz cd plumed-${version} + # temporary fix for Plumed-2.7.1 (should do no harm on later versions) + sed -i '/^#include /a #include ' src/lepton/Operation.h ./configure --disable-doc --prefix=/usr make make install @@ -87,7 +93,7 @@ EOF CUSTOM_PROMPT_ENV=/.singularity.d/env/99-zz_custom_prompt.sh cat >$CUSTOM_PROMPT_ENV < Date: Thu, 3 Jun 2021 14:18:20 -0400 Subject: [PATCH 46/80] Set copyright date automatically --- doc/utils/sphinx-config/conf.py.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/utils/sphinx-config/conf.py.in b/doc/utils/sphinx-config/conf.py.in index ba11a276f5..68a61af009 100644 --- a/doc/utils/sphinx-config/conf.py.in +++ b/doc/utils/sphinx-config/conf.py.in @@ -15,6 +15,7 @@ import sys import os +from datetime import date has_enchant = False try: @@ -76,7 +77,7 @@ master_doc = 'Manual' # General information about the project. project = 'LAMMPS' -copyright = '2003-2021 Sandia Corporation' +copyright = '2003-{} Sandia Corporation'.format(date.today().year) def get_lammps_version(): import os From 2afa783e1ec26dc5423925acd63784f102fef55b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Jun 2021 16:13:38 -0400 Subject: [PATCH 47/80] silence compiler warning --- src/USER-MDI/fix_mdi_engine.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/USER-MDI/fix_mdi_engine.cpp b/src/USER-MDI/fix_mdi_engine.cpp index 0eec1740d3..79cac7f4e7 100644 --- a/src/USER-MDI/fix_mdi_engine.cpp +++ b/src/USER-MDI/fix_mdi_engine.cpp @@ -43,7 +43,7 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ FixMDIEngine::FixMDIEngine(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), id_pe(nullptr), pe(nullptr), id_ke(nullptr), ke(nullptr) + Fix(lmp, narg, arg), id_pe(nullptr), id_ke(nullptr), pe(nullptr), ke(nullptr) { if (narg != 3) error->all(FLERR, "Illegal fix mdi command"); @@ -167,7 +167,7 @@ void FixMDIEngine::init() /* ---------------------------------------------------------------------- */ -void FixMDIEngine::min_setup(int vflag) +void FixMDIEngine::min_setup(int /* vflag */) { engine_mode("@FORCES"); } @@ -181,21 +181,21 @@ void FixMDIEngine::post_integrate() /* ---------------------------------------------------------------------- */ -void FixMDIEngine::min_pre_force(int vflag) +void FixMDIEngine::min_pre_force(int /* vflag */) { engine_mode("@COORDS"); } /* ---------------------------------------------------------------------- */ -void FixMDIEngine::min_post_force(int vflag) +void FixMDIEngine::min_post_force(int /* vflag */) { engine_mode("@FORCES"); } /* ---------------------------------------------------------------------- */ -void FixMDIEngine::post_force(int vflag) +void FixMDIEngine::post_force(int /* vflag */) { if (most_recent_init == 1) engine_mode("@FORCES"); @@ -444,7 +444,6 @@ void FixMDIEngine::receive_coordinates(Error *error) // pick local atoms from the buffer double **x = atom->x; - int *mask = atom->mask; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) { x[i][0] = buffer[3 * (atom->tag[i] - 1) + 0] * posconv; @@ -500,7 +499,6 @@ void FixMDIEngine::send_coordinates(Error *error) // copy local atoms into buffer at correct locations double **x = atom->x; - int *mask = atom->mask; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) { coords[3 * (atom->tag[i] - 1) + 0] = x[i][0] / posconv; @@ -534,7 +532,6 @@ void FixMDIEngine::send_charges(Error *error) // pick local atoms from the buffer double *charge = atom->q; - int *mask = atom->mask; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) { charges[atom->tag[i] - 1] = charge[i]; } @@ -723,7 +720,6 @@ void FixMDIEngine::send_forces(Error *error) double *forces_reduced; double *x_buf; - int *mask = atom->mask; int nlocal = atom->nlocal; int64_t ncoords = 3 * atom->natoms; @@ -818,7 +814,6 @@ void FixMDIEngine::receive_forces(Error *error, int mode) // pick local atoms from the buffer double **f = atom->f; - int *mask = atom->mask; int nlocal = atom->nlocal; if (mode == 0) { // Replace From b92c2ab873e1be17308350068522fad882a18929 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Jun 2021 16:14:14 -0400 Subject: [PATCH 48/80] correct broadcast for atom->natoms --- src/USER-MDI/fix_mdi_engine.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/USER-MDI/fix_mdi_engine.cpp b/src/USER-MDI/fix_mdi_engine.cpp index 79cac7f4e7..260701107b 100644 --- a/src/USER-MDI/fix_mdi_engine.cpp +++ b/src/USER-MDI/fix_mdi_engine.cpp @@ -228,9 +228,11 @@ int FixMDIEngine::execute_command(const char *command, MDI_Comm mdicomm) // respond to any driver command if (strcmp(command, ">NATOMS") == 0) { - ierr = MDI_Recv((char *) &atom->natoms, 1, MDI_INT, mdicomm); + int mdi_natoms = 0; + ierr = MDI_Recv((char *) &mdi_natoms, 1, MDI_INT, mdicomm); if (ierr != 0) error->all(FLERR, "MDI: Unable to receive number of atoms from driver"); - MPI_Bcast(&atom->natoms, 1, MPI_INT, 0, world); + atom->natoms = mdi_natoms; + MPI_Bcast(&atom->natoms, 1, MPI_LMP_BIGINT, 0, world); } else if (strcmp(command, "natoms; From ed624b518e7ce75869a192f612bf4c37d6a1182f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Jun 2021 16:51:39 -0400 Subject: [PATCH 49/80] update windows specific instructions for running LAMMPS for latest package --- doc/src/Install_windows.rst | 2 +- doc/src/Run_windows.rst | 19 +++++++++++-------- doc/src/Speed_gpu.rst | 4 ++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/doc/src/Install_windows.rst b/doc/src/Install_windows.rst index 56ca84f3ff..1df7ae7f3f 100644 --- a/doc/src/Install_windows.rst +++ b/doc/src/Install_windows.rst @@ -14,7 +14,7 @@ current and older versions of LAMMPS are available. 32-bit and 64-bit installers are available, and each installer contains both a serial and parallel executable. The installer web site also explains how to install the Windows MPI package (MPICH2 from Argonne National Labs), -needed to run in parallel. +needed to run in parallel with MPI. The LAMMPS binaries contain *all* :doc:`optional packages ` included in the source distribution except: KIM, KOKKOS, MSCG, PYTHON, diff --git a/doc/src/Run_windows.rst b/doc/src/Run_windows.rst index 0343e123b9..8813d6d59e 100644 --- a/doc/src/Run_windows.rst +++ b/doc/src/Run_windows.rst @@ -7,7 +7,7 @@ To run a serial (non-MPI) executable, follow these steps: then typing "cmd". * Move to the directory where you have your input script, (e.g. by typing: cd "Documents"). -* At the command prompt, type "lmp_serial -in in.file", where +* At the command prompt, type "lmp -in in.file", where in.file is the name of your LAMMPS input script. Note that the serial executable includes support for multi-threading @@ -16,7 +16,7 @@ parallelization from the styles in the USER-OMP packages. To run with .. code-block:: bash - lmp_serial -in in.lj -pk omp 4 -sf omp + lmp -in in.lj -pk omp 4 -sf omp ---------- @@ -41,15 +41,17 @@ into the MPICH2 installation directory, then into the sub-directory * Move to the directory where you have your input file (e.g. by typing: cd "Documents"). -Then type something like this: +Then you can run the executable in serial like in the example above +or in parallel using MPI with one of the following commands: .. code-block:: bash - mpiexec -localonly 4 lmp_mpi -in in.file - mpiexec -np 4 lmp_mpi -in in.file + mpiexec -localonly 4 lmp -in in.file + mpiexec -np 4 lmp -in in.file where in.file is the name of your LAMMPS input script. For the latter -case, you may be prompted to enter your password. +case, you may be prompted to enter the password that you set during +installation of the MPI library software. In this mode, output may not immediately show up on the screen, so if your input script takes a long time to execute, you may need to be @@ -60,11 +62,12 @@ something like this: .. code-block:: bash - lmp_mpi -in in.lj + lmp -in in.lj Note that the parallel executable also includes OpenMP multi-threading, which can be combined with MPI using something like: .. code-block:: bash - mpiexec -localonly 2 lmp_mpi -in in.lj -pk omp 2 -sf omp + mpiexec -localonly 2 lmp -in in.lj -pk omp 2 -sf omp + diff --git a/doc/src/Speed_gpu.rst b/doc/src/Speed_gpu.rst index 4acf8c93c1..2cb8c08fd5 100644 --- a/doc/src/Speed_gpu.rst +++ b/doc/src/Speed_gpu.rst @@ -35,8 +35,8 @@ Coulombics. It has the following general features: To compile and use this package in CUDA mode, you currently need to have an NVIDIA GPU and install the corresponding NVIDIA CUDA -toolkit software on your system (this is primarily tested on Linux -and completely unsupported on Windows): +toolkit software on your system (this is only tested on Linux +and unsupported on Windows): * Check if you have an NVIDIA GPU: cat /proc/driver/nvidia/gpus/\*/information * Go to http://www.nvidia.com/object/cuda_get.html From 5599deae0a4f6d92e960bbe017d9dc9516d74775 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 3 Jun 2021 19:47:32 -0400 Subject: [PATCH 50/80] quick-fix to compile plumed-2.7.1 with newer GCC and Clang compilers --- cmake/Modules/Packages/USER-PLUMED.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index e71542cfc5..e9eba779f5 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -72,6 +72,7 @@ if(DOWNLOAD_PLUMED) ${PLUMED_CONFIG_OMP} CXX=${PLUMED_CONFIG_CXX} CC=${PLUMED_CONFIG_CC} + PATCH_COMMAND sed -i "/^#include /a #include " /src/lepton/Operation.h BUILD_BYPRODUCTS ${PLUMED_BUILD_BYPRODUCTS} ) ExternalProject_get_property(plumed_build INSTALL_DIR) From 80c90d8ee2f62f8651fd1dd9fb3c5c6039624696 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 4 Jun 2021 00:34:37 -0400 Subject: [PATCH 51/80] fix broken links/references --- doc/src/Packages_details.rst | 3 --- doc/src/pair_mesodpd.rst | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index e7dc905e22..59a7230fc3 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -1903,9 +1903,6 @@ algorithm. * examples/USER/mesodpd * https://www.lammps.org/movies.html#mesodpd -* examples/USER/meso -* http://www.lammps.org/movies.html#mesodpd - ---------- .. _PKG-USER-MESONT: diff --git a/doc/src/pair_mesodpd.rst b/doc/src/pair_mesodpd.rst index 1efdfa8b45..6bb259a10d 100644 --- a/doc/src/pair_mesodpd.rst +++ b/doc/src/pair_mesodpd.rst @@ -238,7 +238,7 @@ Example scripts """"""""""""""" There are example scripts for using all these pair styles in -examples/USER/meso. The example for an eDPD simulation models heat +examples/USER/mesodpd. The example for an eDPD simulation models heat conduction with source terms analog of periodic Poiseuille flow problem. The setup follows Fig.12 in :ref:`(Li2014_JCP) `. The output of the short eDPD simulation (about 2 minutes on a single core) From ed604e906b1831a42ff41d5b8324476d0f421935 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 4 Jun 2021 22:41:25 -0500 Subject: [PATCH 52/80] Updated README for USER-DIELECTRIC --- src/USER-DIELECTRIC/README | 73 ++++++++------------------------------ 1 file changed, 14 insertions(+), 59 deletions(-) diff --git a/src/USER-DIELECTRIC/README b/src/USER-DIELECTRIC/README index 5996d00572..11e9bde03f 100644 --- a/src/USER-DIELECTRIC/README +++ b/src/USER-DIELECTRIC/README @@ -1,73 +1,28 @@ -* Description +The USER-DIELECTRIC package provides several solvers for computing surface induced charges +at the interface between two media with different dielectric constants: -The USER-DIELECTRIC package provides several solvers for computing surface induced charges: - * the boundary element method using the GMRES solver (fix polarize/bem/gmres), - * the induced charge computation (ICC*) (fix polarize/bem/icc), and - * the direct optimization of an energy functional derived from the variational approach (fix polarize/functional). + * the boundary element solver using the GMRES algorithm (fix polarize/bem/gmres), + * the boundary element solver using the successive overelaxation algorithm (fix polarize/bem/icc), + * the direct optimization of an energy functional (fix polarize/functional). + +The interfaces can be immobile (for example, graphene layers in contact with water), +or mobile (for example, dielectric colloids in a solvent). See the header of the source files for more details on the references of the methods. -Example input scripts are given at examples/USER/dielectric. - -The USER-DIELECTRIC package was created by Trung Nguyen while at Northwestern, -with contribution from Honghao Li (FixQeqDielectric) while at Northwestern. +The USER-DIELECTRIC package was created by Trung Nguyen while at Northwestern. Questions can be addressed to Trung Nguyen (ndactrung@gmail.com). * Citation Please cite the following paper if you use the code for your publications -Trung Dac Nguyen, Honghao Li, Debarshee Bagchi, Francisco J. Solis, Monica Olvera de la Cruz, -"Incorporating surface polarization effects into large-scale coarse-grained Molecular Dynamics simulation", -Computer Physics Communications 241, 80--91 (2019); DOI: 10.1016/j.cpc.2019.03.006. +T. D. Nguyen, H. Li, D. Bagchi, F. J. Solis, M. Olvera de la Cruz, +"Incorporating surface polarization effects into large-scale coarse-grained +Molecular Dynamics simulation", Computer Physics Communications 241, 80--91 (2019). -* Installation +* Examples -1. Clone the git repo: git clone https://bitbucket.org/ndtrung/lammps.git - -2. Check out the dielectric branch: git checkout dielectric - -3. Build: go to src/, and run - -make yes-molecule - -make yes-kspace - -make yes-user-dielectric - -a. If you don't have GSL libraries (libgsl.a and libgslcblas.a) installed in your machine, -remove fix_qeq_dielectric.cpp and fix_qeq_dielectric.h. Then build with - -make mpi -j8 - - -b. If you do have GSL headers and libraries installed, assuming that they are in /path/to/gsl/install, -copy MAKE/Makefile.mpi to MAKE/Makefile.mpi_gsl, and add to the variables CCFLAGS and LINKFLAGS -in MAKE/Makefile.mpi_gsl: - -GSL_PATH = /path/to/gsl/install - -... - -CCFLAGS = -O2 -march=native -funroll-loops -ffast-math -fopenmp -I$(GSL_PATH)/include - -... - -LINKFLAGS = -O2 -fopenmp -L$(GSL_PATH)/lib - -LIB = -lgsl -lgslcblas - -Finally, build with - -make mpi_gsl -j8 - -* Test - -Go to examples/USER/dielectric, and run +Example input scripts and data files can be found under examples/USER/dielectric: mpirun -np 8 ../../../src/lmp_mpi -in in.confined - -or with the modified Makefile.mpi_gsl: - -mpirun -np 8 ../../../src/lmp_mpi_gsl -in in.confined - From 2dd7a0a678b5d57eed3d7fbdca7fb6b4aac94c40 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 4 Jun 2021 23:09:27 -0500 Subject: [PATCH 53/80] Removed debugging leftover --- src/pair_hybrid.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index 6643f6eab4..002429e7b3 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -533,7 +533,7 @@ void PairHybrid::coeff(int narg, char **arg) void PairHybrid::init_style() { int i,m,itype,jtype,used,istyle,skip; - printf("pair hybrid init style\n"); + // error if a sub-style is not used int ntypes = atom->ntypes; @@ -655,7 +655,6 @@ void PairHybrid::init_style() double PairHybrid::init_one(int i, int j) { - printf("pair hybrid init one\n"); // if I,J is not set explicitly: // perform mixing only if I,I sub-style = J,J sub-style // also require I,I and J,J are both assigned to single sub-style From f92bee868abaf6747741b0fa0e29370f3098e252 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 11:12:58 -0400 Subject: [PATCH 54/80] whitespace fixes --- doc/src/fix_polarize_bem_gmres.rst | 2 +- doc/src/fix_polarize_bem_icc.rst | 2 +- doc/src/fix_polarize_functional.rst | 2 +- src/USER-DIELECTRIC/atom_vec_dielectric.cpp | 2 +- src/USER-DIELECTRIC/compute_efield_atom.cpp | 2 +- .../fix_polarize_bem_gmres.cpp | 26 ++++++++-------- src/USER-DIELECTRIC/fix_polarize_bem_gmres.h | 2 +- src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 10 +++---- src/USER-DIELECTRIC/fix_polarize_bem_icc.h | 2 +- .../fix_polarize_functional.cpp | 30 +++++++++---------- src/USER-DIELECTRIC/fix_polarize_functional.h | 4 +-- .../pair_coul_cut_dielectric.cpp | 4 +-- .../pair_lj_cut_coul_cut_dielectric.cpp | 2 +- .../pair_lj_cut_coul_cut_dielectric_omp.cpp | 6 ++-- .../pair_lj_cut_coul_debye_dielectric.cpp | 2 +- .../pair_lj_cut_coul_long_dielectric.cpp | 6 ++-- .../pair_lj_cut_coul_long_dielectric_omp.cpp | 2 +- .../pair_lj_cut_coul_msm_dielectric.cpp | 2 +- .../pair_lj_long_coul_long_dielectric.cpp | 2 +- .../pair_lj_long_coul_long_dielectric.h | 2 +- src/USER-DIELECTRIC/pppm_dielectric.cpp | 2 +- 21 files changed, 57 insertions(+), 57 deletions(-) diff --git a/doc/src/fix_polarize_bem_gmres.rst b/doc/src/fix_polarize_bem_gmres.rst index c410b33f6a..40f2b650ac 100644 --- a/doc/src/fix_polarize_bem_gmres.rst +++ b/doc/src/fix_polarize_bem_gmres.rst @@ -62,7 +62,7 @@ as described in :ref:`(Barros) ` to solve for :math:`\sigma_b`. Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -The :doc:`fix_modify ` +The :doc:`fix_modify ` This fix computes a global scalar which can be accessed by various :doc:`output commands `. The scalar is the Colvars diff --git a/doc/src/fix_polarize_bem_icc.rst b/doc/src/fix_polarize_bem_icc.rst index 130b99fd41..a771d28f60 100644 --- a/doc/src/fix_polarize_bem_icc.rst +++ b/doc/src/fix_polarize_bem_icc.rst @@ -62,7 +62,7 @@ as described in :ref:`(Tyagi) ` to solve for :math:`\sigma_b`. Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -The :doc:`fix_modify ` +The :doc:`fix_modify ` This fix computes a global scalar which can be accessed by various :doc:`output commands `. The scalar is the Colvars diff --git a/doc/src/fix_polarize_functional.rst b/doc/src/fix_polarize_functional.rst index 20005c8e8e..79a7dc621d 100644 --- a/doc/src/fix_polarize_functional.rst +++ b/doc/src/fix_polarize_functional.rst @@ -39,7 +39,7 @@ examples/USER/dielectric directory. Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -The :doc:`fix_modify ` +The :doc:`fix_modify ` This fix computes a global scalar which can be accessed by various :doc:`output commands `. The scalar is the Colvars diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp index d038f2caa8..a62aa609be 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp @@ -42,7 +42,7 @@ AtomVecDielectric::AtomVecDielectric(LAMMPS *lmp) : AtomVec(lmp) mass_type = PER_TYPE; atom->molecule_flag = atom->q_flag = atom->mu_flag = 1; - + // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings // order of fields in a string does not matter diff --git a/src/USER-DIELECTRIC/compute_efield_atom.cpp b/src/USER-DIELECTRIC/compute_efield_atom.cpp index 43dd589e08..2a07535adb 100644 --- a/src/USER-DIELECTRIC/compute_efield_atom.cpp +++ b/src/USER-DIELECTRIC/compute_efield_atom.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author: Trung Nguyen (Northwestern) + Contributing author: Trung Nguyen (Northwestern) ------------------------------------------------------------------------- */ #include "compute_efield_atom.h" diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp index b23cd69757..eabe656582 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -392,7 +392,7 @@ void FixPolarizeBEMGMRES::compute_induced_charges() int idx = induced_charge_idx[i]; q[i] = induced_charges[idx]*area[i] + q_real[i]; } else { - q[i] = q_backup[i]; + q[i] = q_backup[i]; } } @@ -504,7 +504,7 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) // update h(k-1, i-1) <- y(i-1) for i = 1..(k_1) - for (i = 1; i <= k + 1; i++) + for (i = 1; i <= k + 1; i++) h[i-1+(k-1)*(mr+1)] = y[i-1]; } @@ -517,7 +517,7 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) // update h(k-1,k-1) and set h(k-1,k) to zero - h[(k-1)+(k-1)*(mr+1)] = c[k-1] * h[(k-1)+(k-1)*(mr+1)] + h[(k-1)+(k-1)*(mr+1)] = c[k-1] * h[(k-1)+(k-1)*(mr+1)] - s[k-1] * h[ k +(k-1)*(mr+1)]; h[k +(k-1)*(mr+1)] = 0; @@ -549,7 +549,7 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) y[k] = g[k] / h[k + k*(mr+1)]; for (i = k; i >= 1; i--) { y[i-1] = g[i-1]; - for (j = i + 1; j <= k + 1; j++) + for (j = i + 1; j <= k + 1; j++) y[i-1] = y[i-1] - h[(i-1)+(j-1)*(mr+1)] * y[j-1]; y[i-1] = y[i-1] / h[(i-1)+(i-1)*(mr+1)]; } @@ -590,7 +590,7 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) iterations = itr; } -/* ---------------------------------------------------------------------- +/* ---------------------------------------------------------------------- compute the result of operator A on a given vector w matvec(A, v(k-1), v(k), n); ------------------------------------------------------------------------- */ @@ -606,11 +606,11 @@ void FixPolarizeBEMGMRES::apply_operator(double* w, double* Aw, int n) double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; - double epsilon0 = force->dielectric; + double epsilon0 = force->dielectric; int eflag = 0; int vflag = 0; - // set the induced charges to be w + // set the induced charges to be w // the real charges are set to zero: Aw only involves sigma_b (not sigma_f) // need not to revert the induced charges // because update_residual() will set the induced charges anyway @@ -618,7 +618,7 @@ void FixPolarizeBEMGMRES::apply_operator(double* w, double* Aw, int n) for (i = 0; i < nlocal; i++) { if (induced_charge_idx[i] < 0) { q[i] = 0; - } else { + } else { int idx = induced_charge_idx[i]; q[i] = w[idx]*area[i]; } @@ -658,7 +658,7 @@ void FixPolarizeBEMGMRES::apply_operator(double* w, double* Aw, int n) MPI_Allreduce(buffer,Aw,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); } -/* ---------------------------------------------------------------------- +/* ---------------------------------------------------------------------- need to turn the real charges back on set the induced charges to be w compute the new residual in r = b - Ax without directly computing A x @@ -705,7 +705,7 @@ void FixPolarizeBEMGMRES::update_residual(double* w, double* r, int n) // compute the residual according to Eq. (60) in Barros et al. // Note: in the definition of the electrical fields in Equations (41) and (53) // in Ref. Barros et al there is a factor 1/(4pi). - + for (i = 0; i < num_induced_charges; i++) buffer[i] = 0; for (i = 0; i < nlocal; i++) { @@ -726,8 +726,8 @@ void FixPolarizeBEMGMRES::update_residual(double* w, double* r, int n) } double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / epsilon[i]; double sigma_f = q_real[i] / area[i]; - buffer[idx] = (1 - em[i]) * sigma_f - em[i] * w[idx] - - epsilon0 * ed[i] * dot / (4*MY_PI); + buffer[idx] = (1 - em[i]) * sigma_f - em[i] * w[idx] - + epsilon0 * ed[i] * dot / (4*MY_PI); } MPI_Allreduce(buffer,r,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); @@ -947,7 +947,7 @@ void FixPolarizeBEMGMRES::set_dielectric_params(double ediff, double emean, double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; - + for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { ed[i] = ediff; diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h index b6c9a91717..8cf2ebd6c3 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h @@ -61,7 +61,7 @@ class FixPolarizeBEMGMRES : public Fix { double* induced_charges; // values of induced charges double* buffer; // buffer of size num_induced_charges double* q_backup; // backup for the real charges - int allocated; + int allocated; double **efield_pair; // electrical field at position of atom i due to pair contribution double **efield_kspace; // electrical field at position of atom i due to kspace contribution int kspaceflag; // 1 if kspace is used for the induced charge computation diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp index 97bbb5c95e..995e8ee225 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -223,7 +223,7 @@ void FixPolarizeBEMICC::compute_induced_charges() double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; - double epsilon0 = force->dielectric; + double epsilon0 = force->dielectric; int eflag = 1; int vflag = 0; int itr; @@ -291,7 +291,7 @@ void FixPolarizeBEMICC::compute_induced_charges() // Eq. (69) in Barros et al., sigma_f[i] = q_real[i] / area[i] // note the area[i] is included here to ensure correct charge unit - // for direct use in force/efield compute + // for direct use in force/efield compute double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / (4*MY_PI) / epsilon[i]; double q_bound = q[i] - q_free; @@ -300,7 +300,7 @@ void FixPolarizeBEMICC::compute_induced_charges() q[i] = q_free + q_bound; // Eq. (11) in Tyagi et al., with f from Eq. (6) - // NOTE: Tyagi et al. defined the normal vector n_i pointing + // NOTE: Tyagi et al. defined the normal vector n_i pointing // from the medium containg the ions toward the other medium, // which makes the normal vector direction depend on the ion position // Also, since Tyagi et al. chose epsilon_1 for the uniform dielectric constant @@ -430,7 +430,7 @@ void FixPolarizeBEMICC::set_dielectric_params(double ediff, double emean, double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; - + for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { ed[i] = ediff; @@ -452,4 +452,4 @@ double FixPolarizeBEMICC::compute_vector(int n) if (n == 0) return iterations; else if (n == 1) return rho; else return 0; -} \ No newline at end of file +} diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.h b/src/USER-DIELECTRIC/fix_polarize_bem_icc.h index 46e937a561..fedb57179d 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.h +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.h @@ -52,7 +52,7 @@ class FixPolarizeBEMICC : public Fix { void force_clear(); private: - int iterations; // actual number of iterations + int iterations; // actual number of iterations int itr_max; // maximum number of outer iterations double tol_abs, tol_rel; // tolerance for convergence double rho; // current error diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index 3b4c3bad82..b7943f505a 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -148,7 +148,7 @@ FixPolarizeFunctional::~FixPolarizeFunctional() memory->destroy(rhs2); memory->destroy(buffer1); memory->destroy(buffer2); - + if (allocated) deallocate(); atom->delete_callback(id,0); } @@ -244,7 +244,7 @@ void FixPolarizeFunctional::init() memory->create(buffer2,num_induced_charges,num_induced_charges,"polarize:buffer2"); memory->create(induced_charges,num_induced_charges,"polarize:induced_charges"); - + num_ions = 0; for (i = 0; i <= maxtag; i++) @@ -340,7 +340,7 @@ void FixPolarizeFunctional::setup_pre_force(int vflag) // calculate Rww before the run (assuming that the interface is fixed for now) // otherwise this should be done every time step in pre_force() - calculate_Rww_cutoff(); + calculate_Rww_cutoff(); } /* ---------------------------------------------------------------------- */ @@ -368,15 +368,15 @@ void FixPolarizeFunctional::update_induced_charges() calculate_qiRqw_cutoff(); // conjugate gradient solver for w from Rww * w = -qRqw - + for (int i = 0; i < num_induced_charges; i++) for (int j = 0; j < num_induced_charges; j++) cg_A[i][j] = Rww[i][j] + Rww[j][i]; - + for (int i = 0; i < num_induced_charges; i++) induced_charges[i] = 0; cg_solver(cg_A, qiRqwVector, induced_charges, num_induced_charges); - + // assign charges to the particles in the group double *q = atom->q; @@ -393,7 +393,7 @@ void FixPolarizeFunctional::update_induced_charges() charge_rescaled(REAL2SCALED); } -/* ---------------------------------------------------------------------- +/* ---------------------------------------------------------------------- scaled2real = 1: convert ion charges from scaled values (divided by epsilon) to real values = 0: real values to scaled values ------------------------------------------------------------------------- */ @@ -598,7 +598,7 @@ double FixPolarizeFunctional::memory_usage() bytes += num_induced_charges*sizeof(double); // sum1G1qw_epsilon bytes += num_induced_charges*sizeof(double); // sum2ndotGwq_epsilon bytes += num_ions*num_induced_charges*sizeof(double); // G1qw_real - bytes += nmax*sizeof(int); // induced_charge_idx + bytes += nmax*sizeof(int); // induced_charge_idx bytes += nmax*sizeof(int); // ion_idx bytes += num_induced_charges*sizeof(double); // induced_charges return bytes; @@ -893,7 +893,7 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() MPI_DOUBLE,MPI_SUM,world); // the following loop need the above results: gradG1wq_real - // calculate sum1G1qw_epsilon and sum2ndotGwq_epsilon + // calculate sum1G1qw_epsilon and sum2ndotGwq_epsilon // fill up rhs1 with local sum1G1qw_epsilon and rhs2 with local sum2ndotGwq_epsilon memset(rhs1, 0, num_induced_charges*sizeof(double)); @@ -1054,7 +1054,7 @@ void FixPolarizeFunctional::set_dielectric_params(double ediff, double emean, double *epsilon = atom->epsilon; int *mask = atom->mask; int nlocal = atom->nlocal; - + for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { ed[i] = ediff; @@ -1066,7 +1066,7 @@ void FixPolarizeFunctional::set_dielectric_params(double ediff, double emean, } } -/* ---------------------------------------------------------------------- +/* ---------------------------------------------------------------------- real Green's function ------------------------------------------------------------------------ */ @@ -1153,7 +1153,7 @@ double FixPolarizeFunctional::calculate_ndotgreens_ewald_self_vertex(double area return curvature * MY_PIS / sqrt(area); } -/* ---------------------------------------------------------------------- +/* ---------------------------------------------------------------------- compute the inner product between two vectors x and y: x^t * y where ^t is the transpose operator -- ---------------------------------------------------------------------- */ @@ -1175,7 +1175,7 @@ void FixPolarizeFunctional::cg_solver(double** A, double* b, double* x, int N) cg_p[i] = cg_r[i]; } double rsq = inner_product(cg_r, cg_r, N); - + // maximum number of iterations do not exceed N for (int k = 0; k < N; k++) { @@ -1200,8 +1200,8 @@ void FixPolarizeFunctional::cg_solver(double** A, double* b, double* x, int N) // beta = rsq_new / rsq double beta = rsq_new / rsq; - for (int i = 0; i < N; i++) + for (int i = 0; i < N; i++) cg_p[i] = cg_r[i] + beta*cg_p[i]; rsq = rsq_new; } -} \ No newline at end of file +} diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.h b/src/USER-DIELECTRIC/fix_polarize_functional.h index 444ed63f40..33af35e93c 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.h +++ b/src/USER-DIELECTRIC/fix_polarize_functional.h @@ -73,14 +73,14 @@ class FixPolarizeFunctional : public Fix { double** buffer1; double** buffer2; - int allocated; + int allocated; int kspaceflag; // 1 if kspace is used for the induced charge computation double **efield_pair; // electrical field at position of atom i due to pair contribution double **efield_kspace; // electrical field at position of atom i due to kspace contribution int torqueflag,extraflag; double g_ewald; int includingG3ww; - + void calculate_Rww_cutoff(); void calculate_qiRqw_cutoff(); diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp index b65b38f80e..b77484308e 100644 --- a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp @@ -188,7 +188,7 @@ double PairCoulCutDielectric::single(int i, int j, int itype, int jtype, r2inv = 1.0/rsq; forcecoul = force->qqrd2e * atom->q[i]*atom->q[j]*sqrt(r2inv)*eps[i]; - + double eng = 0.0; if (eps[i] == 1) ei = 0; else ei = eps[i]; @@ -199,4 +199,4 @@ double PairCoulCutDielectric::single(int i, int j, int itype, int jtype, eng += factor_coul*phicoul; return eng; -} \ No newline at end of file +} diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp index a66406d4f5..c44aea584f 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp @@ -237,4 +237,4 @@ double PairLJCutCoulCutDielectric::single(int i, int j, int itype, int jtype, } return eng; -} \ No newline at end of file +} diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp index c95312c105..caaa43ff71 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp @@ -39,7 +39,7 @@ using namespace MathConst; PairLJCutCoulCutDielectricOMP::PairLJCutCoulCutDielectricOMP(LAMMPS *lmp) : PairLJCutCoulCutDielectric(lmp), ThrOMP(lmp, THR_PAIR) { - + } /* ---------------------------------------------------------------------- */ @@ -185,7 +185,7 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData * const t } else forcelj = 0.0; fpair_i = (factor_coul*etmp*forcecoul + factor_lj*forcelj) * r2inv; - + fxtmp += delx*fpair_i; fytmp += dely*fpair_i; fztmp += delz*fpair_i; @@ -212,7 +212,7 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData * const t evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - offset[itype][jtype]; evdwl *= factor_lj; - } else evdwl = 0.0; + } else evdwl = 0.0; } if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp index c094aff898..4d0785b590 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp @@ -220,7 +220,7 @@ double PairLJCutCoulDebyeDielectric::single(int i, int j, int itype, int jtype, r = sqrt(rsq); rinv = 1.0/r; screening = exp(-kappa*r); - forcecoul = force->qqrd2e * atom->q[i]*atom->q[j] * + forcecoul = force->qqrd2e * atom->q[i]*atom->q[j] * screening * (kappa + rinv) * eps[i]; } else forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp index 7a14de640c..50a24c9129 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp @@ -153,7 +153,7 @@ void PairLJCutCoulLongDielectric::compute(int eflag, int vflag) if (rsq < cut_coulsq && rsq > EPSILON) { if (!ncoultablebits || rsq <= tabinnersq) { - + grij = g_ewald * r; expm2 = exp(-grij*grij); t = 1.0 / (1.0 + EWALD_P*grij); @@ -196,7 +196,7 @@ void PairLJCutCoulLongDielectric::compute(int eflag, int vflag) f[i][0] += delx*fpair_i; f[i][1] += dely*fpair_i; f[i][2] += delz*fpair_i; - + efield_i *= (etmp*r2inv); efield[i][0] += delx*efield_i; efield[i][1] += dely*efield_i; @@ -335,4 +335,4 @@ double PairLJCutCoulLongDielectric::single(int i, int j, int itype, int jtype, } return eng; -} \ No newline at end of file +} diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp index 935991bbe1..c7c790502b 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp @@ -205,7 +205,7 @@ void PairLJCutCoulLongDielectricOMP::eval(int iifrom, int iito, ThrData * const table = ctable[itable] + fraction*dctable[itable]; prefactor = qtmp*q[j] * table; forcecoul -= (1.0-factor_coul)*prefactor; - + prefactorE = q[j] * table/qqrd2e; efield_i -= (1.0-factor_coul)*prefactorE; } diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp index ce89d718a8..9a1ce21356 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp @@ -243,7 +243,7 @@ void PairLJCutCoulMSMDielectric::compute(int eflag, int vflag) efield[i][2] += delz*efield_i; if (newton_pair && j >= nlocal) { - fpair_j = (forcecoul*eps[j]) * r2inv; + fpair_j = (forcecoul*eps[j]) * r2inv; ftmp[j][0] -= delx*fpair_j; ftmp[j][1] -= dely*fpair_j; ftmp[j][2] -= delz*fpair_j; diff --git a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp index ae2eb4a383..e6c8dfabd5 100644 --- a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp @@ -177,7 +177,7 @@ void PairLJLongCoulLongDielectric::compute(int eflag, int vflag) if (order1 && (rsq < cut_coulsq)) { // coulombic if (!ncoultablebits || rsq <= tabinnersq) { - + grij = g_ewald * r; expm2 = exp(-grij*grij); t = 1.0 / (1.0 + EWALD_P*grij); diff --git a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h index 4ba4683d8b..e810ade7ba 100644 --- a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h @@ -31,7 +31,7 @@ class PairLJLongCoulLongDielectric : public PairLJLongCoulLong { virtual void compute(int, int); void init_style(); double single(int, int, int, int, double, double, double, double &); - + double** efield; double* epot; diff --git a/src/USER-DIELECTRIC/pppm_dielectric.cpp b/src/USER-DIELECTRIC/pppm_dielectric.cpp index ea62618efd..58df28b6ac 100644 --- a/src/USER-DIELECTRIC/pppm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pppm_dielectric.cpp @@ -412,7 +412,7 @@ void PPPMDielectric::slabcorr() double *q = atom->q; double **x = atom->x; double *eps = atom->epsilon; - + double zprd = domain->zprd; int nlocal = atom->nlocal; From 076e25f2a52353ba307802ef1bb2d6578005d876 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 11:16:27 -0400 Subject: [PATCH 55/80] update LAMMPS homepage URLs --- src/USER-DIELECTRIC/atom_vec_dielectric.cpp | 2 +- src/USER-DIELECTRIC/atom_vec_dielectric.h | 2 +- src/USER-DIELECTRIC/compute_efield_atom.cpp | 2 +- src/USER-DIELECTRIC/compute_efield_atom.h | 2 +- src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp | 2 +- src/USER-DIELECTRIC/fix_polarize_bem_gmres.h | 2 +- src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 2 +- src/USER-DIELECTRIC/fix_polarize_bem_icc.h | 2 +- src/USER-DIELECTRIC/fix_polarize_functional.cpp | 2 +- src/USER-DIELECTRIC/fix_polarize_functional.h | 2 +- src/USER-DIELECTRIC/msm_dielectric.cpp | 2 +- src/USER-DIELECTRIC/msm_dielectric.h | 2 +- src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp | 2 +- src/USER-DIELECTRIC/pair_coul_cut_dielectric.h | 2 +- src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp | 2 +- src/USER-DIELECTRIC/pair_coul_long_dielectric.h | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp | 2 +- src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h | 2 +- src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp | 2 +- src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h | 2 +- src/USER-DIELECTRIC/pppm_dielectric.cpp | 2 +- src/USER-DIELECTRIC/pppm_dielectric.h | 2 +- 32 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp index a62aa609be..6ed67c8326 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.h b/src/USER-DIELECTRIC/atom_vec_dielectric.h index 9767a63ca6..956e2f2fbf 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.h +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/compute_efield_atom.cpp b/src/USER-DIELECTRIC/compute_efield_atom.cpp index 2a07535adb..0f81e1a112 100644 --- a/src/USER-DIELECTRIC/compute_efield_atom.cpp +++ b/src/USER-DIELECTRIC/compute_efield_atom.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/compute_efield_atom.h b/src/USER-DIELECTRIC/compute_efield_atom.h index f749add133..728d66b0a1 100644 --- a/src/USER-DIELECTRIC/compute_efield_atom.h +++ b/src/USER-DIELECTRIC/compute_efield_atom.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp index eabe656582..5ec8feaec1 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h index 8cf2ebd6c3..dd55fd967a 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp index 995e8ee225..3b94bf08a6 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.h b/src/USER-DIELECTRIC/fix_polarize_bem_icc.h index fedb57179d..69a7739209 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.h +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index b7943f505a..50a7bcabeb 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.h b/src/USER-DIELECTRIC/fix_polarize_functional.h index 33af35e93c..24b5776917 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.h +++ b/src/USER-DIELECTRIC/fix_polarize_functional.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/msm_dielectric.cpp b/src/USER-DIELECTRIC/msm_dielectric.cpp index 6626f196e1..14b7463138 100644 --- a/src/USER-DIELECTRIC/msm_dielectric.cpp +++ b/src/USER-DIELECTRIC/msm_dielectric.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/msm_dielectric.h b/src/USER-DIELECTRIC/msm_dielectric.h index 2dbac12704..395735ef8a 100644 --- a/src/USER-DIELECTRIC/msm_dielectric.h +++ b/src/USER-DIELECTRIC/msm_dielectric.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp index b77484308e..50bcea3c48 100644 --- a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h index 2abc6b906e..2480f923e9 100644 --- a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp index 2da13b7343..cd9e6bb7e5 100644 --- a/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_coul_long_dielectric.h index dc4d51bbce..56a284259a 100644 --- a/src/USER-DIELECTRIC/pair_coul_long_dielectric.h +++ b/src/USER-DIELECTRIC/pair_coul_long_dielectric.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp index c44aea584f..7523b290fa 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h index 54ec2a6100..8af0358c14 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp index caaa43ff71..a056ae86c9 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h index f84aa91c0c..9eb74c1524 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp index 4d0785b590..7dcafac9f6 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h index 9df0edb364..0ed0e5c4e1 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp index 50a24c9129..4f17ccc34d 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h index 24afa7e6fa..b2e930e288 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp index c7c790502b..39149e692f 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h index 5a1033b606..a48f7caf7d 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp index 9a1ce21356..5876512418 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h index 77f772315b..a5e1107471 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp index e6c8dfabd5..89a3215330 100644 --- a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h index e810ade7ba..c7448b0ce4 100644 --- a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pppm_dielectric.cpp b/src/USER-DIELECTRIC/pppm_dielectric.cpp index 58df28b6ac..31aaa4ded6 100644 --- a/src/USER-DIELECTRIC/pppm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pppm_dielectric.cpp @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract diff --git a/src/USER-DIELECTRIC/pppm_dielectric.h b/src/USER-DIELECTRIC/pppm_dielectric.h index b7803011f8..80d119e0c9 100644 --- a/src/USER-DIELECTRIC/pppm_dielectric.h +++ b/src/USER-DIELECTRIC/pppm_dielectric.h @@ -1,6 +1,6 @@ /* -*- c++ -*- ---------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories + https://www.lammps.org/ Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov Copyright (2003) Sandia Corporation. Under the terms of Contract From 7928e90179b3ce14b36955e68d64b76777e42878 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 11:20:47 -0400 Subject: [PATCH 56/80] make headers compatibel with clang-format --- src/USER-DIELECTRIC/atom_vec_dielectric.h | 6 +++--- src/USER-DIELECTRIC/compute_efield_atom.h | 6 +++--- src/USER-DIELECTRIC/fix_polarize_bem_gmres.h | 6 +++--- src/USER-DIELECTRIC/fix_polarize_bem_icc.h | 6 +++--- src/USER-DIELECTRIC/fix_polarize_functional.h | 6 +++--- src/USER-DIELECTRIC/msm_dielectric.h | 6 +++--- src/USER-DIELECTRIC/pair_coul_cut_dielectric.h | 6 +++--- src/USER-DIELECTRIC/pair_coul_long_dielectric.h | 6 +++--- src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h | 6 +++--- src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h | 6 +++--- src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h | 6 +++--- src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h | 6 +++--- src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h | 6 +++--- src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h | 6 +++--- src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h | 6 +++--- src/USER-DIELECTRIC/pppm_dielectric.h | 6 +++--- 16 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.h b/src/USER-DIELECTRIC/atom_vec_dielectric.h index 956e2f2fbf..dbdd4ff53b 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.h +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef ATOM_CLASS - -AtomStyle(dielectric,AtomVecDielectric) - +// clang-format off +AtomStyle(dielectric,AtomVecDielectric); +// clang-format on #else #ifndef LMP_ATOM_VEC_DIELECTRIC_H diff --git a/src/USER-DIELECTRIC/compute_efield_atom.h b/src/USER-DIELECTRIC/compute_efield_atom.h index 728d66b0a1..6c81150265 100644 --- a/src/USER-DIELECTRIC/compute_efield_atom.h +++ b/src/USER-DIELECTRIC/compute_efield_atom.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef COMPUTE_CLASS - -ComputeStyle(efield/atom,ComputeEfieldAtom) - +// clang-format off +ComputeStyle(efield/atom,ComputeEfieldAtom); +// clang-format on #else #ifndef LMP_COMPUTE_EFIELD_ATOM_H diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h index dd55fd967a..e680b63240 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef FIX_CLASS - -FixStyle(polarize/bem/gmres,FixPolarizeBEMGMRES) - +// clang-format off +FixStyle(polarize/bem/gmres,FixPolarizeBEMGMRES); +// clang-format on #else #ifndef LMP_FIX_POLARIZE_BEM_GMRES_H diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.h b/src/USER-DIELECTRIC/fix_polarize_bem_icc.h index 69a7739209..eca8ffcaee 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.h +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef FIX_CLASS - -FixStyle(polarize/bem/icc,FixPolarizeBEMICC) - +// clang-format off +FixStyle(polarize/bem/icc,FixPolarizeBEMICC); +// clang-format on #else #ifndef LMP_FIX_POLARIZE_BEM_ICC_H diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.h b/src/USER-DIELECTRIC/fix_polarize_functional.h index 24b5776917..704e976020 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.h +++ b/src/USER-DIELECTRIC/fix_polarize_functional.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef FIX_CLASS - -FixStyle(polarize/functional,FixPolarizeFunctional) - +// clang-format off +FixStyle(polarize/functional,FixPolarizeFunctional); +// clang-format on #else #ifndef LMP_FIX_POLARIZE_FUNCTIONAL_H diff --git a/src/USER-DIELECTRIC/msm_dielectric.h b/src/USER-DIELECTRIC/msm_dielectric.h index 395735ef8a..1a36386f13 100644 --- a/src/USER-DIELECTRIC/msm_dielectric.h +++ b/src/USER-DIELECTRIC/msm_dielectric.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef KSPACE_CLASS - -KSpaceStyle(msm/dielectric,MSMDielectric) - +// clang-format off +KSpaceStyle(msm/dielectric,MSMDielectric); +// clang-format on #else #ifndef LMP_MSM_DIELECTRIC_H diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h index 2480f923e9..e10df64691 100644 --- a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef PAIR_CLASS - -PairStyle(coul/cut/dielectric,PairCoulCutDielectric) - +// clang-format off +PairStyle(coul/cut/dielectric,PairCoulCutDielectric); +// clang-format on #else #ifndef LMP_PAIR_COUL_CUT_DIELECTRIC_H diff --git a/src/USER-DIELECTRIC/pair_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_coul_long_dielectric.h index 56a284259a..7f3bfebf5a 100644 --- a/src/USER-DIELECTRIC/pair_coul_long_dielectric.h +++ b/src/USER-DIELECTRIC/pair_coul_long_dielectric.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef PAIR_CLASS - -PairStyle(coul/long/dielectric,PairCoulLongDielectric) - +// clang-format off +PairStyle(coul/long/dielectric,PairCoulLongDielectric); +// clang-format on #else #ifndef LMP_PAIR_COUL_LONG_DIELECTRIC_H diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h index 8af0358c14..52e6ce1789 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef PAIR_CLASS - -PairStyle(lj/cut/coul/cut/dielectric,PairLJCutCoulCutDielectric) - +// clang-format off +PairStyle(lj/cut/coul/cut/dielectric,PairLJCutCoulCutDielectric); +// clang-format on #else #ifndef LMP_PAIR_LJ_CUT_COUL_CUT_DIELECTRIC_H diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h index 9eb74c1524..f13313b511 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef PAIR_CLASS - -PairStyle(lj/cut/coul/cut/dielectric/omp,PairLJCutCoulCutDielectricOMP) - +// clang-format off +PairStyle(lj/cut/coul/cut/dielectric/omp,PairLJCutCoulCutDielectricOMP); +// clang-format on #else #ifndef LMP_PAIR_LJ_CUT_COUL_CUT_DIELECTRIC_OMP_H diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h index 0ed0e5c4e1..18b3c1bb59 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef PAIR_CLASS - -PairStyle(lj/cut/coul/debye/dielectric,PairLJCutCoulDebyeDielectric) - +// clang-format off +PairStyle(lj/cut/coul/debye/dielectric,PairLJCutCoulDebyeDielectric); +// clang-format on #else #ifndef LMP_PAIR_LJ_CUT_COUL_DEBYE_DIELECTRIC_H diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h index b2e930e288..1d2b3c6123 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef PAIR_CLASS - -PairStyle(lj/cut/coul/long/dielectric,PairLJCutCoulLongDielectric) - +// clang-format off +PairStyle(lj/cut/coul/long/dielectric,PairLJCutCoulLongDielectric); +// clang-format on #else #ifndef LMP_PAIR_LJ_CUT_COUL_LONG_DIELECTRIC_H diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h index a48f7caf7d..ab4c6ebdae 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef PAIR_CLASS - -PairStyle(lj/cut/coul/long/dielectric/omp,PairLJCutCoulLongDielectricOMP) - +// clang-format off +PairStyle(lj/cut/coul/long/dielectric/omp,PairLJCutCoulLongDielectricOMP); +// clang-format on #else #ifndef LMP_PAIR_LJ_CUT_COUL_LONG_DIELECTRIC_OMP_H diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h index a5e1107471..e64409a2cb 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef PAIR_CLASS - -PairStyle(lj/cut/coul/msm/dielectric,PairLJCutCoulMSMDielectric) - +// clang-format off +PairStyle(lj/cut/coul/msm/dielectric,PairLJCutCoulMSMDielectric); +// clang-format on #else #ifndef LMP_PAIR_LJ_CUT_COUL_MSM_DIELECTRIC_H diff --git a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h index c7448b0ce4..0ec3321df4 100644 --- a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef PAIR_CLASS - -PairStyle(lj/long/coul/long/dielectric,PairLJLongCoulLongDielectric) - +// clang-format off +PairStyle(lj/long/coul/long/dielectric,PairLJLongCoulLongDielectric); +// clang-format on #else #ifndef LMP_PAIR_LJ_LONG_COUL_LONG_DIELECTRIC_H diff --git a/src/USER-DIELECTRIC/pppm_dielectric.h b/src/USER-DIELECTRIC/pppm_dielectric.h index 80d119e0c9..24eb180c5f 100644 --- a/src/USER-DIELECTRIC/pppm_dielectric.h +++ b/src/USER-DIELECTRIC/pppm_dielectric.h @@ -12,9 +12,9 @@ ------------------------------------------------------------------------- */ #ifdef KSPACE_CLASS - -KSpaceStyle(pppm/dielectric,PPPMDielectric) - +// clang-format off +KSpaceStyle(pppm/dielectric,PPPMDielectric); +// clang-format on #else #ifndef LMP_PPPM_DIELECTRIC_H From 672fa7d8ff0b1a72ce085f379c1c0f07d176fa24 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 11:21:26 -0400 Subject: [PATCH 57/80] move /omp styles to USER-OMP package --- .../pair_lj_cut_coul_cut_dielectric_omp.cpp | 0 .../pair_lj_cut_coul_cut_dielectric_omp.h | 0 .../pair_lj_cut_coul_long_dielectric_omp.cpp | 0 .../pair_lj_cut_coul_long_dielectric_omp.h | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename src/{USER-DIELECTRIC => USER-OMP}/pair_lj_cut_coul_cut_dielectric_omp.cpp (100%) rename src/{USER-DIELECTRIC => USER-OMP}/pair_lj_cut_coul_cut_dielectric_omp.h (100%) rename src/{USER-DIELECTRIC => USER-OMP}/pair_lj_cut_coul_long_dielectric_omp.cpp (100%) rename src/{USER-DIELECTRIC => USER-OMP}/pair_lj_cut_coul_long_dielectric_omp.h (100%) diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_cut_dielectric_omp.cpp similarity index 100% rename from src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.cpp rename to src/USER-OMP/pair_lj_cut_coul_cut_dielectric_omp.cpp diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h b/src/USER-OMP/pair_lj_cut_coul_cut_dielectric_omp.h similarity index 100% rename from src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric_omp.h rename to src/USER-OMP/pair_lj_cut_coul_cut_dielectric_omp.h diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_long_dielectric_omp.cpp similarity index 100% rename from src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.cpp rename to src/USER-OMP/pair_lj_cut_coul_long_dielectric_omp.cpp diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h b/src/USER-OMP/pair_lj_cut_coul_long_dielectric_omp.h similarity index 100% rename from src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric_omp.h rename to src/USER-OMP/pair_lj_cut_coul_long_dielectric_omp.h From f7bae950e898e3d3e30f1cfc411e2e7a3b026b1b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 11:24:03 -0400 Subject: [PATCH 58/80] update .gitignore --- src/.gitignore | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/.gitignore b/src/.gitignore index 72bb8a3004..37955b454d 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -47,6 +47,13 @@ /pair_pace.cpp /pair_pace.h +/fix_polarize*.cpp +/fix_polarize*.h +/*_dielectric.cpp +/*_dielectric.h +/compute_efield_atom.cpp +/compute_efield_atom.j + /superpose3d.h /kokkos.cpp From 6b6cae7c11521025cc6a43cac14393113f5a7e9f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 11:28:11 -0400 Subject: [PATCH 59/80] update dependencies --- src/USER-DIELECTRIC/Install.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/USER-DIELECTRIC/Install.sh b/src/USER-DIELECTRIC/Install.sh index a1240ecd6a..01540dfcba 100644 --- a/src/USER-DIELECTRIC/Install.sh +++ b/src/USER-DIELECTRIC/Install.sh @@ -36,20 +36,20 @@ action fix_polarize_bem_icc.cpp action fix_polarize_bem_icc.h action fix_polarize_functional.cpp action fix_polarize_functional.h -action pair_lj_cut_coul_msm_dielectric.cpp -action pair_lj_cut_coul_msm_dielectric.h -action pair_lj_cut_coul_long_dielectric.cpp -action pair_lj_cut_coul_long_dielectric.h -action pair_lj_long_coul_long_dielectric.cpp pair_lj_long_coul_long.cpp -action pair_lj_long_coul_long_dielectric.h pair_lj_long_coul_long.cpp +action pair_lj_cut_coul_msm_dielectric.cpp pair_lj_cut_coul_msm.cpp +action pair_lj_cut_coul_msm_dielectric.h pair_lj_cut_coul_msm.h +action pair_lj_cut_coul_long_dielectric.cpp pair_lj_cut_coul_long.cpp +action pair_lj_cut_coul_long_dielectric.h pair_lj_cut_coul_long.h +action pair_lj_long_coul_long_dielectric.cpp pair_lj_long_coul_long.cpp +action pair_lj_long_coul_long_dielectric.h pair_lj_long_coul_long.cpp action pair_lj_cut_coul_cut_dielectric.cpp action pair_lj_cut_coul_cut_dielectric.h -action pair_coul_long_dielectric.cpp -action pair_coul_long_dielectric.h +action pair_coul_long_dielectric.cpp pair_coul_long.cpp +action pair_coul_long_dielectric.h pair_coul_long.h action pair_coul_cut_dielectric.cpp action pair_coul_cut_dielectric.h -action pppm_dielectric.cpp -action pppm_dielectric.h -action msm_dielectric.cpp -action msm_dielectric.h +action pppm_dielectric.cpp pppm.cpp +action pppm_dielectric.h pppm.h +action msm_dielectric.cpp msm.cpp +action msm_dielectric.h msm.h From 02707d7a0d38aad3bd8c7fb3e3b47eeeb5488187 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 12:11:36 -0400 Subject: [PATCH 60/80] add CMake support --- cmake/CMakeLists.txt | 13 +++---- cmake/Modules/Packages/USER-DIELECTRIC.cmake | 38 ++++++++++++++++++++ 2 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 cmake/Modules/Packages/USER-DIELECTRIC.cmake diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index aa6b0ed583..e056da6810 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -142,9 +142,9 @@ set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE GRANULAR KSPACE LATTE MANYBODY MC MESSAGE MISC MLIAP MOLECULE PERI POEMS PLUGIN QEQ REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESODPD USER-CGSDK - USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD - USER-HDNNP USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESONT USER-MGPT USER-MISC - USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB + USER-COLVARS USER-DIELECTRIC USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP + USER-H5MD USER-HDNNP USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESONT USER-MGPT + USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-RANN USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-PACE USER-BROWNIAN) @@ -348,8 +348,9 @@ else() set(CUDA_REQUEST_PIC) endif() -foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-HDNNP USER-MDI USER-MOLFILE USER-NETCDF USER-PLUMED - USER-QMMM USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS USER-PACE) +foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-HDNNP + USER-MDI USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP + USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS USER-PACE) if(PKG_${PKG_WITH_INCL}) include(Packages/${PKG_WITH_INCL}) endif() @@ -494,7 +495,7 @@ endif() # packages which selectively include variants based on enabled styles # e.g. accelerator packages ###################################################################### -foreach(PKG_WITH_INCL CORESHELL QEQ USER-OMP USER-SDPD KOKKOS OPT USER-INTEL GPU) +foreach(PKG_WITH_INCL CORESHELL QEQ USER-DIELECTRIC USER-OMP USER-SDPD KOKKOS OPT USER-INTEL GPU) if(PKG_${PKG_WITH_INCL}) include(Packages/${PKG_WITH_INCL}) endif() diff --git a/cmake/Modules/Packages/USER-DIELECTRIC.cmake b/cmake/Modules/Packages/USER-DIELECTRIC.cmake new file mode 100644 index 0000000000..958341f083 --- /dev/null +++ b/cmake/Modules/Packages/USER-DIELECTRIC.cmake @@ -0,0 +1,38 @@ + +set(DIELECTRIC_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-DIELECTRIC) + +file(GLOB DIELECTRIC_SOURCES ${DIELECTRIC_SOURCES_DIR}/*.cpp) +file(GLOB DIELECTRIC_FIX_HEADERS ${DIELECTRIC_SOURCES_DIR}/fix*.h) +file(GLOB DIELECTRIC_PAIR_HEADERS ${DIELECTRIC_SOURCES_DIR}/pair*.h) +file(GLOB DIELECTRIC_KSPACE_HEADERS ${DIELECTRIC_SOURCES_DIR}/msm*.h ${DIELECTRIC_SOURCES_DIR}/pppm*.h) + +if(NOT PKG_KSPACE) + list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/msm_dielectric.cpp) + list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/pppm_dielectric.cpp) + list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/pair_coul_long_dielectric.cpp) + list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_cut_coul_long_dielectric.cpp) + list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_cut_coul_msm_dielectric.cpp) + list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_long_coul_long_dielectric.cpp) + list(REMOVE_ITEM DIELECTRIC_KSPACE_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/msm_dielectric.h) + list(REMOVE_ITEM DIELECTRIC_KSPACE_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/pppm_dielectric.h) + list(REMOVE_ITEM DIELECTRIC_PAIR_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/pair_coul_long_dielectric.h) + list(REMOVE_ITEM DIELECTRIC_PAIR_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_cut_coul_long_dielectric.h) + list(REMOVE_ITEM DIELECTRIC_PAIR_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_cut_coul_msm_dielectric.h) + list(REMOVE_ITEM DIELECTRIC_PAIR_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_long_coul_long_dielectric.h) +endif() + +set_property(GLOBAL PROPERTY "DIELECTRIC_SOURCES" ${DIELECTRIC_SOURCES}) + +foreach(MY_HEADER ${DIELECTRIC_FIX_HEADERS}) + AddStyleHeader(${MY_HEADER} FIX) +endforeach() +foreach(MY_HEADER ${DIELECTRIC_KSPACE_HEADERS}) + AddStyleHeader(${MY_HEADER} KSPACE) +endforeach() +foreach(MY_HEADER ${DIELECTRIC_PAIR_HEADERS}) + AddStyleHeader(${MY_HEADER} PAIR) +endforeach() + +get_property(DIELECTRIC_SOURCES GLOBAL PROPERTY DIELECTRIC_SOURCES) +target_sources(lammps PRIVATE ${DIELECTRIC_SOURCES}) +target_include_directories(lammps PRIVATE ${DIELECTRIC_SOURCES_DIR}) From ac403394e42e42411324e33b91c08ce7c35a84e7 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 12:14:46 -0400 Subject: [PATCH 61/80] disable clang-format processing for .cpp files by default --- src/USER-DIELECTRIC/atom_vec_dielectric.cpp | 1 + src/USER-DIELECTRIC/compute_efield_atom.cpp | 1 + src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp | 1 + src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 1 + src/USER-DIELECTRIC/fix_polarize_functional.cpp | 1 + src/USER-DIELECTRIC/msm_dielectric.cpp | 1 + src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp | 1 + src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp | 1 + src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp | 1 + src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp | 1 + src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp | 1 + src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp | 1 + src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp | 1 + src/USER-DIELECTRIC/pppm_dielectric.cpp | 1 + 14 files changed, 14 insertions(+) diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp index 6ed67c8326..c804b05ed3 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/compute_efield_atom.cpp b/src/USER-DIELECTRIC/compute_efield_atom.cpp index 0f81e1a112..f81cb06f18 100644 --- a/src/USER-DIELECTRIC/compute_efield_atom.cpp +++ b/src/USER-DIELECTRIC/compute_efield_atom.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp index 5ec8feaec1..296c9c3835 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp index 3b94bf08a6..04f66a40e1 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index 50a7bcabeb..8bab4b61a8 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/msm_dielectric.cpp b/src/USER-DIELECTRIC/msm_dielectric.cpp index 14b7463138..2759f21248 100644 --- a/src/USER-DIELECTRIC/msm_dielectric.cpp +++ b/src/USER-DIELECTRIC/msm_dielectric.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp index 50bcea3c48..b6983586cf 100644 --- a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp index cd9e6bb7e5..a69ba9fd00 100644 --- a/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp index 7523b290fa..e03002c3bd 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp index 7dcafac9f6..d1485bd32d 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp index 4f17ccc34d..ecbb592e5c 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp index 5876512418..4c5efe7c99 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp index 89a3215330..09c8de7e71 100644 --- a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories diff --git a/src/USER-DIELECTRIC/pppm_dielectric.cpp b/src/USER-DIELECTRIC/pppm_dielectric.cpp index 31aaa4ded6..6d0f3f33b5 100644 --- a/src/USER-DIELECTRIC/pppm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pppm_dielectric.cpp @@ -1,3 +1,4 @@ +// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories From 75e5ad4c7a9c8a23608b0ad153c228154d7dcdb6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 15:48:25 -0400 Subject: [PATCH 62/80] correct CMake support (also fix some bugs for other packages) --- cmake/CMakeLists.txt | 14 ++++---- cmake/Modules/Packages/USER-DIELECTRIC.cmake | 38 -------------------- 2 files changed, 8 insertions(+), 44 deletions(-) delete mode 100644 cmake/Modules/Packages/USER-DIELECTRIC.cmake diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index e056da6810..a42cba3644 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -140,17 +140,18 @@ option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF) set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE GRANULAR KSPACE LATTE MANYBODY MC MESSAGE MISC MLIAP MOLECULE PERI POEMS - PLUGIN QEQ REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI + PLUGIN REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESODPD USER-CGSDK USER-COLVARS USER-DIELECTRIC USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-HDNNP USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB - USER-RANN USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH + USER-RANN USER-REACTION USER-REAXC USER-SCAFACOS USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-PACE USER-BROWNIAN) set(SUFFIX_PACKAGES CORESHELL GPU KOKKOS OPT USER-INTEL USER-OMP) +set(DEPEND_PACKAGES QEQ USER-SDPD) -foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES}) +foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES} ${DEPEND_PACKAGES}) option(PKG_${PKG} "Build ${PKG} Package" OFF) endforeach() @@ -235,6 +236,7 @@ pkg_depends(USER-ATC MANYBODY) pkg_depends(USER-LB MPI) pkg_depends(USER-PHONON KSPACE) pkg_depends(USER-SCAFACOS MPI) +pkg_depends(USER-DIELECTRIC KSPACE) # detect if we may enable OpenMP support by default set(BUILD_OMP_DEFAULT OFF) @@ -495,9 +497,9 @@ endif() # packages which selectively include variants based on enabled styles # e.g. accelerator packages ###################################################################### -foreach(PKG_WITH_INCL CORESHELL QEQ USER-DIELECTRIC USER-OMP USER-SDPD KOKKOS OPT USER-INTEL GPU) - if(PKG_${PKG_WITH_INCL}) - include(Packages/${PKG_WITH_INCL}) +foreach(PKG_WITH_DEPS ${DEPEND_PACKAGES} ${SUFFIX_PACKAGES}) + if(PKG_${PKG_WITH_DEPS}) + include(Packages/${PKG_WITH_DEPS}) endif() endforeach() diff --git a/cmake/Modules/Packages/USER-DIELECTRIC.cmake b/cmake/Modules/Packages/USER-DIELECTRIC.cmake deleted file mode 100644 index 958341f083..0000000000 --- a/cmake/Modules/Packages/USER-DIELECTRIC.cmake +++ /dev/null @@ -1,38 +0,0 @@ - -set(DIELECTRIC_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-DIELECTRIC) - -file(GLOB DIELECTRIC_SOURCES ${DIELECTRIC_SOURCES_DIR}/*.cpp) -file(GLOB DIELECTRIC_FIX_HEADERS ${DIELECTRIC_SOURCES_DIR}/fix*.h) -file(GLOB DIELECTRIC_PAIR_HEADERS ${DIELECTRIC_SOURCES_DIR}/pair*.h) -file(GLOB DIELECTRIC_KSPACE_HEADERS ${DIELECTRIC_SOURCES_DIR}/msm*.h ${DIELECTRIC_SOURCES_DIR}/pppm*.h) - -if(NOT PKG_KSPACE) - list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/msm_dielectric.cpp) - list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/pppm_dielectric.cpp) - list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/pair_coul_long_dielectric.cpp) - list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_cut_coul_long_dielectric.cpp) - list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_cut_coul_msm_dielectric.cpp) - list(REMOVE_ITEM DIELECTRIC_SOURCES ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_long_coul_long_dielectric.cpp) - list(REMOVE_ITEM DIELECTRIC_KSPACE_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/msm_dielectric.h) - list(REMOVE_ITEM DIELECTRIC_KSPACE_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/pppm_dielectric.h) - list(REMOVE_ITEM DIELECTRIC_PAIR_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/pair_coul_long_dielectric.h) - list(REMOVE_ITEM DIELECTRIC_PAIR_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_cut_coul_long_dielectric.h) - list(REMOVE_ITEM DIELECTRIC_PAIR_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_cut_coul_msm_dielectric.h) - list(REMOVE_ITEM DIELECTRIC_PAIR_HEADERS ${USER-DIELECTRIC_SOURCES_DIR}/pair_lj_long_coul_long_dielectric.h) -endif() - -set_property(GLOBAL PROPERTY "DIELECTRIC_SOURCES" ${DIELECTRIC_SOURCES}) - -foreach(MY_HEADER ${DIELECTRIC_FIX_HEADERS}) - AddStyleHeader(${MY_HEADER} FIX) -endforeach() -foreach(MY_HEADER ${DIELECTRIC_KSPACE_HEADERS}) - AddStyleHeader(${MY_HEADER} KSPACE) -endforeach() -foreach(MY_HEADER ${DIELECTRIC_PAIR_HEADERS}) - AddStyleHeader(${MY_HEADER} PAIR) -endforeach() - -get_property(DIELECTRIC_SOURCES GLOBAL PROPERTY DIELECTRIC_SOURCES) -target_sources(lammps PRIVATE ${DIELECTRIC_SOURCES}) -target_include_directories(lammps PRIVATE ${DIELECTRIC_SOURCES_DIR}) From 1fb4ec663b79a56d316c8a4bf2bc662a52aba07e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 15:55:23 -0400 Subject: [PATCH 63/80] port code to current LAMMPS style and make it compatible with OpenMP 4.x compilers --- src/USER-DIELECTRIC/atom_vec_dielectric.cpp | 1 + src/USER-DIELECTRIC/atom_vec_dielectric.h | 17 +- src/USER-DIELECTRIC/compute_efield_atom.h | 2 +- src/USER-DIELECTRIC/fix_polarize_bem_gmres.h | 79 ++-- src/USER-DIELECTRIC/fix_polarize_bem_icc.h | 33 +- src/USER-DIELECTRIC/fix_polarize_functional.h | 51 +-- src/USER-DIELECTRIC/msm_dielectric.h | 8 +- .../pair_coul_cut_dielectric.cpp | 4 +- .../pair_coul_cut_dielectric.h | 6 +- .../pair_coul_long_dielectric.cpp | 128 +++---- .../pair_coul_long_dielectric.h | 5 +- .../pair_lj_cut_coul_cut_dielectric.cpp | 151 ++++---- .../pair_lj_cut_coul_cut_dielectric.h | 8 +- .../pair_lj_cut_coul_debye_dielectric.cpp | 170 ++++----- .../pair_lj_cut_coul_debye_dielectric.h | 8 +- .../pair_lj_cut_coul_long_dielectric.cpp | 230 ++++++------ .../pair_lj_cut_coul_long_dielectric.h | 8 +- .../pair_lj_cut_coul_msm_dielectric.cpp | 253 ++++++------- .../pair_lj_cut_coul_msm_dielectric.h | 4 +- .../pair_lj_long_coul_long_dielectric.cpp | 355 +++++++++--------- .../pair_lj_long_coul_long_dielectric.h | 8 +- src/USER-DIELECTRIC/pppm_dielectric.cpp | 1 - src/USER-DIELECTRIC/pppm_dielectric.h | 11 +- .../pair_lj_cut_coul_cut_dielectric_omp.cpp | 152 ++++---- .../pair_lj_cut_coul_long_dielectric_omp.cpp | 190 +++++----- 25 files changed, 954 insertions(+), 929 deletions(-) diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp index c804b05ed3..b0e3487807 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.cpp +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.cpp @@ -13,6 +13,7 @@ ------------------------------------------------------------------------- */ #include "atom_vec_dielectric.h" + #include "atom.h" #include "citeme.h" diff --git a/src/USER-DIELECTRIC/atom_vec_dielectric.h b/src/USER-DIELECTRIC/atom_vec_dielectric.h index dbdd4ff53b..8e342eda08 100644 --- a/src/USER-DIELECTRIC/atom_vec_dielectric.h +++ b/src/USER-DIELECTRIC/atom_vec_dielectric.h @@ -25,6 +25,9 @@ AtomStyle(dielectric,AtomVecDielectric); namespace LAMMPS_NS { class AtomVecDielectric : public AtomVec { + friend class PairLJCutCoulDebyeDielectric; + friend class PairLJLongCoulLongDielectric; + public: AtomVecDielectric(class LAMMPS *); @@ -32,19 +35,21 @@ class AtomVecDielectric : public AtomVec { void create_atom_post(int); void data_atom_post(int); void unpack_restart_init(int); + int property_atom(char *); + void pack_property_atom(int, double *, int, int); - private: - int *num_bond,*num_angle,*num_dihedral,*num_improper; - int **bond_type,**angle_type,**dihedral_type,**improper_type; + protected: + int *num_bond, *num_angle, *num_dihedral, *num_improper; + int **bond_type, **angle_type, **dihedral_type, **improper_type; int **nspecial; - int bond_per_atom,angle_per_atom,dihedral_per_atom,improper_per_atom; + int bond_per_atom, angle_per_atom, dihedral_per_atom, improper_per_atom; double **mu; - double *area,*ed,*em,*epsilon,*curvature,*q_unscaled; + double *area, *ed, *em, *epsilon, *curvature, *q_unscaled; }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/compute_efield_atom.h b/src/USER-DIELECTRIC/compute_efield_atom.h index 6c81150265..1961e15d69 100644 --- a/src/USER-DIELECTRIC/compute_efield_atom.h +++ b/src/USER-DIELECTRIC/compute_efield_atom.h @@ -44,7 +44,7 @@ class ComputeEfieldAtom : public Compute { double **efield; }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h index e680b63240..7671ddf1c2 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.h @@ -32,13 +32,13 @@ class FixPolarizeBEMGMRES : public Fix { virtual void init(); virtual void setup(int); virtual void pre_force(int); - int pack_forward_comm(int, int*, double*, int, int*); - void unpack_forward_comm(int, int, double*); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); int pack_exchange(int, double *); int unpack_exchange(int, double *); virtual double compute_vector(int); - int modify_param(int, char**); + int modify_param(int, char **); double memory_usage(); void grow_arrays(int); void copy_arrays(int, int, int); @@ -53,53 +53,58 @@ class FixPolarizeBEMGMRES : public Fix { protected: int nmax; - int nevery; // to be invoked every time steps - int* tag2mat; // tag2mat[atom->tag[i]] = the index of the atoms in the induced charge arrays from atom tags - int* mat2tag; // mat2tag[idx] = the atom tag of the induced charge idx in the induced charge arrays - int* induced_charge_idx; // return the index of the atoms in the induced charge arrays - int num_induced_charges; // total number of induced charges - double* induced_charges; // values of induced charges - double* buffer; // buffer of size num_induced_charges - double* q_backup; // backup for the real charges + int nevery; // to be invoked every time steps + int * + tag2mat; // tag2mat[atom->tag[i]] = the index of the atoms in the induced charge arrays from atom tags + int * + mat2tag; // mat2tag[idx] = the atom tag of the induced charge idx in the induced charge arrays + int *induced_charge_idx; // return the index of the atoms in the induced charge arrays + int num_induced_charges; // total number of induced charges + double *induced_charges; // values of induced charges + double *buffer; // buffer of size num_induced_charges + double *q_backup; // backup for the real charges int allocated; - double **efield_pair; // electrical field at position of atom i due to pair contribution - double **efield_kspace; // electrical field at position of atom i due to kspace contribution - int kspaceflag; // 1 if kspace is used for the induced charge computation - int torqueflag,extraflag; + double **efield_pair; // electrical field at position of atom i due to pair contribution + double **efield_kspace; // electrical field at position of atom i due to kspace contribution + int kspaceflag; // 1 if kspace is used for the induced charge computation + int torqueflag, extraflag; void force_clear(); - double vec_dot(const double*, const double*, int); // dot product between two vectors of length n + double vec_dot(const double *, const double *, + int); // dot product between two vectors of length n private: - int mat_dim; // matrix dimension = total number of induced charges - int mr; // number of vectors used to span the Krylov space - int iterations; // actual number of iterations - int itr_max; // maximum number of outer iterations - int randomized; // 1 if generating random induced charges, 0 otherwise - double ave_charge; // average random charge + int mat_dim; // matrix dimension = total number of induced charges + int mr; // number of vectors used to span the Krylov space + int iterations; // actual number of iterations + int itr_max; // maximum number of outer iterations + int randomized; // 1 if generating random induced charges, 0 otherwise + double ave_charge; // average random charge int seed_charge; - double *c, *g, *h, *r, *s, *v, *y; // vectors used by the solver - double* rhs; // right-hand side vector of the equation Ax = b - double tol_abs, tol_rel; // tolerance for convergence - double normb; // norm of the rhs vector b - double rho; // norm of (b - Ax) - int first; // 1 if first time invoked (initializing induced charges with zero) + double *c, *g, *h, *r, *s, *v, *y; // vectors used by the solver + double *rhs; // right-hand side vector of the equation Ax = b + double tol_abs, tol_rel; // tolerance for convergence + double normb; // norm of the rhs vector b + double rho; // norm of (b - Ax) + int first; // 1 if first time invoked (initializing induced charges with zero) - void gmres_solve(double*, double*); // GMRES workhorse - void apply_operator(double*, double*, int); // compute Ax without explicitly storing A - void update_residual(double*, double*, int); // compute (b - Ax) directly (without computing b and Ax explcitly) + void gmres_solve(double *, double *); // GMRES workhorse + void apply_operator(double *, double *, int); // compute Ax without explicitly storing A + void update_residual(double *, double *, + int); // compute (b - Ax) directly (without computing b and Ax explcitly) // Givens rotations - inline void mult_givens(double c, double s, int k, double* g) { - double g1 = c * g[k] - s * g[k+1]; - double g2 = s * g[k] + c * g[k+1]; - g[k] = g1; - g[k+1] = g2; + inline void mult_givens(double c, double s, int k, double *g) + { + double g1 = c * g[k] - s * g[k + 1]; + double g2 = s * g[k] + c * g[k + 1]; + g[k] = g1; + g[k + 1] = g2; } }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.h b/src/USER-DIELECTRIC/fix_polarize_bem_icc.h index eca8ffcaee..6ba6acb1a0 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.h +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.h @@ -33,9 +33,9 @@ class FixPolarizeBEMICC : public Fix { virtual void setup(int); virtual void pre_force(int); virtual double compute_vector(int); - int modify_param(int, char**); - int pack_forward_comm(int, int*, double*, int, int*); - void unpack_forward_comm(int, int, double*); + int modify_param(int, char **); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); virtual void compute_induced_charges(); void set_dielectric_params(double, double, double, double, int, double); @@ -43,27 +43,26 @@ class FixPolarizeBEMICC : public Fix { class AtomVecDielectric *avec; protected: - int nevery; // to be invoked every time steps - double **efield_pair; // electrical field at position of atom i due to pair contribution - double **efield_kspace; // electrical field at position of atom i due to kspace contribution - int kspaceflag; // 1 if kspace is used for the induced charge computation - int torqueflag,extraflag; + int nevery; // to be invoked every time steps + double **efield_pair; // electrical field at position of atom i due to pair contribution + double **efield_kspace; // electrical field at position of atom i due to kspace contribution + int kspaceflag; // 1 if kspace is used for the induced charge computation + int torqueflag, extraflag; void force_clear(); private: - int iterations; // actual number of iterations - int itr_max; // maximum number of outer iterations - double tol_abs, tol_rel; // tolerance for convergence - double rho; // current error - double omega; // iterative weight - int randomized; // 1 if generating random induced charges, 0 otherwise - double ave_charge; // average random charge + int iterations; // actual number of iterations + int itr_max; // maximum number of outer iterations + double tol_abs, tol_rel; // tolerance for convergence + double rho; // current error + double omega; // iterative weight + int randomized; // 1 if generating random induced charges, 0 otherwise + double ave_charge; // average random charge int seed_charge; - }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.h b/src/USER-DIELECTRIC/fix_polarize_functional.h index 704e976020..7a4b8c00da 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.h +++ b/src/USER-DIELECTRIC/fix_polarize_functional.h @@ -30,14 +30,14 @@ class FixPolarizeFunctional : public Fix { ~FixPolarizeFunctional(); int setmask(); void init(); - void init_list(int,class NeighList *); + void init_list(int, class NeighList *); void setup(int); void setup_pre_force(int vflag); void pre_force(int); int pack_exchange(int, double *); int unpack_exchange(int, double *); - int pack_forward_comm(int, int*, double*, int, int*); - void unpack_forward_comm(int, int, double*); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); int modify_param(int, char **); double memory_usage(); @@ -49,7 +49,7 @@ class FixPolarizeFunctional : public Fix { protected: int nmax; - class AtomVecDielectric* avec; + class AtomVecDielectric *avec; class NeighList *list; void set_dielectric_params(double, double, double, double, int, double); @@ -59,25 +59,28 @@ class FixPolarizeFunctional : public Fix { double **inverse_matrix; double **G1ww, **ndotGww, **G2ww, **G3ww, **Rww; - int* tag2mat; // tag2mat[atom->tag[i]] = the index of the atoms in the induced charge arrays from atom tags - int* mat2tag; // mat2tag[idx] = the atom tag of the induced charge idx in the induced charge arrays - int* induced_charge_idx; // return the index of the atoms in the induced charge arrays - int num_induced_charges; // total number of induced charges - double* induced_charges; // values of induced charges - int* tag2mat_ions; // tag2mat_ions[atom->tag[i]] returns the index of the atoms in the ion arrays from atom tags - int* mat2tag_ions; // mat2tag_ions[idx] returns the atom tag of the ion idx in the ion arrays - int* ion_idx; // return the index of the atoms in the ion arrays - int num_ions; // total number of ions - double* rhs1; - double* rhs2; - double** buffer1; - double** buffer2; + int * + tag2mat; // tag2mat[atom->tag[i]] = the index of the atoms in the induced charge arrays from atom tags + int * + mat2tag; // mat2tag[idx] = the atom tag of the induced charge idx in the induced charge arrays + int *induced_charge_idx; // return the index of the atoms in the induced charge arrays + int num_induced_charges; // total number of induced charges + double *induced_charges; // values of induced charges + int * + tag2mat_ions; // tag2mat_ions[atom->tag[i]] returns the index of the atoms in the ion arrays from atom tags + int *mat2tag_ions; // mat2tag_ions[idx] returns the atom tag of the ion idx in the ion arrays + int *ion_idx; // return the index of the atoms in the ion arrays + int num_ions; // total number of ions + double *rhs1; + double *rhs2; + double **buffer1; + double **buffer2; int allocated; - int kspaceflag; // 1 if kspace is used for the induced charge computation - double **efield_pair; // electrical field at position of atom i due to pair contribution - double **efield_kspace; // electrical field at position of atom i due to kspace contribution - int torqueflag,extraflag; + int kspaceflag; // 1 if kspace is used for the induced charge computation + double **efield_pair; // electrical field at position of atom i due to pair contribution + double **efield_kspace; // electrical field at position of atom i due to kspace contribution + int torqueflag, extraflag; double g_ewald; int includingG3ww; @@ -102,8 +105,8 @@ class FixPolarizeFunctional : public Fix { double tolerance; void calculate_matrix_multiply_vector(double **, double *, double *, int); - double inner_product(double*, double*, int); - void cg_solver(double**, double*, double*, int); + double inner_product(double *, double *, int); + void cg_solver(double **, double *, double *, int); inline double greens_real(double); inline double grad_greens_real_factor(double); @@ -114,7 +117,7 @@ class FixPolarizeFunctional : public Fix { inline double calculate_ndotgreens_ewald_self_vertex(double, double); }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/msm_dielectric.h b/src/USER-DIELECTRIC/msm_dielectric.h index 1a36386f13..9874f5e0b2 100644 --- a/src/USER-DIELECTRIC/msm_dielectric.h +++ b/src/USER-DIELECTRIC/msm_dielectric.h @@ -32,14 +32,14 @@ class MSMDielectric : public MSM { virtual void compute(int, int); void fieldforce(); - double** efield; - double* phi; + double **efield; + double *phi; protected: - class AtomVecDielectric* avec; + class AtomVecDielectric *avec; }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp index b6983586cf..1b540157e4 100644 --- a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories @@ -69,8 +68,7 @@ void PairCoulCutDielectric::compute(int eflag, int vflag) } ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag,vflag); double **x = atom->x; double **f = atom->f; diff --git a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h index e10df64691..ef6fd3fb45 100644 --- a/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h +++ b/src/USER-DIELECTRIC/pair_coul_cut_dielectric.h @@ -32,14 +32,14 @@ class PairCoulCutDielectric : public PairCoulCut { virtual double single(int, int, int, int, double, double, double, double &); void init_style(); - double** efield; + double **efield; protected: - class AtomVecDielectric* avec; + class AtomVecDielectric *avec; int nmax; }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp index a69ba9fd00..fd5110cdb6 100644 --- a/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_coul_long_dielectric.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories @@ -24,11 +23,11 @@ #include "error.h" #include "force.h" #include "kspace.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" #include "math_const.h" #include "memory.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" #include #include @@ -36,13 +35,13 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 /* ---------------------------------------------------------------------- */ @@ -63,31 +62,30 @@ PairCoulLongDielectric::~PairCoulLongDielectric() void PairCoulLongDielectric::compute(int eflag, int vflag) { - int i,j,ii,jj,inum,jnum,itable,itype,jtype; - double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,ecoul; - double fpair_i,fpair_j; - double fraction,table; - double r,r2inv,forcecoul,factor_coul; - double grij,expm2,prefactor,t,erfc,prefactorE,efield_i; - int *ilist,*jlist,*numneigh,**firstneigh; + int i, j, ii, jj, inum, jnum, itable, itype, jtype; + double qtmp, etmp, xtmp, ytmp, ztmp, delx, dely, delz, ecoul; + double fpair_i, fpair_j; + double fraction, table; + double r, r2inv, forcecoul, factor_coul; + double grij, expm2, prefactor, t, erfc, prefactorE, efield_i; + int *ilist, *jlist, *numneigh, **firstneigh; double rsq; ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); if (atom->nmax > nmax) { memory->destroy(efield); nmax = atom->nmax; - memory->create(efield,nmax,3,"pair:efield"); + memory->create(efield, nmax, 3, "pair:efield"); } double **x = atom->x; double **f = atom->f; double *q = atom->q; - double** norm = atom->mu; - double* curvature = atom->curvature; - double* area = atom->area; + double **norm = atom->mu; + double *curvature = atom->curvature; + double *area = atom->area; double *eps = atom->epsilon; int *type = atom->type; int nlocal = atom->nlocal; @@ -116,10 +114,10 @@ void PairCoulLongDielectric::compute(int eflag, int vflag) // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al double curvature_threshold = sqrt(area[i]); if (curvature[i] < curvature_threshold) { - double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; - efield[i][0] = sf*norm[i][0]; - efield[i][1] = sf*norm[i][1]; - efield[i][2] = sf*norm[i][2]; + double sf = curvature[i] / (4.0 * MY_PIS * curvature_threshold) * area[i] * q[i]; + efield[i][0] = sf * norm[i][0]; + efield[i][1] = sf * norm[i][1]; + efield[i][2] = sf * norm[i][2]; } else { efield[i][0] = efield[i][1] = efield[i][2] = 0; } @@ -132,24 +130,24 @@ void PairCoulLongDielectric::compute(int eflag, int vflag) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; jtype = type[j]; if (rsq < cut_coulsq) { - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; if (!ncoultablebits || rsq <= tabinnersq) { r = sqrt(rsq); grij = g_ewald * r; - expm2 = exp(-grij*grij); - t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; - prefactor = qqrd2e * scale[itype][jtype] * qtmp*q[j]/r; - forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); - if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + expm2 = exp(-grij * grij); + t = 1.0 / (1.0 + EWALD_P * grij); + erfc = t * (A1 + t * (A2 + t * (A3 + t * (A4 + t * A5)))) * expm2; + prefactor = qqrd2e * scale[itype][jtype] * qtmp * q[j] / r; + forcecoul = prefactor * (erfc + EWALD_F * grij * expm2); + if (factor_coul < 1.0) forcecoul -= (1.0 - factor_coul) * prefactor; - prefactorE = qqrd2e * scale[itype][jtype] * q[j]/r; - efield_i = prefactorE * (erfc + EWALD_F*grij*expm2); - if (factor_coul < 1.0) efield_i -= (1.0-factor_coul)*prefactorE; + prefactorE = qqrd2e * scale[itype][jtype] * q[j] / r; + efield_i = prefactorE * (erfc + EWALD_F * grij * expm2); + if (factor_coul < 1.0) efield_i -= (1.0 - factor_coul) * prefactorE; } else { union_int_float_t rsq_lookup; @@ -157,48 +155,48 @@ void PairCoulLongDielectric::compute(int eflag, int vflag) itable = rsq_lookup.i & ncoulmask; itable >>= ncoulshiftbits; fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; - table = ftable[itable] + fraction*dftable[itable]; - forcecoul = scale[itype][jtype] * qtmp*q[j] * table; + table = ftable[itable] + fraction * dftable[itable]; + forcecoul = scale[itype][jtype] * qtmp * q[j] * table; efield_i = scale[itype][jtype] * q[j] * table; if (factor_coul < 1.0) { - table = ctable[itable] + fraction*dctable[itable]; - prefactor = scale[itype][jtype] * qtmp*q[j] * table; - forcecoul -= (1.0-factor_coul)*prefactor; + table = ctable[itable] + fraction * dctable[itable]; + prefactor = scale[itype][jtype] * qtmp * q[j] * table; + forcecoul -= (1.0 - factor_coul) * prefactor; prefactorE = scale[itype][jtype] * q[j] * table; - efield_i -= (1.0-factor_coul)*prefactorE; + efield_i -= (1.0 - factor_coul) * prefactorE; } } fpair_i = etmp * forcecoul * r2inv; - f[i][0] += delx*fpair_i; - f[i][1] += dely*fpair_i; - f[i][2] += delz*fpair_i; + f[i][0] += delx * fpair_i; + f[i][1] += dely * fpair_i; + f[i][2] += delz * fpair_i; - efield_i *= (etmp*r2inv); - efield[i][0] += delx*efield_i; - efield[i][1] += dely*efield_i; - efield[i][2] += delz*efield_i; + efield_i *= (etmp * r2inv); + efield[i][0] += delx * efield_i; + efield[i][1] += dely * efield_i; + efield[i][2] += delz * efield_i; if (newton_pair && j >= nlocal) { fpair_j = eps[j] * forcecoul * r2inv; - f[j][0] -= delx*fpair_j; - f[j][1] -= dely*fpair_j; - f[j][2] -= delz*fpair_j; + f[j][0] -= delx * fpair_j; + f[j][1] -= dely * fpair_j; + f[j][2] -= delz * fpair_j; } if (eflag) { if (!ncoultablebits || rsq <= tabinnersq) - ecoul = prefactor*(etmp+eps[j])*erfc; + ecoul = prefactor * (etmp + eps[j]) * erfc; else { - table = etable[itable] + fraction*detable[itable]; - ecoul = scale[itype][jtype] * qtmp*q[j]*(etmp+eps[j]) * table; + table = etable[itable] + fraction * detable[itable]; + ecoul = scale[itype][jtype] * qtmp * q[j] * (etmp + eps[j]) * table; } ecoul *= 0.5; - if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; + if (factor_coul < 1.0) ecoul -= (1.0 - factor_coul) * prefactor; } - if (evflag) ev_tally_full(i,0.0,ecoul,fpair_i,delx,dely,delz); + if (evflag) ev_tally_full(i, 0.0, ecoul, fpair_i, delx, dely, delz); } } } @@ -213,9 +211,9 @@ void PairCoulLongDielectric::compute(int eflag, int vflag) void PairCoulLongDielectric::init_style() { avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"Pair coul/long/dielectric requires atom style dielectric"); + if (!avec) error->all(FLERR, "Pair coul/long/dielectric requires atom style dielectric"); - int irequest = neighbor->request(this,instance_me); + int irequest = neighbor->request(this, instance_me); neighbor->requests[irequest]->half = 0; neighbor->requests[irequest]->full = 1; @@ -223,12 +221,10 @@ void PairCoulLongDielectric::init_style() // insure use of KSpace long-range solver, set g_ewald - if (force->kspace == NULL) - error->all(FLERR,"Pair style requires a KSpace style"); + if (force->kspace == NULL) error->all(FLERR, "Pair style requires a KSpace style"); g_ewald = force->kspace->g_ewald; // setup force tables - if (ncoultablebits) init_tables(cut_coul,NULL); + if (ncoultablebits) init_tables(cut_coul, NULL); } - diff --git a/src/USER-DIELECTRIC/pair_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_coul_long_dielectric.h index 7f3bfebf5a..993555e452 100644 --- a/src/USER-DIELECTRIC/pair_coul_long_dielectric.h +++ b/src/USER-DIELECTRIC/pair_coul_long_dielectric.h @@ -34,12 +34,11 @@ class PairCoulLongDielectric : public PairCoulLong { double **efield; protected: - class AtomVecDielectric* avec; + class AtomVecDielectric *avec; int nmax; - }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp index e03002c3bd..82a5b0c99a 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories @@ -23,11 +22,11 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" #include "math_const.h" #include "memory.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" #include @@ -38,8 +37,7 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -PairLJCutCoulCutDielectric::PairLJCutCoulCutDielectric(LAMMPS *lmp) : - PairLJCutCoulCut(lmp) +PairLJCutCoulCutDielectric::PairLJCutCoulCutDielectric(LAMMPS *lmp) : PairLJCutCoulCut(lmp) { efield = nullptr; epot = nullptr; @@ -58,32 +56,31 @@ PairLJCutCoulCutDielectric::~PairLJCutCoulCutDielectric() void PairLJCutCoulCutDielectric::compute(int eflag, int vflag) { - int i,j,ii,jj,inum,jnum,itype,jtype; - double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; - double fpair_i,fpair_j; - double rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj,efield_i,epot_i; - int *ilist,*jlist,*numneigh,**firstneigh; + int i, j, ii, jj, inum, jnum, itype, jtype; + double qtmp, etmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul, fpair; + double fpair_i, fpair_j; + double rsq, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj, efield_i, epot_i; + int *ilist, *jlist, *numneigh, **firstneigh; if (atom->nmax > nmax) { memory->destroy(efield); memory->destroy(epot); nmax = atom->nmax; - memory->create(efield,nmax,3,"pair:efield"); - memory->create(epot,nmax,"pair:epot"); + memory->create(efield, nmax, 3, "pair:efield"); + memory->create(epot, nmax, "pair:epot"); } evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **x = atom->x; double **f = atom->f; double *q = atom->q; double *q_real = atom->q_unscaled; - double* eps = atom->epsilon; - double** norm = atom->mu; - double* curvature = atom->curvature; - double* area = atom->area; + double *eps = atom->epsilon; + double **norm = atom->mu; + double *curvature = atom->curvature; + double *area = atom->area; int *type = atom->type; int nlocal = atom->nlocal; double *special_coul = force->special_coul; @@ -112,10 +109,10 @@ void PairLJCutCoulCutDielectric::compute(int eflag, int vflag) // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al double curvature_threshold = sqrt(area[i]); if (curvature[i] < curvature_threshold) { - double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; - efield[i][0] = sf*norm[i][0]; - efield[i][1] = sf*norm[i][1]; - efield[i][2] = sf*norm[i][2]; + double sf = curvature[i] / (4.0 * MY_PIS * curvature_threshold) * area[i] * q[i]; + efield[i][0] = sf * norm[i][0]; + efield[i][1] = sf * norm[i][1]; + efield[i][2] = sf * norm[i][2]; } else { efield[i][0] = efield[i][1] = efield[i][2] = 0; } @@ -131,55 +128,58 @@ void PairLJCutCoulCutDielectric::compute(int eflag, int vflag) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; jtype = type[j]; if (rsq < cutsq[itype][jtype]) { - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; if (rsq < cut_coulsq[itype][jtype] && rsq > EPSILON) { - efield_i = q[j]*sqrt(r2inv); - forcecoul = qqrd2e * qtmp*efield_i; + efield_i = q[j] * sqrt(r2inv); + forcecoul = qqrd2e * qtmp * efield_i; epot_i = efield_i; - } else epot_i = efield_i = forcecoul = 0.0; + } else + epot_i = efield_i = forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - r6inv = r2inv*r2inv*r2inv; - forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); - } else forcelj = 0.0; + r6inv = r2inv * r2inv * r2inv; + forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]); + } else + forcelj = 0.0; - fpair_i = (factor_coul*etmp*forcecoul + factor_lj*forcelj) * r2inv; - f[i][0] += delx*fpair_i; - f[i][1] += dely*fpair_i; - f[i][2] += delz*fpair_i; + fpair_i = (factor_coul * etmp * forcecoul + factor_lj * forcelj) * r2inv; + f[i][0] += delx * fpair_i; + f[i][1] += dely * fpair_i; + f[i][2] += delz * fpair_i; - efield_i *= (factor_coul*etmp*r2inv); - efield[i][0] += delx*efield_i; - efield[i][1] += dely*efield_i; - efield[i][2] += delz*efield_i; + efield_i *= (factor_coul * etmp * r2inv); + efield[i][0] += delx * efield_i; + efield[i][1] += dely * efield_i; + efield[i][2] += delz * efield_i; epot[i] += epot_i; if (newton_pair && j >= nlocal) { - fpair_j = (factor_coul*eps[j]*forcecoul + factor_lj*forcelj) * r2inv; - f[j][0] -= delx*fpair_j; - f[j][1] -= dely*fpair_j; - f[j][2] -= delz*fpair_j; + fpair_j = (factor_coul * eps[j] * forcecoul + factor_lj * forcelj) * r2inv; + f[j][0] -= delx * fpair_j; + f[j][1] -= dely * fpair_j; + f[j][2] -= delz * fpair_j; } if (eflag) { if (rsq < cut_coulsq[itype][jtype]) { - ecoul = factor_coul * qqrd2e * qtmp*q[j]*(etmp+eps[j])*sqrt(r2inv); - } else ecoul = 0.0; + ecoul = factor_coul * qqrd2e * qtmp * q[j] * (etmp + eps[j]) * sqrt(r2inv); + } else + ecoul = 0.0; ecoul *= 0.5; if (rsq < cut_ljsq[itype][jtype]) { - evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - - offset[itype][jtype]; + evdwl = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype]; evdwl *= factor_lj; - } else evdwl = 0.0; + } else + evdwl = 0.0; } - if (evflag) ev_tally_full(i,evdwl,ecoul,fpair_i,delx,dely,delz); + if (evflag) ev_tally_full(i, evdwl, ecoul, fpair_i, delx, dely, delz); } } } @@ -194,47 +194,50 @@ void PairLJCutCoulCutDielectric::compute(int eflag, int vflag) void PairLJCutCoulCutDielectric::init_style() { avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"Pair lj/cut/coul/cut/dielectric requires atom style dielectric"); + if (!avec) error->all(FLERR, "Pair lj/cut/coul/cut/dielectric requires atom style dielectric"); - int irequest = neighbor->request(this,instance_me); + int irequest = neighbor->request(this, instance_me); neighbor->requests[irequest]->half = 0; neighbor->requests[irequest]->full = 1; } /* ---------------------------------------------------------------------- */ -double PairLJCutCoulCutDielectric::single(int i, int j, int itype, int jtype, - double rsq, - double factor_coul, double factor_lj, - double &fforce) +double PairLJCutCoulCutDielectric::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, double &fforce) { - double r2inv,r6inv,forcecoul,forcelj,phicoul,ei,ej,philj; - double* eps = atom->epsilon; + double r2inv, r6inv, forcecoul, forcelj, phicoul, ei, ej, philj; + double *eps = atom->epsilon; - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; if (rsq < cut_coulsq[itype][jtype]) - forcecoul = force->qqrd2e * atom->q[i]*atom->q[j]*sqrt(r2inv)*eps[i]; - else forcecoul = 0.0; + forcecoul = force->qqrd2e * atom->q[i] * atom->q[j] * sqrt(r2inv) * eps[i]; + else + forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - r6inv = r2inv*r2inv*r2inv; - forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); - } else forcelj = 0.0; - fforce = (factor_coul*forcecoul + factor_lj*forcelj) * r2inv; + r6inv = r2inv * r2inv * r2inv; + forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]); + } else + forcelj = 0.0; + fforce = (factor_coul * forcecoul + factor_lj * forcelj) * r2inv; double eng = 0.0; - if (eps[i] == 1) ei = 0; - else ei = eps[i]; - if (eps[j] == 1) ej = 0; - else ej = eps[j]; + if (eps[i] == 1) + ei = 0; + else + ei = eps[i]; + if (eps[j] == 1) + ej = 0; + else + ej = eps[j]; if (rsq < cut_coulsq[itype][jtype]) { - phicoul = force->qqrd2e * atom->q[i]*atom->q[j]*sqrt(r2inv); - phicoul *= 0.5*(ei+ej); - eng += factor_coul*phicoul; + phicoul = force->qqrd2e * atom->q[i] * atom->q[j] * sqrt(r2inv); + phicoul *= 0.5 * (ei + ej); + eng += factor_coul * phicoul; } if (rsq < cut_ljsq[itype][jtype]) { - philj = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - - offset[itype][jtype]; - eng += factor_lj*philj; + philj = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype]; + eng += factor_lj * philj; } return eng; diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h index 52e6ce1789..93bee549c8 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_cut_dielectric.h @@ -32,15 +32,15 @@ class PairLJCutCoulCutDielectric : public PairLJCutCoulCut { virtual double single(int, int, int, int, double, double, double, double &); void init_style(); - double** efield; - double* epot; + double **efield; + double *epot; protected: - class AtomVecDielectric* avec; + class AtomVecDielectric *avec; int nmax; }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp index d1485bd32d..4f8b2d63c8 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories @@ -16,21 +15,21 @@ Contributing author: Trung Nguyen (Northwestern) ------------------------------------------------------------------------- */ -#include -#include -#include -#include #include "pair_lj_cut_coul_debye_dielectric.h" + #include "atom.h" #include "atom_vec_dielectric.h" #include "comm.h" +#include "error.h" #include "force.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" #include "math_const.h" #include "memory.h" -#include "error.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" + +#include +#include using namespace LAMMPS_NS; using namespace MathConst; @@ -58,33 +57,31 @@ PairLJCutCoulDebyeDielectric::~PairLJCutCoulDebyeDielectric() void PairLJCutCoulDebyeDielectric::compute(int eflag, int vflag) { - int i,j,ii,jj,inum,jnum,itype,jtype; - double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; - double fpair_i,fpair_j; - double rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj,efield_i,epot_i; - double r,rinv,screening; - int *ilist,*jlist,*numneigh,**firstneigh; + int i, j, ii, jj, inum, jnum, itype, jtype; + double qtmp, etmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul, fpair; + double fpair_i, fpair_j; + double rsq, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj, efield_i, epot_i; + double r, rinv, screening; + int *ilist, *jlist, *numneigh, **firstneigh; if (atom->nmax > nmax) { memory->destroy(efield); memory->destroy(epot); nmax = atom->nmax; - memory->create(efield,nmax,3,"pair:efield"); - memory->create(epot,nmax,"pair:epot"); + memory->create(efield, nmax, 3, "pair:efield"); + memory->create(epot, nmax, "pair:epot"); } evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **x = atom->x; double **f = atom->f; double *q = atom->q; - double *q_real = avec->q_real; - double* eps = avec->epsilon; - double** norm = avec->mu; - double* curvature = avec->curvature; - double* area = avec->area; + double *eps = avec->epsilon; + double **norm = avec->mu; + double *curvature = avec->curvature; + double *area = avec->area; int *type = atom->type; int nlocal = atom->nlocal; double *special_coul = force->special_coul; @@ -113,10 +110,10 @@ void PairLJCutCoulDebyeDielectric::compute(int eflag, int vflag) // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al double curvature_threshold = sqrt(area[i]); if (curvature[i] < curvature_threshold) { - double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; - efield[i][0] = sf*norm[i][0]; - efield[i][1] = sf*norm[i][1]; - efield[i][2] = sf*norm[i][2]; + double sf = curvature[i] / (4.0 * MY_PIS * curvature_threshold) * area[i] * q[i]; + efield[i][0] = sf * norm[i][0]; + efield[i][1] = sf * norm[i][1]; + efield[i][2] = sf * norm[i][2]; } else { efield[i][0] = efield[i][1] = efield[i][2] = 0; } @@ -132,58 +129,61 @@ void PairLJCutCoulDebyeDielectric::compute(int eflag, int vflag) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; jtype = type[j]; if (rsq < cutsq[itype][jtype]) { - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; if (rsq < cut_coulsq[itype][jtype] && rsq > EPSILON) { r = sqrt(rsq); - rinv = 1.0/r; - screening = exp(-kappa*r); + rinv = 1.0 / r; + screening = exp(-kappa * r); efield_i = qqrd2e * q[j] * screening * (kappa + rinv); - forcecoul = qtmp*efield_i; + forcecoul = qtmp * efield_i; epot_i = efield_i; - } else efield_i = forcecoul = 0.0; + } else + efield_i = forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - r6inv = r2inv*r2inv*r2inv; - forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); - } else forcelj = 0.0; + r6inv = r2inv * r2inv * r2inv; + forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]); + } else + forcelj = 0.0; - fpair_i = (factor_coul*etmp*forcecoul + factor_lj*forcelj) * r2inv; - f[i][0] += delx*fpair_i; - f[i][1] += dely*fpair_i; - f[i][2] += delz*fpair_i; + fpair_i = (factor_coul * etmp * forcecoul + factor_lj * forcelj) * r2inv; + f[i][0] += delx * fpair_i; + f[i][1] += dely * fpair_i; + f[i][2] += delz * fpair_i; - efield_i *= (factor_coul*etmp*r2inv); - efield[i][0] += delx*efield_i; - efield[i][1] += dely*efield_i; - efield[i][2] += delz*efield_i; + efield_i *= (factor_coul * etmp * r2inv); + efield[i][0] += delx * efield_i; + efield[i][1] += dely * efield_i; + efield[i][2] += delz * efield_i; epot[i] += epot_i; if (newton_pair && j >= nlocal) { - fpair_j = (factor_coul*eps[j]*forcecoul + factor_lj*forcelj) * r2inv; - f[j][0] -= delx*fpair_j; - f[j][1] -= dely*fpair_j; - f[j][2] -= delz*fpair_j; + fpair_j = (factor_coul * eps[j] * forcecoul + factor_lj * forcelj) * r2inv; + f[j][0] -= delx * fpair_j; + f[j][1] -= dely * fpair_j; + f[j][2] -= delz * fpair_j; } if (eflag) { if (rsq < cut_coulsq[itype][jtype]) { - ecoul = factor_coul * qqrd2e * qtmp*q[j]*(etmp+eps[j]) * rinv * screening; - } else ecoul = 0.0; + ecoul = factor_coul * qqrd2e * qtmp * q[j] * (etmp + eps[j]) * rinv * screening; + } else + ecoul = 0.0; ecoul *= 0.5; if (rsq < cut_ljsq[itype][jtype]) { - evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - - offset[itype][jtype]; + evdwl = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype]; evdwl *= factor_lj; - } else evdwl = 0.0; + } else + evdwl = 0.0; } - if (evflag) ev_tally_full(i,evdwl,ecoul,fpair_i,delx,dely,delz); + if (evflag) ev_tally_full(i, evdwl, ecoul, fpair_i, delx, dely, delz); } } } @@ -198,52 +198,54 @@ void PairLJCutCoulDebyeDielectric::compute(int eflag, int vflag) void PairLJCutCoulDebyeDielectric::init_style() { avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"Pair lj/cut/coul/debye/dielectric requires atom style dielectric"); + if (!avec) error->all(FLERR, "Pair lj/cut/coul/debye/dielectric requires atom style dielectric"); - int irequest = neighbor->request(this,instance_me); + int irequest = neighbor->request(this, instance_me); neighbor->requests[irequest]->half = 0; neighbor->requests[irequest]->full = 1; } /* ---------------------------------------------------------------------- */ -double PairLJCutCoulDebyeDielectric::single(int i, int j, int itype, int jtype, - double rsq, - double factor_coul, double factor_lj, - double &fforce) +double PairLJCutCoulDebyeDielectric::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, double &fforce) { - double r2inv,r6inv,forcecoul,forcelj,phicoul,ei,ej,philj; - double r,rinv,screening; - double* eps = avec->epsilon; + double r2inv, r6inv, forcecoul, forcelj, phicoul, ei, ej, philj; + double r, rinv, screening; + double *eps = avec->epsilon; - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; if (rsq < cut_coulsq[itype][jtype]) { r = sqrt(rsq); - rinv = 1.0/r; - screening = exp(-kappa*r); - forcecoul = force->qqrd2e * atom->q[i]*atom->q[j] * - screening * (kappa + rinv) * eps[i]; - } else forcecoul = 0.0; + rinv = 1.0 / r; + screening = exp(-kappa * r); + forcecoul = force->qqrd2e * atom->q[i] * atom->q[j] * screening * (kappa + rinv) * eps[i]; + } else + forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - r6inv = r2inv*r2inv*r2inv; - forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); - } else forcelj = 0.0; - fforce = (factor_coul*forcecoul + factor_lj*forcelj) * r2inv; + r6inv = r2inv * r2inv * r2inv; + forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]); + } else + forcelj = 0.0; + fforce = (factor_coul * forcecoul + factor_lj * forcelj) * r2inv; double eng = 0.0; - if (eps[i] == 1) ei = 0; - else ei = eps[i]; - if (eps[j] == 1) ej = 0; - else ej = eps[j]; + if (eps[i] == 1) + ei = 0; + else + ei = eps[i]; + if (eps[j] == 1) + ej = 0; + else + ej = eps[j]; if (rsq < cut_coulsq[itype][jtype]) { - phicoul = force->qqrd2e * atom->q[i]*atom->q[j] * rinv * screening; - phicoul *= 0.5*(ei+ej); - eng += factor_coul*phicoul; + phicoul = force->qqrd2e * atom->q[i] * atom->q[j] * rinv * screening; + phicoul *= 0.5 * (ei + ej); + eng += factor_coul * phicoul; } if (rsq < cut_ljsq[itype][jtype]) { - philj = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - - offset[itype][jtype]; - eng += factor_lj*philj; + philj = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype]; + eng += factor_lj * philj; } return eng; diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h index 18b3c1bb59..0301ff4fbd 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_debye_dielectric.h @@ -32,15 +32,15 @@ class PairLJCutCoulDebyeDielectric : public PairLJCutCoulDebye { virtual double single(int, int, int, int, double, double, double, double &); void init_style(); - double** efield; - double* epot; + double **efield; + double *epot; protected: - class AtomVecDielectric* avec; + class AtomVecDielectric *avec; int nmax; }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp index ecbb592e5c..7f5b67a22b 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories @@ -24,31 +23,30 @@ #include "error.h" #include "force.h" #include "kspace.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" #include "math_const.h" #include "memory.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" #include using namespace LAMMPS_NS; using namespace MathConst; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 #define EPSILON 1e-6 /* ---------------------------------------------------------------------- */ -PairLJCutCoulLongDielectric::PairLJCutCoulLongDielectric(LAMMPS *lmp) : - PairLJCutCoulLong(lmp) +PairLJCutCoulLongDielectric::PairLJCutCoulLongDielectric(LAMMPS *lmp) : PairLJCutCoulLong(lmp) { respa_enable = 0; cut_respa = nullptr; @@ -69,34 +67,33 @@ PairLJCutCoulLongDielectric::~PairLJCutCoulLongDielectric() void PairLJCutCoulLongDielectric::compute(int eflag, int vflag) { - int i,ii,j,jj,inum,jnum,itype,jtype,itable; - double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul; - double fpair_i,fpair_j; - double fraction,table; - double r,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; - double grij,expm2,prefactor,t,erfc,prefactorE,efield_i,epot_i; - int *ilist,*jlist,*numneigh,**firstneigh; + int i, ii, j, jj, inum, jnum, itype, jtype, itable; + double qtmp, etmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul; + double fpair_i, fpair_j; + double fraction, table; + double r, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj; + double grij, expm2, prefactor, t, erfc, prefactorE, efield_i, epot_i; + int *ilist, *jlist, *numneigh, **firstneigh; double rsq; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); if (atom->nmax > nmax) { memory->destroy(efield); memory->destroy(epot); nmax = atom->nmax; - memory->create(efield,nmax,3,"pair:efield"); - memory->create(epot,nmax,"pair:epot"); + memory->create(efield, nmax, 3, "pair:efield"); + memory->create(epot, nmax, "pair:epot"); } double **x = atom->x; double **f = atom->f; double *q = atom->q; double *eps = atom->epsilon; - double** norm = atom->mu; - double* curvature = atom->curvature; - double* area = atom->area; + double **norm = atom->mu; + double *curvature = atom->curvature; + double *area = atom->area; int *type = atom->type; int nlocal = atom->nlocal; double *special_coul = force->special_coul; @@ -126,10 +123,10 @@ void PairLJCutCoulLongDielectric::compute(int eflag, int vflag) double curvature_threshold = sqrt(area[i]); if (curvature[i] < curvature_threshold) { - double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; - efield[i][0] = sf*norm[i][0]; - efield[i][1] = sf*norm[i][1]; - efield[i][2] = sf*norm[i][2]; + double sf = curvature[i] / (4.0 * MY_PIS * curvature_threshold) * area[i] * q[i]; + efield[i][0] = sf * norm[i][0]; + efield[i][1] = sf * norm[i][1]; + efield[i][2] = sf * norm[i][2]; } else { efield[i][0] = efield[i][1] = efield[i][2] = 0; } @@ -145,27 +142,27 @@ void PairLJCutCoulLongDielectric::compute(int eflag, int vflag) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; jtype = type[j]; if (rsq < cutsq[itype][jtype]) { - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; r = sqrt(rsq); if (rsq < cut_coulsq && rsq > EPSILON) { if (!ncoultablebits || rsq <= tabinnersq) { grij = g_ewald * r; - expm2 = exp(-grij*grij); - t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; - prefactor = qqrd2e * qtmp*q[j]/r; - forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); - if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + expm2 = exp(-grij * grij); + t = 1.0 / (1.0 + EWALD_P * grij); + erfc = t * (A1 + t * (A2 + t * (A3 + t * (A4 + t * A5)))) * expm2; + prefactor = qqrd2e * qtmp * q[j] / r; + forcecoul = prefactor * (erfc + EWALD_F * grij * expm2); + if (factor_coul < 1.0) forcecoul -= (1.0 - factor_coul) * prefactor; - prefactorE = q[j]/r; - efield_i = prefactorE * (erfc + EWALD_F*grij*expm2); - if (factor_coul < 1.0) efield_i -= (1.0-factor_coul)*prefactorE; + prefactorE = q[j] / r; + efield_i = prefactorE * (erfc + EWALD_F * grij * expm2); + if (factor_coul < 1.0) efield_i -= (1.0 - factor_coul) * prefactorE; epot_i = efield_i; } else { union_int_float_t rsq_lookup; @@ -173,66 +170,69 @@ void PairLJCutCoulLongDielectric::compute(int eflag, int vflag) itable = rsq_lookup.i & ncoulmask; itable >>= ncoulshiftbits; fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; - table = ftable[itable] + fraction*dftable[itable]; - forcecoul = qtmp*q[j] * table; - efield_i = q[j] * table/qqrd2e; + table = ftable[itable] + fraction * dftable[itable]; + forcecoul = qtmp * q[j] * table; + efield_i = q[j] * table / qqrd2e; if (factor_coul < 1.0) { - table = ctable[itable] + fraction*dctable[itable]; - prefactor = qtmp*q[j] * table; - forcecoul -= (1.0-factor_coul)*prefactor; + table = ctable[itable] + fraction * dctable[itable]; + prefactor = qtmp * q[j] * table; + forcecoul -= (1.0 - factor_coul) * prefactor; - prefactorE = q[j] * table/qqrd2e; - efield_i -= (1.0-factor_coul)*prefactorE; + prefactorE = q[j] * table / qqrd2e; + efield_i -= (1.0 - factor_coul) * prefactorE; } epot_i = efield_i; } - } else epot_i = efield_i = forcecoul = 0.0; + } else + epot_i = efield_i = forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - r6inv = r2inv*r2inv*r2inv; - forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); - } else forcelj = 0.0; + r6inv = r2inv * r2inv * r2inv; + forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]); + } else + forcelj = 0.0; - fpair_i = (forcecoul*etmp + factor_lj*forcelj) * r2inv; - f[i][0] += delx*fpair_i; - f[i][1] += dely*fpair_i; - f[i][2] += delz*fpair_i; + fpair_i = (forcecoul * etmp + factor_lj * forcelj) * r2inv; + f[i][0] += delx * fpair_i; + f[i][1] += dely * fpair_i; + f[i][2] += delz * fpair_i; - efield_i *= (etmp*r2inv); - efield[i][0] += delx*efield_i; - efield[i][1] += dely*efield_i; - efield[i][2] += delz*efield_i; + efield_i *= (etmp * r2inv); + efield[i][0] += delx * efield_i; + efield[i][1] += dely * efield_i; + efield[i][2] += delz * efield_i; epot[i] += epot_i; if (newton_pair && j >= nlocal) { - fpair_j = (forcecoul*eps[j] + factor_lj*forcelj) * r2inv; - f[j][0] -= delx*fpair_j; - f[j][1] -= dely*fpair_j; - f[j][2] -= delz*fpair_j; + fpair_j = (forcecoul * eps[j] + factor_lj * forcelj) * r2inv; + f[j][0] -= delx * fpair_j; + f[j][1] -= dely * fpair_j; + f[j][2] -= delz * fpair_j; } if (eflag) { if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) - ecoul = prefactor*(etmp+eps[j])*erfc; + ecoul = prefactor * (etmp + eps[j]) * erfc; else { - table = etable[itable] + fraction*detable[itable]; - ecoul = qtmp*q[j]*(etmp+eps[j]) * table; + table = etable[itable] + fraction * detable[itable]; + ecoul = qtmp * q[j] * (etmp + eps[j]) * table; } ecoul *= 0.5; - if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; - } else ecoul = 0.0; + if (factor_coul < 1.0) ecoul -= (1.0 - factor_coul) * prefactor; + } else + ecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - - offset[itype][jtype]; + evdwl = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype]; evdwl *= factor_lj; - } else evdwl = 0.0; + } else + evdwl = 0.0; } - if (evflag) ev_tally_full(i,evdwl,ecoul,fpair_i,delx,dely,delz); + if (evflag) ev_tally_full(i, evdwl, ecoul, fpair_i, delx, dely, delz); } } } @@ -247,9 +247,9 @@ void PairLJCutCoulLongDielectric::compute(int eflag, int vflag) void PairLJCutCoulLongDielectric::init_style() { avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"Pair lj/cut/coul/long/dielectric requires atom style dielectric"); + if (!avec) error->all(FLERR, "Pair lj/cut/coul/long/dielectric requires atom style dielectric"); - int irequest = neighbor->request(this,instance_me); + int irequest = neighbor->request(this, instance_me); neighbor->requests[irequest]->half = 0; neighbor->requests[irequest]->full = 1; @@ -257,82 +257,84 @@ void PairLJCutCoulLongDielectric::init_style() // insure use of KSpace long-range solver, set g_ewald - if (force->kspace == NULL) - error->all(FLERR,"Pair style requires a KSpace style"); + if (force->kspace == NULL) error->all(FLERR, "Pair style requires a KSpace style"); g_ewald = force->kspace->g_ewald; // setup force tables - if (ncoultablebits) init_tables(cut_coul,cut_respa); + if (ncoultablebits) init_tables(cut_coul, cut_respa); } /* ---------------------------------------------------------------------- */ -double PairLJCutCoulLongDielectric::single(int i, int j, int itype, int jtype, - double rsq, - double factor_coul, double factor_lj, - double &fforce) +double PairLJCutCoulLongDielectric::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, double &fforce) { - double r2inv,r6inv,r,grij,expm2,t,erfc,ei,ej,prefactor; - double fraction,table,forcecoul,forcelj,phicoul,philj; + double r2inv, r6inv, r, grij, expm2, t, erfc, ei, ej, prefactor; + double fraction, table, forcecoul, forcelj, phicoul, philj; int itable; double *eps = atom->epsilon; - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) { r = sqrt(rsq); grij = g_ewald * r; - expm2 = exp(-grij*grij); - t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; - prefactor = force->qqrd2e * atom->q[i]*atom->q[j]/r; - forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); - if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + expm2 = exp(-grij * grij); + t = 1.0 / (1.0 + EWALD_P * grij); + erfc = t * (A1 + t * (A2 + t * (A3 + t * (A4 + t * A5)))) * expm2; + prefactor = force->qqrd2e * atom->q[i] * atom->q[j] / r; + forcecoul = prefactor * (erfc + EWALD_F * grij * expm2); + if (factor_coul < 1.0) forcecoul -= (1.0 - factor_coul) * prefactor; } else { union_int_float_t rsq_lookup_single; rsq_lookup_single.f = rsq; itable = rsq_lookup_single.i & ncoulmask; itable >>= ncoulshiftbits; fraction = (rsq_lookup_single.f - rtable[itable]) * drtable[itable]; - table = ftable[itable] + fraction*dftable[itable]; - forcecoul = atom->q[i]*atom->q[j] * table; + table = ftable[itable] + fraction * dftable[itable]; + forcecoul = atom->q[i] * atom->q[j] * table; if (factor_coul < 1.0) { - table = ctable[itable] + fraction*dctable[itable]; - prefactor = atom->q[i]*atom->q[j] * table; - forcecoul -= (1.0-factor_coul)*prefactor; + table = ctable[itable] + fraction * dctable[itable]; + prefactor = atom->q[i] * atom->q[j] * table; + forcecoul -= (1.0 - factor_coul) * prefactor; } } - } else forcecoul = 0.0; + } else + forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - r6inv = r2inv*r2inv*r2inv; - forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); - } else forcelj = 0.0; + r6inv = r2inv * r2inv * r2inv; + forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]); + } else + forcelj = 0.0; - fforce = (forcecoul*eps[i] + factor_lj*forcelj) * r2inv; + fforce = (forcecoul * eps[i] + factor_lj * forcelj) * r2inv; double eng = 0.0; - if (eps[i] == 1) ei = 0; - else ei = eps[i]; - if (eps[j] == 1) ej = 0; - else ej = eps[j]; + if (eps[i] == 1) + ei = 0; + else + ei = eps[i]; + if (eps[j] == 1) + ej = 0; + else + ej = eps[j]; if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) - phicoul = prefactor*(ei+ej)*erfc; + phicoul = prefactor * (ei + ej) * erfc; else { - table = etable[itable] + fraction*detable[itable]; - phicoul = atom->q[i]*atom->q[j]*(ei+ej) * table; + table = etable[itable] + fraction * detable[itable]; + phicoul = atom->q[i] * atom->q[j] * (ei + ej) * table; } phicoul *= 0.5; - if (factor_coul < 1.0) phicoul -= (1.0-factor_coul)*prefactor; + if (factor_coul < 1.0) phicoul -= (1.0 - factor_coul) * prefactor; eng += phicoul; } if (rsq < cut_ljsq[itype][jtype]) { - philj = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - - offset[itype][jtype]; - eng += factor_lj*philj; + philj = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype]; + eng += factor_lj * philj; } return eng; diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h index 1d2b3c6123..06ad1c5e7f 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_long_dielectric.h @@ -33,15 +33,15 @@ class PairLJCutCoulLongDielectric : public PairLJCutCoulLong { virtual void init_style(); virtual double single(int, int, int, int, double, double, double, double &); - double** efield; - double* epot; + double **efield; + double *epot; protected: - class AtomVecDielectric* avec; + class AtomVecDielectric *avec; int nmax; }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp index 4c5efe7c99..c273fc2132 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories @@ -23,13 +22,13 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "kspace.h" #include "integrate.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" +#include "kspace.h" #include "math_const.h" #include "memory.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" #include @@ -40,8 +39,7 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -PairLJCutCoulMSMDielectric::PairLJCutCoulMSMDielectric(LAMMPS *lmp) : - PairLJCutCoulLong(lmp) +PairLJCutCoulMSMDielectric::PairLJCutCoulMSMDielectric(LAMMPS *lmp) : PairLJCutCoulLong(lmp) { ewaldflag = pppmflag = 0; msmflag = 1; @@ -65,52 +63,50 @@ PairLJCutCoulMSMDielectric::~PairLJCutCoulMSMDielectric() void PairLJCutCoulMSMDielectric::compute(int eflag, int vflag) { - int i,ii,j,jj,inum,jnum,itype,jtype,itable; - double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair,fcoul; - double fpair_i,fpair_j; - double fraction,table; - double r,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; - double egamma,fgamma,prefactor,prefactorE,efield_i; - int *ilist,*jlist,*numneigh,**firstneigh; + int i, ii, j, jj, inum, jnum, itype, jtype, itable; + double qtmp, etmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul, fpair, fcoul; + double fpair_i, fpair_j; + double fraction, table; + double r, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj; + double egamma, fgamma, prefactor, prefactorE, efield_i; + int *ilist, *jlist, *numneigh, **firstneigh; double rsq; int eflag_old = eflag; if (force->kspace->scalar_pressure_flag && vflag) { if (vflag > 2) - error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' " - "to obtain per-atom virial with kspace_style MSM"); + error->all(FLERR, + "Must use 'kspace_modify pressure/scalar no' " + "to obtain per-atom virial with kspace_style MSM"); if (atom->nmax > nmax) { if (ftmp) memory->destroy(ftmp); nmax = atom->nmax; - memory->create(ftmp,nmax,3,"pair:ftmp"); + memory->create(ftmp, nmax, 3, "pair:ftmp"); } - memset(&ftmp[0][0],0,nmax*3*sizeof(double)); + memset(&ftmp[0][0], 0, nmax * 3 * sizeof(double)); // must switch on global energy computation if not already on - if (eflag == 0 || eflag == 2) { - eflag++; - } + if (eflag == 0 || eflag == 2) { eflag++; } } if (!efield || atom->nmax > nmax) { if (efield) memory->destroy(efield); nmax = atom->nmax; - memory->create(efield,nmax,3,"pair:efield"); + memory->create(efield, nmax, 3, "pair:efield"); } evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); double **x = atom->x; double **f = atom->f; double *q = atom->q; double *eps = atom->epsilon; - double** norm = atom->mu; - double* curvature = atom->curvature; - double* area = atom->area; + double **norm = atom->mu; + double *curvature = atom->curvature; + double *area = atom->area; int *type = atom->type; int nlocal = atom->nlocal; double *special_coul = force->special_coul; @@ -139,10 +135,10 @@ void PairLJCutCoulMSMDielectric::compute(int eflag, int vflag) // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al double curvature_threshold = sqrt(area[i]); if (curvature[i] < curvature_threshold) { - double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; - efield[i][0] = sf*norm[i][0]; - efield[i][1] = sf*norm[i][1]; - efield[i][2] = sf*norm[i][2]; + double sf = curvature[i] / (4.0 * MY_PIS * curvature_threshold) * area[i] * q[i]; + efield[i][0] = sf * norm[i][0]; + efield[i][1] = sf * norm[i][1]; + efield[i][2] = sf * norm[i][2]; } else { efield[i][0] = efield[i][1] = efield[i][2] = 0; } @@ -156,24 +152,24 @@ void PairLJCutCoulMSMDielectric::compute(int eflag, int vflag) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; jtype = type[j]; if (rsq < cutsq[itype][jtype]) { - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; if (rsq < cut_coulsq && rsq > EPSILON) { if (!ncoultablebits || rsq <= tabinnersq) { r = sqrt(rsq); - prefactor = qqrd2e * qtmp*q[j]/r; - egamma = 1.0 - (r/cut_coul)*force->kspace->gamma(r/cut_coul); - fgamma = 1.0 + (rsq/cut_coulsq)*force->kspace->dgamma(r/cut_coul); + prefactor = qqrd2e * qtmp * q[j] / r; + egamma = 1.0 - (r / cut_coul) * force->kspace->gamma(r / cut_coul); + fgamma = 1.0 + (rsq / cut_coulsq) * force->kspace->dgamma(r / cut_coul); forcecoul = prefactor * fgamma; - if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + if (factor_coul < 1.0) forcecoul -= (1.0 - factor_coul) * prefactor; - prefactorE = q[j]/r; + prefactorE = q[j] / r; efield_i = prefactorE * fgamma; - if (factor_coul < 1.0) efield_i -= (1.0-factor_coul)*prefactorE; + if (factor_coul < 1.0) efield_i -= (1.0 - factor_coul) * prefactorE; } else { union_int_float_t rsq_lookup; @@ -181,95 +177,98 @@ void PairLJCutCoulMSMDielectric::compute(int eflag, int vflag) itable = rsq_lookup.i & ncoulmask; itable >>= ncoulshiftbits; fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; - table = ftable[itable] + fraction*dftable[itable]; - forcecoul = qtmp*q[j] * table; - efield_i = q[j] * table/qqrd2e; + table = ftable[itable] + fraction * dftable[itable]; + forcecoul = qtmp * q[j] * table; + efield_i = q[j] * table / qqrd2e; if (factor_coul < 1.0) { - table = ctable[itable] + fraction*dctable[itable]; - prefactor = qtmp*q[j] * table; - forcecoul -= (1.0-factor_coul)*prefactor; + table = ctable[itable] + fraction * dctable[itable]; + prefactor = qtmp * q[j] * table; + forcecoul -= (1.0 - factor_coul) * prefactor; - prefactorE = q[j] * table/qqrd2e; - efield_i -= (1.0-factor_coul)*prefactorE; + prefactorE = q[j] * table / qqrd2e; + efield_i -= (1.0 - factor_coul) * prefactorE; } } - } else forcecoul = 0.0; + } else + forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - r6inv = r2inv*r2inv*r2inv; - forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); - } else forcelj = 0.0; + r6inv = r2inv * r2inv * r2inv; + forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]); + } else + forcelj = 0.0; if (!(force->kspace->scalar_pressure_flag && vflag)) { - fpair_i = (forcecoul*etmp + factor_lj*forcelj) * r2inv; - f[i][0] += delx*fpair_i; - f[i][1] += dely*fpair_i; - f[i][2] += delz*fpair_i; + fpair_i = (forcecoul * etmp + factor_lj * forcelj) * r2inv; + f[i][0] += delx * fpair_i; + f[i][1] += dely * fpair_i; + f[i][2] += delz * fpair_i; - efield_i *= (etmp*r2inv); - efield[i][0] += delx*efield_i; - efield[i][1] += dely*efield_i; - efield[i][2] += delz*efield_i; + efield_i *= (etmp * r2inv); + efield[i][0] += delx * efield_i; + efield[i][1] += dely * efield_i; + efield[i][2] += delz * efield_i; if (newton_pair && j >= nlocal) { - fpair_j = (forcecoul*eps[j] + factor_lj*forcelj) * r2inv; - f[j][0] -= delx*fpair_j; - f[j][1] -= dely*fpair_j; - f[j][2] -= delz*fpair_j; + fpair_j = (forcecoul * eps[j] + factor_lj * forcelj) * r2inv; + f[j][0] -= delx * fpair_j; + f[j][1] -= dely * fpair_j; + f[j][2] -= delz * fpair_j; } } else { // separate LJ and Coulombic forces - fpair = (factor_lj*forcelj) * r2inv; + fpair = (factor_lj * forcelj) * r2inv; - f[i][0] += delx*fpair; - f[i][1] += dely*fpair; - f[i][2] += delz*fpair; + f[i][0] += delx * fpair; + f[i][1] += dely * fpair; + f[i][2] += delz * fpair; if (newton_pair) { - f[j][0] -= delx*fpair; - f[j][1] -= dely*fpair; - f[j][2] -= delz*fpair; + f[j][0] -= delx * fpair; + f[j][1] -= dely * fpair; + f[j][2] -= delz * fpair; } - fpair_i = (forcecoul*etmp) * r2inv; - ftmp[i][0] += delx*fpair_i; - ftmp[i][1] += dely*fpair_i; - ftmp[i][2] += delz*fpair_i; + fpair_i = (forcecoul * etmp) * r2inv; + ftmp[i][0] += delx * fpair_i; + ftmp[i][1] += dely * fpair_i; + ftmp[i][2] += delz * fpair_i; - efield_i *= (etmp*r2inv); - efield[i][0] += delx*efield_i; - efield[i][1] += dely*efield_i; - efield[i][2] += delz*efield_i; + efield_i *= (etmp * r2inv); + efield[i][0] += delx * efield_i; + efield[i][1] += dely * efield_i; + efield[i][2] += delz * efield_i; if (newton_pair && j >= nlocal) { - fpair_j = (forcecoul*eps[j]) * r2inv; - ftmp[j][0] -= delx*fpair_j; - ftmp[j][1] -= dely*fpair_j; - ftmp[j][2] -= delz*fpair_j; + fpair_j = (forcecoul * eps[j]) * r2inv; + ftmp[j][0] -= delx * fpair_j; + ftmp[j][1] -= dely * fpair_j; + ftmp[j][2] -= delz * fpair_j; } } if (eflag) { if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) - ecoul = prefactor*(etmp+eps[j])*egamma; + ecoul = prefactor * (etmp + eps[j]) * egamma; else { - table = etable[itable] + fraction*detable[itable]; - ecoul = qtmp*q[j]*(etmp+eps[j]) * table; + table = etable[itable] + fraction * detable[itable]; + ecoul = qtmp * q[j] * (etmp + eps[j]) * table; } - if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; - } else ecoul = 0.0; + if (factor_coul < 1.0) ecoul -= (1.0 - factor_coul) * prefactor; + } else + ecoul = 0.0; if (eflag_old && rsq < cut_ljsq[itype][jtype]) { - evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - - offset[itype][jtype]; + evdwl = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype]; evdwl *= factor_lj; - } else evdwl = 0.0; + } else + evdwl = 0.0; } - if (evflag) ev_tally_full(i,evdwl,ecoul,fpair_i,delx,dely,delz); + if (evflag) ev_tally_full(i, evdwl, ecoul, fpair_i, delx, dely, delz); } } } @@ -277,7 +276,7 @@ void PairLJCutCoulMSMDielectric::compute(int eflag, int vflag) if (vflag_fdotr) virial_fdotr_compute(); if (force->kspace->scalar_pressure_flag && vflag) { - for (i = 0; i < 3; i++) virial[i] += force->pair->eng_coul/3.0; + for (i = 0; i < 3; i++) virial[i] += force->pair->eng_coul / 3.0; for (int i = 0; i < nmax; i++) { f[i][0] += ftmp[i][0]; f[i][1] += ftmp[i][1]; @@ -288,63 +287,62 @@ void PairLJCutCoulMSMDielectric::compute(int eflag, int vflag) /* ---------------------------------------------------------------------- */ -double PairLJCutCoulMSMDielectric::single(int i, int j, int itype, int jtype, - double rsq, - double factor_coul, double factor_lj, - double &fforce) +double PairLJCutCoulMSMDielectric::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, double &fforce) { - double r2inv,r6inv,r,egamma,fgamma,prefactor; - double fraction,table,forcecoul,forcelj,phicoul,philj; + double r2inv, r6inv, r, egamma, fgamma, prefactor; + double fraction, table, forcecoul, forcelj, phicoul, philj; int itable; - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) { r = sqrt(rsq); - prefactor = force->qqrd2e * atom->q[i]*atom->q[j]/r; - egamma = 1.0 - (r/cut_coul)*force->kspace->gamma(r/cut_coul); - fgamma = 1.0 + (rsq/cut_coulsq)*force->kspace->dgamma(r/cut_coul); + prefactor = force->qqrd2e * atom->q[i] * atom->q[j] / r; + egamma = 1.0 - (r / cut_coul) * force->kspace->gamma(r / cut_coul); + fgamma = 1.0 + (rsq / cut_coulsq) * force->kspace->dgamma(r / cut_coul); forcecoul = prefactor * fgamma; - if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + if (factor_coul < 1.0) forcecoul -= (1.0 - factor_coul) * prefactor; } else { union_int_float_t rsq_lookup_single; rsq_lookup_single.f = rsq; itable = rsq_lookup_single.i & ncoulmask; itable >>= ncoulshiftbits; fraction = (rsq_lookup_single.f - rtable[itable]) * drtable[itable]; - table = ftable[itable] + fraction*dftable[itable]; - forcecoul = atom->q[i]*atom->q[j] * table; + table = ftable[itable] + fraction * dftable[itable]; + forcecoul = atom->q[i] * atom->q[j] * table; if (factor_coul < 1.0) { - table = ctable[itable] + fraction*dctable[itable]; - prefactor = atom->q[i]*atom->q[j] * table; - forcecoul -= (1.0-factor_coul)*prefactor; + table = ctable[itable] + fraction * dctable[itable]; + prefactor = atom->q[i] * atom->q[j] * table; + forcecoul -= (1.0 - factor_coul) * prefactor; } } - } else forcecoul = 0.0; + } else + forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - r6inv = r2inv*r2inv*r2inv; - forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); - } else forcelj = 0.0; + r6inv = r2inv * r2inv * r2inv; + forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]); + } else + forcelj = 0.0; - fforce = (forcecoul + factor_lj*forcelj) * r2inv; + fforce = (forcecoul + factor_lj * forcelj) * r2inv; double eng = 0.0; if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) - phicoul = prefactor*egamma; + phicoul = prefactor * egamma; else { - table = etable[itable] + fraction*detable[itable]; - phicoul = atom->q[i]*atom->q[j] * table; + table = etable[itable] + fraction * detable[itable]; + phicoul = atom->q[i] * atom->q[j] * table; } - if (factor_coul < 1.0) phicoul -= (1.0-factor_coul)*prefactor; + if (factor_coul < 1.0) phicoul -= (1.0 - factor_coul) * prefactor; eng += phicoul; } if (rsq < cut_ljsq[itype][jtype]) { - philj = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - - offset[itype][jtype]; - eng += factor_lj*philj; + philj = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype]; + eng += factor_lj * philj; } return eng; @@ -357,9 +355,9 @@ double PairLJCutCoulMSMDielectric::single(int i, int j, int itype, int jtype, void PairLJCutCoulMSMDielectric::init_style() { avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"Pair lj/cut/coul/msm/dielectric requires atom style dielectric"); + if (!avec) error->all(FLERR, "Pair lj/cut/coul/msm/dielectric requires atom style dielectric"); - int irequest = neighbor->request(this,instance_me); + int irequest = neighbor->request(this, instance_me); neighbor->requests[irequest]->half = 0; neighbor->requests[irequest]->full = 1; @@ -367,13 +365,12 @@ void PairLJCutCoulMSMDielectric::init_style() // insure use of KSpace long-range solver, set g_ewald - if (force->kspace == NULL) - error->all(FLERR,"Pair style requires a KSpace style"); + if (force->kspace == NULL) error->all(FLERR, "Pair style requires a KSpace style"); g_ewald = force->kspace->g_ewald; // setup force tables - if (ncoultablebits) init_tables(cut_coul,cut_respa); + if (ncoultablebits) init_tables(cut_coul, cut_respa); } /* ---------------------------------------------------------------------- */ @@ -381,9 +378,9 @@ void PairLJCutCoulMSMDielectric::init_style() void *PairLJCutCoulMSMDielectric::extract(const char *str, int &dim) { dim = 0; - if (strcmp(str,"cut_coul") == 0) return (void *) &cut_coul; + if (strcmp(str, "cut_coul") == 0) return (void *) &cut_coul; dim = 2; - if (strcmp(str,"epsilon") == 0) return (void *) epsilon; - if (strcmp(str,"sigma") == 0) return (void *) sigma; + if (strcmp(str, "epsilon") == 0) return (void *) epsilon; + if (strcmp(str, "sigma") == 0) return (void *) sigma; return NULL; } diff --git a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h index e64409a2cb..3e9e06bbc9 100644 --- a/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_cut_coul_msm_dielectric.h @@ -36,12 +36,12 @@ class PairLJCutCoulMSMDielectric : public PairLJCutCoulLong { double **efield; protected: - class AtomVecDielectric* avec; + class AtomVecDielectric *avec; int nmax; double **ftmp; }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp index 09c8de7e71..564a156a04 100644 --- a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp +++ b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories @@ -16,42 +15,42 @@ Contributing author: Trung Nguyen (Northwestern) ------------------------------------------------------------------------- */ -#include -#include -#include -#include -#include "math_vector.h" #include "pair_lj_long_coul_long_dielectric.h" + #include "atom.h" #include "atom_vec_dielectric.h" #include "comm.h" -#include "neighbor.h" +#include "error.h" +#include "force.h" +#include "integrate.h" +#include "kspace.h" +#include "math_const.h" +#include "math_extra.h" +#include "memory.h" #include "neigh_list.h" #include "neigh_request.h" -#include "force.h" -#include "kspace.h" -#include "update.h" -#include "integrate.h" +#include "neighbor.h" #include "respa.h" -#include "math_const.h" -#include "memory.h" -#include "error.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; using namespace MathConst; +using namespace MathExtra; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 /* ---------------------------------------------------------------------- */ -PairLJLongCoulLongDielectric::PairLJLongCoulLongDielectric(LAMMPS *lmp) - : PairLJLongCoulLong(lmp) +PairLJLongCoulLongDielectric::PairLJLongCoulLongDielectric(LAMMPS *lmp) : PairLJLongCoulLong(lmp) { respa_enable = 0; cut_respa = NULL; @@ -79,9 +78,9 @@ void PairLJLongCoulLongDielectric::init_style() PairLJLongCoulLongDielectric::init_style(); avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"Pair lj/long/coul/long/dielectric requires atom style dielectric"); + if (!avec) error->all(FLERR, "Pair lj/long/coul/long/dielectric requires atom style dielectric"); - int irequest = neighbor->request(this,instance_me); + int irequest = neighbor->request(this, instance_me); neighbor->requests[irequest]->half = 0; neighbor->requests[irequest]->full = 1; } @@ -92,26 +91,25 @@ void PairLJLongCoulLongDielectric::init_style() void PairLJLongCoulLongDielectric::compute(int eflag, int vflag) { - double evdwl,ecoul,fpair; + double evdwl, ecoul, fpair; evdwl = ecoul = 0.0; - if (eflag || vflag) ev_setup(eflag,vflag); - else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); if (atom->nmax > nmax) { memory->destroy(efield); memory->destroy(epot); nmax = atom->nmax; - memory->create(efield,nmax,3,"pair:efield"); - memory->create(epot,nmax,"pair:epot"); + memory->create(efield, nmax, 3, "pair:efield"); + memory->create(epot, nmax, "pair:epot"); } double **x = atom->x, *x0 = x[0]; double **f = atom->f, *f0 = f[0], *fi = f0; double *q = atom->q; double *eps = avec->epsilon; - double** norm = avec->mu; - double* curvature = avec->curvature; - double* area = avec->area; + double **norm = avec->mu; + double *curvature = avec->curvature; + double *area = avec->area; int *type = atom->type; int nlocal = atom->nlocal; double *special_coul = force->special_coul; @@ -119,46 +117,51 @@ void PairLJLongCoulLongDielectric::compute(int eflag, int vflag) int newton_pair = force->newton_pair; double qqrd2e = force->qqrd2e; - int i,ii,j,jj,inum,jnum,itype,jtype,itable; - double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz; - int order1 = ewald_order&(1<<1), order6 = ewald_order&(1<<6); + int i, ii, j, jj, inum, jnum, itype, jtype, itable; + double qtmp, etmp, xtmp, ytmp, ztmp, delx, dely, delz; + int order1 = ewald_order & (1 << 1), order6 = ewald_order & (1 << 6); int *ineigh, *ineighn, *jneigh, *jneighn, typei, typej, ni; double qi = 0.0, qri = 0.0; - double fpair_i,fpair_j; - double fraction,table; + double fpair_i, fpair_j; + double fraction, table; double *cutsqi, *cut_ljsqi, *lj1i, *lj2i, *lj3i, *lj4i, *offseti; - double grij,expm2,prefactor,t,erfc,prefactorE,efield_i,epot_i; - double r,rsq,r2inv,force_coul,force_lj,factor_coul,factor_lj; - double g2 = g_ewald_6*g_ewald_6, g6 = g2*g2*g2, g8 = g6*g2; - vector xi, d; + double grij, expm2, prefactor, t, erfc, prefactorE, efield_i, epot_i; + double r, rsq, r2inv, force_coul, force_lj, factor_coul, factor_lj; + double g2 = g_ewald_6 * g_ewald_6, g6 = g2 * g2 * g2, g8 = g6 * g2; + double xi[3], d[3]; - ineighn = (ineigh = list->ilist)+list->inum; + ineighn = (ineigh = list->ilist) + list->inum; - for (; ineighfirstneigh[i])+list->numneigh[i]; + lj1i = lj1[typei]; + lj2i = lj2[typei]; + lj3i = lj3[typei]; + lj4i = lj4[typei]; + cutsqi = cutsq[typei]; + cut_ljsqi = cut_ljsq[typei]; + memcpy(xi, x0 + (i + (i << 1)), 3 * sizeof(double)); + jneighn = (jneigh = list->firstneigh[i]) + list->numneigh[i]; // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al double curvature_threshold = sqrt(area[i]); if (curvature[i] < curvature_threshold) { - double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; - efield[i][0] = sf*norm[i][0]; - efield[i][1] = sf*norm[i][1]; - efield[i][2] = sf*norm[i][2]; + double sf = curvature[i] / (4.0 * MY_PIS * curvature_threshold) * area[i] * q[i]; + efield[i][0] = sf * norm[i][0]; + efield[i][1] = sf * norm[i][1]; + efield[i][2] = sf * norm[i][2]; } else { efield[i][0] = efield[i][1] = efield[i][2] = 0; } epot[i] = 0; - for (; jneigh= cutsq[typei][typej]) continue; - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; r = sqrt(rsq); - if (order1 && (rsq < cut_coulsq)) { // coulombic + if (order1 && (rsq < cut_coulsq)) { // coulombic if (!ncoultablebits || rsq <= tabinnersq) { grij = g_ewald * r; - expm2 = exp(-grij*grij); - t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; - prefactor = qqrd2e * qtmp*q[j]/r; - force_coul = prefactor * (erfc + EWALD_F*grij*expm2); - if (factor_coul < 1.0) force_coul -= (1.0-factor_coul)*prefactor; + expm2 = exp(-grij * grij); + t = 1.0 / (1.0 + EWALD_P * grij); + erfc = t * (A1 + t * (A2 + t * (A3 + t * (A4 + t * A5)))) * expm2; + prefactor = qqrd2e * qtmp * q[j] / r; + force_coul = prefactor * (erfc + EWALD_F * grij * expm2); + if (factor_coul < 1.0) force_coul -= (1.0 - factor_coul) * prefactor; - prefactorE = q[j]/r; - efield_i = prefactorE * (erfc + EWALD_F*grij*expm2); - if (factor_coul < 1.0) efield_i -= (1.0-factor_coul)*prefactorE; + prefactorE = q[j] / r; + efield_i = prefactorE * (erfc + EWALD_F * grij * expm2); + if (factor_coul < 1.0) efield_i -= (1.0 - factor_coul) * prefactorE; epot_i = efield_i; } else { union_int_float_t rsq_lookup; @@ -197,111 +200,113 @@ void PairLJLongCoulLongDielectric::compute(int eflag, int vflag) itable = rsq_lookup.i & ncoulmask; itable >>= ncoulshiftbits; fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; - table = ftable[itable] + fraction*dftable[itable]; - force_coul = qtmp*q[j] * table; - efield_i = q[j] * table/qqrd2e; + table = ftable[itable] + fraction * dftable[itable]; + force_coul = qtmp * q[j] * table; + efield_i = q[j] * table / qqrd2e; if (factor_coul < 1.0) { - table = ctable[itable] + fraction*dctable[itable]; - prefactor = qtmp*q[j] * table; - force_coul -= (1.0-factor_coul)*prefactor; + table = ctable[itable] + fraction * dctable[itable]; + prefactor = qtmp * q[j] * table; + force_coul -= (1.0 - factor_coul) * prefactor; - prefactorE = q[j] * table/qqrd2e; - efield_i -= (1.0-factor_coul)*prefactorE; + prefactorE = q[j] * table / qqrd2e; + efield_i -= (1.0 - factor_coul) * prefactorE; } epot_i = efield_i; } - } - else epot_i = efield_i = force_coul = ecoul = 0.0; + } else + epot_i = efield_i = force_coul = ecoul = 0.0; - if (rsq < cut_ljsqi[typej]) { // lj + if (rsq < cut_ljsqi[typej]) { // lj if (order6) { // long-range lj - if(!ndisptablebits || rsq <= tabinnerdispsq) { // series real space - double rn = r2inv*r2inv*r2inv; - double x2 = g2*rsq, a2 = 1.0/x2; - x2 = a2*exp(-x2)*lj4i[typej]; + if (!ndisptablebits || rsq <= tabinnerdispsq) { // series real space + double rn = r2inv * r2inv * r2inv; + double x2 = g2 * rsq, a2 = 1.0 / x2; + x2 = a2 * exp(-x2) * lj4i[typej]; if (ni == 0) { - force_lj = - (rn*=rn)*lj1i[typej]-g8*(((6.0*a2+6.0)*a2+3.0)*a2+1.0)*x2*rsq; + force_lj = (rn *= rn) * lj1i[typej] - + g8 * (((6.0 * a2 + 6.0) * a2 + 3.0) * a2 + 1.0) * x2 * rsq; + if (eflag) evdwl = rn * lj3i[typej] - g6 * ((a2 + 1.0) * a2 + 0.5) * x2; + } else { // special case + double f = special_lj[ni], t = rn * (1.0 - f); + force_lj = f * (rn *= rn) * lj1i[typej] - + g8 * (((6.0 * a2 + 6.0) * a2 + 3.0) * a2 + 1.0) * x2 * rsq + t * lj2i[typej]; if (eflag) - evdwl = rn*lj3i[typej]-g6*((a2+1.0)*a2+0.5)*x2; + evdwl = f * rn * lj3i[typej] - g6 * ((a2 + 1.0) * a2 + 0.5) * x2 + t * lj4i[typej]; } - else { // special case - double f = special_lj[ni], t = rn*(1.0-f); - force_lj = f*(rn *= rn)*lj1i[typej]- - g8*(((6.0*a2+6.0)*a2+3.0)*a2+1.0)*x2*rsq+t*lj2i[typej]; - if (eflag) - evdwl = f*rn*lj3i[typej]-g6*((a2+1.0)*a2+0.5)*x2+t*lj4i[typej]; - } - } - else { // table real space + } else { // table real space union_int_float_t disp_t; disp_t.f = rsq; - const int disp_k = (disp_t.i & ndispmask)>>ndispshiftbits; - double f_disp = (rsq-rdisptable[disp_k])*drdisptable[disp_k]; - double rn = r2inv*r2inv*r2inv; + const int disp_k = (disp_t.i & ndispmask) >> ndispshiftbits; + double f_disp = (rsq - rdisptable[disp_k]) * drdisptable[disp_k]; + double rn = r2inv * r2inv * r2inv; if (ni == 0) { - force_lj = (rn*=rn)*lj1i[typej]-(fdisptable[disp_k]+f_disp*dfdisptable[disp_k])*lj4i[typej]; - if (eflag) evdwl = rn*lj3i[typej]-(edisptable[disp_k]+f_disp*dedisptable[disp_k])*lj4i[typej]; - } - else { // special case - double f = special_lj[ni], t = rn*(1.0-f); - force_lj = f*(rn *= rn)*lj1i[typej]-(fdisptable[disp_k]+f_disp*dfdisptable[disp_k])*lj4i[typej]+t*lj2i[typej]; - if (eflag) evdwl = f*rn*lj3i[typej]-(edisptable[disp_k]+f_disp*dedisptable[disp_k])*lj4i[typej]+t*lj4i[typej]; + force_lj = (rn *= rn) * lj1i[typej] - + (fdisptable[disp_k] + f_disp * dfdisptable[disp_k]) * lj4i[typej]; + if (eflag) + evdwl = rn * lj3i[typej] - + (edisptable[disp_k] + f_disp * dedisptable[disp_k]) * lj4i[typej]; + } else { // special case + double f = special_lj[ni], t = rn * (1.0 - f); + force_lj = f * (rn *= rn) * lj1i[typej] - + (fdisptable[disp_k] + f_disp * dfdisptable[disp_k]) * lj4i[typej] + + t * lj2i[typej]; + if (eflag) + evdwl = f * rn * lj3i[typej] - + (edisptable[disp_k] + f_disp * dedisptable[disp_k]) * lj4i[typej] + + t * lj4i[typej]; } } - } - else { // cut lj - double rn = r2inv*r2inv*r2inv; + } else { // cut lj + double rn = r2inv * r2inv * r2inv; if (ni == 0) { - force_lj = rn*(rn*lj1i[typej]-lj2i[typej]); - if (eflag) evdwl = rn*(rn*lj3i[typej]-lj4i[typej])-offseti[typej]; - } - else { // special case + force_lj = rn * (rn * lj1i[typej] - lj2i[typej]); + if (eflag) evdwl = rn * (rn * lj3i[typej] - lj4i[typej]) - offseti[typej]; + } else { // special case double f = special_lj[ni]; - force_lj = f*rn*(rn*lj1i[typej]-lj2i[typej]); - if (eflag) - evdwl = f * (rn*(rn*lj3i[typej]-lj4i[typej])-offseti[typej]); + force_lj = f * rn * (rn * lj1i[typej] - lj2i[typej]); + if (eflag) evdwl = f * (rn * (rn * lj3i[typej] - lj4i[typej]) - offseti[typej]); } } } - else force_lj = evdwl = 0.0; + else + force_lj = evdwl = 0.0; - fpair = (force_coul*etmp+force_lj)*r2inv; - f[i][0] += delx*fpair_i; - f[i][1] += dely*fpair_i; - f[i][2] += delz*fpair_i; + fpair = (force_coul * etmp + force_lj) * r2inv; + f[i][0] += delx * fpair_i; + f[i][1] += dely * fpair_i; + f[i][2] += delz * fpair_i; - efield_i *= (etmp*r2inv); - efield[i][0] += delx*efield_i; - efield[i][1] += dely*efield_i; - efield[i][2] += delz*efield_i; + efield_i *= (etmp * r2inv); + efield[i][0] += delx * efield_i; + efield[i][1] += dely * efield_i; + efield[i][2] += delz * efield_i; epot[i] += epot_i; if (newton_pair && j >= nlocal) { - fpair_j = (force_coul*eps[j] + factor_lj*force_lj) * r2inv; - f[j][0] -= delx*fpair_j; - f[j][1] -= dely*fpair_j; - f[j][2] -= delz*fpair_j; + fpair_j = (force_coul * eps[j] + factor_lj * force_lj) * r2inv; + f[j][0] -= delx * fpair_j; + f[j][1] -= dely * fpair_j; + f[j][2] -= delz * fpair_j; } if (eflag) { if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) - ecoul = prefactor*(etmp+eps[j])*erfc; + ecoul = prefactor * (etmp + eps[j]) * erfc; else { - table = etable[itable] + fraction*detable[itable]; - ecoul = qtmp*q[j]*(etmp+eps[j]) * table; + table = etable[itable] + fraction * detable[itable]; + ecoul = qtmp * q[j] * (etmp + eps[j]) * table; } ecoul *= 0.5; - if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; - } else ecoul = 0.0; - + if (factor_coul < 1.0) ecoul -= (1.0 - factor_coul) * prefactor; + } else + ecoul = 0.0; } - if (evflag) ev_tally_full(i,evdwl,ecoul,fpair_i,delx,dely,delz); + if (evflag) ev_tally_full(i, evdwl, ecoul, fpair_i, delx, dely, delz); } } @@ -310,57 +315,61 @@ void PairLJLongCoulLongDielectric::compute(int eflag, int vflag) /* ---------------------------------------------------------------------- */ -double PairLJLongCoulLongDielectric::single(int i, int j, int itype, int jtype, - double rsq, double factor_coul, double factor_lj, - double &fforce) +double PairLJLongCoulLongDielectric::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, double &fforce) { double r2inv, r6inv, force_coul, force_lj, ei, ej; - double g2 = g_ewald_6*g_ewald_6, g6 = g2*g2*g2, g8 = g6*g2, *q = atom->q; + double g2 = g_ewald_6 * g_ewald_6, g6 = g2 * g2 * g2, g8 = g6 * g2, *q = atom->q; double *eps = avec->epsilon; double eng = 0.0; - if (eps[i] == 1) ei = 0; - else ei = eps[i]; - if (eps[j] == 1) ej = 0; - else ej = eps[j]; + if (eps[i] == 1) + ei = 0; + else + ei = eps[i]; + if (eps[j] == 1) + ej = 0; + else + ej = eps[j]; - r2inv = 1.0/rsq; - if ((ewald_order&2) && (rsq < cut_coulsq)) { // coulombic - if (!ncoultablebits || rsq <= tabinnersq) { // series real space - double r = sqrt(rsq), x = g_ewald*r; - double s = force->qqrd2e*q[i]*q[j], t = 1.0/(1.0+EWALD_P*x); - r = s*(1.0-factor_coul)/r; s *= g_ewald*exp(-x*x); - force_coul = (t *= ((((t*A5+A4)*t+A3)*t+A2)*t+A1)*s/x)+EWALD_F*s-r; - eng += (t-r)*(ei+ej)*0.5; - } - else { // table real space + r2inv = 1.0 / rsq; + if ((ewald_order & 2) && (rsq < cut_coulsq)) { // coulombic + if (!ncoultablebits || rsq <= tabinnersq) { // series real space + double r = sqrt(rsq), x = g_ewald * r; + double s = force->qqrd2e * q[i] * q[j], t = 1.0 / (1.0 + EWALD_P * x); + r = s * (1.0 - factor_coul) / r; + s *= g_ewald * exp(-x * x); + force_coul = (t *= ((((t * A5 + A4) * t + A3) * t + A2) * t + A1) * s / x) + EWALD_F * s - r; + eng += (t - r) * (ei + ej) * 0.5; + } else { // table real space union_int_float_t t; t.f = rsq; const int k = (t.i & ncoulmask) >> ncoulshiftbits; - double f = (rsq-rtable[k])*drtable[k], qiqj = q[i]*q[j]; - t.f = (1.0-factor_coul)*(ctable[k]+f*dctable[k]); - force_coul = qiqj*(ftable[k]+f*dftable[k]-t.f); - eng += qiqj*(etable[k]+f*detable[k]-t.f)*(ei+ej)*0.5; + double f = (rsq - rtable[k]) * drtable[k], qiqj = q[i] * q[j]; + t.f = (1.0 - factor_coul) * (ctable[k] + f * dctable[k]); + force_coul = qiqj * (ftable[k] + f * dftable[k] - t.f); + eng += qiqj * (etable[k] + f * detable[k] - t.f) * (ei + ej) * 0.5; } - } else force_coul = 0.0; + } else + force_coul = 0.0; - if (rsq < cut_ljsq[itype][jtype]) { // lennard-jones - r6inv = r2inv*r2inv*r2inv; - if (ewald_order&64) { // long-range - double x2 = g2*rsq, a2 = 1.0/x2, t = r6inv*(1.0-factor_lj); - x2 = a2*exp(-x2)*lj4[itype][jtype]; - force_lj = factor_lj*(r6inv *= r6inv)*lj1[itype][jtype]- - g8*(((6.0*a2+6.0)*a2+3.0)*a2+a2)*x2*rsq+t*lj2[itype][jtype]; - eng += factor_lj*r6inv*lj3[itype][jtype]- - g6*((a2+1.0)*a2+0.5)*x2+t*lj4[itype][jtype]; + if (rsq < cut_ljsq[itype][jtype]) { // lennard-jones + r6inv = r2inv * r2inv * r2inv; + if (ewald_order & 64) { // long-range + double x2 = g2 * rsq, a2 = 1.0 / x2, t = r6inv * (1.0 - factor_lj); + x2 = a2 * exp(-x2) * lj4[itype][jtype]; + force_lj = factor_lj * (r6inv *= r6inv) * lj1[itype][jtype] - + g8 * (((6.0 * a2 + 6.0) * a2 + 3.0) * a2 + a2) * x2 * rsq + t * lj2[itype][jtype]; + eng += factor_lj * r6inv * lj3[itype][jtype] - g6 * ((a2 + 1.0) * a2 + 0.5) * x2 + + t * lj4[itype][jtype]; + } else { // cut + force_lj = factor_lj * r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]); + eng += factor_lj * + (r6inv * (r6inv * lj3[itype][jtype] - lj4[itype][jtype]) - offset[itype][jtype]); } - else { // cut - force_lj = factor_lj*r6inv*(lj1[itype][jtype]*r6inv-lj2[itype][jtype]); - eng += factor_lj*(r6inv*(r6inv*lj3[itype][jtype]- - lj4[itype][jtype])-offset[itype][jtype]); - } - } else force_lj = 0.0; + } else + force_lj = 0.0; - fforce = (force_coul*eps[i]+force_lj)*r2inv; + fforce = (force_coul * eps[i] + force_lj) * r2inv; return eng; } diff --git a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h index 0ec3321df4..83ba66a9a0 100644 --- a/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h +++ b/src/USER-DIELECTRIC/pair_lj_long_coul_long_dielectric.h @@ -32,15 +32,15 @@ class PairLJLongCoulLongDielectric : public PairLJLongCoulLong { void init_style(); double single(int, int, int, int, double, double, double, double &); - double** efield; - double* epot; + double **efield; + double *epot; protected: - class AtomVecDielectric* avec; + class AtomVecDielectric *avec; int nmax; }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-DIELECTRIC/pppm_dielectric.cpp b/src/USER-DIELECTRIC/pppm_dielectric.cpp index 6d0f3f33b5..7fdb0b76c4 100644 --- a/src/USER-DIELECTRIC/pppm_dielectric.cpp +++ b/src/USER-DIELECTRIC/pppm_dielectric.cpp @@ -34,7 +34,6 @@ #include "remap_wrap.h" #include -//#include using namespace LAMMPS_NS; using namespace MathConst; diff --git a/src/USER-DIELECTRIC/pppm_dielectric.h b/src/USER-DIELECTRIC/pppm_dielectric.h index 24eb180c5f..7ea6a831eb 100644 --- a/src/USER-DIELECTRIC/pppm_dielectric.h +++ b/src/USER-DIELECTRIC/pppm_dielectric.h @@ -30,9 +30,9 @@ class PPPMDielectric : public PPPM { virtual ~PPPMDielectric(); virtual void compute(int, int); - double** efield; - double* phi; - int potflag; // 1/0 if per-atom electrostatic potential phi is needed + double **efield; + double *phi; + int potflag; // 1/0 if per-atom electrostatic potential phi is needed void qsum_qsq(); @@ -42,11 +42,10 @@ class PPPMDielectric : public PPPM { void fieldforce_ik(); void fieldforce_ad(); - class AtomVecDielectric* avec; - + class AtomVecDielectric *avec; }; -} +} // namespace LAMMPS_NS #endif #endif diff --git a/src/USER-OMP/pair_lj_cut_coul_cut_dielectric_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_cut_dielectric_omp.cpp index a056ae86c9..22ae388236 100644 --- a/src/USER-OMP/pair_lj_cut_coul_cut_dielectric_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_cut_dielectric_omp.cpp @@ -19,16 +19,17 @@ #include "atom.h" #include "comm.h" +#include "error.h" #include "force.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" #include "math_const.h" #include "memory.h" -#include "error.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" #include +#include "omp_compat.h" using namespace LAMMPS_NS; using namespace MathConst; @@ -37,31 +38,26 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ PairLJCutCoulCutDielectricOMP::PairLJCutCoulCutDielectricOMP(LAMMPS *lmp) : - PairLJCutCoulCutDielectric(lmp), ThrOMP(lmp, THR_PAIR) + PairLJCutCoulCutDielectric(lmp), ThrOMP(lmp, THR_PAIR) { - } /* ---------------------------------------------------------------------- */ -PairLJCutCoulCutDielectricOMP::~PairLJCutCoulCutDielectricOMP() -{ -} +PairLJCutCoulCutDielectricOMP::~PairLJCutCoulCutDielectricOMP() {} /* ---------------------------------------------------------------------- */ void PairLJCutCoulCutDielectricOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); if (atom->nmax > nmax) { memory->destroy(efield); memory->destroy(epot); nmax = atom->nmax; - memory->create(efield,nmax,3,"pair:efield"); - memory->create(epot,nmax,"pair:epot"); + memory->create(efield, nmax, 3, "pair:efield"); + memory->create(epot, nmax, "pair:epot"); } const int nall = atom->nlocal + atom->nghost; @@ -69,7 +65,7 @@ void PairLJCutCoulCutDielectricOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag, vflag) #endif { int ifrom, ito, tid; @@ -81,49 +77,55 @@ void PairLJCutCoulCutDielectricOMP::compute(int eflag, int vflag) if (evflag) { if (eflag) { - if (force->newton_pair) eval<1,1,1>(ifrom, ito, thr); - else eval<1,1,0>(ifrom, ito, thr); + if (force->newton_pair) + eval<1, 1, 1>(ifrom, ito, thr); + else + eval<1, 1, 0>(ifrom, ito, thr); } else { - if (force->newton_pair) eval<1,0,1>(ifrom, ito, thr); - else eval<1,0,0>(ifrom, ito, thr); + if (force->newton_pair) + eval<1, 0, 1>(ifrom, ito, thr); + else + eval<1, 0, 0>(ifrom, ito, thr); } } else { - if (force->newton_pair) eval<0,0,1>(ifrom, ito, thr); - else eval<0,0,0>(ifrom, ito, thr); + if (force->newton_pair) + eval<0, 0, 1>(ifrom, ito, thr); + else + eval<0, 0, 0>(ifrom, ito, thr); } thr->timer(Timer::PAIR); reduce_thr(this, eflag, vflag, thr); - } // end of omp parallel region + } // end of omp parallel region } /* ---------------------------------------------------------------------- */ template -void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData * const thr) +void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData *const thr) { - int i,j,ii,jj,jnum,itype,jtype,itable; - double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; - double fpair_i,fpair_j; - double r,rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; - double grij,expm2,prefactor,t,erfc,prefactorE,efield_i,epot_i; - int *ilist,*jlist,*numneigh,**firstneigh; + int i, j, ii, jj, jnum, itype, jtype, itable; + double qtmp, etmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul, fpair; + double fpair_i, fpair_j; + double r, rsq, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj; + double grij, expm2, prefactor, t, erfc, prefactorE, efield_i, epot_i; + int *ilist, *jlist, *numneigh, **firstneigh; evdwl = ecoul = 0.0; - const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0]; - dbl3_t * _noalias const f = (dbl3_t *) thr->get_f()[0]; - const double * _noalias const q = atom->q; - const double * _noalias const eps = atom->epsilon; - const dbl3_t * _noalias const norm = (dbl3_t *) atom->mu[0]; - const double * _noalias const curvature = atom->curvature; - const double * _noalias const area = atom->area; - const int * _noalias const type = atom->type; + const dbl3_t *_noalias const x = (dbl3_t *) atom->x[0]; + dbl3_t *_noalias const f = (dbl3_t *) thr->get_f()[0]; + const double *_noalias const q = atom->q; + const double *_noalias const eps = atom->epsilon; + const dbl3_t *_noalias const norm = (dbl3_t *) atom->mu[0]; + const double *_noalias const curvature = atom->curvature; + const double *_noalias const area = atom->area; + const int *_noalias const type = atom->type; const int nlocal = atom->nlocal; - const double * _noalias const special_coul = force->special_coul; - const double * _noalias const special_lj = force->special_lj; + const double *_noalias const special_coul = force->special_coul; + const double *_noalias const special_lj = force->special_lj; const double qqrd2e = force->qqrd2e; - double fxtmp,fytmp,fztmp,extmp,eytmp,eztmp; + double fxtmp, fytmp, fztmp, extmp, eytmp, eztmp; ilist = list->ilist; numneigh = list->numneigh; @@ -142,16 +144,16 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData * const t itype = type[i]; jlist = firstneigh[i]; jnum = numneigh[i]; - fxtmp=fytmp=fztmp=0.0; - extmp=eytmp=eztmp=0.0; + fxtmp = fytmp = fztmp = 0.0; + extmp = eytmp = eztmp = 0.0; // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al double curvature_threshold = sqrt(area[i]); if (curvature[i] < curvature_threshold) { - double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; - efield[i][0] = sf*norm[i].x; - efield[i][1] = sf*norm[i].y; - efield[i][2] = sf*norm[i].z; + double sf = curvature[i] / (4.0 * MY_PIS * curvature_threshold) * area[i] * q[i]; + efield[i][0] = sf * norm[i].x; + efield[i][1] = sf * norm[i].y; + efield[i][2] = sf * norm[i].z; } else { efield[i][0] = efield[i][1] = efield[i][2] = 0; } @@ -167,56 +169,59 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData * const t delx = xtmp - x[j].x; dely = ytmp - x[j].y; delz = ztmp - x[j].z; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; jtype = type[j]; if (rsq < cutsq[itype][jtype]) { - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; if (rsq < cut_coulsq[itype][jtype] && rsq > EPSILON) { - efield_i = q[j]*sqrt(r2inv); - forcecoul = qqrd2e * qtmp*efield_i; + efield_i = q[j] * sqrt(r2inv); + forcecoul = qqrd2e * qtmp * efield_i; epot_i = efield_i; - } else epot_i = efield_i = forcecoul = 0.0; + } else + epot_i = efield_i = forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - r6inv = r2inv*r2inv*r2inv; - forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); - } else forcelj = 0.0; + r6inv = r2inv * r2inv * r2inv; + forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]); + } else + forcelj = 0.0; - fpair_i = (factor_coul*etmp*forcecoul + factor_lj*forcelj) * r2inv; + fpair_i = (factor_coul * etmp * forcecoul + factor_lj * forcelj) * r2inv; - fxtmp += delx*fpair_i; - fytmp += dely*fpair_i; - fztmp += delz*fpair_i; + fxtmp += delx * fpair_i; + fytmp += dely * fpair_i; + fztmp += delz * fpair_i; - efield_i *= (factor_coul*etmp*r2inv); - extmp += delx*efield_i; - eytmp += dely*efield_i; - eztmp += delz*efield_i; + efield_i *= (factor_coul * etmp * r2inv); + extmp += delx * efield_i; + eytmp += dely * efield_i; + eztmp += delz * efield_i; epot[i] += epot_i; if (NEWTON_PAIR || j >= nlocal) { - fpair_j = (factor_coul*eps[j]*forcecoul + factor_lj*forcelj) * r2inv; - f[j].x -= delx*fpair_j; - f[j].y -= dely*fpair_j; - f[j].z -= delz*fpair_j; + fpair_j = (factor_coul * eps[j] * forcecoul + factor_lj * forcelj) * r2inv; + f[j].x -= delx * fpair_j; + f[j].y -= dely * fpair_j; + f[j].z -= delz * fpair_j; } if (EFLAG) { if (rsq < cut_coulsq[itype][jtype]) { - ecoul = factor_coul * qqrd2e * qtmp*q[j]*(etmp+eps[j])*sqrt(r2inv); - } else ecoul = 0.0; + ecoul = factor_coul * qqrd2e * qtmp * q[j] * (etmp + eps[j]) * sqrt(r2inv); + } else + ecoul = 0.0; ecoul *= 0.5; if (rsq < cut_ljsq[itype][jtype]) { - evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - - offset[itype][jtype]; + evdwl = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype]; evdwl *= factor_lj; - } else evdwl = 0.0; + } else + evdwl = 0.0; } - if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, - evdwl,ecoul,fpair,delx,dely,delz,thr); + if (EVFLAG) + ev_tally_thr(this, i, j, nlocal, NEWTON_PAIR, evdwl, ecoul, fpair, delx, dely, delz, thr); } } f[i].x += fxtmp; @@ -227,4 +232,3 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData * const t efield[i][2] += eztmp; } } - diff --git a/src/USER-OMP/pair_lj_cut_coul_long_dielectric_omp.cpp b/src/USER-OMP/pair_lj_cut_coul_long_dielectric_omp.cpp index 39149e692f..6aa79e18a5 100644 --- a/src/USER-OMP/pair_lj_cut_coul_long_dielectric_omp.cpp +++ b/src/USER-OMP/pair_lj_cut_coul_long_dielectric_omp.cpp @@ -20,9 +20,9 @@ #include "atom.h" #include "comm.h" #include "force.h" -#include "neigh_list.h" #include "math_const.h" #include "memory.h" +#include "neigh_list.h" #include @@ -30,41 +30,37 @@ using namespace LAMMPS_NS; using namespace MathConst; -#define EWALD_F 1.12837917 -#define EWALD_P 0.3275911 -#define A1 0.254829592 -#define A2 -0.284496736 -#define A3 1.421413741 -#define A4 -1.453152027 -#define A5 1.061405429 +#define EWALD_F 1.12837917 +#define EWALD_P 0.3275911 +#define A1 0.254829592 +#define A2 -0.284496736 +#define A3 1.421413741 +#define A4 -1.453152027 +#define A5 1.061405429 /* ---------------------------------------------------------------------- */ PairLJCutCoulLongDielectricOMP::PairLJCutCoulLongDielectricOMP(LAMMPS *lmp) : - PairLJCutCoulLongDielectric(lmp), ThrOMP(lmp, THR_PAIR) + PairLJCutCoulLongDielectric(lmp), ThrOMP(lmp, THR_PAIR) { } /* ---------------------------------------------------------------------- */ -PairLJCutCoulLongDielectricOMP::~PairLJCutCoulLongDielectricOMP() -{ -} +PairLJCutCoulLongDielectricOMP::~PairLJCutCoulLongDielectricOMP() {} /* ---------------------------------------------------------------------- */ void PairLJCutCoulLongDielectricOMP::compute(int eflag, int vflag) { - if (eflag || vflag) { - ev_setup(eflag,vflag); - } else evflag = vflag_fdotr = 0; + ev_init(eflag, vflag); if (atom->nmax > nmax) { memory->destroy(efield); memory->destroy(epot); nmax = atom->nmax; - memory->create(efield,nmax,3,"pair:efield"); - memory->create(epot,nmax,"pair:epot"); + memory->create(efield, nmax, 3, "pair:efield"); + memory->create(epot, nmax, "pair:epot"); } const int nall = atom->nlocal + atom->nghost; @@ -72,7 +68,7 @@ void PairLJCutCoulLongDielectricOMP::compute(int eflag, int vflag) const int inum = list->inum; #if defined(_OPENMP) -#pragma omp parallel default(none) shared(eflag,vflag) +#pragma omp parallel LMP_DEFAULT_NONE LMP_SHARED(eflag, vflag) #endif { int ifrom, ito, tid; @@ -84,50 +80,55 @@ void PairLJCutCoulLongDielectricOMP::compute(int eflag, int vflag) if (evflag) { if (eflag) { - if (force->newton_pair) eval<1,1,1>(ifrom, ito, thr); - else eval<1,1,0>(ifrom, ito, thr); + if (force->newton_pair) + eval<1, 1, 1>(ifrom, ito, thr); + else + eval<1, 1, 0>(ifrom, ito, thr); } else { - if (force->newton_pair) eval<1,0,1>(ifrom, ito, thr); - else eval<1,0,0>(ifrom, ito, thr); + if (force->newton_pair) + eval<1, 0, 1>(ifrom, ito, thr); + else + eval<1, 0, 0>(ifrom, ito, thr); } } else { - if (force->newton_pair) eval<0,0,1>(ifrom, ito, thr); - else eval<0,0,0>(ifrom, ito, thr); + if (force->newton_pair) + eval<0, 0, 1>(ifrom, ito, thr); + else + eval<0, 0, 0>(ifrom, ito, thr); } thr->timer(Timer::PAIR); reduce_thr(this, eflag, vflag, thr); - } // end of omp parallel region + } // end of omp parallel region } /* ---------------------------------------------------------------------- */ template -void PairLJCutCoulLongDielectricOMP::eval(int iifrom, int iito, ThrData * const thr) +void PairLJCutCoulLongDielectricOMP::eval(int iifrom, int iito, ThrData *const thr) { - int i,j,ii,jj,jnum,itype,jtype,itable; - double qtmp,etmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair; - double fraction,table; - double r,rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj; - double grij,expm2,prefactor,t,erfc,prefactorE,efield_i,epot_i; - int *ilist,*jlist,*numneigh,**firstneigh; + int i, j, ii, jj, jnum, itype, jtype, itable; + double qtmp, etmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul, fpair; + double fraction, table; + double r, rsq, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj; + double grij, expm2, prefactor, t, erfc, prefactorE, efield_i, epot_i; + int *ilist, *jlist, *numneigh, **firstneigh; evdwl = ecoul = 0.0; - const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0]; - dbl3_t * _noalias const f = (dbl3_t *) thr->get_f()[0]; - const double * _noalias const q = atom->q; - const double * _noalias const eps = atom->epsilon; - const dbl3_t * _noalias const norm = (dbl3_t *) atom->mu[0]; - const double * _noalias const curvature = atom->curvature; - const double * _noalias const area = atom->area; - const int * _noalias const type = atom->type; + const dbl3_t *_noalias const x = (dbl3_t *) atom->x[0]; + dbl3_t *_noalias const f = (dbl3_t *) thr->get_f()[0]; + const double *_noalias const q = atom->q; + const double *_noalias const eps = atom->epsilon; + const dbl3_t *_noalias const norm = (dbl3_t *) atom->mu[0]; + const double *_noalias const curvature = atom->curvature; + const double *_noalias const area = atom->area; + const int *_noalias const type = atom->type; const int nlocal = atom->nlocal; - const double * _noalias const special_coul = force->special_coul; - const double * _noalias const special_lj = force->special_lj; + const double *_noalias const special_coul = force->special_coul; + const double *_noalias const special_lj = force->special_lj; const double qqrd2e = force->qqrd2e; - double fxtmp,fytmp,fztmp,extmp,eytmp,eztmp; - + double fxtmp, fytmp, fztmp, extmp, eytmp, eztmp; ilist = list->ilist; numneigh = list->numneigh; @@ -146,17 +147,17 @@ void PairLJCutCoulLongDielectricOMP::eval(int iifrom, int iito, ThrData * const itype = type[i]; jlist = firstneigh[i]; jnum = numneigh[i]; - fxtmp=fytmp=fztmp=0.0; - extmp=eytmp=eztmp=0.0; + fxtmp = fytmp = fztmp = 0.0; + extmp = eytmp = eztmp = 0.0; // self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al. double curvature_threshold = sqrt(area[i]); if (curvature[i] < curvature_threshold) { - double sf = curvature[i]/(4.0*MY_PIS*curvature_threshold) * area[i]*q[i]; - efield[i][0] = sf*norm[i].x; - efield[i][1] = sf*norm[i].y; - efield[i][2] = sf*norm[i].z; + double sf = curvature[i] / (4.0 * MY_PIS * curvature_threshold) * area[i] * q[i]; + efield[i][0] = sf * norm[i].x; + efield[i][1] = sf * norm[i].y; + efield[i][2] = sf * norm[i].z; } else { efield[i][0] = efield[i][1] = efield[i][2] = 0; } @@ -170,26 +171,26 @@ void PairLJCutCoulLongDielectricOMP::eval(int iifrom, int iito, ThrData * const delx = xtmp - x[j].x; dely = ytmp - x[j].y; delz = ztmp - x[j].z; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; jtype = type[j]; if (rsq < cutsq[itype][jtype]) { - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) { r = sqrt(rsq); grij = g_ewald * r; - expm2 = exp(-grij*grij); - t = 1.0 / (1.0 + EWALD_P*grij); - erfc = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2; - prefactor = qqrd2e * qtmp*q[j]/r; - forcecoul = prefactor * (erfc + EWALD_F*grij*expm2); - if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor; + expm2 = exp(-grij * grij); + t = 1.0 / (1.0 + EWALD_P * grij); + erfc = t * (A1 + t * (A2 + t * (A3 + t * (A4 + t * A5)))) * expm2; + prefactor = qqrd2e * qtmp * q[j] / r; + forcecoul = prefactor * (erfc + EWALD_F * grij * expm2); + if (factor_coul < 1.0) forcecoul -= (1.0 - factor_coul) * prefactor; - prefactorE = q[j]/r; - efield_i = prefactorE * (erfc + EWALD_F*grij*expm2); - if (factor_coul < 1.0) efield_i -= (1.0-factor_coul)*prefactorE; + prefactorE = q[j] / r; + efield_i = prefactorE * (erfc + EWALD_F * grij * expm2); + if (factor_coul < 1.0) efield_i -= (1.0 - factor_coul) * prefactorE; epot_i = efield_i; } else { @@ -198,65 +199,68 @@ void PairLJCutCoulLongDielectricOMP::eval(int iifrom, int iito, ThrData * const itable = rsq_lookup.i & ncoulmask; itable >>= ncoulshiftbits; fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable]; - table = ftable[itable] + fraction*dftable[itable]; - forcecoul = qtmp*q[j] * table; - efield_i = q[j] * table/qqrd2e; + table = ftable[itable] + fraction * dftable[itable]; + forcecoul = qtmp * q[j] * table; + efield_i = q[j] * table / qqrd2e; if (factor_coul < 1.0) { - table = ctable[itable] + fraction*dctable[itable]; - prefactor = qtmp*q[j] * table; - forcecoul -= (1.0-factor_coul)*prefactor; + table = ctable[itable] + fraction * dctable[itable]; + prefactor = qtmp * q[j] * table; + forcecoul -= (1.0 - factor_coul) * prefactor; - prefactorE = q[j] * table/qqrd2e; - efield_i -= (1.0-factor_coul)*prefactorE; + prefactorE = q[j] * table / qqrd2e; + efield_i -= (1.0 - factor_coul) * prefactorE; } epot_i = efield_i; } - } else epot_i = efield_i = forcecoul = 0.0; + } else + epot_i = efield_i = forcecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - r6inv = r2inv*r2inv*r2inv; - forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]); + r6inv = r2inv * r2inv * r2inv; + forcelj = r6inv * (lj1[itype][jtype] * r6inv - lj2[itype][jtype]); forcelj *= factor_lj; - } else forcelj = 0.0; + } else + forcelj = 0.0; fpair = (forcecoul + forcelj) * r2inv; - fxtmp += delx*fpair; - fytmp += dely*fpair; - fztmp += delz*fpair; + fxtmp += delx * fpair; + fytmp += dely * fpair; + fztmp += delz * fpair; - efield_i *= (etmp*r2inv); - extmp += delx*efield_i; - eytmp += dely*efield_i; - eztmp += delz*efield_i; + efield_i *= (etmp * r2inv); + extmp += delx * efield_i; + eytmp += dely * efield_i; + eztmp += delz * efield_i; epot[i] += epot_i; if (NEWTON_PAIR || j < nlocal) { - f[j].x -= delx*fpair; - f[j].y -= dely*fpair; - f[j].z -= delz*fpair; + f[j].x -= delx * fpair; + f[j].y -= dely * fpair; + f[j].z -= delz * fpair; } if (EFLAG) { if (rsq < cut_coulsq) { if (!ncoultablebits || rsq <= tabinnersq) - ecoul = prefactor*(etmp+eps[j])*erfc; + ecoul = prefactor * (etmp + eps[j]) * erfc; else { - table = etable[itable] + fraction*detable[itable]; - ecoul = qtmp*q[j]*(etmp+eps[j]) * table; + table = etable[itable] + fraction * detable[itable]; + ecoul = qtmp * q[j] * (etmp + eps[j]) * table; } - if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor; - } else ecoul = 0.0; + if (factor_coul < 1.0) ecoul -= (1.0 - factor_coul) * prefactor; + } else + ecoul = 0.0; if (rsq < cut_ljsq[itype][jtype]) { - evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) - - offset[itype][jtype]; + evdwl = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype]; evdwl *= factor_lj; - } else evdwl = 0.0; + } else + evdwl = 0.0; } - if (EVFLAG) ev_tally_thr(this, i,j,nlocal,NEWTON_PAIR, - evdwl,ecoul,fpair,delx,dely,delz,thr); + if (EVFLAG) + ev_tally_thr(this, i, j, nlocal, NEWTON_PAIR, evdwl, ecoul, fpair, delx, dely, delz, thr); } } f[i].x += fxtmp; From 22c391e603840bc8b5d11412a3f0281974547a3b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 15:57:47 -0400 Subject: [PATCH 64/80] add new package to presets --- cmake/presets/all_off.cmake | 2 +- cmake/presets/all_on.cmake | 2 +- cmake/presets/mingw-cross.cmake | 2 +- cmake/presets/most.cmake | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/presets/all_off.cmake b/cmake/presets/all_off.cmake index c56841f62f..457750c690 100644 --- a/cmake/presets/all_off.cmake +++ b/cmake/presets/all_off.cmake @@ -11,7 +11,7 @@ set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP USER-PACE USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP USER-RANN USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH - USER-TALLY USER-UEF USER-VTK USER-YAFF) + USER-TALLY USER-UEF USER-VTK USER-YAFF USER-DIELECTRIC) foreach(PKG ${ALL_PACKAGES}) set(PKG_${PKG} OFF CACHE BOOL "" FORCE) diff --git a/cmake/presets/all_on.cmake b/cmake/presets/all_on.cmake index 9f858f99dc..ae40bb0809 100644 --- a/cmake/presets/all_on.cmake +++ b/cmake/presets/all_on.cmake @@ -13,7 +13,7 @@ set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP USER-PACE USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP USER-RANN USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH - USER-TALLY USER-UEF USER-VTK USER-YAFF) + USER-TALLY USER-UEF USER-VTK USER-YAFF USER-DIELECTRIC) foreach(PKG ${ALL_PACKAGES}) set(PKG_${PKG} ON CACHE BOOL "" FORCE) diff --git a/cmake/presets/mingw-cross.cmake b/cmake/presets/mingw-cross.cmake index c2101d1d9a..e1a6c5cf79 100644 --- a/cmake/presets/mingw-cross.cmake +++ b/cmake/presets/mingw-cross.cmake @@ -7,7 +7,7 @@ set(WIN_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU USER-MESONT USER-MISC USER-MGPT USER-MOFFF USER-MOLFILE USER-OMP USER-PHONON USER-PTM USER-QTB USER-REACTION USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF - USER-YAFF) + USER-YAFF USER-DIELECTRIC) foreach(PKG ${WIN_PACKAGES}) set(PKG_${PKG} ON CACHE BOOL "" FORCE) diff --git a/cmake/presets/most.cmake b/cmake/presets/most.cmake index 064b22595f..e124b25d2b 100644 --- a/cmake/presets/most.cmake +++ b/cmake/presets/most.cmake @@ -8,7 +8,7 @@ set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE USER-BROWNIAN USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-MEAMC USER-MESODPD USER-MISC USER-MOFFF USER-OMP USER-PHONON USER-REACTION - USER-REAXC USER-SDPD USER-SPH USER-SMD USER-UEF USER-YAFF) + USER-REAXC USER-SDPD USER-SPH USER-SMD USER-UEF USER-YAFF USER-DIELECTRIC) foreach(PKG ${ALL_PACKAGES}) set(PKG_${PKG} ON CACHE BOOL "" FORCE) From 655c7b02ec4491112229e75d0687d998c397a292 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 16:03:31 -0400 Subject: [PATCH 65/80] update conventional build installation --- src/Makefile | 2 +- src/USER-DIELECTRIC/Install.sh | 36 +++++++++++----------------------- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/src/Makefile b/src/Makefile index 24d99a5fe3..5e7a3c000f 100644 --- a/src/Makefile +++ b/src/Makefile @@ -52,7 +52,7 @@ PACKAGE = asphere body class2 colloid compress coreshell dipole gpu \ python qeq replica rigid shock snap spin srd voronoi PACKUSER = user-adios user-atc user-awpmd user-brownian user-bocs user-cgdna \ - user-cgsdk user-colvars user-diffraction user-dpd user-drude \ + user-cgsdk user-colvars user-dielectric user-diffraction user-dpd user-drude \ user-eff user-fep user-h5md user-hdnnp user-intel user-lb user-manifold \ user-mdi user-meamc user-mesodpd user-mesont user-mgpt user-misc \ user-mofff user-molfile user-netcdf user-omp user-phonon \ diff --git a/src/USER-DIELECTRIC/Install.sh b/src/USER-DIELECTRIC/Install.sh index 01540dfcba..fd540f3c7e 100644 --- a/src/USER-DIELECTRIC/Install.sh +++ b/src/USER-DIELECTRIC/Install.sh @@ -26,30 +26,16 @@ action () { fi } -# list of files with optional dependcies +# compute efield/atom is only usable when all styles +# are installed, which in turn requires KSPACE -action atom_vec_dielectric.cpp -action atom_vec_dielectric.h -action fix_polarize_bem_gmres.cpp -action fix_polarize_bem_gmres.h -action fix_polarize_bem_icc.cpp -action fix_polarize_bem_icc.h -action fix_polarize_functional.cpp -action fix_polarize_functional.h -action pair_lj_cut_coul_msm_dielectric.cpp pair_lj_cut_coul_msm.cpp -action pair_lj_cut_coul_msm_dielectric.h pair_lj_cut_coul_msm.h -action pair_lj_cut_coul_long_dielectric.cpp pair_lj_cut_coul_long.cpp -action pair_lj_cut_coul_long_dielectric.h pair_lj_cut_coul_long.h -action pair_lj_long_coul_long_dielectric.cpp pair_lj_long_coul_long.cpp -action pair_lj_long_coul_long_dielectric.h pair_lj_long_coul_long.cpp -action pair_lj_cut_coul_cut_dielectric.cpp -action pair_lj_cut_coul_cut_dielectric.h -action pair_coul_long_dielectric.cpp pair_coul_long.cpp -action pair_coul_long_dielectric.h pair_coul_long.h -action pair_coul_cut_dielectric.cpp -action pair_coul_cut_dielectric.h -action pppm_dielectric.cpp pppm.cpp -action pppm_dielectric.h pppm.h -action msm_dielectric.cpp msm.cpp -action msm_dielectric.h msm.h +if (test $1 = 1) then + if (test ! -e ../ppp.cpp) then + echo "Must install KSPACE package with USER-DIELECTRIC" + exit 1 + fi +fi +for file in *.cpp *.h; do + action ${file} +done From 3a73dd831aed1914b500a1d467d0604b0e497da2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 16:16:57 -0400 Subject: [PATCH 66/80] fix bug when reporting fix wall energies --- src/fix_wall.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/fix_wall.cpp b/src/fix_wall.cpp index 8f5c0dabe8..bec669ff10 100644 --- a/src/fix_wall.cpp +++ b/src/fix_wall.cpp @@ -307,8 +307,10 @@ void FixWall::post_force(int vflag) v_init(vflag); - // energy intialize + // energy intialize. + // eflag is used to track whether wall energies have been communitcated. + eflag = 0; for (int m = 0; m <= nwall; m++) ewall[m] = 0.0; // coord = current position of wall From c5c9a2759366ca7bc4274cb8ea9076dc349917bc Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 16:24:39 -0400 Subject: [PATCH 67/80] protect OpenMP pragma with preprocessor define --- src/USER-DIELECTRIC/fix_polarize_functional.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index 8bab4b61a8..51d8dc9d94 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -1123,7 +1123,9 @@ void FixPolarizeFunctional::calculate_grad_greens_ewald(double *vec, void FixPolarizeFunctional::calculate_matrix_multiply_vector(double **matrix, double *in_vec, double *out_vec, int M) { - #pragma parallel omp for +#if defined(OPENMP) +#pragma parallel omp for +#endif for (int k = 0; k < M; ++k) { double temp = 0.0; for (int l = 0; l < M; ++l) { From c5412db1a418fe77be9ccc24e0c6f4e5e2a4dd78 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 17:26:24 -0400 Subject: [PATCH 68/80] correct package dependency handling --- cmake/CMakeLists.txt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index a42cba3644..8fed2fbe68 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -393,7 +393,7 @@ RegisterStyles(${LAMMPS_SOURCE_DIR}) ######################################################## # Fetch missing external files and archives for packages ######################################################## -foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES}) +foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES} ${DEPEND_PACKAGES}) if(PKG_${PKG}) FetchPotentials(${LAMMPS_SOURCE_DIR}/${PKG} ${LAMMPS_POTENTIALS_DIR}) endif() @@ -429,6 +429,15 @@ foreach(PKG MPIIO) endif() endforeach() +# packages with custom dependencies +foreach(PKG ${DEPEND_PACKAGES}) + if(PKG_${PKG}) + include(Packages/${PKG}) + endif() + set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG}) + RegisterPackages(${${PKG}_SOURCES_DIR}) +endforeach() + # dedicated check for entire contents of accelerator packages foreach(PKG ${SUFFIX_PACKAGES}) set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG}) @@ -541,7 +550,7 @@ target_include_directories(lammps PRIVATE ${LAMMPS_STYLE_HEADERS_DIR}) ###################################### set(temp "#ifndef LMP_INSTALLED_PKGS_H\n#define LMP_INSTALLED_PKGS_H\n") set(temp "${temp}const char * LAMMPS_NS::LAMMPS::installed_packages[] = {\n") -set(temp_PKG_LIST ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES}) +set(temp_PKG_LIST ${STANDARD_PACKAGES} ${DEPEND_PACKAGES} ${SUFFIX_PACKAGES}) list(SORT temp_PKG_LIST) foreach(PKG ${temp_PKG_LIST}) if(PKG_${PKG}) From 5e675e6eff96e84a286e67235c4c628d3c17122d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 19:19:14 -0400 Subject: [PATCH 69/80] bugfix for library unit test due to CMake package changes --- unittest/c-library/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittest/c-library/CMakeLists.txt b/unittest/c-library/CMakeLists.txt index 3c24cdcff4..c4d2ad7466 100644 --- a/unittest/c-library/CMakeLists.txt +++ b/unittest/c-library/CMakeLists.txt @@ -15,7 +15,7 @@ set_tests_properties(LibraryProperties PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS set(TEST_CONFIG_DEFS "-DTEST_INPUT_FOLDER=${CMAKE_CURRENT_SOURCE_DIR};-DLAMMPS_${LAMMPS_SIZES}") set(PKG_COUNT 0) -foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES}) +foreach(PKG ${STANDARD_PACKAGES} ${DEPEND_PACKAGES} ${SUFFIX_PACKAGES}) if(PKG_${PKG}) MATH(EXPR PKG_COUNT "${PKG_COUNT}+1") endif() From f7ca10b07059f4d47240fd6d32098fb0271751eb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 21:00:35 -0400 Subject: [PATCH 70/80] update documentation towards more complete integration this includes the following steps: - added missing sections about the packages (incomplete) - added missing files for the pair styles and the compute (incomplete) - merge fix doc files into a single file (incomplete) - link to added styles from Commands overvies and style lists (incomplete) major part that is missing is the documentation of the atom style and the description of the file format in the read_data docs. there should probably also additions to the `set` command to set those properties from input scripts. --- doc/src/Commands_compute.rst | 1 + doc/src/Commands_fix.rst | 3 + doc/src/Commands_kspace.rst | 2 + doc/src/Commands_pair.rst | 7 + doc/src/Packages_details.rst | 24 ++ doc/src/Packages_user.rst | 2 + doc/src/compute.rst | 1 + doc/src/compute_efield_atom.rst | 59 +++++ doc/src/fix.rst | 3 + doc/src/fix_polarize.rst | 113 +++++++++ doc/src/fix_polarize_bem_gmres.rst | 104 -------- doc/src/fix_polarize_bem_icc.rst | 103 -------- doc/src/fix_polarize_functional.rst | 80 ------- doc/src/kspace_style.rst | 18 +- doc/src/pair_dielectric.rst | 357 ++++++++++++++++++++++++++++ doc/src/pair_style.rst | 7 + 16 files changed, 594 insertions(+), 290 deletions(-) create mode 100644 doc/src/compute_efield_atom.rst create mode 100644 doc/src/fix_polarize.rst delete mode 100644 doc/src/fix_polarize_bem_gmres.rst delete mode 100644 doc/src/fix_polarize_bem_icc.rst delete mode 100644 doc/src/fix_polarize_functional.rst create mode 100644 doc/src/pair_dielectric.rst diff --git a/doc/src/Commands_compute.rst b/doc/src/Commands_compute.rst index 6841485f8f..b24bd8f52a 100644 --- a/doc/src/Commands_compute.rst +++ b/doc/src/Commands_compute.rst @@ -52,6 +52,7 @@ KOKKOS, o = USER-OMP, t = OPT. * :doc:`dpd ` * :doc:`dpd/atom ` * :doc:`edpd/temp/atom ` + * :doc:`efield/atom ` * :doc:`entropy/atom ` * :doc:`erotate/asphere ` * :doc:`erotate/rigid ` diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index 0dbe8f5bec..c9c55277b2 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -162,6 +162,9 @@ OPT. * :doc:`planeforce ` * :doc:`plumed ` * :doc:`poems ` + * :doc:`polarize/bem/gmres ` + * :doc:`polarize/bem/icc ` + * :doc:`polarize/functional ` * :doc:`pour ` * :doc:`precession/spin ` * :doc:`press/berendsen ` diff --git a/doc/src/Commands_kspace.rst b/doc/src/Commands_kspace.rst index 18fa5b5442..2f7cd35f15 100644 --- a/doc/src/Commands_kspace.rst +++ b/doc/src/Commands_kspace.rst @@ -28,6 +28,7 @@ OPT. * :doc:`ewald/dipole/spin ` * :doc:`msm (o) ` * :doc:`msm/cg (o) ` + * :doc:`msm/dielectric ` * :doc:`pppm (giko) ` * :doc:`pppm/cg (o) ` * :doc:`pppm/dipole ` @@ -36,4 +37,5 @@ OPT. * :doc:`pppm/disp/tip4p (o) ` * :doc:`pppm/stagger ` * :doc:`pppm/tip4p (o) ` + * :doc:`pppm/dielectric ` * :doc:`scafacos ` diff --git a/doc/src/Commands_pair.rst b/doc/src/Commands_pair.rst index d76785d221..192c40b27a 100644 --- a/doc/src/Commands_pair.rst +++ b/doc/src/Commands_pair.rst @@ -69,6 +69,7 @@ OPT. * :doc:`comb3 ` * :doc:`cosine/squared ` * :doc:`coul/cut (gko) ` + * :doc:`coul/cut/dielectric ` * :doc:`coul/cut/global (o) ` * :doc:`coul/cut/soft (o) ` * :doc:`coul/debye (gko) ` @@ -76,6 +77,7 @@ OPT. * :doc:`coul/dsf (gko) ` * :doc:`coul/long (gko) ` * :doc:`coul/long/cs (g) ` + * :doc:`coul/long/dielectric ` * :doc:`coul/long/soft (o) ` * :doc:`coul/msm (o) ` * :doc:`coul/slater/cut ` @@ -143,13 +145,17 @@ OPT. * :doc:`lj/cubic (go) ` * :doc:`lj/cut (gikot) ` * :doc:`lj/cut/coul/cut (gko) ` + * :doc:`lj/cut/coul/cut/dielectric (o) ` * :doc:`lj/cut/coul/cut/soft (o) ` * :doc:`lj/cut/coul/debye (gko) ` + * :doc:`lj/cut/coul/debye/dielectric ` * :doc:`lj/cut/coul/dsf (gko) ` * :doc:`lj/cut/coul/long (gikot) ` * :doc:`lj/cut/coul/long/cs ` + * :doc:`lj/cut/coul/long/dielectric (o) ` * :doc:`lj/cut/coul/long/soft (o) ` * :doc:`lj/cut/coul/msm (go) ` + * :doc:`lj/cut/coul/msm/dielectric ` * :doc:`lj/cut/coul/wolf (o) ` * :doc:`lj/cut/dipole/cut (go) ` * :doc:`lj/cut/dipole/long (g) ` @@ -164,6 +170,7 @@ OPT. * :doc:`lj/gromacs (gko) ` * :doc:`lj/gromacs/coul/gromacs (ko) ` * :doc:`lj/long/coul/long (iot) ` + * :doc:`lj/long/coul/long/dielectric ` * :doc:`lj/long/dipole/long ` * :doc:`lj/long/tip4p/long (o) ` * :doc:`lj/mdf ` diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index e7dc905e22..1ef525ea9e 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -73,6 +73,7 @@ page gives those details. * :ref:`USER-CGDNA ` * :ref:`USER-CGSDK ` * :ref:`USER-COLVARS ` + * :ref:`USER-DIELECTRIC ` * :ref:`USER-DIFFRACTION ` * :ref:`USER-DPD ` * :ref:`USER-DRUDE ` @@ -1449,6 +1450,29 @@ This package has :ref:`specific installation instructions ` on the ---------- +.. _PKG-USER-DIELECTRIC: + +USER-DIELECTRIC package +------------------------ + +**Contents:** + +An atom style, multiple pair styles, several fixes, Kspace styles and a +compute for simulating systems using boundary element solvers for +computing the induced charges at the interface between two media with +different dielectric constants. + +**Author:** Trung Nguyen and Monica Olvera de la Cruz (Northwestern U) + +**Supporting info:** + +* src/USER-DIELECTRIC: filenames -> commands +* :doc:`compute efield/atom ` +* TODO: add all styles +* examples/USER/dielectric + +---------- + .. _PKG-USER-DIFFRACTION: USER-DIFFRACTION package diff --git a/doc/src/Packages_user.rst b/doc/src/Packages_user.rst index 3bf1323d16..89d740939e 100644 --- a/doc/src/Packages_user.rst +++ b/doc/src/Packages_user.rst @@ -47,6 +47,8 @@ package: +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ | :ref:`USER-COLVARS ` | collective variables library | :doc:`fix colvars ` | USER/colvars | int | +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +| :ref:`USER-DIELECTRIC ` | dielectric boundary solvers and force styles | :doc:`compute efield/atom ` | USER/dielectric | no | ++------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ | :ref:`USER-DIFFRACTION ` | virtual x-ray and electron diffraction | :doc:`compute xrd ` | USER/diffraction | no | +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ | :ref:`USER-DPD ` | reactive dissipative particle dynamics | src/USER-DPD/README | USER/dpd | no | diff --git a/doc/src/compute.rst b/doc/src/compute.rst index 4da3e4ebe6..098f376fdb 100644 --- a/doc/src/compute.rst +++ b/doc/src/compute.rst @@ -198,6 +198,7 @@ The individual style names on the :doc:`Commands compute ` doc * :doc:`dpd ` - * :doc:`dpd/atom ` - * :doc:`edpd/temp/atom ` - per-atom temperature for each eDPD particle in a group +* :doc:`efield/atom ` - * :doc:`entropy/atom ` - pair entropy fingerprint of each atom * :doc:`erotate/asphere ` - rotational energy of aspherical particles * :doc:`erotate/rigid ` - rotational energy of rigid bodies diff --git a/doc/src/compute_efield_atom.rst b/doc/src/compute_efield_atom.rst new file mode 100644 index 0000000000..449a495519 --- /dev/null +++ b/doc/src/compute_efield_atom.rst @@ -0,0 +1,59 @@ +.. index:: compute efield/atom + +compute efield/atom command +=========================== + +Syntax +"""""" + +.. parsed-literal:: + + compute ID group-ID efield/atom + +* ID, group-ID are documented in :doc:`compute ` command +* efield/atom = style name of this compute command + +Examples +"""""""" + +.. code-block:: LAMMPS + + compute 1 all efield/atom + +Description +""""""""""" + +FIXME update docs from here + +Define a computation that calculates the per-atom translational +kinetic energy for each atom in a group. + +The kinetic energy is simply 1/2 m v\^2, where m is the mass and v is +the velocity of each atom. + +The value of the kinetic energy will be 0.0 for atoms not in the +specified compute group. + +Output info +""""""""""" + +This compute calculates a per-atom vector, which can be accessed by +any command that uses per-atom values from a compute as input. See +the :doc:`Howto output ` doc page for an overview of +LAMMPS output options. + +The per-atom vector values will be in energy :doc:`units `. + +Restrictions +"""""""""""" + none + +Related commands +"""""""""""""""" + +:doc:`dump custom ` + +Default +""""""" + +none diff --git a/doc/src/fix.rst b/doc/src/fix.rst index d54594d5af..b4ac1e5e45 100644 --- a/doc/src/fix.rst +++ b/doc/src/fix.rst @@ -305,6 +305,9 @@ accelerated styles exist. * :doc:`planeforce ` - constrain atoms to move in a plane * :doc:`plumed ` - wrapper on PLUMED free energy library * :doc:`poems ` - constrain clusters of atoms to move as coupled rigid bodies +* :doc:`polarize/bem/gmres ` - +* :doc:`polarize/bem/icc ` - +* :doc:`polarize/functional ` - * :doc:`pour ` - pour new atoms/molecules into a granular simulation domain * :doc:`precession/spin ` - * :doc:`press/berendsen ` - pressure control by Berendsen barostat diff --git a/doc/src/fix_polarize.rst b/doc/src/fix_polarize.rst new file mode 100644 index 0000000000..4eb2839f96 --- /dev/null +++ b/doc/src/fix_polarize.rst @@ -0,0 +1,113 @@ +.. index:: fix polarize/bem/gmres +.. index:: fix polarize/bem/icc +.. index:: fix polarize/functional + +fix polarize/bem/gmres command +============================== + +fix polarize/bem/icc command +============================ + +fix polarize/functional command +=============================== + +Syntax +"""""" + +.. parsed-literal:: + + fix ID group-ID style nevery tolerance ... + +* ID, group-ID are documented in :doc:`fix ` command +* style = *polarize/bem/gmres* or *polarize/bem/icc* or *polarize/functional* +* Nevery = this fixed is invoked every this many timesteps +* tolerance = the tolerance for the iterative solver to stop + + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix 2 all polarize/bem/gmres 5 0.0001 + fix 1 interface polarize/bem/icc 1 0.0001 + fix 3 all polarize/functional 1 0.001 + +Description +""""""""""" + +These fixes compute induced charges at the interface between two +impermeable media with different dielectric constants. + +There are some example scripts for using this fix +with LAMMPS in the examples/USER/dielectric directory. + +---------- + +For fix *polarize/bem/gmres* and fix *polarize/bem/icc* the induced +charges of the atoms in the specified group, which are the vertices on +the interface, are computed using the equation: + +..math:: + + \sigma_b(\mathbf{s}) = \dfrac{1 - \bar{\epsilon}}{\bar{\epsilon}} + \sigma_f(\mathbf{s}) - \epsilon_0 \dfrac{\Delta \epsilon}{\bar{\epsilon}} + \mathbf{E}(\mathbf{s}) \cdot \mathbf{n}(\mathbf{s}) + +* :math:`\sigma_b` is the induced charge density at the interface vertex :math:`\mathbf{s}`. +* :math:`\bar{\epsilon}` is the mean dielectric constant at the interface vertex: :math:`\bar{\epsilon} = (\epsilon_1 + \epsilon_2)/2`. +* :math:`\Delta \epsilon` is the dielectric constant difference at the interface vertex: :math:`\Delta \epsilon = \epsilon_1 - \epsilon_2` +* :math:`\sigma_f` is the free charge density at the interface vertex +* :math:`\mathbf{E}(\mathbf{s})` is the electrical field at the vertex +* :math:`\mathbf{n}(\mathbf{s})` is the unit normal vector at the vertex pointing from medium with :math:`\epsilon_2` to that with :math:`\epsilon_1` + +Fix *polarize/bem/gmres* employs the Generalized Minimum Residual (GMRES) +as described in :ref:`(Barros) ` to solve :math:`\sigma_b`. + +Fix *polarize/bem/icc* employs the successive overrelaxation algorithm +as described in :ref:`(Tyagi) ` to solve :math:`\sigma_b`. + +Fix *polarize/functional* ... + +Restart, fix_modify, output, run start/stop, minimize info +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +... + +Restrictions +"""""""""""" + +These fixes are part of the USER-DIELECTRIC package. It is only enabled +if LAMMPS was built with that package, which requires that also the +KSPACE package is installed. See the :doc:`Build package +` doc page for more info. + + +Related commands +"""""""""""""""" + +:doc:`compute efield/atom ` + +Default +""""""" + +None. + +---------- + +.. _Barros: + +**(Barros)** Barros, Sinkovits, Luijten, J. Chem. Phys, 140, 064903 (2014) + +.. _Tyagi: + +**(Tyagi)** Tyagi, Suzen, Sega, Barbosa, Kantorovich, Holm, J Chem Phys, 132, 154112 (2010) + +.. _Jadhao: + +**(Jadhao)** Jadhao, Solis, Olvera de la Cruz, J Chem Phys, 138, 054119 (2013) + +.. _NguyenTD: + +**(NguyenTD)** Nguyen, Li, Bagchi, Solis, Olvera de la Cruz, Comput Phys Commun 241, 80-19 (2019) + diff --git a/doc/src/fix_polarize_bem_gmres.rst b/doc/src/fix_polarize_bem_gmres.rst deleted file mode 100644 index 40f2b650ac..0000000000 --- a/doc/src/fix_polarize_bem_gmres.rst +++ /dev/null @@ -1,104 +0,0 @@ -.. index:: fix polarize/bem/gmres - -fix polarize/bem/gmres command -=================== - -Syntax -"""""" - -.. parsed-literal:: - - fix ID group-ID polarize/bem/gmres nevery tolerance ... - -* ID, group-ID are documented in :doc:`fix ` command -* polarize/bem/gmres = style name of this fix command -* Nevery = this fixed is invoked every this many timesteps -* tolerance = the tolerance for the iterative solver to stop - - -Examples -"""""""" - -.. code-block:: LAMMPS - - fix 2 all polarize/bem/gmres 5 0.0001 - -Description -""""""""""" - -The fix polarize/bem/gmres computes the induced charges -at the interface between two impermeable media with -different dielectric constants. - -There are some example scripts for using this fix -with LAMMPS in the examples/USER/dielectric directory. - ----------- - -The induced charges of the atoms in the specified group, which are -the vertices on the interface, are computed using the equation: - -..math:: - - \sigma_b(\mathbf{s}) = \dfrac{1 - \bar{\epsilon}}{\bar{\epsilon}} - \sigma_f(\mathbf{s}) - \epsilon_0 \dfrac{\Delta \epsilon}{\bar{\epsilon}} - \mathbf{E}(\mathbf{s}) \cdot \mathbf{n}(\mathbf{s}) - -* :math:`\sigma_b` is the induced charge density at the interface vertex -:math:`\mathbf{s}`. -* :math:`\bar{\epsilon}` is the mean dielectric constant at the interface vertex: -:math:`\bar{\epsilon} = (\epsilon_1 + \epsilon_2)/2`. -* :math:`\Delta \epsilon` is the dielectric constant difference at the interface vertex: -:math:`\Delta \epsilon = \epsilon_1 - \epsilon_2` -* :math:`\sigma_f` is the free charge density at the interface vertex -* :math:`\mathbf{E}(\mathbf{s})` is the electrical field at the vertex -* :math:`\mathbf{n}(\mathbf{s})` is the unit normal vector at the vertex -pointing from medium with :math:`\epsilon_2` to that with :math:`\epsilon_1` - - -The fix polarize/bem/gmres employs the Generalized Minimum Residual (GMRES) -as described in :ref:`(Barros) ` to solve for :math:`\sigma_b`. - -Restart, fix_modify, output, run start/stop, minimize info -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - -The :doc:`fix_modify ` - -This fix computes a global scalar which can be accessed by various -:doc:`output commands `. The scalar is the Colvars -energy mentioned above. The scalar value calculated by this fix is -"extensive". - -Restrictions -"""""""""""" - -This fix is part of the USER-DIELECTRIC package. It is only enabled if -LAMMPS was built with that package. See the :doc:`Build package -` doc page for more info. - -There can only be one colvars fix active at a time. Since the interface -communicates only the minimum amount of information and colvars module -itself can handle an arbitrary number of collective variables, this is -not a limitation of functionality. - -Related commands -"""""""""""""""" - -:doc:`fix polarize/bem/icc `, :doc:`fix polarize/functional ` - -Default -""""""" - -None. - ----------- - -.. _Barros: - -**(Barros)** Barros, Sinkovits, Luijten, J. Chem. Phys, 140, 064903 (2014) - - -.. _NguyenTD: - -**(NguyenTD)** Nguyen, Li, Bagchi, Solis, Olvera de la Cruz, Comput Phys Commun 241, 80-19 (2019) - diff --git a/doc/src/fix_polarize_bem_icc.rst b/doc/src/fix_polarize_bem_icc.rst deleted file mode 100644 index a771d28f60..0000000000 --- a/doc/src/fix_polarize_bem_icc.rst +++ /dev/null @@ -1,103 +0,0 @@ -.. index:: fix polarize/bem/icc - -fix polarize/bem/icc command -=================== - -Syntax -"""""" - -.. parsed-literal:: - - fix ID group-ID polarize nevery tolerance ... - -* ID, group-ID are documented in :doc:`fix ` command -* polarize/bem/icc = style name of this fix command -* Nevery = this fixed is invoked every this many timesteps -* tolerance = the tolerance for the iterative solver to stop - - -Examples -"""""""" - -.. code-block:: LAMMPS - - fix 1 interface polarize/bem/icc 1 0.0001 - -Description -""""""""""" - -The fix polarize/bem/icc computes the induced charges -at the interface between two impermeable media with -different dielectric constants. - -There are some example scripts for using this fix -with LAMMPS in the examples/USER/dielectric directory. - ----------- - -The induced charges of the atoms in the specified group, which are -the vertices on the interface, are computed using the equation: - -..math:: - - \sigma_b(\mathbf{s}) = \dfrac{1 - \bar{\epsilon}}{\bar{\epsilon}} - \sigma_f(\mathbf{s}) - \epsilon_0 \dfrac{\Delta \epsilon}{\bar{\epsilon}} - \mathbf{E}(\mathbf{s}) \cdot \mathbf{n}(\mathbf{s}) - -* :math:`\sigma_b` is the induced charge density at the interface vertex -:math:`\mathbf{s}`. -* :math:`\bar{\epsilon}` is the mean dielectric constant at the interface vertex: -:math:`\bar{\epsilon} = (\epsilon_1 + \epsilon_2)/2`. -* :math:`\Delta \epsilon` is the dielectric constant difference at the interface vertex: -:math:`\Delta \epsilon = \epsilon_1 - \epsilon_2` -* :math:`\sigma_f` is the free charge density at the interface vertex -* :math:`\mathbf{E}(\mathbf{s})` is the electrical field at the vertex -* :math:`\mathbf{n}(\mathbf{s})` is the unit normal vector at the vertex -pointing from medium with :math:`\epsilon_2` to that with :math:`\epsilon_1` - - -The fix polarize/bem/icc employs the successive overrelaxation algorithm -as described in :ref:`(Tyagi) ` to solve for :math:`\sigma_b`. - -Restart, fix_modify, output, run start/stop, minimize info -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - -The :doc:`fix_modify ` - -This fix computes a global scalar which can be accessed by various -:doc:`output commands `. The scalar is the Colvars -energy mentioned above. The scalar value calculated by this fix is -"extensive". - -Restrictions -"""""""""""" - -This fix is part of the USER-DIELECTRIC package. It is only enabled if -LAMMPS was built with that package. See the :doc:`Build package -` doc page for more info. - -There can only be one colvars fix active at a time. Since the interface -communicates only the minimum amount of information and colvars module -itself can handle an arbitrary number of collective variables, this is -not a limitation of functionality. - -Related commands -"""""""""""""""" - -:doc:`fix polarize/bem/icc `, :doc:`fix polarize/functional ` - -Default -""""""" - -None. - ----------- - -.. _Tyagi: - -**(Tyagi)** Tyagi, Suzen, Sega, Barbosa, Kantorovich, Holm, J Chem Phys, 132, 154112 (2010) - -.. _NguyenTD: - -**(NguyenTD)** Nguyen, Li, Bagchi, Solis, Olvera de la Cruz, Comput Phys Commun 241, 80-19 (2019) - diff --git a/doc/src/fix_polarize_functional.rst b/doc/src/fix_polarize_functional.rst deleted file mode 100644 index 79a7dc621d..0000000000 --- a/doc/src/fix_polarize_functional.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. index:: fix polarize/functional - -fix polarize/functional command -=================== - -Syntax -"""""" - -.. parsed-literal:: - - fix ID group-ID polarize nevery tolerance ... - -* ID, group-ID are documented in :doc:`fix ` command -* polarize/functional = style name of this fix command -* Nevery = this fixed is invoked every this many timesteps -* tolerance = the tolerance for the iterative solver to stop - - -Examples -"""""""" - -.. code-block:: LAMMPS - - fix 3 all polarize/functional 1 0.001 - -Description -""""""""""" - -The three fix polarize in the USER-DIELECTRIC package compute the induced charges -at the interface between two impermeable media with different dielectric -constants. - -There are some example scripts for using this package with LAMMPS in the -examples/USER/dielectric directory. - ----------- - - -Restart, fix_modify, output, run start/stop, minimize info -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - -The :doc:`fix_modify ` - -This fix computes a global scalar which can be accessed by various -:doc:`output commands `. The scalar is the Colvars -energy mentioned above. The scalar value calculated by this fix is -"extensive". - -Restrictions -"""""""""""" - -This fix is part of the USER-DIELECTRIC package. It is only enabled if -LAMMPS was built with that package. See the :doc:`Build package -` doc page for more info. - -There can only be one colvars fix active at a time. Since the interface -communicates only the minimum amount of information and colvars module -itself can handle an arbitrary number of collective variables, this is -not a limitation of functionality. - -Related commands -"""""""""""""""" - -:doc:`fix polarize/bem/icc `, :doc:`fix polarize/functional ` - -Default -""""""" - -None. - ----------- - -.. _Jadhao: - -**(Jadhao)** Jadhao, Solis, Olvera de la Cruz, J Chem Phys, 138, 054119 (2013) - -.. _NguyenTD: - -**(NguyenTD)** Nguyen, Li, Bagchi, Solis, Olvera de la Cruz, Comput Phys Commun 241, 80-19 (2019) - diff --git a/doc/src/kspace_style.rst b/doc/src/kspace_style.rst index 8bbbae9155..01ad15a08e 100644 --- a/doc/src/kspace_style.rst +++ b/doc/src/kspace_style.rst @@ -16,6 +16,7 @@ .. index:: kspace_style pppm/disp/tip4p .. index:: kspace_style pppm/disp/tip4p/omp .. index:: kspace_style pppm/disp/intel +.. index:: kspace_style pppm/dielectric .. index:: kspace_style pppm/cg/omp .. index:: kspace_style pppm/stagger .. index:: kspace_style pppm/tip4p @@ -24,6 +25,7 @@ .. index:: kspace_style msm/omp .. index:: kspace_style msm/cg .. index:: kspace_style msm/cg/omp +.. index:: kspace_style msm/dielectric .. index:: kspace_style scafacos kspace_style command @@ -36,7 +38,7 @@ Syntax kspace_style style value -* style = *none* or *ewald* or *ewald/dipole* or *ewald/dipole/spin* or *ewald/disp* or *ewald/omp* or *pppm* or *pppm/cg* or *pppm/disp* or *pppm/tip4p* or *pppm/stagger* or *pppm/disp/tip4p* or *pppm/gpu* or *pppm/intel* or *pppm/disp/intel* or *pppm/kk* or *pppm/omp* or *pppm/cg/omp* or *pppm/disp/tip4p/omp* or *pppm/tip4p/omp* or *msm* or *msm/cg* or *msm/omp* or *msm/cg/omp* or *scafacos* +* style = *none* or *ewald* or *ewald/dipole* or *ewald/dipole/spin* or *ewald/disp* or *ewald/omp* or *pppm* or *pppm/cg* or *pppm/disp* or *pppm/tip4p* or *pppm/stagger* or *pppm/disp/tip4p* or *pppm/gpu* or *pppm/intel* or *pppm/disp/intel* or *pppm/kk* or *pppm/omp* or *pppm/cg/omp* or *pppm/disp/tip4p/omp* or *pppm/tip4p/omp* or *pppm/dielectic* or *msm* or *msm/cg* or *msm/omp* or *msm/cg/omp* or *msm/dielectric* or *scafacos* .. parsed-literal:: @@ -87,6 +89,8 @@ Syntax accuracy = desired relative error in forces *pppm/stagger* value = accuracy accuracy = desired relative error in forces + *pppm/dielectric* value = accuracy + accuracy = desired relative error in forces *msm* value = accuracy accuracy = desired relative error in forces *msm/cg* value = accuracy (smallq) @@ -97,6 +101,8 @@ Syntax *msm/cg/omp* value = accuracy (smallq) accuracy = desired relative error in forces smallq = cutoff for charges to be considered (optional) (charge units) + *msm/dielectric* value = accuracy + accuracy = desired relative error in forces *scafacos* values = method accuracy method = fmm or p2nfft or p3m or ewald or direct accuracy = desired relative error in forces @@ -435,8 +441,14 @@ non-orthogonal (triclinic symmetry) simulation boxes. However, triclinic simulation cells may not yet be supported by all suffix versions of these styles. -All of the kspace styles are part of the KSPACE package. They are -only enabled if LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info. +Most of the base kspace styles are part of the KSPACE package. They are +only enabled if LAMMPS was built with that package. See the :doc:`Build +package ` doc page for more info. + +The *msm/dielectric* and *pppm/dielectric* kspace styles are part of the +USER-DIELECTRIC package. They are only enabled if LAMMPS was built with +that package **and** the KSPACE package. See the :doc:`Build package +` doc page for more info. For MSM, a simulation must be 3d and one can use any combination of periodic, non-periodic, or shrink-wrapped boundaries (specified using diff --git a/doc/src/pair_dielectric.rst b/doc/src/pair_dielectric.rst new file mode 100644 index 0000000000..f98cfce976 --- /dev/null +++ b/doc/src/pair_dielectric.rst @@ -0,0 +1,357 @@ +.. index:: pair_style coul/cut/dielectric +.. index:: pair_style coul/long/dielectric +.. index:: pair_style lj/cut/coul/cut/dielectric +.. index:: pair_style lj/cut/coul/cut/dielectric/omp +.. index:: pair_style lj/cut/coul/debye/dielectric +.. index:: pair_style lj/cut/coul/long/dielectric +.. index:: pair_style lj/cut/coul/long/dielectric/omp +.. index:: pair_style lj/cut/coul/msm/dielectric +.. index:: pair_style lj/long/coul/long/dielectric + +pair_style coul/cut/dielectric command +====================================== + +pair_style coul/long/dielectric command +======================================= + +pair_style lj/cut/coul/cut/dielectric command +============================================= + +Accelerator Variants: *lj/cut/coul/cut/dielectric/omp* + +pair_style lj/cut/coul/debye/dielectric command +=============================================== + +pair_style lj/cut/coul/long/dielectric command +============================================== + +Accelerator Variants: *lj/cut/coul/long/dielectric/omp* + +pair_style lj/cut/coul/msm/dielectric command +============================================== + +pair_style lj/long/coul/long/dielectric command +=============================================== + +Syntax +"""""" + +TODO FIX the rest of the file + +.. code-block:: LAMMPS + + pair_style lj/cut/dipole/cut cutoff (cutoff2) + pair_style lj/sf/dipole/sf cutoff (cutoff2) + pair_style lj/cut/dipole/long cutoff (cutoff2) + pair_style lj/long/dipole/long flag_lj flag_coul cutoff (cutoff2) + +* cutoff = global cutoff LJ (and Coulombic if only 1 arg) (distance units) +* cutoff2 = global cutoff for Coulombic and dipole (optional) (distance units) +* flag_lj = *long* or *cut* or *off* + + .. parsed-literal:: + + *long* = use long-range damping on dispersion 1/r\^6 term + *cut* = use a cutoff on dispersion 1/r\^6 term + *off* = omit disperion 1/r\^6 term entirely + +* flag_coul = *long* or *off* + + .. parsed-literal:: + + *long* = use long-range damping on Coulombic 1/r and point-dipole terms + *off* = omit Coulombic and point-dipole terms entirely + +Examples +"""""""" + +.. code-block:: LAMMPS + + pair_style lj/cut/dipole/cut 10.0 + pair_coeff * * 1.0 1.0 + pair_coeff 2 3 1.0 1.0 2.5 4.0 + + pair_style lj/sf/dipole/sf 9.0 + pair_coeff * * 1.0 1.0 + pair_coeff 2 3 1.0 1.0 2.5 4.0 scale 0.5 + pair_coeff 2 3 1.0 1.0 2.5 4.0 + + pair_style lj/cut/dipole/long 10.0 + pair_coeff * * 1.0 1.0 + pair_coeff 2 3 1.0 1.0 2.5 4.0 + + pair_style lj/long/dipole/long long long 3.5 10.0 + pair_coeff * * 1.0 1.0 + pair_coeff 2 3 1.0 1.0 2.5 4.0 + +Description +""""""""""" + +Style *lj/cut/dipole/cut* computes interactions between pairs of particles +that each have a charge and/or a point dipole moment. In addition to +the usual Lennard-Jones interaction between the particles (Elj) the +charge-charge (Eqq), charge-dipole (Eqp), and dipole-dipole (Epp) +interactions are computed by these formulas for the energy (E), force +(F), and torque (T) between particles I and J. + +.. math:: + + E_{LJ} = & 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - + \left(\frac{\sigma}{r}\right)^6 \right] \\ + E_{qq} = & \frac{q_i q_j}{r} \\ + E_{qp} = & \frac{q}{r^3} (p \bullet \vec{r}) \\ + E_{pp} = & \frac{1}{r^3} (\vec{p_i} \bullet \vec{p_j}) - + \frac{3}{r^5} (\vec{p_i} \bullet \vec{r}) (\vec{p_j} \bullet \vec{r}) \\ + & \\ + F_{qq} = & \frac{q_i q_j}{r^3} \vec{r} \\ + F_{qp} = & -\frac{q}{r^3} \vec{p} + \frac{3q}{r^5} + (\vec{p} \bullet \vec{r}) \vec{r} \\ + F_{pp} = & \frac{3}{r^5} (\vec{p_i} \bullet \vec{p_j}) \vec{r} - + \frac{15}{r^7} (\vec{p_i} \bullet \vec{r}) + (\vec{p_j} \bullet \vec{r}) \vec{r} + + \frac{3}{r^5} \left[ (\vec{p_j} \bullet \vec{r}) \vec{p_i} + + (\vec{p_i} \bullet \vec{r}) \vec{p_j} \right] \\ + & \\ + T_{pq} = T_{ij} = & \frac{q_j}{r^3} (\vec{p_i} \times \vec{r}) \\ + T_{qp} = T_{ji} = & - \frac{q_i}{r^3} (\vec{p_j} \times \vec{r}) \\ + T_{pp} = T_{ij} = & -\frac{1}{r^3} (\vec{p_i} \times \vec{p_j}) + + \frac{3}{r^5} (\vec{p_j} \bullet \vec{r}) + (\vec{p_i} \times \vec{r}) \\ + T_{pp} = T_{ji} = & -\frac{1}{r^3} (\vec{p_j} \times \vec{p_i}) + + \frac{3}{r^5} (\vec{p_i} \bullet \vec{r}) + (\vec{p_j} \times \vec{r}) + +where :math:`q_i` and :math:`q_j` are the charges on the two particles, +:math:`\vec{p_i}` and :math:`\vec{p_j}` are the dipole moment vectors of +the two particles, r is their separation distance, and the vector r = +Ri - Rj is the separation vector between the two particles. Note that +Eqq and Fqq are simply Coulombic energy and force, Fij = -Fji as +symmetric forces, and Tij != -Tji since the torques do not act +symmetrically. These formulas are discussed in :ref:`(Allen) ` +and in :ref:`(Toukmaji) `. + +Also note, that in the code, all of these terms (except Elj) have a +:math:`C/\epsilon` prefactor, the same as the Coulombic term in the LJ + +Coulombic pair styles discussed :doc:`here `. C is an +energy-conversion constant and epsilon is the dielectric constant +which can be set by the :doc:`dielectric ` command. The +same is true of the equations that follow for other dipole pair +styles. + +Style *lj/sf/dipole/sf* computes "shifted-force" interactions between +pairs of particles that each have a charge and/or a point dipole +moment. In general, a shifted-force potential is a (slightly) modified +potential containing extra terms that make both the energy and its +derivative go to zero at the cutoff distance; this removes +(cutoff-related) problems in energy conservation and any numerical +instability in the equations of motion :ref:`(Allen) `. Shifted-force +interactions for the Lennard-Jones (E_LJ), charge-charge (Eqq), +charge-dipole (Eqp), dipole-charge (Epq) and dipole-dipole (Epp) +potentials are computed by these formulas for the energy (E), force +(F), and torque (T) between particles I and J: + +.. math:: + + E_{LJ} = & 4\epsilon \left\{ \left[ \left( \frac{\sigma}{r} \right)^{\!12} - + \left( \frac{\sigma}{r} \right)^{\!6} \right] + + \left[ 6\left( \frac{\sigma}{r_c} \right)^{\!12} - + 3\left(\frac{\sigma}{r_c}\right)^{\!6}\right]\left(\frac{r}{r_c}\right)^{\!2} + - 7\left( \frac{\sigma}{r_c} \right)^{\!12} + + 4\left( \frac{\sigma}{r_c} \right)^{\!6}\right\} \\ + E_{qq} = & \frac{q_i q_j}{r}\left(1-\frac{r}{r_c}\right)^{\!2} \\ + E_{pq} = & E_{ji} = -\frac{q}{r^3} \left[ 1 - + 3\left(\frac{r}{r_c}\right)^{\!2} + + 2\left(\frac{r}{r_c}\right)^{\!3}\right] (\vec{p}\bullet\vec{r}) \\ + E_{qp} = & E_{ij} = \frac{q}{r^3} \left[ 1 - + 3\left(\frac{r}{r_c}\right)^{\!2} + + 2\left(\frac{r}{r_c}\right)^{\!3}\right] (\vec{p}\bullet\vec{r}) \\ + E_{pp} = & \left[1-4\left(\frac{r}{r_c}\right)^{\!3} + + 3\left(\frac{r}{r_c}\right)^{\!4}\right]\left[\frac{1}{r^3} + (\vec{p_i} \bullet \vec{p_j}) - \frac{3}{r^5} + (\vec{p_i} \bullet \vec{r}) (\vec{p_j} \bullet \vec{r})\right] \\ + & \\ + + F_{LJ} = & \left\{\left[48\epsilon \left(\frac{\sigma}{r}\right)^{\!12} - + 24\epsilon \left(\frac{\sigma}{r}\right)^{\!6} \right]\frac{1}{r^2} - + \left[48\epsilon \left(\frac{\sigma}{r_c}\right)^{\!12} - 24\epsilon + \left(\frac{\sigma}{r_c}\right)^{\!6} \right]\frac{1}{r_c^2}\right\}\vec{r}\\ + F_{qq} = & \frac{q_i q_j}{r}\left(\frac{1}{r^2} - + \frac{1}{r_c^2}\right)\vec{r} \\ + F_{pq} = & F_{ij } = -\frac{3q}{r^5} \left[ 1 - + \left(\frac{r}{r_c}\right)^{\!2}\right](\vec{p}\bullet\vec{r})\vec{r} + + \frac{q}{r^3}\left[1-3\left(\frac{r}{r_c}\right)^{\!2} + + 2\left(\frac{r}{r_c}\right)^{\!3}\right] \vec{p} \\ + F_{qp} = & F_{ij} = \frac{3q}{r^5} \left[ 1 - + \left(\frac{r}{r_c}\right)^{\!2}\right] (\vec{p}\bullet\vec{r})\vec{r} - + \frac{q}{r^3}\left[1-3\left(\frac{r}{r_c}\right)^{\!2} + + 2\left(\frac{r}{r_c}\right)^{\!3}\right] \vec{p} \\ + F_{pp} = &\frac{3}{r^5}\Bigg\{\left[1-\left(\frac{r}{r_c}\right)^{\!4}\right] + \left[(\vec{p_i}\bullet\vec{p_j}) - \frac{3}{r^2} (\vec{p_i}\bullet\vec{r}) + (\vec{p_j} \bullet \vec{r})\right] \vec{r} + \\ + & \left[1 - + 4\left(\frac{r}{r_c}\right)^{\!3}+3\left(\frac{r}{r_c}\right)^{\!4}\right] + \left[ (\vec{p_j} \bullet \vec{r}) \vec{p_i} + (\vec{p_i} \bullet \vec{r}) + \vec{p_j} -\frac{2}{r^2} (\vec{p_i} \bullet \vec{r}) + (\vec{p_j} \bullet \vec{r})\vec{r}\right] \Bigg\} + +.. math:: + + T_{pq} = T_{ij} = & \frac{q_j}{r^3} \left[ 1 - + 3\left(\frac{r}{r_c}\right)^{\!2} + + 2\left(\frac{r}{r_c}\right)^{\!3}\right] (\vec{p_i}\times\vec{r}) \\ + T_{qp} = T_{ji} = & - \frac{q_i}{r^3} \left[ 1 - + 3\left(\frac{r}{r_c}\right)^{\!2} + + 2\left(\frac{r}{r_c}\right)^{\!3} \right] (\vec{p_j}\times\vec{r}) \\ + T_{pp} = T_{ij} = & -\frac{1}{r^3}\left[1-4\left(\frac{r}{r_c}\right)^{\!3} + + e3\left(\frac{r}{r_c}\right)^{\!4}\right] (\vec{p_i} \times \vec{p_j}) + \\ + & \frac{3}{r^5}\left[1-4\left(\frac{r}{r_c}\right)^{\!3} + + 3\left(\frac{r}{r_c}\right)^{\!4}\right] (\vec{p_j}\bullet\vec{r}) + (\vec{p_i} \times \vec{r}) \\ + T_{pp} = T_{ji} = & -\frac{1}{r^3}\left[1-4\left(\frac{r}{r_c}\right)^{\!3} + + 3\left(\frac{r}{r_c}\right)^{\!4}\right](\vec{p_j} \times \vec{p_i}) + \\ + & \frac{3}{r^5}\left[1-4\left(\frac{r}{r_c}\right)^{\!3} + + 3\left(\frac{r}{r_c}\right)^{\!4}\right] (\vec{p_i} \bullet \vec{r}) + (\vec{p_j} \times \vec{r}) + +where :math:`\epsilon` and :math:`\sigma` are the standard LJ +parameters, :math:`r_c` is the cutoff, :math:`q_i` and :math:`q_j` are +the charges on the two particles, :math:`\vec{p_i}` and +:math:`\vec{p_j}` are the dipole moment vectors of the two particles, r +is their separation distance, and the vector r = Ri - Rj is the +separation vector between the two particles. Note that Eqq and Fqq are +simply Coulombic energy and force, Fij = -Fji as symmetric forces, and +Tij != -Tji since the torques do not act symmetrically. The +shifted-force formula for the Lennard-Jones potential is reported in +:ref:`(Stoddard) `. The original (non-shifted) formulas for +the electrostatic potentials, forces and torques can be found in +:ref:`(Price) `. The shifted-force electrostatic potentials have +been obtained by applying equation 5.13 of :ref:`(Allen) `. The +formulas for the corresponding forces and torques have been obtained by +applying the 'chain rule' as in appendix C.3 of :ref:`(Allen) `. + +If one cutoff is specified in the pair_style command, it is used for +both the LJ and Coulombic (q,p) terms. If two cutoffs are specified, +they are used as cutoffs for the LJ and Coulombic (q,p) terms +respectively. This pair style also supports an optional *scale* keyword +as part of a pair_coeff statement, where the interactions can be +scaled according to this factor. This scale factor is also made available +for use with fix adapt. + +Style *lj/cut/dipole/long* computes long-range point-dipole +interactions as discussed in :ref:`(Toukmaji) `. Dipole-dipole, +dipole-charge, and charge-charge interactions are all supported, along +with the standard 12/6 Lennard-Jones interactions, which are computed +with a cutoff. A :doc:`kspace_style ` must be defined to +use this pair style. Currently, only :doc:`kspace_style ewald/disp ` support long-range point-dipole +interactions. + +Style *lj/long/dipole/long* also computes point-dipole interactions as +discussed in :ref:`(Toukmaji) `. Long-range dipole-dipole, +dipole-charge, and charge-charge interactions are all supported, along +with the standard 12/6 Lennard-Jones interactions. LJ interactions +can be cutoff or long-ranged. + +For style *lj/long/dipole/long*\ , if *flag_lj* is set to *long*\ , no +cutoff is used on the LJ 1/r\^6 dispersion term. The long-range +portion is calculated by using the :doc:`kspace_style ewald_disp ` command. The specified LJ cutoff then +determines which portion of the LJ interactions are computed directly +by the pair potential versus which part is computed in reciprocal +space via the Kspace style. If *flag_lj* is set to *cut*\ , the LJ +interactions are simply cutoff, as with :doc:`pair_style lj/cut `. If *flag_lj* is set to *off*\ , LJ interactions +are not computed at all. + +If *flag_coul* is set to *long*\ , no cutoff is used on the Coulombic or +dipole interactions. The long-range portion is calculated by using +*ewald_disp* of the :doc:`kspace_style ` command. If +*flag_coul* is set to *off*\ , Coulombic and dipole interactions are not +computed at all. + +Atoms with dipole moments should be integrated using the :doc:`fix nve/sphere update dipole ` or the :doc:`fix nvt/sphere update dipole ` command to rotate the +dipole moments. The *omega* option on the :doc:`fix langevin ` command can be used to thermostat the +rotational motion. The :doc:`compute temp/sphere ` +command can be used to monitor the temperature, since it includes +rotational degrees of freedom. The :doc:`atom_style hybrid dipole sphere ` command should be used since +it defines the point dipoles and their rotational state. +The magnitude and orientation of the dipole moment for each particle +can be defined by the :doc:`set ` command or in the "Atoms" section +of the data file read in by the :doc:`read_data ` command. + +The following coefficients must be defined for each pair of atoms +types via the :doc:`pair_coeff ` command as in the examples +above, or in the data file or restart files read by the +:doc:`read_data ` or :doc:`read_restart ` +commands, or by mixing as described below: + +* :math:`\epsilon` (energy units) +* :math:`\sigma` (distance units) +* cutoff1 (distance units) +* cutoff2 (distance units) + +The latter 2 coefficients are optional. If not specified, the global +LJ and Coulombic cutoffs specified in the pair_style command are used. +If only one cutoff is specified, it is used as the cutoff for both LJ +and Coulombic interactions for this type pair. If both coefficients +are specified, they are used as the LJ and Coulombic cutoffs for this +type pair. + +---------- + +.. include:: accel_styles.rst + +---------- + +Mixing, shift, table, tail correction, restart, rRESPA info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +For atom type pairs I,J and I != J, the epsilon and sigma coefficients +and cutoff distances for this pair style can be mixed. The default +mix value is *geometric*\ . See the "pair_modify" command for details. + +For atom type pairs I,J and I != J, the A, sigma, d1, and d2 +coefficients and cutoff distance for this pair style can be mixed. A +is an energy value mixed like a LJ epsilon. D1 and d2 are distance +values and are mixed like sigma. The default mix value is +*geometric*\ . See the "pair_modify" command for details. + +This pair style does not support the :doc:`pair_modify ` +shift option for the energy of the Lennard-Jones portion of the pair +interaction; such energy goes to zero at the cutoff by construction. + +The :doc:`pair_modify ` table option is not relevant +for this pair style. + +This pair style does not support the :doc:`pair_modify ` +tail option for adding long-range tail corrections to energy and +pressure. + +This pair style writes its information to :doc:`binary restart files `, so pair_style and pair_coeff commands do not need +to be specified in an input script that reads a restart file. + +This pair style can only be used via the *pair* keyword of the +:doc:`run_style respa ` command. It does not support the +*inner*\ , *middle*\ , *outer* keywords. + +Restrictions +"""""""""""" + +The *lj/cut/dipole/cut*\ , *lj/cut/dipole/long*\ , and +*lj/long/dipole/long* styles are part of the DIPOLE package. They are +only enabled if LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info. + +The *lj/sf/dipole/sf* style is part of the USER-MISC package. It is +only enabled if LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info. + +Using dipole pair styles with *electron* :doc:`units ` is not +currently supported. + +Related commands +"""""""""""""""" + +:doc:`pair_coeff `, :doc:`set `, :doc:`read_data `, +:doc:`fix nve/sphere `, :doc:`fix nvt/sphere ` + +Default +""""""" + +none + diff --git a/doc/src/pair_style.rst b/doc/src/pair_style.rst index 14b30c124a..1f023a7312 100644 --- a/doc/src/pair_style.rst +++ b/doc/src/pair_style.rst @@ -133,6 +133,7 @@ accelerated styles exist. * :doc:`comb3 ` - charge-optimized many-body (COMB3) potential * :doc:`cosine/squared ` - Cooke-Kremer-Deserno membrane model potential * :doc:`coul/cut ` - cutoff Coulomb potential +* :doc:`coul/cut/dielectric ` - * :doc:`coul/cut/global ` - cutoff Coulomb potential * :doc:`coul/cut/soft ` - Coulomb potential with a soft core * :doc:`coul/debye ` - cutoff Coulomb potential with Debye screening @@ -140,6 +141,7 @@ accelerated styles exist. * :doc:`coul/dsf ` - Coulomb with damped-shifted-force model * :doc:`coul/long ` - long-range Coulomb potential * :doc:`coul/long/cs ` - long-range Coulomb potential and core/shell +* :doc:`coul/long/dielectric ` - * :doc:`coul/long/soft ` - long-range Coulomb potential with a soft core * :doc:`coul/msm ` - long-range MSM Coulomb * :doc:`coul/slater/cut ` - smeared out Coulomb @@ -209,13 +211,17 @@ accelerated styles exist. * :doc:`lj/cubic ` - LJ with cubic after inflection point * :doc:`lj/cut ` - cutoff Lennard-Jones potential without Coulomb * :doc:`lj/cut/coul/cut ` - LJ with cutoff Coulomb +* :doc:`lj/cut/coul/cut/dielectric ` - * :doc:`lj/cut/coul/cut/soft ` - LJ with cutoff Coulomb with a soft core * :doc:`lj/cut/coul/debye ` - LJ with Debye screening added to Coulomb +* :doc:`lj/cut/coul/debye/dielectric ` - * :doc:`lj/cut/coul/dsf ` - LJ with Coulomb via damped shifted forces * :doc:`lj/cut/coul/long ` - LJ with long-range Coulomb * :doc:`lj/cut/coul/long/cs ` - LJ with long-range Coulomb with core/shell adjustments +* :doc:`lj/cut/coul/long/dielectric ` - * :doc:`lj/cut/coul/long/soft ` - LJ with long-range Coulomb with a soft core * :doc:`lj/cut/coul/msm ` - LJ with long-range MSM Coulomb +* :doc:`lj/cut/coul/msm/dielectric ` - * :doc:`lj/cut/coul/wolf ` - LJ with Coulomb via Wolf potential * :doc:`lj/cut/dipole/cut ` - point dipoles with cutoff * :doc:`lj/cut/dipole/long ` - point dipoles with long-range Ewald @@ -229,6 +235,7 @@ accelerated styles exist. * :doc:`lj/gromacs ` - GROMACS-style Lennard-Jones potential * :doc:`lj/gromacs/coul/gromacs ` - GROMACS-style LJ and Coulomb potential * :doc:`lj/long/coul/long ` - long-range LJ and long-range Coulomb +* :doc:`lj/long/coul/long/dielectric ` - * :doc:`lj/long/dipole/long ` - long-range LJ and long-range point dipoles * :doc:`lj/long/tip4p/long ` - long-range LJ and long-range Coulomb for TIP4P water * :doc:`lj/mdf ` - LJ potential with a taper function From 0bc86a7eea533ebde0e3b69b8fe7dc167ffed033 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 5 Jun 2021 21:43:38 -0400 Subject: [PATCH 71/80] modernize and reformat code --- .../fix_polarize_bem_gmres.cpp | 378 +++++++++--------- src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp | 200 +++++---- .../fix_polarize_functional.cpp | 359 ++++++++--------- 3 files changed, 461 insertions(+), 476 deletions(-) diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp index 296c9c3835..2fd3d14b3f 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_gmres.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories @@ -47,13 +46,13 @@ #include "math_const.h" #include "memory.h" #include "modify.h" +#include "msm_dielectric.h" #include "pair_coul_cut_dielectric.h" #include "pair_coul_long_dielectric.h" #include "pair_lj_cut_coul_cut_dielectric.h" #include "pair_lj_cut_coul_long_dielectric.h" #include "pair_lj_cut_coul_msm_dielectric.h" #include "pppm_dielectric.h" -#include "msm_dielectric.h" #include "random_park.h" #include "timer.h" #include "update.h" @@ -70,19 +69,19 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ FixPolarizeBEMGMRES::FixPolarizeBEMGMRES(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg), - q_backup(NULL), c(NULL), g(NULL), h(NULL), r(NULL), s(NULL), v(NULL), y(NULL) + Fix(lmp, narg, arg), q_backup(NULL), c(NULL), g(NULL), h(NULL), r(NULL), s(NULL), v(NULL), + y(NULL) { - if (narg < 5) error->all(FLERR,"Illegal fix polarize/bem/gmres command"); + if (narg < 5) error->all(FLERR, "Illegal fix polarize/bem/gmres command"); avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"Fix polarize requires atom style dielectric"); + if (!avec) error->all(FLERR, "Fix polarize requires atom style dielectric"); // parse required arguments - nevery = utils::numeric(FLERR,arg[3],false,lmp); - if (nevery < 0) error->all(FLERR,"Illegal fix polarize/bem/gmres command"); - double tol = utils::numeric(FLERR,arg[4],false,lmp); + nevery = utils::numeric(FLERR, arg[3], false, lmp); + if (nevery < 0) error->all(FLERR, "Illegal fix polarize/bem/gmres command"); + double tol = utils::numeric(FLERR, arg[4], false, lmp); tol_abs = tol_rel = tol; itr_max = 20; @@ -112,7 +111,7 @@ FixPolarizeBEMGMRES::FixPolarizeBEMGMRES(LAMMPS *lmp, int narg, char **arg) : if (atom->avec->forceclearflag) extraflag = 1; grow_arrays(atom->nmax); - atom->add_callback(0); // to ensure to work with atom->sort() + atom->add_callback(0); // to ensure to work with atom->sort() // output the residual and actual number of iterations @@ -135,7 +134,7 @@ FixPolarizeBEMGMRES::~FixPolarizeBEMGMRES() memory->destroy(tag2mat); if (allocated) deallocate(); - atom->delete_callback(id,0); + atom->delete_callback(id, 0); } /* ---------------------------------------------------------------------- */ @@ -153,7 +152,7 @@ void FixPolarizeBEMGMRES::init() { // mapping induced charge matrix/vector to atom tags and vice versa - int i,maxtag; + int i, maxtag; double *q = atom->q; int *mask = atom->mask; tagint *tag = atom->tag; @@ -161,28 +160,30 @@ void FixPolarizeBEMGMRES::init() tagint max_tag = -1; for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) max_tag = MAX(max_tag,tag[i]); + if (mask[i] & groupbit) max_tag = MAX(max_tag, tag[i]); tagint itmp; - MPI_Allreduce(&max_tag,&itmp,1,MPI_LMP_TAGINT,MPI_MAX,world); + MPI_Allreduce(&max_tag, &itmp, 1, MPI_LMP_TAGINT, MPI_MAX, world); maxtag = (int) itmp; int *ncount; - memory->create(ncount,maxtag+1,"polarize:ncount"); + memory->create(ncount, maxtag + 1, "polarize:ncount"); for (i = 0; i <= maxtag; i++) ncount[i] = 0; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) ncount[tag[i]]++; - memory->create(tag2mat,maxtag+1,"polarize:tag2mat"); - MPI_Allreduce(ncount,tag2mat,maxtag+1,MPI_INT,MPI_SUM,world); + memory->create(tag2mat, maxtag + 1, "polarize:tag2mat"); + MPI_Allreduce(ncount, tag2mat, maxtag + 1, MPI_INT, MPI_SUM, world); num_induced_charges = 0; for (i = 0; i <= maxtag; i++) - if (tag2mat[i]) tag2mat[i] = num_induced_charges++; - else tag2mat[i] = -1; + if (tag2mat[i]) + tag2mat[i] = num_induced_charges++; + else + tag2mat[i] = -1; - memory->create(mat2tag,num_induced_charges,"polarize:mat2tag"); + memory->create(mat2tag, num_induced_charges, "polarize:mat2tag"); num_induced_charges = 0; for (i = 0; i <= maxtag; i++) @@ -197,9 +198,9 @@ void FixPolarizeBEMGMRES::init() // allocate memory for the solver - memory->create(induced_charges,num_induced_charges,"polarize:induced_charges"); - memory->create(rhs,num_induced_charges,"polarize:rhs"); - memory->create(buffer,num_induced_charges,"polarize:buffer"); + memory->create(induced_charges, num_induced_charges, "polarize:induced_charges"); + memory->create(rhs, num_induced_charges, "polarize:rhs"); + memory->create(buffer, num_induced_charges, "polarize:buffer"); mat_dim = num_induced_charges; if (mr > mat_dim - 1 || mr <= 0) mr = mat_dim - 1; @@ -213,16 +214,16 @@ void FixPolarizeBEMGMRES::init() if (randomized) { - RanPark *random = new RanPark(lmp,seed_charge + comm->me); + RanPark *random = new RanPark(lmp, seed_charge + comm->me); for (i = 0; i < 100; i++) random->uniform(); - double sum,tmp = 0; + double sum, tmp = 0; for (i = 0; i < nlocal; i++) { if (induced_charge_idx[i] < 0) continue; - q[i] = ave_charge*(random->uniform() - 0.5); + q[i] = ave_charge * (random->uniform() - 0.5); tmp += q[i]; } - MPI_Allreduce(&tmp,&sum,1,MPI_DOUBLE,MPI_SUM,world); - sum /= (double)num_induced_charges; + MPI_Allreduce(&tmp, &sum, 1, MPI_DOUBLE, MPI_SUM, world); + sum /= (double) num_induced_charges; tmp = 0; for (i = 0; i < nlocal; i++) { @@ -230,20 +231,17 @@ void FixPolarizeBEMGMRES::init() q[i] -= sum; tmp += q[i]; } - MPI_Allreduce(&tmp,&sum,1,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&tmp, &sum, 1, MPI_DOUBLE, MPI_SUM, world); - if (comm->me == 0) { - if (screen) fprintf(screen, "ave induced charge q = %g\n", sum); - } + if (comm->me == 0) utils::logmesg(lmp, "ave induced charge q = {:.8}\n", sum); delete random; } - if (comm->me == 0) { - if (screen) fprintf(screen,"GMRES solver for %d induced charges " - "using maximum %d q-vectors\n",num_induced_charges,mr); - if (logfile) fprintf(logfile,"GMRES solver for %d induced charges " - "using maximum %d q-vectors\n",num_induced_charges,mr); - } + if (comm->me == 0) + utils::logmesg(lmp, + "GMRES solver for {} induced charges " + "using maximum {} q-vectors\n", + num_induced_charges, mr); } /* ---------------------------------------------------------------------- */ @@ -252,30 +250,33 @@ void FixPolarizeBEMGMRES::setup(int vflag) { // check if the pair styles in use are compatible - if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric") == 0) - efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric/omp") == 0) - efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/msm/dielectric") == 0) - efield_pair = ((PairLJCutCoulMSMDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric") == 0) - efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric/omp") == 0) - efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"coul/long/dielectric") == 0) - efield_pair = ((PairCoulLongDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"coul/cut/dielectric") == 0) - efield_pair = ((PairCoulCutDielectric*)force->pair)->efield; - else error->all(FLERR,"Pair style not compatible with fix polarize"); + if (strcmp(force->pair_style, "lj/cut/coul/long/dielectric") == 0) + efield_pair = ((PairLJCutCoulLongDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/long/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulLongDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/msm/dielectric") == 0) + efield_pair = ((PairLJCutCoulMSMDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/cut/dielectric") == 0) + efield_pair = ((PairLJCutCoulCutDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/cut/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulCutDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "coul/long/dielectric") == 0) + efield_pair = ((PairCoulLongDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "coul/cut/dielectric") == 0) + efield_pair = ((PairCoulCutDielectric *) force->pair)->efield; + else + error->all(FLERR, "Pair style not compatible with fix polarize"); if (kspaceflag) { if (force->kspace) { - if (strcmp(force->kspace_style,"pppm/dielectric") == 0) - efield_kspace = ((PPPMDielectric*)force->kspace)->efield; - else if (strcmp(force->kspace_style,"msm/dielectric") == 0) - efield_kspace = ((MSMDielectric*)force->kspace)->efield; - else error->all(FLERR,"Kspace style not compatible with fix polarize/bem/gmres"); - } else error->all(FLERR,"No Kspace style available for fix polarize/bem/gmres"); + if (strcmp(force->kspace_style, "pppm/dielectric") == 0) + efield_kspace = ((PPPMDielectric *) force->kspace)->efield; + else if (strcmp(force->kspace_style, "msm/dielectric") == 0) + efield_kspace = ((MSMDielectric *) force->kspace)->efield; + else + error->all(FLERR, "Kspace style not compatible with fix polarize/bem/gmres"); + } else + error->all(FLERR, "No Kspace style available for fix polarize/bem/gmres"); } first = 1; @@ -336,8 +337,8 @@ void FixPolarizeBEMGMRES::compute_induced_charges() // Note: the right-hand side (b) is in the unit of charge density force_clear(); - force->pair->compute(eflag,vflag); - if (kspaceflag) force->kspace->compute(eflag,vflag); + force->pair->compute(eflag, vflag); + if (kspaceflag) force->kspace->compute(eflag, vflag); if (force->newton) comm->reverse_comm(); for (int i = 0; i < num_induced_charges; i++) buffer[i] = 0; @@ -357,12 +358,12 @@ void FixPolarizeBEMGMRES::compute_induced_charges() Ey += efield_kspace[i][1]; Ez += efield_kspace[i][2]; } - double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / epsilon[i]; + double dot = (Ex * norm[i][0] + Ey * norm[i][1] + Ez * norm[i][2]) / epsilon[i]; double sigma_f = q_real[i] / area[i]; - buffer[idx] = (1 - em[i]) * sigma_f - epsilon0 * ed[i] * dot / (4*MY_PI); + buffer[idx] = (1 - em[i]) * sigma_f - epsilon0 * ed[i] * dot / (4 * MY_PI); } - MPI_Allreduce(buffer,rhs,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(buffer, rhs, num_induced_charges, MPI_DOUBLE, MPI_SUM, world); // compute the initial residual r before iteration // while it seems that assigning induced charges to the last values @@ -391,7 +392,7 @@ void FixPolarizeBEMGMRES::compute_induced_charges() for (int i = 0; i < nlocal; i++) { if (induced_charge_idx[i] >= 0) { int idx = induced_charge_idx[i]; - q[i] = induced_charges[idx]*area[i] + q_real[i]; + q[i] = induced_charges[idx] * area[i] + q_real[i]; } else { q[i] = q_backup[i]; } @@ -400,22 +401,21 @@ void FixPolarizeBEMGMRES::compute_induced_charges() comm->forward_comm_fix(this); if (first) first = 0; - } /* ---------------------------------------------------------------------- */ -void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) +void FixPolarizeBEMGMRES::gmres_solve(double *x, double *r) { - int i,j,k,k_copy,n,itr; - double av,htmp,mu,rho_tol; + int i, j, k, k_copy, n, itr; + double av, htmp, mu, rho_tol; double delta = 1.0e-03; n = mat_dim; // compute the relative tolerance // rho = norm(r) - rho = sqrt( vec_dot(r, r, n) ); + rho = sqrt(vec_dot(r, r, n)); rho_tol = rho * tol_rel; // the outer loop to itr_max @@ -425,15 +425,14 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) // the first vector v (i.e. v[0]) is the updated residual normalized - for (i = 0; i < n; i++) - v[i+0*n] = r[i] / rho; + for (i = 0; i < n; i++) v[i + 0 * n] = r[i] / rho; g[0] = rho; for (i = 1; i <= mr; i++) g[i] = 0.0; // fill up h with zero - memset(h, 0, (mr+1)*mr*sizeof(double)); + memset(h, 0, (mr + 1) * mr * sizeof(double)); // the inner loop k = 1..(n-1) // build up the k-th Krylov space, @@ -448,43 +447,40 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) // here is the tricky part: v(k-1) plays a role as "charges" // matvec(a, v+(k-1)*n, v+k*n, n); - apply_operator(v+(k-1)*n, v+k*n, n); + apply_operator(v + (k - 1) * n, v + k * n, n); // compute the norm of the vector v(k) - av = sqrt(vec_dot(v+k*n, v+k*n, n)); + av = sqrt(vec_dot(v + k * n, v + k * n, n)); // Arnoldi iteration to find v's // orthogonalize the k vectors v(1) . . . v(k) for (j = 1; j <= k; j++) { - h[(j-1)+(k-1)*(mr+1)] = vec_dot(v+k*n, v+(j-1)*n, n); + h[(j - 1) + (k - 1) * (mr + 1)] = vec_dot(v + k * n, v + (j - 1) * n, n); for (i = 0; i < n; i++) - v[i+k*n] = v[i+k*n] - h[(j-1)+(k-1)*(mr+1)] * v[i+(j-1)*n]; + v[i + k * n] = v[i + k * n] - h[(j - 1) + (k - 1) * (mr + 1)] * v[i + (j - 1) * n]; } // compute the norm of the newly created vector v(k) - h[k+(k-1)*(mr+1)] = sqrt(vec_dot(v+k*n, v+k*n, n)); + h[k + (k - 1) * (mr + 1)] = sqrt(vec_dot(v + k * n, v + k * n, n)); // if the norm is close to zero, repeat the above orthogonalization - if ((av + delta * h[k+(k-1)*(mr+1)]) == av) { + if ((av + delta * h[k + (k - 1) * (mr + 1)]) == av) { for (j = 1; j <= k; j++) { - htmp = vec_dot(v+k*n, v+(j-1)*n, n); - h[(j-1)+(k-1)*(mr+1)] = h[(j-1)+(k-1)*(mr+1)] + htmp; - for (i = 0; i < n; i++) - v[i+k*n] = v[i+k*n] - htmp * v[i+(j-1)*n]; + htmp = vec_dot(v + k * n, v + (j - 1) * n, n); + h[(j - 1) + (k - 1) * (mr + 1)] = h[(j - 1) + (k - 1) * (mr + 1)] + htmp; + for (i = 0; i < n; i++) v[i + k * n] = v[i + k * n] - htmp * v[i + (j - 1) * n]; } - h[k+(k-1)*(mr+1)] = sqrt( vec_dot(v+k*n, v+k*n, n) ); + h[k + (k - 1) * (mr + 1)] = sqrt(vec_dot(v + k * n, v + k * n, n)); } // if the norm of v(k) is nonzero, normalize v(k) - if (h[k+(k-1)*(mr+1)] != 0.0) { - for (i = 0; i < n; i++) { - v[i+k*n] = v[i+k*n] / h[k+(k-1)*(mr+1)]; - } + if (h[k + (k - 1) * (mr + 1)] != 0.0) { + for (i = 0; i < n; i++) { v[i + k * n] = v[i + k * n] / h[k + (k - 1) * (mr + 1)]; } } // if k is not the first iteration, @@ -495,71 +491,65 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) // update y(i-1) <- h(k-1, i-1) for i = 1...(k+1) - for (i = 1; i <= k + 1; i++) - y[i-1] = h[(i-1)+(k-1)*(mr+1)]; + for (i = 1; i <= k + 1; i++) y[i - 1] = h[(i - 1) + (k - 1) * (mr + 1)]; // apply the Given rotation to y[j-1] and y[j] for j = 1..(k-1) - for (j = 1; j <= k - 1; j++) - mult_givens(c[j-1], s[j-1], j-1, y); + for (j = 1; j <= k - 1; j++) mult_givens(c[j - 1], s[j - 1], j - 1, y); // update h(k-1, i-1) <- y(i-1) for i = 1..(k_1) - for (i = 1; i <= k + 1; i++) - h[i-1+(k-1)*(mr+1)] = y[i-1]; + for (i = 1; i <= k + 1; i++) h[i - 1 + (k - 1) * (mr + 1)] = y[i - 1]; } // compute cosine and sine terms of the Given rotations - mu = sqrt(h[(k-1)+(k-1)*(mr+1)]*h[(k-1)+(k-1)*(mr+1)] - + h[ k +(k-1)*(mr+1)]*h[ k +(k-1)*(mr+1)]); - c[k-1] = h[(k-1)+(k-1)*(mr+1)] / mu; - s[k-1] = -h[ k +(k-1)*(mr+1)] / mu; + mu = sqrt(h[(k - 1) + (k - 1) * (mr + 1)] * h[(k - 1) + (k - 1) * (mr + 1)] + + h[k + (k - 1) * (mr + 1)] * h[k + (k - 1) * (mr + 1)]); + c[k - 1] = h[(k - 1) + (k - 1) * (mr + 1)] / mu; + s[k - 1] = -h[k + (k - 1) * (mr + 1)] / mu; // update h(k-1,k-1) and set h(k-1,k) to zero - h[(k-1)+(k-1)*(mr+1)] = c[k-1] * h[(k-1)+(k-1)*(mr+1)] - - s[k-1] * h[ k +(k-1)*(mr+1)]; - h[k +(k-1)*(mr+1)] = 0; + h[(k - 1) + (k - 1) * (mr + 1)] = + c[k - 1] * h[(k - 1) + (k - 1) * (mr + 1)] - s[k - 1] * h[k + (k - 1) * (mr + 1)]; + h[k + (k - 1) * (mr + 1)] = 0; // apply the Givens rotation to g[k-1] and g[k] - mult_givens(c[k-1], s[k-1], k-1, g); + mult_givens(c[k - 1], s[k - 1], k - 1, g); // compute the norm of the residual rho = fabs(g[k]); - #ifdef _POLARIZE_DEBUG +#ifdef _POLARIZE_DEBUG if (comm->me == 0) { char message[256]; - sprintf(message, "itr = %d: k = %d, norm(r) = %g norm(b) = %g", - itr, k, rho, normb); + sprintf(message, "itr = %d: k = %d, norm(r) = %g norm(b) = %g", itr, k, rho, normb); error->warning(FLERR, message); } - #endif +#endif - if (rho <= rho_tol && rho <= tol_abs) - break; + if (rho <= rho_tol && rho <= tol_abs) break; } k = k_copy - 1; // compute the estimate y from h - y[k] = g[k] / h[k + k*(mr+1)]; + y[k] = g[k] / h[k + k * (mr + 1)]; for (i = k; i >= 1; i--) { - y[i-1] = g[i-1]; + y[i - 1] = g[i - 1]; for (j = i + 1; j <= k + 1; j++) - y[i-1] = y[i-1] - h[(i-1)+(j-1)*(mr+1)] * y[j-1]; - y[i-1] = y[i-1] / h[(i-1)+(i-1)*(mr+1)]; + y[i - 1] = y[i - 1] - h[(i - 1) + (j - 1) * (mr + 1)] * y[j - 1]; + y[i - 1] = y[i - 1] / h[(i - 1) + (i - 1) * (mr + 1)]; } // update x at the current iteration: x <- Q(n by k) * y (k by 1) for (i = 1; i <= n; i++) { - for (j = 1; j <= k + 1; j++) - x[i-1] = x[i-1] + v[(i-1)+(j-1)*n] * y[j-1]; + for (j = 1; j <= k + 1; j++) x[i - 1] = x[i - 1] + v[(i - 1) + (j - 1) * n] * y[j - 1]; } // update the residual with the updated induced charges (x) @@ -568,16 +558,15 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) // rho = norm(r) - rho = sqrt( vec_dot(r, r, n) ); + rho = sqrt(vec_dot(r, r, n)); - #ifdef _POLARIZE_DEBUG +#ifdef _POLARIZE_DEBUG if (comm->me == 0) { char message[256]; - sprintf(message, "itr = %d: norm(r) = %g norm(b) = %g", - itr, rho, normb); + sprintf(message, "itr = %d: norm(r) = %g norm(b) = %g", itr, rho, normb); error->warning(FLERR, message); } - #endif +#endif // Barros et al. suggested the condition: norm(r) < EPSILON norm(b) @@ -596,7 +585,7 @@ void FixPolarizeBEMGMRES::gmres_solve(double* x, double* r) matvec(A, v(k-1), v(k), n); ------------------------------------------------------------------------- */ -void FixPolarizeBEMGMRES::apply_operator(double* w, double* Aw, int n) +void FixPolarizeBEMGMRES::apply_operator(double *w, double *Aw, int n) { int i; double *q = atom->q; @@ -621,7 +610,7 @@ void FixPolarizeBEMGMRES::apply_operator(double* w, double* Aw, int n) q[i] = 0; } else { int idx = induced_charge_idx[i]; - q[i] = w[idx]*area[i]; + q[i] = w[idx] * area[i]; } } @@ -630,8 +619,8 @@ void FixPolarizeBEMGMRES::apply_operator(double* w, double* Aw, int n) // compute the electrical field due to w*area: y = A (w*area) force_clear(); - force->pair->compute(eflag,vflag); - if (kspaceflag) force->kspace->compute(eflag,vflag); + force->pair->compute(eflag, vflag); + if (kspaceflag) force->kspace->compute(eflag, vflag); if (force->newton) comm->reverse_comm(); // now efield is the electrical field due to induced charges only @@ -652,11 +641,11 @@ void FixPolarizeBEMGMRES::apply_operator(double* w, double* Aw, int n) Ey += efield_kspace[i][1]; Ez += efield_kspace[i][2]; } - double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / epsilon[i]; - buffer[idx] = em[i] * w[idx] + epsilon0 * ed[i] * dot / (4*MY_PI); + double dot = (Ex * norm[i][0] + Ey * norm[i][1] + Ez * norm[i][2]) / epsilon[i]; + buffer[idx] = em[i] * w[idx] + epsilon0 * ed[i] * dot / (4 * MY_PI); } - MPI_Allreduce(buffer,Aw,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(buffer, Aw, num_induced_charges, MPI_DOUBLE, MPI_SUM, world); } /* ---------------------------------------------------------------------- @@ -666,7 +655,7 @@ void FixPolarizeBEMGMRES::apply_operator(double* w, double* Aw, int n) using Eq. (60) in Barros et al. ------------------------------------------------------------------------ */ -void FixPolarizeBEMGMRES::update_residual(double* w, double* r, int n) +void FixPolarizeBEMGMRES::update_residual(double *w, double *r, int n) { int i; double *q = atom->q; @@ -692,15 +681,15 @@ void FixPolarizeBEMGMRES::update_residual(double* w, double* r, int n) q[i] = q_backup[i]; } else { int idx = induced_charge_idx[i]; - q[i] = w[idx]*area[i] + q_real[i]; + q[i] = w[idx] * area[i] + q_real[i]; } } comm->forward_comm_fix(this); force_clear(); - force->pair->compute(eflag,vflag); - if (kspaceflag) force->kspace->compute(eflag,vflag); + force->pair->compute(eflag, vflag); + if (kspaceflag) force->kspace->compute(eflag, vflag); if (force->newton) comm->reverse_comm(); // compute the residual according to Eq. (60) in Barros et al. @@ -725,13 +714,12 @@ void FixPolarizeBEMGMRES::update_residual(double* w, double* r, int n) Ey += efield_kspace[i][1]; Ez += efield_kspace[i][2]; } - double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / epsilon[i]; + double dot = (Ex * norm[i][0] + Ey * norm[i][1] + Ez * norm[i][2]) / epsilon[i]; double sigma_f = q_real[i] / area[i]; - buffer[idx] = (1 - em[i]) * sigma_f - em[i] * w[idx] - - epsilon0 * ed[i] * dot / (4*MY_PI); + buffer[idx] = (1 - em[i]) * sigma_f - em[i] * w[idx] - epsilon0 * ed[i] * dot / (4 * MY_PI); } - MPI_Allreduce(buffer,r,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(buffer, r, num_induced_charges, MPI_DOUBLE, MPI_SUM, world); } /* ---------------------------------------------------------------------- */ @@ -742,15 +730,15 @@ void FixPolarizeBEMGMRES::force_clear() if (force->newton) nbytes += sizeof(double) * atom->nghost; if (nbytes) { - memset(&atom->f[0][0],0,3*nbytes); - if (torqueflag) memset(&atom->torque[0][0],0,3*nbytes); - if (extraflag) atom->avec->force_clear(0,nbytes); + memset(&atom->f[0][0], 0, 3 * nbytes); + if (torqueflag) memset(&atom->torque[0][0], 0, 3 * nbytes); + if (extraflag) atom->avec->force_clear(0, nbytes); } } /* ---------------------------------------------------------------------- */ -double FixPolarizeBEMGMRES::vec_dot(const double* a1, const double* a2, int n) +double FixPolarizeBEMGMRES::vec_dot(const double *a1, const double *a2, int n) { double value = 0.0; for (int i = 0; i < n; i++) value += (a1[i] * a2[i]); @@ -764,18 +752,18 @@ double FixPolarizeBEMGMRES::vec_dot(const double* a1, const double* a2, int n) double FixPolarizeBEMGMRES::memory_usage() { double bytes = 0; - bytes += mat_dim*sizeof(double); // induced_charges - bytes += mat_dim*sizeof(double); // buffer - bytes += mat_dim*sizeof(double); // rhs - bytes += atom->nmax*sizeof(double); // induced_charge_idx - bytes += atom->nmax*sizeof(double); // q_backup - bytes += mr*sizeof(double); // c - bytes += (mr+1)*sizeof(double); // g - bytes += (mr+1)*mr*sizeof(double); // h - bytes += mat_dim*sizeof(double); // r - bytes += mr*(mr+1)*sizeof(double); // s - bytes += mat_dim*sizeof(double); // v - bytes += (mr+1)*mr*sizeof(double); // y + bytes += mat_dim * sizeof(double); // induced_charges + bytes += mat_dim * sizeof(double); // buffer + bytes += mat_dim * sizeof(double); // rhs + bytes += atom->nmax * sizeof(double); // induced_charge_idx + bytes += atom->nmax * sizeof(double); // q_backup + bytes += mr * sizeof(double); // c + bytes += (mr + 1) * sizeof(double); // g + bytes += (mr + 1) * mr * sizeof(double); // h + bytes += mat_dim * sizeof(double); // r + bytes += mr * (mr + 1) * sizeof(double); // s + bytes += mat_dim * sizeof(double); // v + bytes += (mr + 1) * mr * sizeof(double); // y return bytes; } @@ -784,12 +772,12 @@ double FixPolarizeBEMGMRES::memory_usage() void FixPolarizeBEMGMRES::allocate() { memory->create(c, mr, "polarize:c"); - memory->create(g, mr+1, "polarize:g"); - memory->create(h, (mr+1)*mr, "polarize:h"); + memory->create(g, mr + 1, "polarize:g"); + memory->create(h, (mr + 1) * mr, "polarize:h"); memory->create(r, mat_dim, "polarize:r"); memory->create(s, mr, "polarize:s"); - memory->create(v, mat_dim*(mr+1), "polarize:v"); - memory->create(y, mr+1, "polarize:y"); + memory->create(v, mat_dim * (mr + 1), "polarize:v"); + memory->create(y, mr + 1, "polarize:y"); } /* ---------------------------------------------------------------------- */ @@ -811,45 +799,49 @@ int FixPolarizeBEMGMRES::modify_param(int narg, char **arg) { int iarg = 0; while (iarg < narg) { - if (strcmp(arg[iarg],"itr_max") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); - itr_max = utils::numeric(FLERR,arg[iarg+1],false,lmp); + if (strcmp(arg[iarg], "itr_max") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal fix_modify command"); + itr_max = utils::numeric(FLERR, arg[iarg + 1], false, lmp); iarg += 2; - } else if (strcmp(arg[iarg],"mr") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); - mr = utils::numeric(FLERR,arg[iarg+1],false,lmp); + } else if (strcmp(arg[iarg], "mr") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal fix_modify command"); + mr = utils::numeric(FLERR, arg[iarg + 1], false, lmp); iarg += 2; - } else if (strcmp(arg[iarg],"kspace") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); - if (strcmp(arg[iarg+1],"yes") == 0) kspaceflag = 1; - else if (strcmp(arg[iarg+1],"no") == 0) kspaceflag = 0; - else error->all(FLERR,"Illegal fix_modify command for fix polarize"); + } else if (strcmp(arg[iarg], "kspace") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal fix_modify command"); + if (strcmp(arg[iarg + 1], "yes") == 0) + kspaceflag = 1; + else if (strcmp(arg[iarg + 1], "no") == 0) + kspaceflag = 0; + else + error->all(FLERR, "Illegal fix_modify command for fix polarize"); iarg += 2; - } else if (strcmp(arg[iarg],"dielectrics") == 0) { - if (iarg+6 > narg) error->all(FLERR,"Illegal fix_modify command"); - double epsiloni=-1, areai=-1; - double qreali=0; - int set_charge=0; - double ediff = utils::numeric(FLERR,arg[iarg+1],false,lmp); - double emean = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (strcmp(arg[iarg+3],"NULL") != 0) - epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); - if (strcmp(arg[iarg+4],"NULL") != 0) - areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); - if (strcmp(arg[iarg+5],"NULL") != 0) { - qreali = utils::numeric(FLERR,arg[iarg+5],false,lmp); + } else if (strcmp(arg[iarg], "dielectrics") == 0) { + if (iarg + 6 > narg) error->all(FLERR, "Illegal fix_modify command"); + double epsiloni = -1, areai = -1; + double qreali = 0; + int set_charge = 0; + double ediff = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + double emean = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + if (strcmp(arg[iarg + 3], "NULL") != 0) + epsiloni = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + if (strcmp(arg[iarg + 4], "NULL") != 0) + areai = utils::numeric(FLERR, arg[iarg + 4], false, lmp); + if (strcmp(arg[iarg + 5], "NULL") != 0) { + qreali = utils::numeric(FLERR, arg[iarg + 5], false, lmp); set_charge = 1; } set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, qreali); iarg += 6; - } else if (strcmp(arg[iarg],"rand") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix_modify command"); - ave_charge = utils::numeric(FLERR,arg[iarg+1],false,lmp); - seed_charge = utils::numeric(FLERR,arg[iarg+2],false,lmp); + } else if (strcmp(arg[iarg], "rand") == 0) { + if (iarg + 3 > narg) error->all(FLERR, "Illegal fix_modify command"); + ave_charge = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + seed_charge = utils::numeric(FLERR, arg[iarg + 2], false, lmp); randomized = 1; iarg += 3; - } else error->all(FLERR,"Illegal fix_modify command"); + } else + error->all(FLERR, "Illegal fix_modify command"); } return iarg; @@ -862,8 +854,8 @@ int FixPolarizeBEMGMRES::modify_param(int narg, char **arg) void FixPolarizeBEMGMRES::grow_arrays(int n) { if (n > nmax) nmax = n; - memory->grow(induced_charge_idx,nmax,"polarize:induced_charge_idx"); - memory->grow(q_backup,nmax,"polarize:q_backup"); + memory->grow(induced_charge_idx, nmax, "polarize:induced_charge_idx"); + memory->grow(q_backup, nmax, "polarize:q_backup"); } /* ---------------------------------------------------------------------- @@ -886,8 +878,7 @@ void FixPolarizeBEMGMRES::set_arrays(int i) /* ---------------------------------------------------------------------- */ -int FixPolarizeBEMGMRES::pack_forward_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +int FixPolarizeBEMGMRES::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { int m; for (m = 0; m < n; m++) buf[m] = atom->q[list[m]]; @@ -929,17 +920,20 @@ int FixPolarizeBEMGMRES::unpack_exchange(int nlocal, double *buf) double FixPolarizeBEMGMRES::compute_vector(int n) { - if (n == 0) return iterations; - else if (n == 1) return rho; - else return 0; + if (n == 0) + return iterations; + else if (n == 1) + return rho; + else + return 0; } /* ---------------------------------------------------------------------- set dielectric params for the atoms in the group ------------------------------------------------------------------------- */ -void FixPolarizeBEMGMRES::set_dielectric_params(double ediff, double emean, - double epsiloni, double areai, int set_charge, double qvalue) +void FixPolarizeBEMGMRES::set_dielectric_params(double ediff, double emean, double epsiloni, + double areai, int set_charge, double qvalue) { double *area = atom->area; double *ed = atom->ed; diff --git a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp index 04f66a40e1..325e3044ff 100644 --- a/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_bem_icc.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories @@ -43,7 +42,6 @@ #include "pair_lj_cut_coul_msm_dielectric.h" #include "pppm_dielectric.h" #include "random_park.h" -//#include "timer.h" #include "update.h" #include @@ -57,19 +55,18 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -FixPolarizeBEMICC::FixPolarizeBEMICC(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg) +FixPolarizeBEMICC::FixPolarizeBEMICC(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg < 5) error->all(FLERR,"Illegal fix polarize/bem/icc command"); + if (narg < 5) error->all(FLERR, "Illegal fix polarize/bem/icc command"); avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"Fix polarize requires atom style dielectric"); + if (!avec) error->all(FLERR, "Fix polarize requires atom style dielectric"); // parse required arguments - nevery = utils::inumeric(FLERR,arg[3],false,lmp); - if (nevery < 0) error->all(FLERR,"Illegal fix polarize/bem/icc command"); - double tol = utils::numeric(FLERR,arg[4],false,lmp); + nevery = utils::inumeric(FLERR, arg[3], false, lmp); + if (nevery < 0) error->all(FLERR, "Illegal fix polarize/bem/icc command"); + double tol = utils::numeric(FLERR, arg[4], false, lmp); tol_abs = tol_rel = tol; itr_max = 20; @@ -97,9 +94,7 @@ FixPolarizeBEMICC::FixPolarizeBEMICC(LAMMPS *lmp, int narg, char **arg) : /* ---------------------------------------------------------------------- */ -FixPolarizeBEMICC::~FixPolarizeBEMICC() -{ -} +FixPolarizeBEMICC::~FixPolarizeBEMICC() {} /* ---------------------------------------------------------------------- */ @@ -115,10 +110,7 @@ int FixPolarizeBEMICC::setmask() void FixPolarizeBEMICC::init() { int ncount = group->count(igroup); - if (comm->me == 0) { - if (screen) fprintf(screen,"BEM/ICC solver for %d induced charges\n", ncount); - if (logfile) fprintf(logfile,"BEM/ICC solver for %d induced charges\n", ncount); - } + if (comm->me == 0) utils::logmesg(lmp, "BEM/ICC solver for {} induced charges\n", ncount); // initialize random induced charges with zero sum @@ -129,16 +121,16 @@ void FixPolarizeBEMICC::init() int *mask = atom->mask; int nlocal = atom->nlocal; - RanPark *random = new RanPark(lmp,seed_charge + comm->me); + RanPark *random = new RanPark(lmp, seed_charge + comm->me); for (i = 0; i < 100; i++) random->uniform(); - double sum,tmp = 0; + double sum, tmp = 0; for (i = 0; i < nlocal; i++) { if (!(mask[i] & groupbit)) continue; - q[i] = ave_charge*(random->uniform() - 0.5); + q[i] = ave_charge * (random->uniform() - 0.5); tmp += q[i]; } - MPI_Allreduce(&tmp,&sum,1,MPI_DOUBLE,MPI_SUM,world); - sum /= (double)ncount; + MPI_Allreduce(&tmp, &sum, 1, MPI_DOUBLE, MPI_SUM, world); + sum /= (double) ncount; tmp = 0; for (i = 0; i < nlocal; i++) { @@ -146,11 +138,10 @@ void FixPolarizeBEMICC::init() q[i] -= sum; tmp += q[i]; } - MPI_Allreduce(&tmp,&sum,1,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&tmp, &sum, 1, MPI_DOUBLE, MPI_SUM, world); delete random; } - } /* ---------------------------------------------------------------------- */ @@ -159,37 +150,39 @@ void FixPolarizeBEMICC::setup(int vflag) { // check if the pair styles in use are compatible - if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric") == 0) - efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric/omp") == 0) - efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/msm/dielectric") == 0) - efield_pair = ((PairLJCutCoulMSMDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric") == 0) - efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric/omp") == 0) - efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"coul/long/dielectric") == 0) - efield_pair = ((PairCoulLongDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"coul/cut/dielectric") == 0) - efield_pair = ((PairCoulCutDielectric*)force->pair)->efield; - else error->all(FLERR,"Pair style not compatible with fix polarize/bem/icc"); + if (strcmp(force->pair_style, "lj/cut/coul/long/dielectric") == 0) + efield_pair = ((PairLJCutCoulLongDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/long/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulLongDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/msm/dielectric") == 0) + efield_pair = ((PairLJCutCoulMSMDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/cut/dielectric") == 0) + efield_pair = ((PairLJCutCoulCutDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/cut/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulCutDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "coul/long/dielectric") == 0) + efield_pair = ((PairCoulLongDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "coul/cut/dielectric") == 0) + efield_pair = ((PairCoulCutDielectric *) force->pair)->efield; + else + error->all(FLERR, "Pair style not compatible with fix polarize/bem/icc"); // check if kspace is used for force computation if (force->kspace) { kspaceflag = 1; - if (strcmp(force->kspace_style,"pppm/dielectric") == 0) - efield_kspace = ((PPPMDielectric*)force->kspace)->efield; - else if (strcmp(force->kspace_style,"msm/dielectric") == 0) - efield_kspace = ((MSMDielectric*)force->kspace)->efield; - else error->all(FLERR,"Kspace style not compatible with fix polarize/bem/icc"); + if (strcmp(force->kspace_style, "pppm/dielectric") == 0) + efield_kspace = ((PPPMDielectric *) force->kspace)->efield; + else if (strcmp(force->kspace_style, "msm/dielectric") == 0) + efield_kspace = ((MSMDielectric *) force->kspace)->efield; + else + error->all(FLERR, "Kspace style not compatible with fix polarize/bem/icc"); } else { - if (kspaceflag == 1) { // users specified kspace yes - error->warning(FLERR,"No Kspace style available for fix polarize/bem/icc"); + if (kspaceflag == 1) { // users specified kspace yes + error->warning(FLERR, "No Kspace style available for fix polarize/bem/icc"); kspaceflag = 0; } } @@ -239,8 +232,8 @@ void FixPolarizeBEMICC::compute_induced_charges() // Let's choose that epsilon[i] = em[i] for the interface particles force_clear(); - force->pair->compute(eflag,vflag); - if (kspaceflag) force->kspace->compute(eflag,vflag); + force->pair->compute(eflag, vflag); + if (kspaceflag) force->kspace->compute(eflag, vflag); if (force->newton) comm->reverse_comm(); int i10 = 0; @@ -257,7 +250,7 @@ void FixPolarizeBEMICC::compute_induced_charges() } // divide (Ex,Ey,Ez) by epsilon[i] here - double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / (2*MY_PI) / epsilon[i]; + double dot = (Ex * norm[i][0] + Ey * norm[i][1] + Ez * norm[i][2]) / (2 * MY_PI) / epsilon[i]; double q_free = q_real[i]; double q_bound = 0; q_bound = (1.0 / em[i] - 1) * q_free - epsilon0 * (ed[i] / (2 * em[i])) * dot * area[i]; @@ -271,8 +264,8 @@ void FixPolarizeBEMICC::compute_induced_charges() for (itr = 0; itr < itr_max; itr++) { force_clear(); - force->pair->compute(eflag,vflag); - if (kspaceflag) force->kspace->compute(eflag,vflag); + force->pair->compute(eflag, vflag); + if (kspaceflag) force->kspace->compute(eflag, vflag); if (force->newton) comm->reverse_comm(); double tol = 0; @@ -294,10 +287,10 @@ void FixPolarizeBEMICC::compute_induced_charges() // note the area[i] is included here to ensure correct charge unit // for direct use in force/efield compute - double dot = (Ex*norm[i][0] + Ey*norm[i][1] + Ez*norm[i][2]) / (4*MY_PI) / epsilon[i]; + double dot = (Ex * norm[i][0] + Ey * norm[i][1] + Ez * norm[i][2]) / (4 * MY_PI) / epsilon[i]; double q_bound = q[i] - q_free; - q_bound = (1 - omega) * q_bound + omega * ((1.0 / em[i] - 1) * q_free - - epsilon0 * (ed[i] / em[i]) * dot * area[i]); + q_bound = (1 - omega) * q_bound + + omega * ((1.0 / em[i] - 1) * q_free - epsilon0 * (ed[i] / em[i]) * dot * area[i]); q[i] = q_free + q_bound; // Eq. (11) in Tyagi et al., with f from Eq. (6) @@ -314,20 +307,20 @@ void FixPolarizeBEMICC::compute_induced_charges() //q[i] = (1 - omega) * q[i] - omega * epsilon0 * f * dot * area[i]; double delta = fabs(qtmp - q_bound); - double r = (fabs(qtmp) > 0) ? delta/fabs(qtmp) : 0; + double r = (fabs(qtmp) > 0) ? delta / fabs(qtmp) : 0; if (tol < r) tol = r; - #ifdef _POLARIZE_DEBUG - //printf("i = %d: q_bound = %f \n", i, q_bound); - #endif +#ifdef _POLARIZE_DEBUG +//printf("i = %d: q_bound = %f \n", i, q_bound); +#endif } comm->forward_comm_fix(this); - MPI_Allreduce(&tol,&rho,1,MPI_DOUBLE,MPI_MAX,world); - #ifdef _POLARIZE_DEBUG + MPI_Allreduce(&tol, &rho, 1, MPI_DOUBLE, MPI_MAX, world); +#ifdef _POLARIZE_DEBUG printf("itr = %d: rho = %f\n", itr, rho); - #endif +#endif if (itr > 0 && rho < tol_rel) break; } @@ -342,9 +335,9 @@ void FixPolarizeBEMICC::force_clear() if (force->newton) nbytes += sizeof(double) * atom->nghost; if (nbytes) { - memset(&atom->f[0][0],0,3*nbytes); - if (torqueflag) memset(&atom->torque[0][0],0,3*nbytes); - if (extraflag) atom->avec->force_clear(0,nbytes); + memset(&atom->f[0][0], 0, 3 * nbytes); + if (torqueflag) memset(&atom->torque[0][0], 0, 3 * nbytes); + if (extraflag) atom->avec->force_clear(0, nbytes); } } @@ -354,46 +347,49 @@ int FixPolarizeBEMICC::modify_param(int narg, char **arg) { int iarg = 0; while (iarg < narg) { - if (strcmp(arg[iarg],"itr_max") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); - itr_max = utils::numeric(FLERR,arg[iarg+1],false,lmp); + if (strcmp(arg[iarg], "itr_max") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal fix_modify command"); + itr_max = utils::numeric(FLERR, arg[iarg + 1], false, lmp); iarg += 2; - } else if (strcmp(arg[iarg],"omega") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); - omega = utils::numeric(FLERR,arg[iarg+1],false,lmp); + } else if (strcmp(arg[iarg], "omega") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal fix_modify command"); + omega = utils::numeric(FLERR, arg[iarg + 1], false, lmp); iarg += 2; - } else if (strcmp(arg[iarg],"kspace") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); - if (strcmp(arg[iarg+1],"yes") == 0) kspaceflag = 1; - else if (strcmp(arg[iarg+1],"no") == 0) kspaceflag = 0; - else error->all(FLERR,"Illegal fix_modify command for fix polarize"); + } else if (strcmp(arg[iarg], "kspace") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal fix_modify command"); + if (strcmp(arg[iarg + 1], "yes") == 0) + kspaceflag = 1; + else if (strcmp(arg[iarg + 1], "no") == 0) + kspaceflag = 0; + else + error->all(FLERR, "Illegal fix_modify command for fix polarize"); iarg += 2; - } else if (strcmp(arg[iarg],"dielectrics") == 0) { - if (iarg+6 > narg) error->all(FLERR,"Illegal fix_modify command"); - double epsiloni=-1, areai=-1; - double qunscaledi=0; - int set_charge=0; - double ediff = utils::numeric(FLERR,arg[iarg+1],false,lmp); - double emean = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (strcmp(arg[iarg+3],"NULL") != 0) - epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); - if (strcmp(arg[iarg+4],"NULL") != 0) - areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); - if (strcmp(arg[iarg+5],"NULL") != 0) { - qunscaledi = utils::numeric(FLERR,arg[iarg+5],false,lmp); + } else if (strcmp(arg[iarg], "dielectrics") == 0) { + if (iarg + 6 > narg) error->all(FLERR, "Illegal fix_modify command"); + double epsiloni = -1, areai = -1; + double qunscaledi = 0; + int set_charge = 0; + double ediff = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + double emean = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + if (strcmp(arg[iarg + 3], "NULL") != 0) + epsiloni = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + if (strcmp(arg[iarg + 4], "NULL") != 0) + areai = utils::numeric(FLERR, arg[iarg + 4], false, lmp); + if (strcmp(arg[iarg + 5], "NULL") != 0) { + qunscaledi = utils::numeric(FLERR, arg[iarg + 5], false, lmp); set_charge = 1; } - set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, - qunscaledi); + set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, qunscaledi); iarg += 6; - } else if (strcmp(arg[iarg],"rand") == 0) { - if (iarg+3 > narg) error->all(FLERR,"Illegal fix_modify command"); - ave_charge = utils::numeric(FLERR,arg[iarg+1],false,lmp); - seed_charge = utils::numeric(FLERR,arg[iarg+2],false,lmp); + } else if (strcmp(arg[iarg], "rand") == 0) { + if (iarg + 3 > narg) error->all(FLERR, "Illegal fix_modify command"); + ave_charge = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + seed_charge = utils::numeric(FLERR, arg[iarg + 2], false, lmp); randomized = 1; iarg += 3; - } else error->all(FLERR,"Illegal fix_modify command"); + } else + error->all(FLERR, "Illegal fix_modify command"); } return iarg; @@ -401,8 +397,7 @@ int FixPolarizeBEMICC::modify_param(int narg, char **arg) /* ---------------------------------------------------------------------- */ -int FixPolarizeBEMICC::pack_forward_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +int FixPolarizeBEMICC::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { int m; for (m = 0; m < n; m++) buf[m] = atom->q[list[m]]; @@ -421,8 +416,8 @@ void FixPolarizeBEMICC::unpack_forward_comm(int n, int first, double *buf) set dielectric params for the atoms in the group ------------------------------------------------------------------------- */ -void FixPolarizeBEMICC::set_dielectric_params(double ediff, double emean, - double epsiloni, double areai, int set_charge, double qvalue) +void FixPolarizeBEMICC::set_dielectric_params(double ediff, double emean, double epsiloni, + double areai, int set_charge, double qvalue) { double *area = atom->area; double *ed = atom->ed; @@ -450,7 +445,10 @@ void FixPolarizeBEMICC::set_dielectric_params(double ediff, double emean, double FixPolarizeBEMICC::compute_vector(int n) { - if (n == 0) return iterations; - else if (n == 1) return rho; - else return 0; + if (n == 0) + return iterations; + else if (n == 1) + return rho; + else + return 0; } diff --git a/src/USER-DIELECTRIC/fix_polarize_functional.cpp b/src/USER-DIELECTRIC/fix_polarize_functional.cpp index 51d8dc9d94..55fcd98bbe 100644 --- a/src/USER-DIELECTRIC/fix_polarize_functional.cpp +++ b/src/USER-DIELECTRIC/fix_polarize_functional.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/ Sandia National Laboratories @@ -62,7 +61,7 @@ using namespace FixConst; using namespace MathExtra; using namespace MathConst; -enum {REAL2SCALED=0,SCALED2REAL=1}; +enum { REAL2SCALED = 0, SCALED2REAL = 1 }; #define EPSILON 1e-6 @@ -71,18 +70,18 @@ enum {REAL2SCALED=0,SCALED2REAL=1}; /* ---------------------------------------------------------------------- */ FixPolarizeFunctional::FixPolarizeFunctional(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg) + Fix(lmp, narg, arg) { - if (narg < 4) error->all(FLERR,"Illegal fix polarize/functional command"); + if (narg < 4) error->all(FLERR, "Illegal fix polarize/functional command"); avec = (AtomVecDielectric *) atom->style_match("dielectric"); - if (!avec) error->all(FLERR,"Fix polarize/functional requires atom style dielectric"); + if (!avec) error->all(FLERR, "Fix polarize/functional requires atom style dielectric"); - nevery = utils::inumeric(FLERR,arg[3],false,lmp); - if (nevery < 0) error->all(FLERR,"Illegal fix polarize/functional command"); + nevery = utils::inumeric(FLERR, arg[3], false, lmp); + if (nevery < 0) error->all(FLERR, "Illegal fix polarize/functional command"); tolerance = EPSILON; - if (narg == 5) tolerance = utils::numeric(FLERR,arg[4],false,lmp); + if (narg == 5) tolerance = utils::numeric(FLERR, arg[4], false, lmp); comm_forward = 1; nmax = 0; @@ -131,7 +130,7 @@ FixPolarizeFunctional::FixPolarizeFunctional(LAMMPS *lmp, int narg, char **arg) cg_A = nullptr; grow_arrays(atom->nmax); - atom->add_callback(0); // to ensure to work with atom->sort() + atom->add_callback(0); // to ensure to work with atom->sort() } /* ---------------------------------------------------------------------- */ @@ -151,7 +150,7 @@ FixPolarizeFunctional::~FixPolarizeFunctional() memory->destroy(buffer2); if (allocated) deallocate(); - atom->delete_callback(id,0); + atom->delete_callback(id, 0); } /* ---------------------------------------------------------------------- */ @@ -169,7 +168,7 @@ void FixPolarizeFunctional::init() { // mapping induced charge matrix/vector to atom tags and vice versa - int i,maxtag; + int i, maxtag; double *q = atom->q; int *mask = atom->mask; tagint *tag = atom->tag; @@ -182,26 +181,28 @@ void FixPolarizeFunctional::init() max_tag = -1; for (i = 0; i < nlocal; i++) - if (mask[i] & groupbit) max_tag = MAX(max_tag,tag[i]); + if (mask[i] & groupbit) max_tag = MAX(max_tag, tag[i]); - MPI_Allreduce(&max_tag,&itmp,1,MPI_LMP_TAGINT,MPI_MAX,world); + MPI_Allreduce(&max_tag, &itmp, 1, MPI_LMP_TAGINT, MPI_MAX, world); maxtag = (int) itmp; - memory->create(ncount,maxtag+1,"polarize:ncount"); + memory->create(ncount, maxtag + 1, "polarize:ncount"); for (i = 0; i <= maxtag; i++) ncount[i] = 0; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) ncount[tag[i]]++; - memory->create(tag2mat,maxtag+1,"polarize:tag2mat"); - MPI_Allreduce(ncount,tag2mat,maxtag+1,MPI_INT,MPI_SUM,world); + memory->create(tag2mat, maxtag + 1, "polarize:tag2mat"); + MPI_Allreduce(ncount, tag2mat, maxtag + 1, MPI_INT, MPI_SUM, world); num_induced_charges = 0; for (i = 0; i <= maxtag; i++) - if (tag2mat[i]) tag2mat[i] = num_induced_charges++; - else tag2mat[i] = -1; + if (tag2mat[i]) + tag2mat[i] = num_induced_charges++; + else + tag2mat[i] = -1; - memory->create(mat2tag,num_induced_charges,"polarize:mat2tag"); + memory->create(mat2tag, num_induced_charges, "polarize:mat2tag"); num_induced_charges = 0; for (i = 0; i <= maxtag; i++) @@ -218,34 +219,34 @@ void FixPolarizeFunctional::init() max_tag = -1; for (i = 0; i < nlocal; i++) - if (!(mask[i] & groupbit)) max_tag = MAX(max_tag,tag[i]); + if (!(mask[i] & groupbit)) max_tag = MAX(max_tag, tag[i]); - MPI_Allreduce(&max_tag,&itmp,1,MPI_LMP_TAGINT,MPI_MAX,world); + MPI_Allreduce(&max_tag, &itmp, 1, MPI_LMP_TAGINT, MPI_MAX, world); maxtag = (int) itmp; - memory->create(ncount,maxtag+1,"polarize:ncount"); + memory->create(ncount, maxtag + 1, "polarize:ncount"); for (i = 0; i <= maxtag; i++) ncount[i] = 0; for (i = 0; i < nlocal; i++) if (!(mask[i] & groupbit)) ncount[tag[i]]++; - memory->create(tag2mat_ions,maxtag+1,"polarize:tag2mat_ions"); - MPI_Allreduce(ncount,tag2mat_ions,maxtag+1,MPI_INT,MPI_SUM,world); + memory->create(tag2mat_ions, maxtag + 1, "polarize:tag2mat_ions"); + MPI_Allreduce(ncount, tag2mat_ions, maxtag + 1, MPI_INT, MPI_SUM, world); num_ions = 0; for (i = 0; i <= maxtag; i++) - if (tag2mat_ions[i]) tag2mat_ions[i] = num_ions++; - else tag2mat_ions[i] = -1; + if (tag2mat_ions[i]) + tag2mat_ions[i] = num_ions++; + else + tag2mat_ions[i] = -1; - memory->create(mat2tag_ions,num_ions,"polarize:mat2tag_ions"); - memory->create(rhs1,num_induced_charges,"polarize:rhs1"); - memory->create(rhs2,num_induced_charges,"polarize:rhs2"); + memory->create(mat2tag_ions, num_ions, "polarize:mat2tag_ions"); + memory->create(rhs1, num_induced_charges, "polarize:rhs1"); + memory->create(rhs2, num_induced_charges, "polarize:rhs2"); int buffer_size = (num_induced_charges > num_ions) ? num_induced_charges : num_ions; - memory->create(buffer1,buffer_size,num_induced_charges,"polarize:buffer1"); - memory->create(buffer2,num_induced_charges,num_induced_charges,"polarize:buffer2"); - memory->create(induced_charges,num_induced_charges,"polarize:induced_charges"); - - + memory->create(buffer1, buffer_size, num_induced_charges, "polarize:buffer1"); + memory->create(buffer2, num_induced_charges, num_induced_charges, "polarize:buffer2"); + memory->create(induced_charges, num_induced_charges, "polarize:induced_charges"); num_ions = 0; for (i = 0; i <= maxtag; i++) @@ -267,22 +268,21 @@ void FixPolarizeFunctional::init() // need a full neighbor list w/ Newton off and ghost neighbors // built whenever re-neighboring occurs - int irequest = neighbor->request(this,instance_me); + int irequest = neighbor->request(this, instance_me); neighbor->requests[irequest]->pair = 0; neighbor->requests[irequest]->fix = 1; neighbor->requests[irequest]->half = 0; neighbor->requests[irequest]->full = 1; neighbor->requests[irequest]->occasional = 0; - if (force->kspace) g_ewald = force->kspace->g_ewald; - else g_ewald = 0.01; + if (force->kspace) + g_ewald = force->kspace->g_ewald; + else + g_ewald = 0.01; - if (comm->me == 0) { - if (screen) fprintf(screen,"Direct solver using the variational approach " - "for %d induced charges\n", num_induced_charges); - if (logfile) fprintf(logfile,"Direct solver using the variational approach " - "for %d induced charges\n", num_induced_charges); - } + if (comm->me == 0) + utils::logmesg(lmp, "Direct solver using a variational approach for {} induced charges\n", + num_induced_charges); } /* ---------------------------------------------------------------------- */ @@ -298,35 +298,37 @@ void FixPolarizeFunctional::setup(int vflag) { // check if the pair styles in use are compatible - if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric") == 0) - efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/long/dielectric/omp") == 0) - efield_pair = ((PairLJCutCoulLongDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/msm/dielectric") == 0) - efield_pair = ((PairLJCutCoulMSMDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric") == 0) - efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"lj/cut/coul/cut/dielectric/omp") == 0) - efield_pair = ((PairLJCutCoulCutDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"coul/long/dielectric") == 0) - efield_pair = ((PairCoulLongDielectric*)force->pair)->efield; - else if (strcmp(force->pair_style,"coul/cut/dielectric") == 0) - efield_pair = ((PairCoulCutDielectric*)force->pair)->efield; - else error->all(FLERR,"Pair style not compatible with fix polarize/functional"); + if (strcmp(force->pair_style, "lj/cut/coul/long/dielectric") == 0) + efield_pair = ((PairLJCutCoulLongDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/long/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulLongDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/msm/dielectric") == 0) + efield_pair = ((PairLJCutCoulMSMDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/cut/dielectric") == 0) + efield_pair = ((PairLJCutCoulCutDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "lj/cut/coul/cut/dielectric/omp") == 0) + efield_pair = ((PairLJCutCoulCutDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "coul/long/dielectric") == 0) + efield_pair = ((PairCoulLongDielectric *) force->pair)->efield; + else if (strcmp(force->pair_style, "coul/cut/dielectric") == 0) + efield_pair = ((PairCoulCutDielectric *) force->pair)->efield; + else + error->all(FLERR, "Pair style not compatible with fix polarize/functional"); if (force->kspace) { kspaceflag = 1; - if (strcmp(force->kspace_style,"pppm/dielectric") == 0) - efield_kspace = ((PPPMDielectric*)force->kspace)->efield; - else if (strcmp(force->kspace_style,"msm/dielectric") == 0) - efield_kspace = ((MSMDielectric*)force->kspace)->efield; - else error->all(FLERR,"Kspace style not compatible with fix polarize/functional"); + if (strcmp(force->kspace_style, "pppm/dielectric") == 0) + efield_kspace = ((PPPMDielectric *) force->kspace)->efield; + else if (strcmp(force->kspace_style, "msm/dielectric") == 0) + efield_kspace = ((MSMDielectric *) force->kspace)->efield; + else + error->all(FLERR, "Kspace style not compatible with fix polarize/functional"); } else { - if (kspaceflag == 1) { // users specified kspace yes - error->warning(FLERR,"No Kspace style available for fix polarize/functional"); + if (kspaceflag == 1) { // users specified kspace yes + error->warning(FLERR, "No Kspace style available for fix polarize/functional"); kspaceflag = 0; } } @@ -371,8 +373,7 @@ void FixPolarizeFunctional::update_induced_charges() // conjugate gradient solver for w from Rww * w = -qRqw for (int i = 0; i < num_induced_charges; i++) - for (int j = 0; j < num_induced_charges; j++) - cg_A[i][j] = Rww[i][j] + Rww[j][i]; + for (int j = 0; j < num_induced_charges; j++) cg_A[i][j] = Rww[i][j] + Rww[j][i]; for (int i = 0; i < num_induced_charges; i++) induced_charges[i] = 0; @@ -386,7 +387,7 @@ void FixPolarizeFunctional::update_induced_charges() for (int i = 0; i < nlocal; i++) { if (induced_charge_idx[i] < 0) continue; int idx = induced_charge_idx[i]; - q[i] = -induced_charges[idx] / (4*MY_PI); + q[i] = -induced_charges[idx] / (4 * MY_PI); } // revert to scaled charges to calculate forces @@ -401,9 +402,9 @@ void FixPolarizeFunctional::update_induced_charges() void FixPolarizeFunctional::charge_rescaled(int scaled2real) { - double* q = atom->q; - double* q_real = atom->q_unscaled; - double* epsilon = atom->epsilon; + double *q = atom->q; + double *q_real = atom->q_unscaled; + double *epsilon = atom->epsilon; int nlocal = atom->nlocal; if (scaled2real) { @@ -478,32 +479,35 @@ int FixPolarizeFunctional::modify_param(int narg, char **arg) { int iarg = 0; while (iarg < narg) { - if (strcmp(arg[iarg],"kspace") == 0) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix_modify command"); - if (strcmp(arg[iarg+1],"yes") == 0) kspaceflag = 1; - else if (strcmp(arg[iarg+1],"no") == 0) kspaceflag = 0; - else error->all(FLERR,"Illegal fix_modify command for fix polarize/functional"); + if (strcmp(arg[iarg], "kspace") == 0) { + if (iarg + 2 > narg) error->all(FLERR, "Illegal fix_modify command"); + if (strcmp(arg[iarg + 1], "yes") == 0) + kspaceflag = 1; + else if (strcmp(arg[iarg + 1], "no") == 0) + kspaceflag = 0; + else + error->all(FLERR, "Illegal fix_modify command for fix polarize/functional"); iarg += 2; - } else if (strcmp(arg[iarg],"dielectrics") == 0) { - if (iarg+6 > narg) error->all(FLERR,"Illegal fix_modify command"); - double epsiloni=-1, areai=-1; - double q_unscaled=0; - int set_charge=0; - double ediff = utils::numeric(FLERR,arg[iarg+1],false,lmp); - double emean = utils::numeric(FLERR,arg[iarg+2],false,lmp); - if (strcmp(arg[iarg+3],"nullptr") != 0) - epsiloni = utils::numeric(FLERR,arg[iarg+3],false,lmp); - if (strcmp(arg[iarg+4],"nullptr") != 0) - areai = utils::numeric(FLERR,arg[iarg+4],false,lmp); - if (strcmp(arg[iarg+5],"nullptr") != 0) { - q_unscaled = utils::numeric(FLERR,arg[iarg+5],false,lmp); + } else if (strcmp(arg[iarg], "dielectrics") == 0) { + if (iarg + 6 > narg) error->all(FLERR, "Illegal fix_modify command"); + double epsiloni = -1, areai = -1; + double q_unscaled = 0; + int set_charge = 0; + double ediff = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + double emean = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + if (strcmp(arg[iarg + 3], "nullptr") != 0) + epsiloni = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + if (strcmp(arg[iarg + 4], "nullptr") != 0) + areai = utils::numeric(FLERR, arg[iarg + 4], false, lmp); + if (strcmp(arg[iarg + 5], "nullptr") != 0) { + q_unscaled = utils::numeric(FLERR, arg[iarg + 5], false, lmp); set_charge = 1; } - set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, - q_unscaled); + set_dielectric_params(ediff, emean, epsiloni, areai, set_charge, q_unscaled); iarg += 6; - } else error->all(FLERR,"Illegal fix_modify command"); + } else + error->all(FLERR, "Illegal fix_modify command"); } return iarg; @@ -533,8 +537,7 @@ int FixPolarizeFunctional::unpack_exchange(int nlocal, double *buf) /* ---------------------------------------------------------------------- */ -int FixPolarizeFunctional::pack_forward_comm(int n, int *list, double *buf, - int pbc_flag, int *pbc) +int FixPolarizeFunctional::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { int m; for (m = 0; m < n; m++) buf[m] = atom->q[list[m]]; @@ -556,8 +559,8 @@ void FixPolarizeFunctional::unpack_forward_comm(int n, int first, double *buf) void FixPolarizeFunctional::grow_arrays(int n) { if (n > nmax) nmax = n; - memory->grow(induced_charge_idx,nmax,"fix:induced_charge_idx"); - memory->grow(ion_idx,nmax,"fix:ion_idx"); + memory->grow(induced_charge_idx, nmax, "fix:induced_charge_idx"); + memory->grow(ion_idx, nmax, "fix:ion_idx"); } /* ---------------------------------------------------------------------- @@ -587,21 +590,21 @@ void FixPolarizeFunctional::set_arrays(int i) double FixPolarizeFunctional::memory_usage() { double bytes = 0; - bytes += num_induced_charges*num_induced_charges*sizeof(double); // inverse_matrix - bytes += num_induced_charges*num_induced_charges*sizeof(double); // Rww - bytes += num_induced_charges*num_induced_charges*sizeof(double); // G1ww - bytes += num_induced_charges*num_induced_charges*sizeof(double); // ndotGww - bytes += num_induced_charges*num_induced_charges*sizeof(double); // G2ww - bytes += num_induced_charges*num_induced_charges*sizeof(double); // G3ww - bytes += num_induced_charges*sizeof(double); // qiRqwVector - bytes += num_induced_charges*sizeof(double); // sum2G2wq - bytes += num_induced_charges*sizeof(double); // sum1G2qw - bytes += num_induced_charges*sizeof(double); // sum1G1qw_epsilon - bytes += num_induced_charges*sizeof(double); // sum2ndotGwq_epsilon - bytes += num_ions*num_induced_charges*sizeof(double); // G1qw_real - bytes += nmax*sizeof(int); // induced_charge_idx - bytes += nmax*sizeof(int); // ion_idx - bytes += num_induced_charges*sizeof(double); // induced_charges + bytes += num_induced_charges * num_induced_charges * sizeof(double); // inverse_matrix + bytes += num_induced_charges * num_induced_charges * sizeof(double); // Rww + bytes += num_induced_charges * num_induced_charges * sizeof(double); // G1ww + bytes += num_induced_charges * num_induced_charges * sizeof(double); // ndotGww + bytes += num_induced_charges * num_induced_charges * sizeof(double); // G2ww + bytes += num_induced_charges * num_induced_charges * sizeof(double); // G3ww + bytes += num_induced_charges * sizeof(double); // qiRqwVector + bytes += num_induced_charges * sizeof(double); // sum2G2wq + bytes += num_induced_charges * sizeof(double); // sum1G2qw + bytes += num_induced_charges * sizeof(double); // sum1G1qw_epsilon + bytes += num_induced_charges * sizeof(double); // sum2ndotGwq_epsilon + bytes += num_ions * num_induced_charges * sizeof(double); // G1qw_real + bytes += nmax * sizeof(int); // induced_charge_idx + bytes += nmax * sizeof(int); // ion_idx + bytes += num_induced_charges * sizeof(double); // induced_charges return bytes; } @@ -611,7 +614,7 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() { int *mask = atom->mask; int *type = atom->type; - tagint* tag = atom->tag; + tagint *tag = atom->tag; int nlocal = atom->nlocal; double **x = atom->x; double *area = atom->area; @@ -622,7 +625,7 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() // invoke full neighbor list - int inum,jnum,*ilist,*jlist,*numneigh,**firstneigh; + int inum, jnum, *ilist, *jlist, *numneigh, **firstneigh; inum = list->inum; ilist = list->ilist; numneigh = list->numneigh; @@ -657,7 +660,7 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() double delx = xtmp - x[k][0]; double dely = ytmp - x[k][1]; double delz = ztmp - x[k][2]; - domain->minimum_image(delx,dely,delz); + domain->minimum_image(delx, dely, delz); int mk = tag2mat[tag[k]]; // G1ww[mi][mk] = calculate_greens_ewald(delx, dely, delz); @@ -668,7 +671,7 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() calculate_grad_greens_ewald(gradG1ww, delx, dely, delz); // use mu to store the normal vector of interface vertex - buffer2[mi][mk] = MathExtra::dot3(norm[i], gradG1ww) / (4*MY_PI); + buffer2[mi][mk] = MathExtra::dot3(norm[i], gradG1ww) / (4 * MY_PI); } } @@ -676,15 +679,14 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() // even though in the above loop there is mk == mi buffer1[mi][mi] = calculate_greens_ewald_self_vertex(area[i]); - buffer2[mi][mi] = calculate_ndotgreens_ewald_self_vertex(area[i], curvature[i]) / - (4*MY_PI); + buffer2[mi][mi] = calculate_ndotgreens_ewald_self_vertex(area[i], curvature[i]) / (4 * MY_PI); } } - MPI_Allreduce(buffer1[0],G1ww[0],num_induced_charges*num_induced_charges, - MPI_DOUBLE,MPI_SUM,world); - MPI_Allreduce(buffer2[0],ndotGww[0],num_induced_charges*num_induced_charges, - MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(buffer1[0], G1ww[0], num_induced_charges * num_induced_charges, MPI_DOUBLE, MPI_SUM, + world); + MPI_Allreduce(buffer2[0], ndotGww[0], num_induced_charges * num_induced_charges, MPI_DOUBLE, + MPI_SUM, world); // calculate G2ww // fill up buffer1 with local G2ww @@ -734,8 +736,8 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() } } - MPI_Allreduce(buffer1[0],G2ww[0],num_induced_charges*num_induced_charges, - MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(buffer1[0], G2ww[0], num_induced_charges * num_induced_charges, MPI_DOUBLE, MPI_SUM, + world); // calculate G3ww and Rww // G3ww is implemented as in _exact(), but can be optionally excluded @@ -815,18 +817,18 @@ void FixPolarizeFunctional::calculate_Rww_cutoff() } } - MPI_Allreduce(buffer1[0],Rww[0],num_induced_charges*num_induced_charges, - MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(buffer1[0], Rww[0], num_induced_charges * num_induced_charges, MPI_DOUBLE, MPI_SUM, + world); - #ifdef _POLARIZE_DEBUG +#ifdef _POLARIZE_DEBUG if (comm->me == 0) { - FILE* fp = fopen("Rww-functional.txt", "w"); + FILE *fp = fopen("Rww-functional.txt", "w"); for (int i = 0; i < num_induced_charges; i++) - fprintf(fp, "%d %g %g %g\n", i, Rww[i][i], Rww[i][num_induced_charges/2], - Rww[num_induced_charges/2][i]); + fprintf(fp, "%d %g %g %g\n", i, Rww[i][i], Rww[i][num_induced_charges / 2], + Rww[num_induced_charges / 2][i]); fclose(fp); } - #endif +#endif } /* ---------------------------------------------------------------------- */ @@ -849,7 +851,7 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() // invoke full neighbor list - int inum,*ilist,*jlist,*numneigh,**firstneigh; + int inum, *ilist, *jlist, *numneigh, **firstneigh; inum = list->inum; ilist = list->ilist; numneigh = list->numneigh; @@ -879,7 +881,7 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() delx = xtmp - x[k][0]; dely = ytmp - x[k][1]; delz = ztmp - x[k][2]; - domain->minimum_image(delx,dely,delz); + domain->minimum_image(delx, dely, delz); r = sqrt(delx * delx + dely * dely + delz * delz); int mk = tag2mat[tag[k]]; @@ -890,18 +892,18 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() } } - MPI_Allreduce(&buffer1[0][0],&G1qw_real[0][0],num_ions*num_induced_charges, - MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&buffer1[0][0], &G1qw_real[0][0], num_ions * num_induced_charges, MPI_DOUBLE, + MPI_SUM, world); // the following loop need the above results: gradG1wq_real // calculate sum1G1qw_epsilon and sum2ndotGwq_epsilon // fill up rhs1 with local sum1G1qw_epsilon and rhs2 with local sum2ndotGwq_epsilon - memset(rhs1, 0, num_induced_charges*sizeof(double)); - memset(rhs2, 0, num_induced_charges*sizeof(double)); + memset(rhs1, 0, num_induced_charges * sizeof(double)); + memset(rhs2, 0, num_induced_charges * sizeof(double)); for (kk = 0; kk < inum; kk++) { - k = ilist[kk]; // k is local index + k = ilist[kk]; // k is local index if (mask[k] & groupbit) { // interface particles int mk = induced_charge_idx[k]; @@ -920,9 +922,9 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() delx = x[i][0] - xtmp; dely = x[i][1] - ytmp; delz = x[i][2] - ztmp; - domain->minimum_image(delx,dely,delz); + domain->minimum_image(delx, dely, delz); - int mi = tag2mat_ions[tag[i]]; //ion_idx[i]; + int mi = tag2mat_ions[tag[i]]; //ion_idx[i]; //calculate_grad_greens_real(gradG1wq_real[mk][mi], delx, dely, delz); double gradG1wq[3]; @@ -944,18 +946,18 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() } } - MPI_Allreduce(rhs1,sum1G1qw_epsilon,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); - MPI_Allreduce(rhs2,sum2ndotGwq_epsilon,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(rhs1, sum1G1qw_epsilon, num_induced_charges, MPI_DOUBLE, MPI_SUM, world); + MPI_Allreduce(rhs2, sum2ndotGwq_epsilon, num_induced_charges, MPI_DOUBLE, MPI_SUM, world); // calculate G2, gradient G2 // sum2G2wq and sum1G2qw -// for (int i = 0; i < num_induced_charges; i++) rhs1[i] = rhs2[i] = 0; - memset(rhs1, 0, num_induced_charges*sizeof(double)); - memset(rhs2, 0, num_induced_charges*sizeof(double)); + // for (int i = 0; i < num_induced_charges; i++) rhs1[i] = rhs2[i] = 0; + memset(rhs1, 0, num_induced_charges * sizeof(double)); + memset(rhs2, 0, num_induced_charges * sizeof(double)); for (kk = 0; kk < inum; kk++) { - k = ilist[kk]; // k is local index + k = ilist[kk]; // k is local index if (mask[k] & groupbit) { // interface particles int mk = induced_charge_idx[k]; @@ -985,16 +987,16 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() } } - MPI_Allreduce(rhs1,sum2G2wq,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); - MPI_Allreduce(rhs2,sum1G2qw,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(rhs1, sum2G2wq, num_induced_charges, MPI_DOUBLE, MPI_SUM, world); + MPI_Allreduce(rhs2, sum1G2qw, num_induced_charges, MPI_DOUBLE, MPI_SUM, world); // calculate G3, gradient G3 // fill up rhs1 with local qiRqwVector - memset(rhs1, 0, num_induced_charges*sizeof(double)); + memset(rhs1, 0, num_induced_charges * sizeof(double)); for (kk = 0; kk < inum; kk++) { - k = ilist[kk]; // k is local index + k = ilist[kk]; // k is local index if (mask[k] & groupbit) { // interface particles int mk = induced_charge_idx[k]; @@ -1011,7 +1013,7 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() sum1G3qw += sum2ndotGwq_epsilon[mi] * G2ww[mi][mk] * area[i] * ed[i]; } else { // ions particles: i can be ghost atoms - int mi = tag2mat_ions[tag[i]]; //ion_idx[i]; + int mi = tag2mat_ions[tag[i]]; //ion_idx[i]; qiRwwVectorTemp1 += q[i] * (1.0 - em[k] / epsilon[i]) * G1qw_real[mi][mk]; } } @@ -1021,32 +1023,30 @@ void FixPolarizeFunctional::calculate_qiRqw_cutoff() sum1G3qw += sum2ndotGwq_epsilon[mk] * G2ww[mk][mk] * area[k] * ed[k]; // qiRwwVectorTemp2 is a significant contribution, of which sum2G2wq is significant - double qiRwwVectorTemp2 = (1.0 - 2.0 * em[k]) * sum2G2wq[mk] + - sum1G2qw[mk] + 2.0 * sum1G3qw; + double qiRwwVectorTemp2 = (1.0 - 2.0 * em[k]) * sum2G2wq[mk] + sum1G2qw[mk] + 2.0 * sum1G3qw; // qiRqwVector[mk] = qiRwwVectorTemp1 + qiRwwVectorTemp2; rhs1[mk] = qiRwwVectorTemp1 + qiRwwVectorTemp2; } } - MPI_Allreduce(rhs1,qiRqwVector,num_induced_charges,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(rhs1, qiRqwVector, num_induced_charges, MPI_DOUBLE, MPI_SUM, world); - #ifdef _POLARIZE_DEBUG +#ifdef _POLARIZE_DEBUG if (comm->me == 0) { - FILE* fp = fopen("qRqw-functional.txt", "w"); - for (int i = 0; i < num_induced_charges; i++) - fprintf(fp, "%d %g\n", i, qiRqwVector[i]); + FILE *fp = fopen("qRqw-functional.txt", "w"); + for (int i = 0; i < num_induced_charges; i++) fprintf(fp, "%d %g\n", i, qiRqwVector[i]); fclose(fp); } - #endif +#endif } /* ---------------------------------------------------------------------- set dielectric params for the atom in the group ------------------------------------------------------------------------- */ -void FixPolarizeFunctional::set_dielectric_params(double ediff, double emean, - double epsiloni, double areai, int set_charge, double qvalue) +void FixPolarizeFunctional::set_dielectric_params(double ediff, double emean, double epsiloni, + double areai, int set_charge, double qvalue) { double *area = atom->area; double *ed = atom->ed; @@ -1081,16 +1081,14 @@ double FixPolarizeFunctional::greens_real(double r) double FixPolarizeFunctional::grad_greens_real_factor(double r) { double alpharij = g_ewald * r; - double factor = erfc(alpharij) + 2.0 * alpharij / MY_PIS * - exp(-(alpharij * alpharij)); - double r3 = r*r*r; + double factor = erfc(alpharij) + 2.0 * alpharij / MY_PIS * exp(-(alpharij * alpharij)); + double r3 = r * r * r; return (factor * (-1.0 / r3)); } /* ---------------------------------------------------------------------- */ -void FixPolarizeFunctional::calculate_grad_greens_real(double *vec, - double dx, double dy, double dz) +void FixPolarizeFunctional::calculate_grad_greens_real(double *vec, double dx, double dy, double dz) { double r = sqrt(dx * dx + dy * dy + dz * dz); double real = grad_greens_real_factor(r); @@ -1101,8 +1099,7 @@ void FixPolarizeFunctional::calculate_grad_greens_real(double *vec, /* ---------------------------------------------------------------------- */ -double FixPolarizeFunctional::calculate_greens_ewald(double dx, double dy, - double dz) +double FixPolarizeFunctional::calculate_greens_ewald(double dx, double dy, double dz) { // excluding the reciprocal term double r = sqrt(dx * dx + dy * dy + dz * dz); @@ -1111,8 +1108,8 @@ double FixPolarizeFunctional::calculate_greens_ewald(double dx, double dy, /* ---------------------------------------------------------------------- */ -void FixPolarizeFunctional::calculate_grad_greens_ewald(double *vec, - double dx, double dy, double dz) +void FixPolarizeFunctional::calculate_grad_greens_ewald(double *vec, double dx, double dy, + double dz) { // real part of grad greens, excluding the reciprocal term calculate_grad_greens_real(vec, dx, dy, dz); @@ -1120,17 +1117,15 @@ void FixPolarizeFunctional::calculate_grad_greens_ewald(double *vec, /* ---------------------------------------------------------------------- */ -void FixPolarizeFunctional::calculate_matrix_multiply_vector(double **matrix, - double *in_vec, double *out_vec, int M) +void FixPolarizeFunctional::calculate_matrix_multiply_vector(double **matrix, double *in_vec, + double *out_vec, int M) { #if defined(OPENMP) #pragma parallel omp for #endif for (int k = 0; k < M; ++k) { double temp = 0.0; - for (int l = 0; l < M; ++l) { - temp += matrix[k][l] * in_vec[l]; - } + for (int l = 0; l < M; ++l) { temp += matrix[k][l] * in_vec[l]; } out_vec[k] = temp; } } @@ -1147,8 +1142,7 @@ double FixPolarizeFunctional::calculate_greens_ewald_self_vertex(double area) /* ---------------------------------------------------------------------- */ -double FixPolarizeFunctional::calculate_ndotgreens_ewald_self_vertex(double area, - double curvature) +double FixPolarizeFunctional::calculate_ndotgreens_ewald_self_vertex(double area, double curvature) { // this term is important, cannot be set to zero // curvature = 1 / R, minus if norm is inverse of R to center. @@ -1161,16 +1155,16 @@ double FixPolarizeFunctional::calculate_ndotgreens_ewald_self_vertex(double area where ^t is the transpose operator -- ---------------------------------------------------------------------- */ -double FixPolarizeFunctional::inner_product(double* x, double* y, int N) +double FixPolarizeFunctional::inner_product(double *x, double *y, int N) { double t = 0; - for (int i = 0; i < N; i++) t += x[i]*y[i]; + for (int i = 0; i < N; i++) t += x[i] * y[i]; return t; } /* ---------------------------------------------------------------------- */ -void FixPolarizeFunctional::cg_solver(double** A, double* b, double* x, int N) +void FixPolarizeFunctional::cg_solver(double **A, double *b, double *x, int N) { calculate_matrix_multiply_vector(A, x, cg_p, N); for (int i = 0; i < N; i++) { @@ -1194,8 +1188,8 @@ void FixPolarizeFunctional::cg_solver(double** A, double* b, double* x, int N) // x = x + alpha * p // r = r - alpha * Ap for (int i = 0; i < N; i++) { - x[i] = x[i] + alpha*cg_p[i]; - cg_r[i] = cg_r[i] - alpha*cg_Ap[i]; + x[i] = x[i] + alpha * cg_p[i]; + cg_r[i] = cg_r[i] - alpha * cg_Ap[i]; } double rsq_new = inner_product(cg_r, cg_r, N); @@ -1203,8 +1197,7 @@ void FixPolarizeFunctional::cg_solver(double** A, double* b, double* x, int N) // beta = rsq_new / rsq double beta = rsq_new / rsq; - for (int i = 0; i < N; i++) - cg_p[i] = cg_r[i] + beta*cg_p[i]; + for (int i = 0; i < N; i++) cg_p[i] = cg_r[i] + beta * cg_p[i]; rsq = rsq_new; } } From b524a0b81926080ae7c289cea3e676f63762b534 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 6 Jun 2021 18:25:16 -0400 Subject: [PATCH 72/80] correctly remove dependent sources for fix QEQ --- cmake/Modules/Packages/QEQ.cmake | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/cmake/Modules/Packages/QEQ.cmake b/cmake/Modules/Packages/QEQ.cmake index 1bdaa02f43..041d34cf9d 100644 --- a/cmake/Modules/Packages/QEQ.cmake +++ b/cmake/Modules/Packages/QEQ.cmake @@ -1,18 +1,13 @@ # Fix qeq/fire requires MANYBODY (i.e. COMB and COMB3) to be installed set(QEQ_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/QEQ) -file(GLOB QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix*.h) -file(GLOB QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix*.cpp) +get_property(hlist GLOBAL PROPERTY FIX) if(NOT PKG_MANYBODY) - list(REMOVE_ITEM QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix_qeq_fire.h) - list(REMOVE_ITEM QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp) + list(REMOVE_ITEM hlist ${QEQ_SOURCES_DIR}/fix_qeq_fire.h) + get_target_property(LAMMPS_SOURCES lammps SOURCES) + list(REMOVE_ITEM LAMMPS_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp) + set_property(TARGET lammps PROPERTY SOURCES ${LAMMPS_SOURCES}) endif() -set_property(GLOBAL PROPERTY "QEQ_SOURCES" "${QEQ_SOURCES}") +set_property(GLOBAL PROPERTY FIX "${hlist}") -foreach(MY_HEADER ${QEQ_HEADERS}) - AddStyleHeader(${MY_HEADER} FIX) -endforeach() - -get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES) -target_sources(lammps PRIVATE ${QEQ_SOURCES}) target_include_directories(lammps PRIVATE ${QEQ_SOURCES_DIR}) From 0ee6cf798c1b62a8e93a49a377d5f32c0fe20a25 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 6 Jun 2021 18:25:47 -0400 Subject: [PATCH 73/80] include cythonize for building MLIAP with Python support --- tools/singularity/fedora34_mingw.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/singularity/fedora34_mingw.def b/tools/singularity/fedora34_mingw.def index 4dd27894d4..2f8118778f 100644 --- a/tools/singularity/fedora34_mingw.def +++ b/tools/singularity/fedora34_mingw.def @@ -9,7 +9,7 @@ From: fedora:34 ccache gcc-c++ gcc-gfortran gdb valgrind eigen3-devel openblas-devel \ openmpi-devel mpich-devel fftw-devel voro++-devel gsl-devel hdf5-devel \ netcdf-devel netcdf-cxx-devel netcdf-mpich-devel netcdf-openmpi-devel \ - readline-devel python3-pyyaml \ + readline-devel python3-pyyaml python3-Cython \ mingw-filesystem-base mingw32-nsis mingw-binutils-generic \ mingw32-filesystem mingw32-pkg-config \ mingw64-filesystem mingw64-pkg-config \ From 8b0a063059f89136da00c6a8a1ee8085a491e959 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 6 Jun 2021 18:37:14 -0400 Subject: [PATCH 74/80] must not test for bonded interactions without MOLECULE package --- unittest/formats/test_molecule_file.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/unittest/formats/test_molecule_file.cpp b/unittest/formats/test_molecule_file.cpp index 90c52681ce..d13a90524c 100644 --- a/unittest/formats/test_molecule_file.cpp +++ b/unittest/formats/test_molecule_file.cpp @@ -209,6 +209,7 @@ TEST_F(MoleculeFileTest, twofiles) TEST_F(MoleculeFileTest, bonds) { + if (!LAMMPS::is_installed_pkg("MOLECULE")) GTEST_SKIP(); BEGIN_CAPTURE_OUTPUT(); command("atom_style bond"); command("region box block 0 1 0 1 0 1"); From 7322066dde1e6224fe5c1109e7bd01be1cd8eb7f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 6 Jun 2021 18:39:19 -0400 Subject: [PATCH 75/80] use alternate approach for dealing with Package style dependency issues --- cmake/CMakeLists.txt | 31 ++++++++++--------------------- cmake/Modules/Packages/QEQ.cmake | 17 ++++++----------- unittest/c-library/CMakeLists.txt | 2 +- 3 files changed, 17 insertions(+), 33 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 8fed2fbe68..090185aac8 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -140,18 +140,17 @@ option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF) set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE GRANULAR KSPACE LATTE MANYBODY MC MESSAGE MISC MLIAP MOLECULE PERI POEMS - PLUGIN REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI + PLUGIN QEQ REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESODPD USER-CGSDK USER-COLVARS USER-DIELECTRIC USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-HDNNP USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB - USER-RANN USER-REACTION USER-REAXC USER-SCAFACOS USER-SMD USER-SMTBQ USER-SPH + USER-RANN USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-PACE USER-BROWNIAN) set(SUFFIX_PACKAGES CORESHELL GPU KOKKOS OPT USER-INTEL USER-OMP) -set(DEPEND_PACKAGES QEQ USER-SDPD) -foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES} ${DEPEND_PACKAGES}) +foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES}) option(PKG_${PKG} "Build ${PKG} Package" OFF) endforeach() @@ -350,9 +349,8 @@ else() set(CUDA_REQUEST_PIC) endif() -foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-HDNNP - USER-MDI USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP - USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS USER-PACE) +foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-DIELECTRIC USER-HDNNP USER-MDI USER-MOLFILE USER-NETCDF + USER-PLUMED USER-QMMM USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS USER-PACE) if(PKG_${PKG_WITH_INCL}) include(Packages/${PKG_WITH_INCL}) endif() @@ -393,7 +391,7 @@ RegisterStyles(${LAMMPS_SOURCE_DIR}) ######################################################## # Fetch missing external files and archives for packages ######################################################## -foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES} ${DEPEND_PACKAGES}) +foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES}) if(PKG_${PKG}) FetchPotentials(${LAMMPS_SOURCE_DIR}/${PKG} ${LAMMPS_POTENTIALS_DIR}) endif() @@ -429,15 +427,6 @@ foreach(PKG MPIIO) endif() endforeach() -# packages with custom dependencies -foreach(PKG ${DEPEND_PACKAGES}) - if(PKG_${PKG}) - include(Packages/${PKG}) - endif() - set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG}) - RegisterPackages(${${PKG}_SOURCES_DIR}) -endforeach() - # dedicated check for entire contents of accelerator packages foreach(PKG ${SUFFIX_PACKAGES}) set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG}) @@ -506,9 +495,9 @@ endif() # packages which selectively include variants based on enabled styles # e.g. accelerator packages ###################################################################### -foreach(PKG_WITH_DEPS ${DEPEND_PACKAGES} ${SUFFIX_PACKAGES}) - if(PKG_${PKG_WITH_DEPS}) - include(Packages/${PKG_WITH_DEPS}) +foreach(PKG_WITH_INCL CORESHELL QEQ USER-OMP USER-SDPD KOKKOS OPT USER-INTEL GPU) + if(PKG_${PKG_WITH_INCL}) + include(Packages/${PKG_WITH_INCL}) endif() endforeach() @@ -550,7 +539,7 @@ target_include_directories(lammps PRIVATE ${LAMMPS_STYLE_HEADERS_DIR}) ###################################### set(temp "#ifndef LMP_INSTALLED_PKGS_H\n#define LMP_INSTALLED_PKGS_H\n") set(temp "${temp}const char * LAMMPS_NS::LAMMPS::installed_packages[] = {\n") -set(temp_PKG_LIST ${STANDARD_PACKAGES} ${DEPEND_PACKAGES} ${SUFFIX_PACKAGES}) +set(temp_PKG_LIST ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES}) list(SORT temp_PKG_LIST) foreach(PKG ${temp_PKG_LIST}) if(PKG_${PKG}) diff --git a/cmake/Modules/Packages/QEQ.cmake b/cmake/Modules/Packages/QEQ.cmake index 1bdaa02f43..041d34cf9d 100644 --- a/cmake/Modules/Packages/QEQ.cmake +++ b/cmake/Modules/Packages/QEQ.cmake @@ -1,18 +1,13 @@ # Fix qeq/fire requires MANYBODY (i.e. COMB and COMB3) to be installed set(QEQ_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/QEQ) -file(GLOB QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix*.h) -file(GLOB QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix*.cpp) +get_property(hlist GLOBAL PROPERTY FIX) if(NOT PKG_MANYBODY) - list(REMOVE_ITEM QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix_qeq_fire.h) - list(REMOVE_ITEM QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp) + list(REMOVE_ITEM hlist ${QEQ_SOURCES_DIR}/fix_qeq_fire.h) + get_target_property(LAMMPS_SOURCES lammps SOURCES) + list(REMOVE_ITEM LAMMPS_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp) + set_property(TARGET lammps PROPERTY SOURCES ${LAMMPS_SOURCES}) endif() -set_property(GLOBAL PROPERTY "QEQ_SOURCES" "${QEQ_SOURCES}") +set_property(GLOBAL PROPERTY FIX "${hlist}") -foreach(MY_HEADER ${QEQ_HEADERS}) - AddStyleHeader(${MY_HEADER} FIX) -endforeach() - -get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES) -target_sources(lammps PRIVATE ${QEQ_SOURCES}) target_include_directories(lammps PRIVATE ${QEQ_SOURCES_DIR}) diff --git a/unittest/c-library/CMakeLists.txt b/unittest/c-library/CMakeLists.txt index c4d2ad7466..3c24cdcff4 100644 --- a/unittest/c-library/CMakeLists.txt +++ b/unittest/c-library/CMakeLists.txt @@ -15,7 +15,7 @@ set_tests_properties(LibraryProperties PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS set(TEST_CONFIG_DEFS "-DTEST_INPUT_FOLDER=${CMAKE_CURRENT_SOURCE_DIR};-DLAMMPS_${LAMMPS_SIZES}") set(PKG_COUNT 0) -foreach(PKG ${STANDARD_PACKAGES} ${DEPEND_PACKAGES} ${SUFFIX_PACKAGES}) +foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES}) if(PKG_${PKG}) MATH(EXPR PKG_COUNT "${PKG_COUNT}+1") endif() From ffd1b2bfa99a087cb506efe0f1f7a6a067cb20d9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 7 Jun 2021 11:48:13 -0400 Subject: [PATCH 76/80] fix compilation issue --- cmake/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 090185aac8..c6dafe902a 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -349,7 +349,7 @@ else() set(CUDA_REQUEST_PIC) endif() -foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-DIELECTRIC USER-HDNNP USER-MDI USER-MOLFILE USER-NETCDF +foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-HDNNP USER-MDI USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS USER-PACE) if(PKG_${PKG_WITH_INCL}) include(Packages/${PKG_WITH_INCL}) From 337527282d67e77a846d160c9a6f914a027323d3 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Mon, 7 Jun 2021 16:36:45 -0500 Subject: [PATCH 77/80] Added the documentation for atom style dielectric and for compute efield/atom --- doc/src/atom_style.rst | 13 +++++++++++++ doc/src/compute_efield_atom.rst | 28 ++++++++++++++++++---------- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/doc/src/atom_style.rst b/doc/src/atom_style.rst index dff222b053..1b5aaccb9a 100644 --- a/doc/src/atom_style.rst +++ b/doc/src/atom_style.rst @@ -88,6 +88,8 @@ quantities. +--------------+-----------------------------------------------------+--------------------------------------+ | *charge* | charge | atomic system with charges | +--------------+-----------------------------------------------------+--------------------------------------+ +| *dielectric* | dipole, area, curvature | system with surface polarization | ++--------------+-----------------------------------------------------+--------------------------------------+ | *dipole* | charge and dipole moment | system with dipolar particles | +--------------+-----------------------------------------------------+--------------------------------------+ | *dpd* | internal temperature and internal energies | DPD particles | @@ -166,6 +168,17 @@ a point particle. If it is an ellipsoid, it also stores a shape vector with the 3 diameters of the ellipsoid and a quaternion 4-vector with its orientation. +For the *dielectric* style, each particle can be either a physical +particle (e.g. an ion), or an interface particle representing a boundary +element. For physical particles, the per-particle properties are +the same as atom_style full. For interface particles, in addition to +these properties, each particle also has an area, a normal unit vector, +a mean local curvature, the mean and difference of the dielectric constants +of two sides of the interface, and the local dielectric constant at the +boundary element. The distinction between the physical and interface +particles is only meaningful when :doc:`fix polarize ` +commands are applied to the interface particles. + For the *dipole* style, a point dipole is defined for each point particle. Note that if you wish the particles to be finite-size spheres as in a Stockmayer potential for a dipolar fluid, so that the diff --git a/doc/src/compute_efield_atom.rst b/doc/src/compute_efield_atom.rst index 449a495519..68faccd8ad 100644 --- a/doc/src/compute_efield_atom.rst +++ b/doc/src/compute_efield_atom.rst @@ -19,20 +19,26 @@ Examples .. code-block:: LAMMPS compute 1 all efield/atom + compute 1 all efield/atom pair yes kspace no Description """"""""""" -FIXME update docs from here +Define a computation that calculates the electric field at each atom in a group. +The compute should only enabled with pair and kspace styles that are provided +by the USER-DIELECTRIC package because only these styles compute the per-atom +electric field at every time step. -Define a computation that calculates the per-atom translational -kinetic energy for each atom in a group. +The electric field is a 3-component vector. The value of the electric field +components will be 0.0 for atoms not in the specified compute group. -The kinetic energy is simply 1/2 m v\^2, where m is the mass and v is -the velocity of each atom. +---------- + +The keyword/value option pairs are used in the following ways. + +For the *pair* and *kspace* keywords, the real-space and reciprocal-space +contributions to the electric field can be turned off and on. -The value of the kinetic energy will be 0.0 for atoms not in the -specified compute group. Output info """"""""""" @@ -42,11 +48,12 @@ any command that uses per-atom values from a compute as input. See the :doc:`Howto output ` doc page for an overview of LAMMPS output options. -The per-atom vector values will be in energy :doc:`units `. +The per-atom vector values will be in electric field :doc:`units `. Restrictions """""""""""" - none +This compute is part of the USER-DIELECTRIC package. It is only enabled if +LAMMPS was built with that package. Related commands """""""""""""""" @@ -56,4 +63,5 @@ Related commands Default """"""" -none +The option defaults are pair = yes and kspace = yes. + From a32e68269705e8d8b438b2e1725842cb040ea348 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 8 Jun 2021 10:23:19 -0400 Subject: [PATCH 78/80] error exit if driver sends number of atoms. add comment why. --- src/USER-MDI/fix_mdi_engine.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/USER-MDI/fix_mdi_engine.cpp b/src/USER-MDI/fix_mdi_engine.cpp index 260701107b..db9e114488 100644 --- a/src/USER-MDI/fix_mdi_engine.cpp +++ b/src/USER-MDI/fix_mdi_engine.cpp @@ -228,9 +228,12 @@ int FixMDIEngine::execute_command(const char *command, MDI_Comm mdicomm) // respond to any driver command if (strcmp(command, ">NATOMS") == 0) { - int mdi_natoms = 0; - ierr = MDI_Recv((char *) &mdi_natoms, 1, MDI_INT, mdicomm); + int64_t mdi_natoms = 0; + ierr = MDI_Recv((char *) &mdi_natoms, 1, MDI_INT64_T, mdicomm); if (ierr != 0) error->all(FLERR, "MDI: Unable to receive number of atoms from driver"); + error->all(FLERR, "MDI: '>NATOMS' driver command not (yet) supported"); + // FIXME: to import the number of atoms, more steps than below are needed for LAMMPS. + // also a check for overflow is needed in case natoms is 32-bit atom->natoms = mdi_natoms; MPI_Bcast(&atom->natoms, 1, MPI_LMP_BIGINT, 0, world); From b8236c640270e300f87b080685304d6baf5a3f2f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 8 Jun 2021 10:58:12 -0400 Subject: [PATCH 79/80] improve error messages by printing unrecognized property --- src/balance.cpp | 2 +- src/imbalance_group.cpp | 2 +- src/info.cpp | 12 ++++++------ src/pair_hybrid.cpp | 6 +++--- src/pair_table.cpp | 2 +- src/thermo.cpp | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/balance.cpp b/src/balance.cpp index 03ee4a8195..af142f404d 100644 --- a/src/balance.cpp +++ b/src/balance.cpp @@ -458,7 +458,7 @@ void Balance::options(int iarg, int narg, char **arg) nopt = imb->options(narg-iarg,arg+iarg+2); imbalances[nimbalance++] = imb; } else { - error->all(FLERR,"Unknown (fix) balance weight method"); + error->all(FLERR,"Unknown (fix) balance weight method: {}", arg[iarg+1]); } iarg += 2+nopt; diff --git a/src/imbalance_group.cpp b/src/imbalance_group.cpp index f4c883ff4c..e674338e76 100644 --- a/src/imbalance_group.cpp +++ b/src/imbalance_group.cpp @@ -48,7 +48,7 @@ int ImbalanceGroup::options(int narg, char **arg) for (int i = 0; i < num; ++i) { id[i] = group->find(arg[2*i+1]); if (id[i] < 0) - error->all(FLERR,"Unknown group in balance weight command"); + error->all(FLERR,"Unknown group in balance weight command: {}", arg[2*i+1]); factor[i] = utils::numeric(FLERR,arg[2*i+2],false,lmp); if (factor[i] <= 0.0) error->all(FLERR,"Illegal balance weight command"); } diff --git a/src/info.cpp b/src/info.cpp index 12546b6be9..049bdd5bfd 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -814,13 +814,13 @@ bool Info::is_active(const char *category, const char *name) return (lmp->kokkos && lmp->kokkos->kokkos_exists) ? true : false; } else if (strcmp(name,"omp") == 0) { return (modify->find_fix("package_omp") >= 0) ? true : false; - } else error->all(FLERR,"Unknown name for info package category"); + } else error->all(FLERR,"Unknown name for info package category: {}", name); } else if (strcmp(category,"newton") == 0) { if (strcmp(name,"pair") == 0) return (force->newton_pair != 0); else if (strcmp(name,"bond") == 0) return (force->newton_bond != 0); else if (strcmp(name,"any") == 0) return (force->newton != 0); - else error->all(FLERR,"Unknown name for info newton category"); + else error->all(FLERR,"Unknown name for info newton category: {}", name); } else if (strcmp(category,"pair") == 0) { if (force->pair == nullptr) return false; @@ -829,7 +829,7 @@ bool Info::is_active(const char *category, const char *name) else if (strcmp(name,"manybody") == 0) return (force->pair->manybody_flag != 0); else if (strcmp(name,"tail") == 0) return (force->pair->tail_flag != 0); else if (strcmp(name,"shift") == 0) return (force->pair->offset_flag != 0); - else error->all(FLERR,"Unknown name for info pair category"); + else error->all(FLERR,"Unknown name for info pair category: {}", name); } else if (strcmp(category,"comm_style") == 0) { style = commstyles[comm->style]; @@ -851,7 +851,7 @@ bool Info::is_active(const char *category, const char *name) style = force->improper_style; } else if (strcmp(category,"kspace_style") == 0) { style = force->kspace_style; - } else error->all(FLERR,"Unknown category for info is_active()"); + } else error->all(FLERR,"Unknown category for info is_active(): {}", category); int match = 0; if (strcmp(style,name) == 0) match = 1; @@ -893,7 +893,7 @@ bool Info::is_available(const char *category, const char *name) } else if (strcmp(name,"exceptions") == 0) { return has_exceptions(); } - } else error->all(FLERR,"Unknown category for info is_available()"); + } else error->all(FLERR,"Unknown category for info is_available(): {}", category); return false; } @@ -952,7 +952,7 @@ bool Info::is_defined(const char *category, const char *name) if (strcmp(names[i],name) == 0) return true; } - } else error->all(FLERR,"Unknown category for info is_defined()"); + } else error->all(FLERR,"Unknown category for info is_defined(): {}", category); return false; } diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index c2bc37e931..ab2fe7803a 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -494,7 +494,7 @@ void PairHybrid::coeff(int narg, char **arg) int none = 0; if (m == nstyles) { if (strcmp(arg[2],"none") == 0) none = 1; - else error->all(FLERR,"Pair coeff for hybrid has invalid style"); + else error->all(FLERR,"Pair coeff for hybrid has invalid style: {}",arg[2]); } // move 1st/2nd args to 2nd/3rd args @@ -896,7 +896,7 @@ void PairHybrid::modify_params(int narg, char **arg) int m; for (m = 0; m < nstyles; m++) if (strcmp(arg[1],keywords[m]) == 0) break; - if (m == nstyles) error->all(FLERR,"Unknown pair_modify hybrid sub-style"); + if (m == nstyles) error->all(FLERR,"Unknown pair_modify hybrid sub-style: {}",arg[1]); int iarg = 2; if (multiple[m]) { @@ -905,7 +905,7 @@ void PairHybrid::modify_params(int narg, char **arg) for (m = 0; m < nstyles; m++) if (strcmp(arg[1],keywords[m]) == 0 && multiflag == multiple[m]) break; if (m == nstyles) - error->all(FLERR,"Unknown pair_modify hybrid sub-style"); + error->all(FLERR,"Unknown pair_modify hybrid sub-style: {}",arg[1]); iarg = 3; } diff --git a/src/pair_table.cpp b/src/pair_table.cpp index ee3a6454c9..f064d56377 100644 --- a/src/pair_table.cpp +++ b/src/pair_table.cpp @@ -215,7 +215,7 @@ void PairTable::settings(int narg, char **arg) else if (strcmp(arg[0],"linear") == 0) tabstyle = LINEAR; else if (strcmp(arg[0],"spline") == 0) tabstyle = SPLINE; else if (strcmp(arg[0],"bitmap") == 0) tabstyle = BITMAP; - else error->all(FLERR,"Unknown table style in pair_style command"); + else error->all(FLERR,"Unknown table style in pair_style command: {}", arg[0]); tablength = utils::inumeric(FLERR,arg[1],false,lmp); if (tablength < 2) error->all(FLERR,"Illegal number of pair table entries"); diff --git a/src/thermo.cpp b/src/thermo.cpp index f030ac2391..1fa6f18d2c 100644 --- a/src/thermo.cpp +++ b/src/thermo.cpp @@ -908,7 +908,7 @@ void Thermo::parse_fields(char *str) if ((argi.get_type() == ArgInfo::UNKNOWN) || (argi.get_type() == ArgInfo::NONE) || (argi.get_dim() > 2)) - error->all(FLERR,"Unknown keyword in thermo_style custom command"); + error->all(FLERR,"Unknown keyword '{}' in thermo_style custom command",word); // process zero or one or two trailing brackets // argindex1,argindex2 = int inside each bracket pair, 0 if no bracket From 41bdf0f39887c8a11465ed4b9522baa42567bde8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 8 Jun 2021 18:46:48 -0400 Subject: [PATCH 80/80] address spelling issues and update list of false positives --- doc/src/fix_polarize.rst | 2 +- doc/utils/sphinx-config/false_positives.txt | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/src/fix_polarize.rst b/doc/src/fix_polarize.rst index 4eb2839f96..2c499fce3c 100644 --- a/doc/src/fix_polarize.rst +++ b/doc/src/fix_polarize.rst @@ -64,7 +64,7 @@ the interface, are computed using the equation: Fix *polarize/bem/gmres* employs the Generalized Minimum Residual (GMRES) as described in :ref:`(Barros) ` to solve :math:`\sigma_b`. -Fix *polarize/bem/icc* employs the successive overrelaxation algorithm +Fix *polarize/bem/icc* employs the successive over-relaxation algorithm as described in :ref:`(Tyagi) ` to solve :math:`\sigma_b`. Fix *polarize/functional* ... diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index b13e6b8252..403f3f4377 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -188,6 +188,7 @@ Babaei backcolor backends Baczewski +Bagchi Bagi Bagnold Bajaj @@ -201,6 +202,7 @@ Ballenegger Bammann Banna Barashev +Barbosa barnes barostat Barostats @@ -208,6 +210,7 @@ barostatted barostatting Barostatting Barrat +Barros Bartelt Bartels barycenter @@ -225,6 +228,7 @@ bdw Beckman Belak Bellott +bem benchmarking Bennet Berardi @@ -1156,6 +1160,7 @@ gmake gmask Gmask GMock +gmres gneb GNEB Goldfarb @@ -1461,6 +1466,7 @@ Izvekov izz Izz Jacobsen +Jadhao Jadhav jagreat Jahn @@ -1516,6 +1522,7 @@ Kadiri Kai Kalia Kamberaj +Kantorovich Kapfer Karls Karlsruhe @@ -2356,6 +2363,7 @@ Oleinik Olfason olivedrab Ollila +Olvera omegaDD omegax omegay @@ -2987,6 +2995,7 @@ Sim Simov Simul simulations +Sinkovits Sinnott sinusoid sinusoidally @@ -3137,6 +3146,7 @@ surfactant surfactants Suter Sutmann +Suzen svn sw Swegat @@ -3338,6 +3348,7 @@ twobody twojmax Tx txt +Tyagi typeI typeJ typeN